@ssv/ngx.command 2.1.1-dev246 → 2.1.1-dev267

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  <!-- ## [vNext](https://github.com/sktch7/ngx.command/compare/2.0.0...3.0.0) (2020-x-x) -->
2
2
 
3
+ ## [2.2.0](https://github.com/sketch7/ngx.command/compare/2.1.0...2.1.1) (2022-11-02)
4
+
5
+ ### Bug Fixes
6
+
7
+ - **command:** avoid set disabled initially + remove delay when setting in order to avoid flickers - by default, can be optionally changed via `hasDisabledDelay` when needed for example with material
8
+
3
9
  ## [2.1.1](https://github.com/sketch7/ngx.command/compare/2.1.0...2.1.1) (2022-09-26)
4
10
 
5
11
  ### Bug Fixes
@@ -454,6 +454,7 @@
454
454
  var COMMAND_DEFAULT_CONFIG = Object.freeze({
455
455
  executingCssClass: "executing",
456
456
  handleDisabled: true,
457
+ hasDisabledDelay: false,
457
458
  });
458
459
  var COMMAND_CONFIG = new core.InjectionToken("command-config");
459
460
 
@@ -524,7 +525,8 @@
524
525
  * ```
525
526
  *
526
527
  */
527
- var SELECTOR = "ssvCommand";
528
+ var NAME_CAMEL = "ssvCommand";
529
+ // let nextUniqueId = 0;
528
530
  var CommandDirective = /** @class */ (function () {
529
531
  function CommandDirective(config, renderer, element, cdr) {
530
532
  this.config = config;
@@ -553,9 +555,8 @@
553
555
  CommandDirective.prototype.ngOnInit = function () {
554
556
  var _this = this;
555
557
  // console.log("[ssvCommand::init]", this.config);
556
- this.trySetDisabled(true);
557
558
  if (!this.commandOrCreator) {
558
- throw new Error("ssvCommand: [ssvCommand] should be defined!");
559
+ throw new Error(NAME_CAMEL + ": [" + NAME_CAMEL + "] should be defined!");
559
560
  }
560
561
  else if (isCommand(this.commandOrCreator)) {
561
562
  this._command = this.commandOrCreator;
@@ -576,10 +577,12 @@
576
577
  this._command = new Command(execFn, canExec, isAsync);
577
578
  }
578
579
  else {
579
- throw new Error("ssvCommand: [ssvCommand] is not defined properly!");
580
+ throw new Error(NAME_CAMEL + ": [" + NAME_CAMEL + "] is not defined properly!");
580
581
  }
581
582
  this._command.subscribe();
582
- this._command.canExecute$.pipe(operators.delay(1), operators.tap(function (x) {
583
+ this._command.canExecute$.pipe(this.commandOptions.hasDisabledDelay
584
+ ? operators.delay(1)
585
+ : operators.tap(function () { }), operators.tap(function (x) {
583
586
  _this.trySetDisabled(!x);
584
587
  // console.log("[ssvCommand::canExecute$]", { canExecute: x });
585
588
  _this.cdr.markForCheck();
@@ -616,6 +619,7 @@
616
619
  };
617
620
  CommandDirective.prototype.trySetDisabled = function (disabled) {
618
621
  if (this.commandOptions.handleDisabled) {
622
+ // console.warn(">>>> disabled", { id: this.id, disabled });
619
623
  this.renderer.setProperty(this.element.nativeElement, "disabled", disabled);
620
624
  }
621
625
  };
@@ -623,8 +627,8 @@
623
627
  }());
624
628
  CommandDirective.decorators = [
625
629
  { type: core.Directive, args: [{
626
- selector: "[" + SELECTOR + "]",
627
- exportAs: "ssvCommand"
630
+ selector: "[" + NAME_CAMEL + "]",
631
+ exportAs: NAME_CAMEL
628
632
  },] }
629
633
  ];
630
634
  CommandDirective.ctorParameters = function () { return [
@@ -634,12 +638,13 @@
634
638
  { type: core.ChangeDetectorRef }
635
639
  ]; };
636
640
  CommandDirective.propDecorators = {
637
- commandOrCreator: [{ type: core.Input, args: [SELECTOR,] }],
638
- commandOptions: [{ type: core.Input, args: [SELECTOR + "Options",] }],
639
- commandParams: [{ type: core.Input, args: [SELECTOR + "Params",] }],
641
+ commandOrCreator: [{ type: core.Input, args: [NAME_CAMEL,] }],
642
+ commandOptions: [{ type: core.Input, args: [NAME_CAMEL + "Options",] }],
643
+ commandParams: [{ type: core.Input, args: [NAME_CAMEL + "Params",] }],
640
644
  onClick: [{ type: core.HostListener, args: ["click",] }]
641
645
  };
642
646
 
647
+ var NAME_CAMEL$1 = "ssvCommandRef";
643
648
  /**
644
649
  * Command creator ref, directive which allows creating Command in the template
645
650
  * and associate it to a command (in order to share executions).
@@ -672,7 +677,7 @@
672
677
  this._command = new Command(execFn, this.commandCreator.canExecute, isAsync);
673
678
  }
674
679
  else {
675
- throw new Error("ssvCommandRef: [ssvCommandRef] is not defined properly!");
680
+ throw new Error(NAME_CAMEL$1 + ": [" + NAME_CAMEL$1 + "] is not defined properly!");
676
681
  }
677
682
  };
678
683
  CommandRefDirective.prototype.ngOnDestroy = function () {
@@ -685,12 +690,12 @@
685
690
  }());
686
691
  CommandRefDirective.decorators = [
687
692
  { type: core.Directive, args: [{
688
- selector: "[ssvCommandRef]",
689
- exportAs: "ssvCommandRef"
693
+ selector: "[" + NAME_CAMEL$1 + "]",
694
+ exportAs: NAME_CAMEL$1
690
695
  },] }
691
696
  ];
692
697
  CommandRefDirective.propDecorators = {
693
- commandCreator: [{ type: core.Input, args: ["ssvCommandRef",] }]
698
+ commandCreator: [{ type: core.Input, args: [NAME_CAMEL$1,] }]
694
699
  };
695
700
 
696
701
  /** @internal */
@@ -728,7 +733,7 @@
728
733
  ? Object.assign(Object.assign({}, COMMAND_DEFAULT_CONFIG), cfg) : COMMAND_DEFAULT_CONFIG;
729
734
  }
730
735
 
731
- var VERSION = "2.1.1-dev246";
736
+ var VERSION = "2.1.1-dev267";
732
737
 
733
738
  /**
734
739
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ssv-ngx.command.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/command.ts","../../src/config.ts","../../src/command.util.ts","../../src/command.directive.ts","../../src/command-ref.directive.ts","../../src/module.ts","../../src/version.ts","../../src/ssv-ngx.command.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Observable, combineLatest, Subscription, Subject, BehaviorSubject, of, EMPTY } from \"rxjs\";\nimport { tap, map, filter, switchMap, catchError, finalize, take } from \"rxjs/operators\";\nimport { ICommand } from \"./command.model\";\n\n/**\n * Command object used to encapsulate information which is needed to perform an action.\n */\nexport class Command implements ICommand {\n\n\t/** Determines whether the command is currently executing, as a snapshot value. */\n\tget isExecuting(): boolean {\n\t\treturn this._isExecuting;\n\t}\n\n\t/** Determines whether the command can execute or not, as a snapshot value. */\n\tget canExecute(): boolean {\n\t\treturn this._canExecute;\n\t}\n\n\t/** Determines whether the command is currently executing, as an observable. */\n\tget isExecuting$(): Observable<boolean> {\n\t\treturn this._isExecuting$.asObservable();\n\t}\n\n\t/** Determines whether to auto destroy when having 0 subscribers. */\n\tautoDestroy = true;\n\n\t/** Determines whether the command can execute or not, as an observable. */\n\treadonly canExecute$: Observable<boolean>;\n\n\tprivate _isExecuting$ = new BehaviorSubject<boolean>(false);\n\tprivate _isExecuting = false;\n\tprivate _canExecute = true;\n\tprivate executionPipe$ = new Subject<unknown[] | undefined>();\n\tprivate isExecuting$$ = Subscription.EMPTY;\n\tprivate canExecute$$ = Subscription.EMPTY;\n\tprivate executionPipe$$ = Subscription.EMPTY;\n\tprivate subscribersCount = 0;\n\n\t/**\n\t * Creates an instance of Command.\n\t *\n\t * @param execute Execute function to invoke - use `isAsync: true` when `Observable<any>`.\n\t * @param canExecute Observable which determines whether it can execute or not.\n\t * @param isAsync Indicates that the execute function is async e.g. Observable.\n\t */\n\tconstructor(\n\t\texecute: (...args: unknown[]) => unknown,\n\t\tcanExecute$?: Observable<boolean>,\n\t\tisAsync?: boolean,\n\t) {\n\t\tif (canExecute$) {\n\t\t\tthis.canExecute$ = combineLatest([\n\t\t\t\tthis._isExecuting$,\n\t\t\t\tcanExecute$\n\t\t\t]).pipe(\n\t\t\t\tmap(([isExecuting, canExecuteResult]) => {\n\t\t\t\t\t// console.log(\"[command::combineLatest$] update!\", { isExecuting, canExecuteResult });\n\t\t\t\t\tthis._isExecuting = isExecuting;\n\t\t\t\t\tthis._canExecute = !isExecuting && !!canExecuteResult;\n\t\t\t\t\treturn this._canExecute;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tthis.canExecute$$ = this.canExecute$.subscribe();\n\t\t} else {\n\t\t\tthis.canExecute$ = this._isExecuting$.pipe(\n\t\t\t\tmap(x => {\n\t\t\t\t\tconst canExecute = !x;\n\t\t\t\t\tthis._canExecute = canExecute;\n\t\t\t\t\treturn canExecute;\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.isExecuting$$ = this._isExecuting$\n\t\t\t\t.pipe(tap(x => this._isExecuting = x))\n\t\t\t\t.subscribe();\n\t\t}\n\t\tthis.executionPipe$$ = this.buildExecutionPipe(execute, isAsync).subscribe();\n\t}\n\n\t/** Execute function to invoke. */\n\texecute(...args: unknown[]): void {\n\t\t// console.warn(\"[command::execute]\", args);\n\t\tthis.executionPipe$.next(args);\n\t}\n\n\t/** Disposes all resources held by subscriptions. */\n\tdestroy(): void {\n\t\t// console.warn(\"[command::destroy]\");\n\t\tthis.executionPipe$$.unsubscribe();\n\t\tthis.canExecute$$.unsubscribe();\n\t\tthis.isExecuting$$.unsubscribe();\n\t}\n\n\tsubscribe(): void {\n\t\tthis.subscribersCount++;\n\t}\n\n\tunsubscribe(): void {\n\t\tthis.subscribersCount--;\n\t\t// console.log(\"[command::unsubscribe]\", { autoDestroy: this.autoDestroy, subscribersCount: this.subscribersCount });\n\t\tif (this.autoDestroy && this.subscribersCount <= 0) {\n\t\t\tthis.destroy();\n\t\t}\n\t}\n\n\tprivate buildExecutionPipe(execute: (...args: unknown[]) => any, isAsync?: boolean): Observable<unknown> {\n\t\tlet pipe$ = this.executionPipe$.pipe(\n\t\t\t// tap(x => console.warn(\">>>> executionPipe\", this._canExecute)),\n\t\t\tfilter(() => this._canExecute),\n\t\t\ttap(() => {\n\t\t\t\t// console.log(\"[command::executionPipe$] do#1 - set execute\", { args: x });\n\t\t\t\tthis._isExecuting$.next(true);\n\t\t\t})\n\t\t);\n\n\t\tconst execFn = isAsync\n\t\t\t? switchMap<unknown[] | undefined, any[]>(args => {\n\t\t\t\tif (args) {\n\t\t\t\t\treturn execute(...args);\n\t\t\t\t}\n\t\t\t\treturn execute();\n\t\t\t})\n\t\t\t: tap((args: unknown[] | undefined) => {\n\t\t\t\tif (args) {\n\t\t\t\t\texecute(...args);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\texecute();\n\t\t\t});\n\n\t\tpipe$ = pipe$.pipe(\n\t\t\tswitchMap(args => of(args).pipe(\n\t\t\t\texecFn,\n\t\t\t\tfinalize(() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] finalize inner#1 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t\tcatchError(error => {\n\t\t\t\t\tconsole.error(\"Unhandled execute error\", error);\n\t\t\t\t\treturn EMPTY;\n\t\t\t\t}),\n\t\t\t)),\n\t\t\ttap(\n\t\t\t\t() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] tap#2 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t},\n\t\t\t)\n\t\t);\n\t\treturn pipe$;\n\t}\n\n}\n\n/**\n * Async Command object used to encapsulate information which is needed to perform an action,\n * which takes an execute function as Observable/Promise.\n */\nexport class CommandAsync extends Command {\n\n\tconstructor(\n\t\texecute: (...args: unknown[]) => Observable<unknown> | Promise<unknown>,\n\t\tcanExecute$?: Observable<boolean>,\n\t) {\n\t\tsuper(execute, canExecute$, true);\n\t}\n\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport interface CommandOptions {\n\t/**\n\t * Css Class which gets added/removed on the Command element's host while Command `isExecuting$`.\n\t */\n\texecutingCssClass: string;\n\n\t/** Determines whether the disabled will be handled by the directive or not.\n\t * Disable handled by directive's doesn't always play nice when used with other component/pipe/directive and they also handle disabled.\n\t * This disables the handling manually and need to pass explicitly `[disabled]=\"!saveCmd.canExecute\"`.\n\t */\n\thandleDisabled: boolean;\n}\n\nexport const COMMAND_DEFAULT_CONFIG: Readonly<CommandOptions> = Object.freeze({\n\texecutingCssClass: \"executing\",\n\thandleDisabled: true,\n});\n\nexport const COMMAND_CONFIG = new InjectionToken<CommandOptions>(\"command-config\");\n","import { AbstractControl, AbstractControlDirective } from \"@angular/forms\";\nimport { Observable, of } from \"rxjs\";\nimport { map, distinctUntilChanged, startWith, delay } from \"rxjs/operators\";\n\nimport { CommandCreator, ICommand } from \"./command.model\";\nimport { Command } from \"./command\";\n\n/** Determines whether the arg object is of type `Command`. */\nexport function isCommand(arg: unknown): arg is ICommand {\n\treturn arg instanceof Command;\n}\n\n/** Determines whether the arg object is of type `CommandCreator`. */\nexport function isCommandCreator(arg: unknown): arg is CommandCreator {\n\tif (arg instanceof Command) {\n\t\treturn false;\n\t} else if (isAssumedType<CommandCreator>(arg) && arg.execute && arg.host) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport interface CanExecuteFormOptions {\n\t/** Determines whether to check for validity. (defaults: true) */\n\tvalidity?: boolean;\n\n\t/** Determines whether to check whether UI has been touched. (defaults: true) */\n\tdirty?: boolean;\n}\n\n/** Get form is valid as an observable. */\nexport function canExecuteFromNgForm(\n\tform: AbstractControl | AbstractControlDirective,\n\toptions?: CanExecuteFormOptions\n): Observable<boolean> {\n\tconst opts: CanExecuteFormOptions = { validity: true, dirty: true, ...options };\n\n\treturn form.statusChanges\n\t\t? form.statusChanges.pipe(\n\t\t\tdelay(0),\n\t\t\tstartWith(form.valid),\n\t\t\tmap(() => !!(!opts.validity || form.valid) && !!(!opts.dirty || form.dirty)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t\t: of(true);\n}\n\nfunction isAssumedType<T = Record<string, unknown>>(x: unknown): x is Partial<T> {\n\treturn x !== null && typeof x === \"object\";\n}\n","import {\n\tDirective,\n\tOnInit,\n\tOnDestroy,\n\tInput,\n\tHostListener,\n\tElementRef,\n\tInject,\n\tRenderer2,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { tap, delay, takeUntil } from \"rxjs/operators\";\n\nimport { CommandOptions, COMMAND_CONFIG } from \"./config\";\nimport { Command } from \"./command\";\nimport { isCommand, isCommandCreator } from \"./command.util\";\nimport { CommandCreator, ICommand } from \"./command.model\";\n\n/**\n * Controls the state of a component in sync with `Command`.\n *\n * @example\n * ### Most common usage\n * ```html\n * <button [ssvCommand]=\"saveCmd\">Save</button>\n * ```\n *\n *\n * ### Usage with options\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandOptions]=\"{executingCssClass: 'in-progress'}\">Save</button>\n * ```\n *\n *\n * ### Usage with params\n * This is useful for collections (loops) or using multiple actions with different args.\n * *NOTE: This will share the `isExecuting` when used with multiple controls.*\n *\n * #### With single param\n *\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"{id: 1}\">Save</button>\n * ```\n * *NOTE: if you have only 1 argument as an array, it should be enclosed within an array e.g. `[['apple', 'banana']]`,\n * else it will spread and you will `arg1: \"apple\", arg2: \"banana\"`*\n *\n * #### With multi params\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"[{id: 1}, 'hello', hero]\">Save</button>\n * ```\n *\n * ### Usage with Command Creator\n * This is useful for collections (loops) or using multiple actions with different args, whilst not sharing `isExecuting`.\n *\n *\n * ```html\n * <button [ssvCommand]=\"{host: this, execute: removeHero$, canExecute: isValid$, params: [hero, 1337, 'xx']}\">Save</button>\n * ```\n *\n */\n\nconst SELECTOR = \"ssvCommand\";\n\n@Directive({\n\tselector: `[${SELECTOR}]`,\n\texportAs: \"ssvCommand\"\n})\nexport class CommandDirective implements OnInit, OnDestroy {\n\n\t@Input(SELECTOR) commandOrCreator: ICommand | CommandCreator | undefined;\n\n\t@Input(`${SELECTOR}Options`)\n\tget commandOptions(): CommandOptions { return this._commandOptions; }\n\tset commandOptions(value: CommandOptions) {\n\t\tif (value === this._commandOptions) {\n\t\t\treturn;\n\t\t}\n\t\tthis._commandOptions = {\n\t\t\t...this.config,\n\t\t\t...value,\n\t\t};\n\t}\n\n\t@Input(`${SELECTOR}Params`) commandParams: unknown | unknown[];\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\tprivate _commandOptions: CommandOptions = this.config;\n\tprivate _destroy$ = new Subject<void>();\n\n\tconstructor(\n\t\t@Inject(COMMAND_CONFIG) private config: CommandOptions,\n\t\tprivate renderer: Renderer2,\n\t\tprivate element: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t) { }\n\n\tngOnInit(): void {\n\t\t// console.log(\"[ssvCommand::init]\", this.config);\n\t\tthis.trySetDisabled(true);\n\t\tif (!this.commandOrCreator) {\n\t\t\tthrow new Error(\"ssvCommand: [ssvCommand] should be defined!\");\n\t\t} else if (isCommand(this.commandOrCreator)) {\n\t\t\tthis._command = this.commandOrCreator;\n\t\t} else if (isCommandCreator(this.commandOrCreator)) {\n\t\t\tconst isAsync = this.commandOrCreator.isAsync || this.commandOrCreator.isAsync === undefined;\n\n\t\t\t// todo: find something like this for ivy (or angular10+)\n\t\t\t// const hostComponent = (this.viewContainer as any)._view.component;\n\n\t\t\tconst execFn = this.commandOrCreator.execute.bind(this.commandOrCreator.host);\n\t\t\tthis.commandParams = this.commandParams || this.commandOrCreator.params;\n\n\t\t\tconst canExec = this.commandOrCreator.canExecute instanceof Function\n\t\t\t\t? this.commandOrCreator.canExecute.bind(this.commandOrCreator.host, this.commandParams)()\n\t\t\t\t: this.commandOrCreator.canExecute;\n\n\t\t\t// console.log(\"[ssvCommand::init] command creator\", {\n\t\t\t// \tfirstParam: this.commandParams ? this.commandParams[0] : null,\n\t\t\t// \tparams: this.commandParams\n\t\t\t// });\n\t\t\tthis._command = new Command(execFn, canExec, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(\"ssvCommand: [ssvCommand] is not defined properly!\");\n\t\t}\n\n\t\tthis._command.subscribe();\n\t\tthis._command.canExecute$.pipe(\n\t\t\tdelay(1),\n\t\t\ttap(x => {\n\t\t\t\tthis.trySetDisabled(!x);\n\t\t\t\t// console.log(\"[ssvCommand::canExecute$]\", { canExecute: x });\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\n\t\tif (this._command.isExecuting$) {\n\t\t\tthis._command.isExecuting$.pipe(\n\t\t\t\ttap(x => {\n\t\t\t\t\t// console.log(\"[ssvCommand::isExecuting$]\", x, this.commandOptions);\n\t\t\t\t\tif (x) {\n\t\t\t\t\t\tthis.renderer.addClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderer.removeClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t).subscribe();\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick(): void {\n\t\t// console.log(\"[ssvCommand::onClick]\", this.commandParams);\n\t\tif (Array.isArray(this.commandParams)) {\n\t\t\tthis._command.execute(...this.commandParams);\n\t\t} else {\n\t\t\tthis._command.execute(this.commandParams);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[ssvCommand::destroy]\");\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tif (this._command) {\n\t\t\tthis._command.unsubscribe();\n\t\t}\n\t}\n\n\tprivate trySetDisabled(disabled: boolean) {\n\t\tif (this.commandOptions.handleDisabled) {\n\t\t\tthis.renderer.setProperty(this.element.nativeElement, \"disabled\", disabled);\n\t\t}\n\t}\n\n}\n\n","import { Observable } from \"rxjs\";\nimport { Directive, OnInit, OnDestroy, Input } from \"@angular/core\";\n\nimport { ICommand, CommandCreator } from \"./command.model\";\nimport { isCommandCreator } from \"./command.util\";\nimport { Command } from \"./command\";\n\n/**\n * Command creator ref, directive which allows creating Command in the template\n * and associate it to a command (in order to share executions).\n * @example\n * ### Most common usage\n * ```html\n * <div #actionCmd=\"ssvCommandRef\" [ssvCommandRef]=\"{host: this, execute: removeHero$, canExecute: isValid$}\">\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * </div>\n * ```\n *\n */\n@Directive({\n\tselector: \"[ssvCommandRef]\",\n\texportAs: \"ssvCommandRef\"\n})\nexport class CommandRefDirective implements OnInit, OnDestroy {\n\n\t@Input(\"ssvCommandRef\") commandCreator: CommandCreator | undefined;\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\n\tngOnInit(): void {\n\t\tif (isCommandCreator(this.commandCreator)) {\n\t\t\tconst isAsync = this.commandCreator.isAsync || this.commandCreator.isAsync === undefined;\n\n\t\t\tconst execFn = this.commandCreator.execute.bind(this.commandCreator.host);\n\t\t\tthis._command = new Command(execFn, this.commandCreator.canExecute as Observable<boolean> | undefined, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(\"ssvCommandRef: [ssvCommandRef] is not defined properly!\");\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[commandRef::destroy]\");\n\t\tif (this._command) {\n\t\t\tthis._command.destroy();\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { CommandDirective } from \"./command.directive\";\nimport { CommandRefDirective } from \"./command-ref.directive\";\nimport { CommandOptions, COMMAND_DEFAULT_CONFIG, COMMAND_CONFIG } from \"./config\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<CommandOptions>(\"@ssv/ngx.command/configData\");\n\nconst components = [\n\tCommandDirective,\n\tCommandRefDirective\n];\n\n@NgModule({\n\tdeclarations: components,\n\tproviders: [\n\t\t{ provide: COMMAND_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t],\n\texports: [...components],\n})\nexport class SsvCommandModule {\n\n\tstatic forRoot(config?: Partial<CommandOptions> | (() => Partial<CommandOptions>)): ModuleWithProviders<SsvCommandModule> {\n\t\treturn {\n\t\t\tngModule: SsvCommandModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions {\n\tconst cfg = typeof config === \"function\" ? config() : config;\n\treturn cfg\n\t\t? {\n\t\t\t...COMMAND_DEFAULT_CONFIG,\n\t\t\t...cfg,\n\t\t}\n\t\t: COMMAND_DEFAULT_CONFIG;\n}\n","export const VERSION = \"2.1.1-dev246\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["BehaviorSubject","Subject","Subscription","combineLatest","map","tap","filter","switchMap","of","finalize","take","catchError","EMPTY","InjectionToken","delay","startWith","distinctUntilChanged","takeUntil","Directive","Inject","Renderer2","ElementRef","ChangeDetectorRef","Input","HostListener","NgModule","Optional"],"mappings":"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"}
1
+ {"version":3,"file":"ssv-ngx.command.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/command.ts","../../src/config.ts","../../src/command.util.ts","../../src/command.directive.ts","../../src/command-ref.directive.ts","../../src/module.ts","../../src/version.ts","../../src/ssv-ngx.command.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Observable, combineLatest, Subscription, Subject, BehaviorSubject, of, EMPTY } from \"rxjs\";\nimport { tap, map, filter, switchMap, catchError, finalize, take } from \"rxjs/operators\";\nimport { ICommand } from \"./command.model\";\n\n/**\n * Command object used to encapsulate information which is needed to perform an action.\n */\nexport class Command implements ICommand {\n\n\t/** Determines whether the command is currently executing, as a snapshot value. */\n\tget isExecuting(): boolean {\n\t\treturn this._isExecuting;\n\t}\n\n\t/** Determines whether the command can execute or not, as a snapshot value. */\n\tget canExecute(): boolean {\n\t\treturn this._canExecute;\n\t}\n\n\t/** Determines whether the command is currently executing, as an observable. */\n\tget isExecuting$(): Observable<boolean> {\n\t\treturn this._isExecuting$.asObservable();\n\t}\n\n\t/** Determines whether to auto destroy when having 0 subscribers. */\n\tautoDestroy = true;\n\n\t/** Determines whether the command can execute or not, as an observable. */\n\treadonly canExecute$: Observable<boolean>;\n\n\tprivate _isExecuting$ = new BehaviorSubject<boolean>(false);\n\tprivate _isExecuting = false;\n\tprivate _canExecute = true;\n\tprivate executionPipe$ = new Subject<unknown[] | undefined>();\n\tprivate isExecuting$$ = Subscription.EMPTY;\n\tprivate canExecute$$ = Subscription.EMPTY;\n\tprivate executionPipe$$ = Subscription.EMPTY;\n\tprivate subscribersCount = 0;\n\n\t/**\n\t * Creates an instance of Command.\n\t *\n\t * @param execute Execute function to invoke - use `isAsync: true` when `Observable<any>`.\n\t * @param canExecute Observable which determines whether it can execute or not.\n\t * @param isAsync Indicates that the execute function is async e.g. Observable.\n\t */\n\tconstructor(\n\t\texecute: (...args: unknown[]) => unknown,\n\t\tcanExecute$?: Observable<boolean>,\n\t\tisAsync?: boolean,\n\t) {\n\t\tif (canExecute$) {\n\t\t\tthis.canExecute$ = combineLatest([\n\t\t\t\tthis._isExecuting$,\n\t\t\t\tcanExecute$\n\t\t\t]).pipe(\n\t\t\t\tmap(([isExecuting, canExecuteResult]) => {\n\t\t\t\t\t// console.log(\"[command::combineLatest$] update!\", { isExecuting, canExecuteResult });\n\t\t\t\t\tthis._isExecuting = isExecuting;\n\t\t\t\t\tthis._canExecute = !isExecuting && !!canExecuteResult;\n\t\t\t\t\treturn this._canExecute;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tthis.canExecute$$ = this.canExecute$.subscribe();\n\t\t} else {\n\t\t\tthis.canExecute$ = this._isExecuting$.pipe(\n\t\t\t\tmap(x => {\n\t\t\t\t\tconst canExecute = !x;\n\t\t\t\t\tthis._canExecute = canExecute;\n\t\t\t\t\treturn canExecute;\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.isExecuting$$ = this._isExecuting$\n\t\t\t\t.pipe(tap(x => this._isExecuting = x))\n\t\t\t\t.subscribe();\n\t\t}\n\t\tthis.executionPipe$$ = this.buildExecutionPipe(execute, isAsync).subscribe();\n\t}\n\n\t/** Execute function to invoke. */\n\texecute(...args: unknown[]): void {\n\t\t// console.warn(\"[command::execute]\", args);\n\t\tthis.executionPipe$.next(args);\n\t}\n\n\t/** Disposes all resources held by subscriptions. */\n\tdestroy(): void {\n\t\t// console.warn(\"[command::destroy]\");\n\t\tthis.executionPipe$$.unsubscribe();\n\t\tthis.canExecute$$.unsubscribe();\n\t\tthis.isExecuting$$.unsubscribe();\n\t}\n\n\tsubscribe(): void {\n\t\tthis.subscribersCount++;\n\t}\n\n\tunsubscribe(): void {\n\t\tthis.subscribersCount--;\n\t\t// console.log(\"[command::unsubscribe]\", { autoDestroy: this.autoDestroy, subscribersCount: this.subscribersCount });\n\t\tif (this.autoDestroy && this.subscribersCount <= 0) {\n\t\t\tthis.destroy();\n\t\t}\n\t}\n\n\tprivate buildExecutionPipe(execute: (...args: unknown[]) => any, isAsync?: boolean): Observable<unknown> {\n\t\tlet pipe$ = this.executionPipe$.pipe(\n\t\t\t// tap(x => console.warn(\">>>> executionPipe\", this._canExecute)),\n\t\t\tfilter(() => this._canExecute),\n\t\t\ttap(() => {\n\t\t\t\t// console.log(\"[command::executionPipe$] do#1 - set execute\", { args: x });\n\t\t\t\tthis._isExecuting$.next(true);\n\t\t\t})\n\t\t);\n\n\t\tconst execFn = isAsync\n\t\t\t? switchMap<unknown[] | undefined, any[]>(args => {\n\t\t\t\tif (args) {\n\t\t\t\t\treturn execute(...args);\n\t\t\t\t}\n\t\t\t\treturn execute();\n\t\t\t})\n\t\t\t: tap((args: unknown[] | undefined) => {\n\t\t\t\tif (args) {\n\t\t\t\t\texecute(...args);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\texecute();\n\t\t\t});\n\n\t\tpipe$ = pipe$.pipe(\n\t\t\tswitchMap(args => of(args).pipe(\n\t\t\t\texecFn,\n\t\t\t\tfinalize(() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] finalize inner#1 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t\tcatchError(error => {\n\t\t\t\t\tconsole.error(\"Unhandled execute error\", error);\n\t\t\t\t\treturn EMPTY;\n\t\t\t\t}),\n\t\t\t)),\n\t\t\ttap(\n\t\t\t\t() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] tap#2 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t},\n\t\t\t)\n\t\t);\n\t\treturn pipe$;\n\t}\n\n}\n\n/**\n * Async Command object used to encapsulate information which is needed to perform an action,\n * which takes an execute function as Observable/Promise.\n */\nexport class CommandAsync extends Command {\n\n\tconstructor(\n\t\texecute: (...args: unknown[]) => Observable<unknown> | Promise<unknown>,\n\t\tcanExecute$?: Observable<boolean>,\n\t) {\n\t\tsuper(execute, canExecute$, true);\n\t}\n\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport interface CommandOptions {\n\t/**\n\t * Css Class which gets added/removed on the Command element's host while Command `isExecuting$`.\n\t */\n\texecutingCssClass: string;\n\n\t/** Determines whether the disabled will be handled by the directive or not.\n\t * Disable handled by directive's doesn't always play nice when used with other component/pipe/directive and they also handle disabled.\n\t * This disables the handling manually and need to pass explicitly `[disabled]=\"!saveCmd.canExecute\"`.\n\t */\n\thandleDisabled: boolean;\n\n\t/** Determine whether to set a `delay(1)` when setting the disabled. Which might be needed when working with external\n\t * components/directives (such as material button)\n\t */\n\thasDisabledDelay: boolean;\n}\n\nexport const COMMAND_DEFAULT_CONFIG = Object.freeze({\n\texecutingCssClass: \"executing\",\n\thandleDisabled: true,\n\thasDisabledDelay: false,\n} as CommandOptions);\n\nexport const COMMAND_CONFIG = new InjectionToken<CommandOptions>(\"command-config\");\n","import { AbstractControl, AbstractControlDirective } from \"@angular/forms\";\nimport { Observable, of } from \"rxjs\";\nimport { map, distinctUntilChanged, startWith, delay } from \"rxjs/operators\";\n\nimport { CommandCreator, ICommand } from \"./command.model\";\nimport { Command } from \"./command\";\n\n/** Determines whether the arg object is of type `Command`. */\nexport function isCommand(arg: unknown): arg is ICommand {\n\treturn arg instanceof Command;\n}\n\n/** Determines whether the arg object is of type `CommandCreator`. */\nexport function isCommandCreator(arg: unknown): arg is CommandCreator {\n\tif (arg instanceof Command) {\n\t\treturn false;\n\t} else if (isAssumedType<CommandCreator>(arg) && arg.execute && arg.host) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport interface CanExecuteFormOptions {\n\t/** Determines whether to check for validity. (defaults: true) */\n\tvalidity?: boolean;\n\n\t/** Determines whether to check whether UI has been touched. (defaults: true) */\n\tdirty?: boolean;\n}\n\n/** Get form is valid as an observable. */\nexport function canExecuteFromNgForm(\n\tform: AbstractControl | AbstractControlDirective,\n\toptions?: CanExecuteFormOptions\n): Observable<boolean> {\n\tconst opts: CanExecuteFormOptions = { validity: true, dirty: true, ...options };\n\n\treturn form.statusChanges\n\t\t? form.statusChanges.pipe(\n\t\t\tdelay(0),\n\t\t\tstartWith(form.valid),\n\t\t\tmap(() => !!(!opts.validity || form.valid) && !!(!opts.dirty || form.dirty)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t\t: of(true);\n}\n\nfunction isAssumedType<T = Record<string, unknown>>(x: unknown): x is Partial<T> {\n\treturn x !== null && typeof x === \"object\";\n}\n","import {\n\tDirective,\n\tOnInit,\n\tOnDestroy,\n\tInput,\n\tHostListener,\n\tElementRef,\n\tInject,\n\tRenderer2,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { tap, delay, takeUntil } from \"rxjs/operators\";\n\nimport { CommandOptions, COMMAND_CONFIG } from \"./config\";\nimport { Command } from \"./command\";\nimport { isCommand, isCommandCreator } from \"./command.util\";\nimport { CommandCreator, ICommand } from \"./command.model\";\n\n/**\n * Controls the state of a component in sync with `Command`.\n *\n * @example\n * ### Most common usage\n * ```html\n * <button [ssvCommand]=\"saveCmd\">Save</button>\n * ```\n *\n *\n * ### Usage with options\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandOptions]=\"{executingCssClass: 'in-progress'}\">Save</button>\n * ```\n *\n *\n * ### Usage with params\n * This is useful for collections (loops) or using multiple actions with different args.\n * *NOTE: This will share the `isExecuting` when used with multiple controls.*\n *\n * #### With single param\n *\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"{id: 1}\">Save</button>\n * ```\n * *NOTE: if you have only 1 argument as an array, it should be enclosed within an array e.g. `[['apple', 'banana']]`,\n * else it will spread and you will `arg1: \"apple\", arg2: \"banana\"`*\n *\n * #### With multi params\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"[{id: 1}, 'hello', hero]\">Save</button>\n * ```\n *\n * ### Usage with Command Creator\n * This is useful for collections (loops) or using multiple actions with different args, whilst not sharing `isExecuting`.\n *\n *\n * ```html\n * <button [ssvCommand]=\"{host: this, execute: removeHero$, canExecute: isValid$, params: [hero, 1337, 'xx']}\">Save</button>\n * ```\n *\n */\n\nconst NAME_CAMEL = \"ssvCommand\";\n\n// let nextUniqueId = 0;\n\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\texportAs: NAME_CAMEL\n})\nexport class CommandDirective implements OnInit, OnDestroy {\n\n\t// readonly id = `${NAME_CAMEL}-${nextUniqueId++}`;\n\n\t@Input(NAME_CAMEL) commandOrCreator: ICommand | CommandCreator | undefined;\n\n\t@Input(`${NAME_CAMEL}Options`)\n\tget commandOptions(): CommandOptions { return this._commandOptions; }\n\tset commandOptions(value: CommandOptions) {\n\t\tif (value === this._commandOptions) {\n\t\t\treturn;\n\t\t}\n\t\tthis._commandOptions = {\n\t\t\t...this.config,\n\t\t\t...value,\n\t\t};\n\t}\n\n\t@Input(`${NAME_CAMEL}Params`) commandParams: unknown | unknown[];\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\tprivate _commandOptions: CommandOptions = this.config;\n\tprivate _destroy$ = new Subject<void>();\n\n\tconstructor(\n\t\t@Inject(COMMAND_CONFIG) private config: CommandOptions,\n\t\tprivate renderer: Renderer2,\n\t\tprivate element: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t) { }\n\n\tngOnInit(): void {\n\t\t// console.log(\"[ssvCommand::init]\", this.config);\n\t\tif (!this.commandOrCreator) {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] should be defined!`);\n\t\t} else if (isCommand(this.commandOrCreator)) {\n\t\t\tthis._command = this.commandOrCreator;\n\t\t} else if (isCommandCreator(this.commandOrCreator)) {\n\t\t\tconst isAsync = this.commandOrCreator.isAsync || this.commandOrCreator.isAsync === undefined;\n\n\t\t\t// todo: find something like this for ivy (or angular10+)\n\t\t\t// const hostComponent = (this.viewContainer as any)._view.component;\n\n\t\t\tconst execFn = this.commandOrCreator.execute.bind(this.commandOrCreator.host);\n\t\t\tthis.commandParams = this.commandParams || this.commandOrCreator.params;\n\n\t\t\tconst canExec = this.commandOrCreator.canExecute instanceof Function\n\t\t\t\t? this.commandOrCreator.canExecute.bind(this.commandOrCreator.host, this.commandParams)()\n\t\t\t\t: this.commandOrCreator.canExecute;\n\n\t\t\t// console.log(\"[ssvCommand::init] command creator\", {\n\t\t\t// \tfirstParam: this.commandParams ? this.commandParams[0] : null,\n\t\t\t// \tparams: this.commandParams\n\t\t\t// });\n\t\t\tthis._command = new Command(execFn, canExec, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);\n\t\t}\n\n\t\tthis._command.subscribe();\n\t\tthis._command.canExecute$.pipe(\n\t\t\tthis.commandOptions.hasDisabledDelay\n\t\t\t\t? delay(1)\n\t\t\t\t: tap(() => { /* stub */ }),\n\t\t\ttap(x => {\n\t\t\t\tthis.trySetDisabled(!x);\n\t\t\t\t// console.log(\"[ssvCommand::canExecute$]\", { canExecute: x });\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\n\t\tif (this._command.isExecuting$) {\n\t\t\tthis._command.isExecuting$.pipe(\n\t\t\t\ttap(x => {\n\t\t\t\t\t// console.log(\"[ssvCommand::isExecuting$]\", x, this.commandOptions);\n\t\t\t\t\tif (x) {\n\t\t\t\t\t\tthis.renderer.addClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderer.removeClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t).subscribe();\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick(): void {\n\t\t// console.log(\"[ssvCommand::onClick]\", this.commandParams);\n\t\tif (Array.isArray(this.commandParams)) {\n\t\t\tthis._command.execute(...this.commandParams);\n\t\t} else {\n\t\t\tthis._command.execute(this.commandParams);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[ssvCommand::destroy]\");\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tif (this._command) {\n\t\t\tthis._command.unsubscribe();\n\t\t}\n\t}\n\n\tprivate trySetDisabled(disabled: boolean) {\n\t\tif (this.commandOptions.handleDisabled) {\n\t\t\t// console.warn(\">>>> disabled\", { id: this.id, disabled });\n\t\t\tthis.renderer.setProperty(this.element.nativeElement, \"disabled\", disabled);\n\t\t}\n\t}\n\n}\n\n","import { Observable } from \"rxjs\";\nimport { Directive, OnInit, OnDestroy, Input } from \"@angular/core\";\n\nimport { ICommand, CommandCreator } from \"./command.model\";\nimport { isCommandCreator } from \"./command.util\";\nimport { Command } from \"./command\";\n\nconst NAME_CAMEL = \"ssvCommandRef\";\n\n/**\n * Command creator ref, directive which allows creating Command in the template\n * and associate it to a command (in order to share executions).\n * @example\n * ### Most common usage\n * ```html\n * <div #actionCmd=\"ssvCommandRef\" [ssvCommandRef]=\"{host: this, execute: removeHero$, canExecute: isValid$}\">\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * </div>\n * ```\n *\n */\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\texportAs: NAME_CAMEL\n})\nexport class CommandRefDirective implements OnInit, OnDestroy {\n\n\t@Input(NAME_CAMEL) commandCreator: CommandCreator | undefined;\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\n\tngOnInit(): void {\n\t\tif (isCommandCreator(this.commandCreator)) {\n\t\t\tconst isAsync = this.commandCreator.isAsync || this.commandCreator.isAsync === undefined;\n\n\t\t\tconst execFn = this.commandCreator.execute.bind(this.commandCreator.host);\n\t\t\tthis._command = new Command(execFn, this.commandCreator.canExecute as Observable<boolean> | undefined, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[commandRef::destroy]\");\n\t\tif (this._command) {\n\t\t\tthis._command.destroy();\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { CommandDirective } from \"./command.directive\";\nimport { CommandRefDirective } from \"./command-ref.directive\";\nimport { CommandOptions, COMMAND_DEFAULT_CONFIG, COMMAND_CONFIG } from \"./config\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<CommandOptions>(\"@ssv/ngx.command/configData\");\n\nconst components = [\n\tCommandDirective,\n\tCommandRefDirective\n];\n\n@NgModule({\n\tdeclarations: components,\n\tproviders: [\n\t\t{ provide: COMMAND_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t],\n\texports: [...components],\n})\nexport class SsvCommandModule {\n\n\tstatic forRoot(config?: Partial<CommandOptions> | (() => Partial<CommandOptions>)): ModuleWithProviders<SsvCommandModule> {\n\t\treturn {\n\t\t\tngModule: SsvCommandModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions {\n\tconst cfg = typeof config === \"function\" ? config() : config;\n\treturn cfg\n\t\t? {\n\t\t\t...COMMAND_DEFAULT_CONFIG,\n\t\t\t...cfg,\n\t\t}\n\t\t: COMMAND_DEFAULT_CONFIG;\n}\n","export const VERSION = \"2.1.1-dev267\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["BehaviorSubject","Subject","Subscription","combineLatest","map","tap","filter","switchMap","of","finalize","take","catchError","EMPTY","InjectionToken","delay","startWith","distinctUntilChanged","takeUntil","Directive","Inject","Renderer2","ElementRef","ChangeDetectorRef","Input","HostListener","NAME_CAMEL","NgModule","Optional"],"mappings":"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"}
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */var o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)};Object.create;function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s}function s(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t}Object.create;var c=function(){function t(t,r,o){var s=this;this.autoDestroy=!0,this._isExecuting$=new e.BehaviorSubject(!1),this._isExecuting=!1,this._canExecute=!0,this.executionPipe$=new e.Subject,this.isExecuting$$=e.Subscription.EMPTY,this.canExecute$$=e.Subscription.EMPTY,this.executionPipe$$=e.Subscription.EMPTY,this.subscribersCount=0,r?(this.canExecute$=e.combineLatest([this._isExecuting$,r]).pipe(n.map((function(t){var e=i(t,2),n=e[0],r=e[1];return s._isExecuting=n,s._canExecute=!n&&!!r,s._canExecute}))),this.canExecute$$=this.canExecute$.subscribe()):(this.canExecute$=this._isExecuting$.pipe(n.map((function(t){var e=!t;return s._canExecute=e,e}))),this.isExecuting$$=this._isExecuting$.pipe(n.tap((function(t){return s._isExecuting=t}))).subscribe()),this.executionPipe$$=this.buildExecutionPipe(t,o).subscribe()}return Object.defineProperty(t.prototype,"isExecuting",{get:function(){return this._isExecuting},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canExecute",{get:function(){return this._canExecute},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isExecuting$",{get:function(){return this._isExecuting$.asObservable()},enumerable:!1,configurable:!0}),t.prototype.execute=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.executionPipe$.next(t)},t.prototype.destroy=function(){this.executionPipe$$.unsubscribe(),this.canExecute$$.unsubscribe(),this.isExecuting$$.unsubscribe()},t.prototype.subscribe=function(){this.subscribersCount++},t.prototype.unsubscribe=function(){this.subscribersCount--,this.autoDestroy&&this.subscribersCount<=0&&this.destroy()},t.prototype.buildExecutionPipe=function(t,r){var o=this,i=this.executionPipe$.pipe(n.filter((function(){return o._canExecute})),n.tap((function(){o._isExecuting$.next(!0)}))),c=r?n.switchMap((function(e){return e?t.apply(void 0,s(e)):t()})):n.tap((function(e){e?t.apply(void 0,s(e)):t()}));return i=i.pipe(n.switchMap((function(t){return e.of(t).pipe(c,n.finalize((function(){o._isExecuting$.next(!1)})),n.take(1),n.catchError((function(t){return console.error("Unhandled execute error",t),e.EMPTY})))})),n.tap((function(){o._isExecuting$.next(!1)})))},t}(),a=function(t){function e(e,n){return t.call(this,e,n,!0)||this}return function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}(e,t),e}(c),u=Object.freeze({executingCssClass:"executing",handleDisabled:!0}),m=new r.InjectionToken("command-config");function d(t){return t instanceof c}function p(t){return!(t instanceof c)&&!(null===(e=t)||"object"!=typeof e||!t.execute||!t.host);var e}var h="ssvCommand",f=function(){function t(t,n,r,o){this.config=t,this.renderer=n,this.element=r,this.cdr=o,this._commandOptions=this.config,this._destroy$=new e.Subject}return Object.defineProperty(t.prototype,"commandOptions",{get:function(){return this._commandOptions},set:function(t){t!==this._commandOptions&&(this._commandOptions=Object.assign(Object.assign({},this.config),t))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"command",{get:function(){return this._command},enumerable:!1,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;if(this.trySetDisabled(!0),!this.commandOrCreator)throw new Error("ssvCommand: [ssvCommand] should be defined!");if(d(this.commandOrCreator))this._command=this.commandOrCreator;else{if(!p(this.commandOrCreator))throw new Error("ssvCommand: [ssvCommand] is not defined properly!");var e=this.commandOrCreator.isAsync||void 0===this.commandOrCreator.isAsync,r=this.commandOrCreator.execute.bind(this.commandOrCreator.host);this.commandParams=this.commandParams||this.commandOrCreator.params;var o=this.commandOrCreator.canExecute instanceof Function?this.commandOrCreator.canExecute.bind(this.commandOrCreator.host,this.commandParams)():this.commandOrCreator.canExecute;this._command=new c(r,o,e)}this._command.subscribe(),this._command.canExecute$.pipe(n.delay(1),n.tap((function(e){t.trySetDisabled(!e),t.cdr.markForCheck()})),n.takeUntil(this._destroy$)).subscribe(),this._command.isExecuting$&&this._command.isExecuting$.pipe(n.tap((function(e){e?t.renderer.addClass(t.element.nativeElement,t.commandOptions.executingCssClass):t.renderer.removeClass(t.element.nativeElement,t.commandOptions.executingCssClass)})),n.takeUntil(this._destroy$)).subscribe()},t.prototype.onClick=function(){var t;Array.isArray(this.commandParams)?(t=this._command).execute.apply(t,s(this.commandParams)):this._command.execute(this.commandParams)},t.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete(),this._command&&this._command.unsubscribe()},t.prototype.trySetDisabled=function(t){this.commandOptions.handleDisabled&&this.renderer.setProperty(this.element.nativeElement,"disabled",t)},t}();f.decorators=[{type:r.Directive,args:[{selector:"[ssvCommand]",exportAs:"ssvCommand"}]}],f.ctorParameters=function(){return[{type:void 0,decorators:[{type:r.Inject,args:[m]}]},{type:r.Renderer2},{type:r.ElementRef},{type:r.ChangeDetectorRef}]},f.propDecorators={commandOrCreator:[{type:r.Input,args:[h]}],commandOptions:[{type:r.Input,args:[h+"Options"]}],commandParams:[{type:r.Input,args:[h+"Params"]}],onClick:[{type:r.HostListener,args:["click"]}]};var l=function(){function t(){}return Object.defineProperty(t.prototype,"command",{get:function(){return this._command},enumerable:!1,configurable:!0}),t.prototype.ngOnInit=function(){if(!p(this.commandCreator))throw new Error("ssvCommandRef: [ssvCommandRef] is not defined properly!");var t=this.commandCreator.isAsync||void 0===this.commandCreator.isAsync,e=this.commandCreator.execute.bind(this.commandCreator.host);this._command=new c(e,this.commandCreator.canExecute,t)},t.prototype.ngOnDestroy=function(){this._command&&this._command.destroy()},t}();l.decorators=[{type:r.Directive,args:[{selector:"[ssvCommandRef]",exportAs:"ssvCommandRef"}]}],l.propDecorators={commandCreator:[{type:r.Input,args:["ssvCommandRef"]}]};var y=new r.InjectionToken("@ssv/ngx.command/configData"),b=[f,l],x=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:[{provide:y,useValue:e}]}},t}();function g(t){var e="function"==typeof t?t():t;return e?Object.assign(Object.assign({},u),e):u}x.decorators=[{type:r.NgModule,args:[{declarations:b,providers:[{provide:m,useFactory:g,deps:[[y,new r.Optional]]}],exports:s(b)}]}];t.COMMAND_CONFIG=m,t.COMMAND_DEFAULT_CONFIG=u,t.Command=c,t.CommandAsync=a,t.CommandDirective=f,t.CommandRefDirective=l,t.MODULE_CONFIG_DATA=y,t.SsvCommandModule=x,t.VERSION="2.1.1-dev246",t._moduleConfigFactory=g,t.canExecuteFromNgForm=function(t,r){var o=Object.assign({validity:!0,dirty:!0},r);return t.statusChanges?t.statusChanges.pipe(n.delay(0),n.startWith(t.valid),n.map((function(){return!(o.validity&&!t.valid||o.dirty&&!t.dirty)})),n.distinctUntilChanged()):e.of(!0)},t.isCommand=d,t.isCommandCreator=p,Object.defineProperty(t,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */var o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)};Object.create;function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s}function s(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t}Object.create;var c=function(){function t(t,r,o){var s=this;this.autoDestroy=!0,this._isExecuting$=new e.BehaviorSubject(!1),this._isExecuting=!1,this._canExecute=!0,this.executionPipe$=new e.Subject,this.isExecuting$$=e.Subscription.EMPTY,this.canExecute$$=e.Subscription.EMPTY,this.executionPipe$$=e.Subscription.EMPTY,this.subscribersCount=0,r?(this.canExecute$=e.combineLatest([this._isExecuting$,r]).pipe(n.map((function(t){var e=i(t,2),n=e[0],r=e[1];return s._isExecuting=n,s._canExecute=!n&&!!r,s._canExecute}))),this.canExecute$$=this.canExecute$.subscribe()):(this.canExecute$=this._isExecuting$.pipe(n.map((function(t){var e=!t;return s._canExecute=e,e}))),this.isExecuting$$=this._isExecuting$.pipe(n.tap((function(t){return s._isExecuting=t}))).subscribe()),this.executionPipe$$=this.buildExecutionPipe(t,o).subscribe()}return Object.defineProperty(t.prototype,"isExecuting",{get:function(){return this._isExecuting},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canExecute",{get:function(){return this._canExecute},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isExecuting$",{get:function(){return this._isExecuting$.asObservable()},enumerable:!1,configurable:!0}),t.prototype.execute=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.executionPipe$.next(t)},t.prototype.destroy=function(){this.executionPipe$$.unsubscribe(),this.canExecute$$.unsubscribe(),this.isExecuting$$.unsubscribe()},t.prototype.subscribe=function(){this.subscribersCount++},t.prototype.unsubscribe=function(){this.subscribersCount--,this.autoDestroy&&this.subscribersCount<=0&&this.destroy()},t.prototype.buildExecutionPipe=function(t,r){var o=this,i=this.executionPipe$.pipe(n.filter((function(){return o._canExecute})),n.tap((function(){o._isExecuting$.next(!0)}))),c=r?n.switchMap((function(e){return e?t.apply(void 0,s(e)):t()})):n.tap((function(e){e?t.apply(void 0,s(e)):t()}));return i=i.pipe(n.switchMap((function(t){return e.of(t).pipe(c,n.finalize((function(){o._isExecuting$.next(!1)})),n.take(1),n.catchError((function(t){return console.error("Unhandled execute error",t),e.EMPTY})))})),n.tap((function(){o._isExecuting$.next(!1)})))},t}(),a=function(t){function e(e,n){return t.call(this,e,n,!0)||this}return function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}(e,t),e}(c),u=Object.freeze({executingCssClass:"executing",handleDisabled:!0,hasDisabledDelay:!1}),m=new r.InjectionToken("command-config");function d(t){return t instanceof c}function p(t){return!(t instanceof c)&&!(null===(e=t)||"object"!=typeof e||!t.execute||!t.host);var e}var h="ssvCommand",f=function(){function t(t,n,r,o){this.config=t,this.renderer=n,this.element=r,this.cdr=o,this._commandOptions=this.config,this._destroy$=new e.Subject}return Object.defineProperty(t.prototype,"commandOptions",{get:function(){return this._commandOptions},set:function(t){t!==this._commandOptions&&(this._commandOptions=Object.assign(Object.assign({},this.config),t))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"command",{get:function(){return this._command},enumerable:!1,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;if(!this.commandOrCreator)throw new Error("ssvCommand: [ssvCommand] should be defined!");if(d(this.commandOrCreator))this._command=this.commandOrCreator;else{if(!p(this.commandOrCreator))throw new Error("ssvCommand: [ssvCommand] is not defined properly!");var e=this.commandOrCreator.isAsync||void 0===this.commandOrCreator.isAsync,r=this.commandOrCreator.execute.bind(this.commandOrCreator.host);this.commandParams=this.commandParams||this.commandOrCreator.params;var o=this.commandOrCreator.canExecute instanceof Function?this.commandOrCreator.canExecute.bind(this.commandOrCreator.host,this.commandParams)():this.commandOrCreator.canExecute;this._command=new c(r,o,e)}this._command.subscribe(),this._command.canExecute$.pipe(this.commandOptions.hasDisabledDelay?n.delay(1):n.tap((function(){})),n.tap((function(e){t.trySetDisabled(!e),t.cdr.markForCheck()})),n.takeUntil(this._destroy$)).subscribe(),this._command.isExecuting$&&this._command.isExecuting$.pipe(n.tap((function(e){e?t.renderer.addClass(t.element.nativeElement,t.commandOptions.executingCssClass):t.renderer.removeClass(t.element.nativeElement,t.commandOptions.executingCssClass)})),n.takeUntil(this._destroy$)).subscribe()},t.prototype.onClick=function(){var t;Array.isArray(this.commandParams)?(t=this._command).execute.apply(t,s(this.commandParams)):this._command.execute(this.commandParams)},t.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete(),this._command&&this._command.unsubscribe()},t.prototype.trySetDisabled=function(t){this.commandOptions.handleDisabled&&this.renderer.setProperty(this.element.nativeElement,"disabled",t)},t}();f.decorators=[{type:r.Directive,args:[{selector:"[ssvCommand]",exportAs:h}]}],f.ctorParameters=function(){return[{type:void 0,decorators:[{type:r.Inject,args:[m]}]},{type:r.Renderer2},{type:r.ElementRef},{type:r.ChangeDetectorRef}]},f.propDecorators={commandOrCreator:[{type:r.Input,args:[h]}],commandOptions:[{type:r.Input,args:["ssvCommandOptions"]}],commandParams:[{type:r.Input,args:["ssvCommandParams"]}],onClick:[{type:r.HostListener,args:["click"]}]};var l="ssvCommandRef",y=function(){function t(){}return Object.defineProperty(t.prototype,"command",{get:function(){return this._command},enumerable:!1,configurable:!0}),t.prototype.ngOnInit=function(){if(!p(this.commandCreator))throw new Error("ssvCommandRef: [ssvCommandRef] is not defined properly!");var t=this.commandCreator.isAsync||void 0===this.commandCreator.isAsync,e=this.commandCreator.execute.bind(this.commandCreator.host);this._command=new c(e,this.commandCreator.canExecute,t)},t.prototype.ngOnDestroy=function(){this._command&&this._command.destroy()},t}();y.decorators=[{type:r.Directive,args:[{selector:"[ssvCommandRef]",exportAs:l}]}],y.propDecorators={commandCreator:[{type:r.Input,args:[l]}]};var b=new r.InjectionToken("@ssv/ngx.command/configData"),x=[f,y],g=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:[{provide:b,useValue:e}]}},t}();function v(t){var e="function"==typeof t?t():t;return e?Object.assign(Object.assign({},u),e):u}g.decorators=[{type:r.NgModule,args:[{declarations:x,providers:[{provide:m,useFactory:v,deps:[[b,new r.Optional]]}],exports:s(x)}]}];t.COMMAND_CONFIG=m,t.COMMAND_DEFAULT_CONFIG=u,t.Command=c,t.CommandAsync=a,t.CommandDirective=f,t.CommandRefDirective=y,t.MODULE_CONFIG_DATA=b,t.SsvCommandModule=g,t.VERSION="2.1.1-dev267",t._moduleConfigFactory=v,t.canExecuteFromNgForm=function(t,r){var o=Object.assign({validity:!0,dirty:!0},r);return t.statusChanges?t.statusChanges.pipe(n.delay(0),n.startWith(t.valid),n.map((function(){return!(o.validity&&!t.valid||o.dirty&&!t.dirty)})),n.distinctUntilChanged()):e.of(!0)},t.isCommand=d,t.isCommandCreator=p,Object.defineProperty(t,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=ssv-ngx.command.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/command.ts","../../src/config.ts","../../src/command.util.ts","../../src/command.directive.ts","../../src/command-ref.directive.ts","../../src/module.ts","../../src/version.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","create","__read","o","n","m","Symbol","iterator","r","e","i","ar","next","done","push","value","error","__spread","arguments","length","concat","Command","execute","canExecute$","isAsync","_this","this","autoDestroy","_isExecuting$","BehaviorSubject","_isExecuting","_canExecute","executionPipe$","Subject","isExecuting$$","Subscription","EMPTY","canExecute$$","executionPipe$$","subscribersCount","combineLatest","pipe","map","_a","_b","isExecuting","canExecuteResult","subscribe","x","canExecute","tap","buildExecutionPipe","defineProperty","asObservable","args","_i","destroy","unsubscribe","pipe$","filter","execFn","switchMap","apply","of","finalize","take","catchError","console","CommandAsync","_super","__","constructor","__extends","COMMAND_DEFAULT_CONFIG","freeze","executingCssClass","handleDisabled","COMMAND_CONFIG","InjectionToken","isCommand","arg","isCommandCreator","host","SELECTOR","CommandDirective","config","renderer","element","cdr","_commandOptions","_destroy$","assign","_command","ngOnInit","trySetDisabled","commandOrCreator","Error","undefined","bind","commandParams","params","canExec","Function","delay","markForCheck","takeUntil","isExecuting$","addClass","nativeElement","commandOptions","removeClass","onClick","isArray","ngOnDestroy","complete","disabled","setProperty","Directive","selector","exportAs","Inject","Renderer2","ElementRef","ChangeDetectorRef","Input","HostListener","CommandRefDirective","commandCreator","MODULE_CONFIG_DATA","components","SsvCommandModule","forRoot","ngModule","providers","provide","useValue","_moduleConfigFactory","cfg","NgModule","declarations","useFactory","deps","Optional","exports","form","options","opts","validity","dirty","statusChanges","startWith","valid","distinctUntilChanged"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Observable, combineLatest, Subscription, Subject, BehaviorSubject, of, EMPTY } from \"rxjs\";\nimport { tap, map, filter, switchMap, catchError, finalize, take } from \"rxjs/operators\";\nimport { ICommand } from \"./command.model\";\n\n/**\n * Command object used to encapsulate information which is needed to perform an action.\n */\nexport class Command implements ICommand {\n\n\t/** Determines whether the command is currently executing, as a snapshot value. */\n\tget isExecuting(): boolean {\n\t\treturn this._isExecuting;\n\t}\n\n\t/** Determines whether the command can execute or not, as a snapshot value. */\n\tget canExecute(): boolean {\n\t\treturn this._canExecute;\n\t}\n\n\t/** Determines whether the command is currently executing, as an observable. */\n\tget isExecuting$(): Observable<boolean> {\n\t\treturn this._isExecuting$.asObservable();\n\t}\n\n\t/** Determines whether to auto destroy when having 0 subscribers. */\n\tautoDestroy = true;\n\n\t/** Determines whether the command can execute or not, as an observable. */\n\treadonly canExecute$: Observable<boolean>;\n\n\tprivate _isExecuting$ = new BehaviorSubject<boolean>(false);\n\tprivate _isExecuting = false;\n\tprivate _canExecute = true;\n\tprivate executionPipe$ = new Subject<unknown[] | undefined>();\n\tprivate isExecuting$$ = Subscription.EMPTY;\n\tprivate canExecute$$ = Subscription.EMPTY;\n\tprivate executionPipe$$ = Subscription.EMPTY;\n\tprivate subscribersCount = 0;\n\n\t/**\n\t * Creates an instance of Command.\n\t *\n\t * @param execute Execute function to invoke - use `isAsync: true` when `Observable<any>`.\n\t * @param canExecute Observable which determines whether it can execute or not.\n\t * @param isAsync Indicates that the execute function is async e.g. Observable.\n\t */\n\tconstructor(\n\t\texecute: (...args: unknown[]) => unknown,\n\t\tcanExecute$?: Observable<boolean>,\n\t\tisAsync?: boolean,\n\t) {\n\t\tif (canExecute$) {\n\t\t\tthis.canExecute$ = combineLatest([\n\t\t\t\tthis._isExecuting$,\n\t\t\t\tcanExecute$\n\t\t\t]).pipe(\n\t\t\t\tmap(([isExecuting, canExecuteResult]) => {\n\t\t\t\t\t// console.log(\"[command::combineLatest$] update!\", { isExecuting, canExecuteResult });\n\t\t\t\t\tthis._isExecuting = isExecuting;\n\t\t\t\t\tthis._canExecute = !isExecuting && !!canExecuteResult;\n\t\t\t\t\treturn this._canExecute;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tthis.canExecute$$ = this.canExecute$.subscribe();\n\t\t} else {\n\t\t\tthis.canExecute$ = this._isExecuting$.pipe(\n\t\t\t\tmap(x => {\n\t\t\t\t\tconst canExecute = !x;\n\t\t\t\t\tthis._canExecute = canExecute;\n\t\t\t\t\treturn canExecute;\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.isExecuting$$ = this._isExecuting$\n\t\t\t\t.pipe(tap(x => this._isExecuting = x))\n\t\t\t\t.subscribe();\n\t\t}\n\t\tthis.executionPipe$$ = this.buildExecutionPipe(execute, isAsync).subscribe();\n\t}\n\n\t/** Execute function to invoke. */\n\texecute(...args: unknown[]): void {\n\t\t// console.warn(\"[command::execute]\", args);\n\t\tthis.executionPipe$.next(args);\n\t}\n\n\t/** Disposes all resources held by subscriptions. */\n\tdestroy(): void {\n\t\t// console.warn(\"[command::destroy]\");\n\t\tthis.executionPipe$$.unsubscribe();\n\t\tthis.canExecute$$.unsubscribe();\n\t\tthis.isExecuting$$.unsubscribe();\n\t}\n\n\tsubscribe(): void {\n\t\tthis.subscribersCount++;\n\t}\n\n\tunsubscribe(): void {\n\t\tthis.subscribersCount--;\n\t\t// console.log(\"[command::unsubscribe]\", { autoDestroy: this.autoDestroy, subscribersCount: this.subscribersCount });\n\t\tif (this.autoDestroy && this.subscribersCount <= 0) {\n\t\t\tthis.destroy();\n\t\t}\n\t}\n\n\tprivate buildExecutionPipe(execute: (...args: unknown[]) => any, isAsync?: boolean): Observable<unknown> {\n\t\tlet pipe$ = this.executionPipe$.pipe(\n\t\t\t// tap(x => console.warn(\">>>> executionPipe\", this._canExecute)),\n\t\t\tfilter(() => this._canExecute),\n\t\t\ttap(() => {\n\t\t\t\t// console.log(\"[command::executionPipe$] do#1 - set execute\", { args: x });\n\t\t\t\tthis._isExecuting$.next(true);\n\t\t\t})\n\t\t);\n\n\t\tconst execFn = isAsync\n\t\t\t? switchMap<unknown[] | undefined, any[]>(args => {\n\t\t\t\tif (args) {\n\t\t\t\t\treturn execute(...args);\n\t\t\t\t}\n\t\t\t\treturn execute();\n\t\t\t})\n\t\t\t: tap((args: unknown[] | undefined) => {\n\t\t\t\tif (args) {\n\t\t\t\t\texecute(...args);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\texecute();\n\t\t\t});\n\n\t\tpipe$ = pipe$.pipe(\n\t\t\tswitchMap(args => of(args).pipe(\n\t\t\t\texecFn,\n\t\t\t\tfinalize(() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] finalize inner#1 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t\tcatchError(error => {\n\t\t\t\t\tconsole.error(\"Unhandled execute error\", error);\n\t\t\t\t\treturn EMPTY;\n\t\t\t\t}),\n\t\t\t)),\n\t\t\ttap(\n\t\t\t\t() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] tap#2 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t},\n\t\t\t)\n\t\t);\n\t\treturn pipe$;\n\t}\n\n}\n\n/**\n * Async Command object used to encapsulate information which is needed to perform an action,\n * which takes an execute function as Observable/Promise.\n */\nexport class CommandAsync extends Command {\n\n\tconstructor(\n\t\texecute: (...args: unknown[]) => Observable<unknown> | Promise<unknown>,\n\t\tcanExecute$?: Observable<boolean>,\n\t) {\n\t\tsuper(execute, canExecute$, true);\n\t}\n\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport interface CommandOptions {\n\t/**\n\t * Css Class which gets added/removed on the Command element's host while Command `isExecuting$`.\n\t */\n\texecutingCssClass: string;\n\n\t/** Determines whether the disabled will be handled by the directive or not.\n\t * Disable handled by directive's doesn't always play nice when used with other component/pipe/directive and they also handle disabled.\n\t * This disables the handling manually and need to pass explicitly `[disabled]=\"!saveCmd.canExecute\"`.\n\t */\n\thandleDisabled: boolean;\n}\n\nexport const COMMAND_DEFAULT_CONFIG: Readonly<CommandOptions> = Object.freeze({\n\texecutingCssClass: \"executing\",\n\thandleDisabled: true,\n});\n\nexport const COMMAND_CONFIG = new InjectionToken<CommandOptions>(\"command-config\");\n","import { AbstractControl, AbstractControlDirective } from \"@angular/forms\";\nimport { Observable, of } from \"rxjs\";\nimport { map, distinctUntilChanged, startWith, delay } from \"rxjs/operators\";\n\nimport { CommandCreator, ICommand } from \"./command.model\";\nimport { Command } from \"./command\";\n\n/** Determines whether the arg object is of type `Command`. */\nexport function isCommand(arg: unknown): arg is ICommand {\n\treturn arg instanceof Command;\n}\n\n/** Determines whether the arg object is of type `CommandCreator`. */\nexport function isCommandCreator(arg: unknown): arg is CommandCreator {\n\tif (arg instanceof Command) {\n\t\treturn false;\n\t} else if (isAssumedType<CommandCreator>(arg) && arg.execute && arg.host) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport interface CanExecuteFormOptions {\n\t/** Determines whether to check for validity. (defaults: true) */\n\tvalidity?: boolean;\n\n\t/** Determines whether to check whether UI has been touched. (defaults: true) */\n\tdirty?: boolean;\n}\n\n/** Get form is valid as an observable. */\nexport function canExecuteFromNgForm(\n\tform: AbstractControl | AbstractControlDirective,\n\toptions?: CanExecuteFormOptions\n): Observable<boolean> {\n\tconst opts: CanExecuteFormOptions = { validity: true, dirty: true, ...options };\n\n\treturn form.statusChanges\n\t\t? form.statusChanges.pipe(\n\t\t\tdelay(0),\n\t\t\tstartWith(form.valid),\n\t\t\tmap(() => !!(!opts.validity || form.valid) && !!(!opts.dirty || form.dirty)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t\t: of(true);\n}\n\nfunction isAssumedType<T = Record<string, unknown>>(x: unknown): x is Partial<T> {\n\treturn x !== null && typeof x === \"object\";\n}\n","import {\n\tDirective,\n\tOnInit,\n\tOnDestroy,\n\tInput,\n\tHostListener,\n\tElementRef,\n\tInject,\n\tRenderer2,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { tap, delay, takeUntil } from \"rxjs/operators\";\n\nimport { CommandOptions, COMMAND_CONFIG } from \"./config\";\nimport { Command } from \"./command\";\nimport { isCommand, isCommandCreator } from \"./command.util\";\nimport { CommandCreator, ICommand } from \"./command.model\";\n\n/**\n * Controls the state of a component in sync with `Command`.\n *\n * @example\n * ### Most common usage\n * ```html\n * <button [ssvCommand]=\"saveCmd\">Save</button>\n * ```\n *\n *\n * ### Usage with options\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandOptions]=\"{executingCssClass: 'in-progress'}\">Save</button>\n * ```\n *\n *\n * ### Usage with params\n * This is useful for collections (loops) or using multiple actions with different args.\n * *NOTE: This will share the `isExecuting` when used with multiple controls.*\n *\n * #### With single param\n *\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"{id: 1}\">Save</button>\n * ```\n * *NOTE: if you have only 1 argument as an array, it should be enclosed within an array e.g. `[['apple', 'banana']]`,\n * else it will spread and you will `arg1: \"apple\", arg2: \"banana\"`*\n *\n * #### With multi params\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"[{id: 1}, 'hello', hero]\">Save</button>\n * ```\n *\n * ### Usage with Command Creator\n * This is useful for collections (loops) or using multiple actions with different args, whilst not sharing `isExecuting`.\n *\n *\n * ```html\n * <button [ssvCommand]=\"{host: this, execute: removeHero$, canExecute: isValid$, params: [hero, 1337, 'xx']}\">Save</button>\n * ```\n *\n */\n\nconst SELECTOR = \"ssvCommand\";\n\n@Directive({\n\tselector: `[${SELECTOR}]`,\n\texportAs: \"ssvCommand\"\n})\nexport class CommandDirective implements OnInit, OnDestroy {\n\n\t@Input(SELECTOR) commandOrCreator: ICommand | CommandCreator | undefined;\n\n\t@Input(`${SELECTOR}Options`)\n\tget commandOptions(): CommandOptions { return this._commandOptions; }\n\tset commandOptions(value: CommandOptions) {\n\t\tif (value === this._commandOptions) {\n\t\t\treturn;\n\t\t}\n\t\tthis._commandOptions = {\n\t\t\t...this.config,\n\t\t\t...value,\n\t\t};\n\t}\n\n\t@Input(`${SELECTOR}Params`) commandParams: unknown | unknown[];\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\tprivate _commandOptions: CommandOptions = this.config;\n\tprivate _destroy$ = new Subject<void>();\n\n\tconstructor(\n\t\t@Inject(COMMAND_CONFIG) private config: CommandOptions,\n\t\tprivate renderer: Renderer2,\n\t\tprivate element: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t) { }\n\n\tngOnInit(): void {\n\t\t// console.log(\"[ssvCommand::init]\", this.config);\n\t\tthis.trySetDisabled(true);\n\t\tif (!this.commandOrCreator) {\n\t\t\tthrow new Error(\"ssvCommand: [ssvCommand] should be defined!\");\n\t\t} else if (isCommand(this.commandOrCreator)) {\n\t\t\tthis._command = this.commandOrCreator;\n\t\t} else if (isCommandCreator(this.commandOrCreator)) {\n\t\t\tconst isAsync = this.commandOrCreator.isAsync || this.commandOrCreator.isAsync === undefined;\n\n\t\t\t// todo: find something like this for ivy (or angular10+)\n\t\t\t// const hostComponent = (this.viewContainer as any)._view.component;\n\n\t\t\tconst execFn = this.commandOrCreator.execute.bind(this.commandOrCreator.host);\n\t\t\tthis.commandParams = this.commandParams || this.commandOrCreator.params;\n\n\t\t\tconst canExec = this.commandOrCreator.canExecute instanceof Function\n\t\t\t\t? this.commandOrCreator.canExecute.bind(this.commandOrCreator.host, this.commandParams)()\n\t\t\t\t: this.commandOrCreator.canExecute;\n\n\t\t\t// console.log(\"[ssvCommand::init] command creator\", {\n\t\t\t// \tfirstParam: this.commandParams ? this.commandParams[0] : null,\n\t\t\t// \tparams: this.commandParams\n\t\t\t// });\n\t\t\tthis._command = new Command(execFn, canExec, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(\"ssvCommand: [ssvCommand] is not defined properly!\");\n\t\t}\n\n\t\tthis._command.subscribe();\n\t\tthis._command.canExecute$.pipe(\n\t\t\tdelay(1),\n\t\t\ttap(x => {\n\t\t\t\tthis.trySetDisabled(!x);\n\t\t\t\t// console.log(\"[ssvCommand::canExecute$]\", { canExecute: x });\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\n\t\tif (this._command.isExecuting$) {\n\t\t\tthis._command.isExecuting$.pipe(\n\t\t\t\ttap(x => {\n\t\t\t\t\t// console.log(\"[ssvCommand::isExecuting$]\", x, this.commandOptions);\n\t\t\t\t\tif (x) {\n\t\t\t\t\t\tthis.renderer.addClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderer.removeClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t).subscribe();\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick(): void {\n\t\t// console.log(\"[ssvCommand::onClick]\", this.commandParams);\n\t\tif (Array.isArray(this.commandParams)) {\n\t\t\tthis._command.execute(...this.commandParams);\n\t\t} else {\n\t\t\tthis._command.execute(this.commandParams);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[ssvCommand::destroy]\");\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tif (this._command) {\n\t\t\tthis._command.unsubscribe();\n\t\t}\n\t}\n\n\tprivate trySetDisabled(disabled: boolean) {\n\t\tif (this.commandOptions.handleDisabled) {\n\t\t\tthis.renderer.setProperty(this.element.nativeElement, \"disabled\", disabled);\n\t\t}\n\t}\n\n}\n\n","import { Observable } from \"rxjs\";\nimport { Directive, OnInit, OnDestroy, Input } from \"@angular/core\";\n\nimport { ICommand, CommandCreator } from \"./command.model\";\nimport { isCommandCreator } from \"./command.util\";\nimport { Command } from \"./command\";\n\n/**\n * Command creator ref, directive which allows creating Command in the template\n * and associate it to a command (in order to share executions).\n * @example\n * ### Most common usage\n * ```html\n * <div #actionCmd=\"ssvCommandRef\" [ssvCommandRef]=\"{host: this, execute: removeHero$, canExecute: isValid$}\">\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * </div>\n * ```\n *\n */\n@Directive({\n\tselector: \"[ssvCommandRef]\",\n\texportAs: \"ssvCommandRef\"\n})\nexport class CommandRefDirective implements OnInit, OnDestroy {\n\n\t@Input(\"ssvCommandRef\") commandCreator: CommandCreator | undefined;\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\n\tngOnInit(): void {\n\t\tif (isCommandCreator(this.commandCreator)) {\n\t\t\tconst isAsync = this.commandCreator.isAsync || this.commandCreator.isAsync === undefined;\n\n\t\t\tconst execFn = this.commandCreator.execute.bind(this.commandCreator.host);\n\t\t\tthis._command = new Command(execFn, this.commandCreator.canExecute as Observable<boolean> | undefined, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(\"ssvCommandRef: [ssvCommandRef] is not defined properly!\");\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[commandRef::destroy]\");\n\t\tif (this._command) {\n\t\t\tthis._command.destroy();\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { CommandDirective } from \"./command.directive\";\nimport { CommandRefDirective } from \"./command-ref.directive\";\nimport { CommandOptions, COMMAND_DEFAULT_CONFIG, COMMAND_CONFIG } from \"./config\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<CommandOptions>(\"@ssv/ngx.command/configData\");\n\nconst components = [\n\tCommandDirective,\n\tCommandRefDirective\n];\n\n@NgModule({\n\tdeclarations: components,\n\tproviders: [\n\t\t{ provide: COMMAND_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t],\n\texports: [...components],\n})\nexport class SsvCommandModule {\n\n\tstatic forRoot(config?: Partial<CommandOptions> | (() => Partial<CommandOptions>)): ModuleWithProviders<SsvCommandModule> {\n\t\treturn {\n\t\t\tngModule: SsvCommandModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions {\n\tconst cfg = typeof config === \"function\" ? config() : config;\n\treturn cfg\n\t\t? {\n\t\t\t...COMMAND_DEFAULT_CONFIG,\n\t\t\t...cfg,\n\t\t}\n\t\t: COMMAND_DEFAULT_CONFIG;\n}\n","export const VERSION = \"2.1.1-dev246\";\n"]}
1
+ {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/command.ts","../../src/config.ts","../../src/command.util.ts","../../src/command.directive.ts","../../src/command-ref.directive.ts","../../src/module.ts","../../src/version.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","create","__read","o","n","m","Symbol","iterator","r","e","i","ar","next","done","push","value","error","__spread","arguments","length","concat","Command","execute","canExecute$","isAsync","_this","this","autoDestroy","_isExecuting$","BehaviorSubject","_isExecuting","_canExecute","executionPipe$","Subject","isExecuting$$","Subscription","EMPTY","canExecute$$","executionPipe$$","subscribersCount","combineLatest","pipe","map","_a","_b","isExecuting","canExecuteResult","subscribe","x","canExecute","tap","buildExecutionPipe","defineProperty","asObservable","args","_i","destroy","unsubscribe","pipe$","filter","execFn","switchMap","apply","of","finalize","take","catchError","console","CommandAsync","_super","__","constructor","__extends","COMMAND_DEFAULT_CONFIG","freeze","executingCssClass","handleDisabled","hasDisabledDelay","COMMAND_CONFIG","InjectionToken","isCommand","arg","isCommandCreator","host","NAME_CAMEL","CommandDirective","config","renderer","element","cdr","_commandOptions","_destroy$","assign","_command","ngOnInit","commandOrCreator","Error","undefined","bind","commandParams","params","canExec","Function","commandOptions","delay","trySetDisabled","markForCheck","takeUntil","isExecuting$","addClass","nativeElement","removeClass","onClick","isArray","ngOnDestroy","complete","disabled","setProperty","Directive","selector","exportAs","Inject","Renderer2","ElementRef","ChangeDetectorRef","Input","HostListener","CommandRefDirective","commandCreator","MODULE_CONFIG_DATA","components","SsvCommandModule","forRoot","ngModule","providers","provide","useValue","_moduleConfigFactory","cfg","NgModule","declarations","useFactory","deps","Optional","exports","form","options","opts","validity","dirty","statusChanges","startWith","valid","distinctUntilChanged"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Observable, combineLatest, Subscription, Subject, BehaviorSubject, of, EMPTY } from \"rxjs\";\nimport { tap, map, filter, switchMap, catchError, finalize, take } from \"rxjs/operators\";\nimport { ICommand } from \"./command.model\";\n\n/**\n * Command object used to encapsulate information which is needed to perform an action.\n */\nexport class Command implements ICommand {\n\n\t/** Determines whether the command is currently executing, as a snapshot value. */\n\tget isExecuting(): boolean {\n\t\treturn this._isExecuting;\n\t}\n\n\t/** Determines whether the command can execute or not, as a snapshot value. */\n\tget canExecute(): boolean {\n\t\treturn this._canExecute;\n\t}\n\n\t/** Determines whether the command is currently executing, as an observable. */\n\tget isExecuting$(): Observable<boolean> {\n\t\treturn this._isExecuting$.asObservable();\n\t}\n\n\t/** Determines whether to auto destroy when having 0 subscribers. */\n\tautoDestroy = true;\n\n\t/** Determines whether the command can execute or not, as an observable. */\n\treadonly canExecute$: Observable<boolean>;\n\n\tprivate _isExecuting$ = new BehaviorSubject<boolean>(false);\n\tprivate _isExecuting = false;\n\tprivate _canExecute = true;\n\tprivate executionPipe$ = new Subject<unknown[] | undefined>();\n\tprivate isExecuting$$ = Subscription.EMPTY;\n\tprivate canExecute$$ = Subscription.EMPTY;\n\tprivate executionPipe$$ = Subscription.EMPTY;\n\tprivate subscribersCount = 0;\n\n\t/**\n\t * Creates an instance of Command.\n\t *\n\t * @param execute Execute function to invoke - use `isAsync: true` when `Observable<any>`.\n\t * @param canExecute Observable which determines whether it can execute or not.\n\t * @param isAsync Indicates that the execute function is async e.g. Observable.\n\t */\n\tconstructor(\n\t\texecute: (...args: unknown[]) => unknown,\n\t\tcanExecute$?: Observable<boolean>,\n\t\tisAsync?: boolean,\n\t) {\n\t\tif (canExecute$) {\n\t\t\tthis.canExecute$ = combineLatest([\n\t\t\t\tthis._isExecuting$,\n\t\t\t\tcanExecute$\n\t\t\t]).pipe(\n\t\t\t\tmap(([isExecuting, canExecuteResult]) => {\n\t\t\t\t\t// console.log(\"[command::combineLatest$] update!\", { isExecuting, canExecuteResult });\n\t\t\t\t\tthis._isExecuting = isExecuting;\n\t\t\t\t\tthis._canExecute = !isExecuting && !!canExecuteResult;\n\t\t\t\t\treturn this._canExecute;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tthis.canExecute$$ = this.canExecute$.subscribe();\n\t\t} else {\n\t\t\tthis.canExecute$ = this._isExecuting$.pipe(\n\t\t\t\tmap(x => {\n\t\t\t\t\tconst canExecute = !x;\n\t\t\t\t\tthis._canExecute = canExecute;\n\t\t\t\t\treturn canExecute;\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.isExecuting$$ = this._isExecuting$\n\t\t\t\t.pipe(tap(x => this._isExecuting = x))\n\t\t\t\t.subscribe();\n\t\t}\n\t\tthis.executionPipe$$ = this.buildExecutionPipe(execute, isAsync).subscribe();\n\t}\n\n\t/** Execute function to invoke. */\n\texecute(...args: unknown[]): void {\n\t\t// console.warn(\"[command::execute]\", args);\n\t\tthis.executionPipe$.next(args);\n\t}\n\n\t/** Disposes all resources held by subscriptions. */\n\tdestroy(): void {\n\t\t// console.warn(\"[command::destroy]\");\n\t\tthis.executionPipe$$.unsubscribe();\n\t\tthis.canExecute$$.unsubscribe();\n\t\tthis.isExecuting$$.unsubscribe();\n\t}\n\n\tsubscribe(): void {\n\t\tthis.subscribersCount++;\n\t}\n\n\tunsubscribe(): void {\n\t\tthis.subscribersCount--;\n\t\t// console.log(\"[command::unsubscribe]\", { autoDestroy: this.autoDestroy, subscribersCount: this.subscribersCount });\n\t\tif (this.autoDestroy && this.subscribersCount <= 0) {\n\t\t\tthis.destroy();\n\t\t}\n\t}\n\n\tprivate buildExecutionPipe(execute: (...args: unknown[]) => any, isAsync?: boolean): Observable<unknown> {\n\t\tlet pipe$ = this.executionPipe$.pipe(\n\t\t\t// tap(x => console.warn(\">>>> executionPipe\", this._canExecute)),\n\t\t\tfilter(() => this._canExecute),\n\t\t\ttap(() => {\n\t\t\t\t// console.log(\"[command::executionPipe$] do#1 - set execute\", { args: x });\n\t\t\t\tthis._isExecuting$.next(true);\n\t\t\t})\n\t\t);\n\n\t\tconst execFn = isAsync\n\t\t\t? switchMap<unknown[] | undefined, any[]>(args => {\n\t\t\t\tif (args) {\n\t\t\t\t\treturn execute(...args);\n\t\t\t\t}\n\t\t\t\treturn execute();\n\t\t\t})\n\t\t\t: tap((args: unknown[] | undefined) => {\n\t\t\t\tif (args) {\n\t\t\t\t\texecute(...args);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\texecute();\n\t\t\t});\n\n\t\tpipe$ = pipe$.pipe(\n\t\t\tswitchMap(args => of(args).pipe(\n\t\t\t\texecFn,\n\t\t\t\tfinalize(() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] finalize inner#1 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t\tcatchError(error => {\n\t\t\t\t\tconsole.error(\"Unhandled execute error\", error);\n\t\t\t\t\treturn EMPTY;\n\t\t\t\t}),\n\t\t\t)),\n\t\t\ttap(\n\t\t\t\t() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] tap#2 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t},\n\t\t\t)\n\t\t);\n\t\treturn pipe$;\n\t}\n\n}\n\n/**\n * Async Command object used to encapsulate information which is needed to perform an action,\n * which takes an execute function as Observable/Promise.\n */\nexport class CommandAsync extends Command {\n\n\tconstructor(\n\t\texecute: (...args: unknown[]) => Observable<unknown> | Promise<unknown>,\n\t\tcanExecute$?: Observable<boolean>,\n\t) {\n\t\tsuper(execute, canExecute$, true);\n\t}\n\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport interface CommandOptions {\n\t/**\n\t * Css Class which gets added/removed on the Command element's host while Command `isExecuting$`.\n\t */\n\texecutingCssClass: string;\n\n\t/** Determines whether the disabled will be handled by the directive or not.\n\t * Disable handled by directive's doesn't always play nice when used with other component/pipe/directive and they also handle disabled.\n\t * This disables the handling manually and need to pass explicitly `[disabled]=\"!saveCmd.canExecute\"`.\n\t */\n\thandleDisabled: boolean;\n\n\t/** Determine whether to set a `delay(1)` when setting the disabled. Which might be needed when working with external\n\t * components/directives (such as material button)\n\t */\n\thasDisabledDelay: boolean;\n}\n\nexport const COMMAND_DEFAULT_CONFIG = Object.freeze({\n\texecutingCssClass: \"executing\",\n\thandleDisabled: true,\n\thasDisabledDelay: false,\n} as CommandOptions);\n\nexport const COMMAND_CONFIG = new InjectionToken<CommandOptions>(\"command-config\");\n","import { AbstractControl, AbstractControlDirective } from \"@angular/forms\";\nimport { Observable, of } from \"rxjs\";\nimport { map, distinctUntilChanged, startWith, delay } from \"rxjs/operators\";\n\nimport { CommandCreator, ICommand } from \"./command.model\";\nimport { Command } from \"./command\";\n\n/** Determines whether the arg object is of type `Command`. */\nexport function isCommand(arg: unknown): arg is ICommand {\n\treturn arg instanceof Command;\n}\n\n/** Determines whether the arg object is of type `CommandCreator`. */\nexport function isCommandCreator(arg: unknown): arg is CommandCreator {\n\tif (arg instanceof Command) {\n\t\treturn false;\n\t} else if (isAssumedType<CommandCreator>(arg) && arg.execute && arg.host) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport interface CanExecuteFormOptions {\n\t/** Determines whether to check for validity. (defaults: true) */\n\tvalidity?: boolean;\n\n\t/** Determines whether to check whether UI has been touched. (defaults: true) */\n\tdirty?: boolean;\n}\n\n/** Get form is valid as an observable. */\nexport function canExecuteFromNgForm(\n\tform: AbstractControl | AbstractControlDirective,\n\toptions?: CanExecuteFormOptions\n): Observable<boolean> {\n\tconst opts: CanExecuteFormOptions = { validity: true, dirty: true, ...options };\n\n\treturn form.statusChanges\n\t\t? form.statusChanges.pipe(\n\t\t\tdelay(0),\n\t\t\tstartWith(form.valid),\n\t\t\tmap(() => !!(!opts.validity || form.valid) && !!(!opts.dirty || form.dirty)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t\t: of(true);\n}\n\nfunction isAssumedType<T = Record<string, unknown>>(x: unknown): x is Partial<T> {\n\treturn x !== null && typeof x === \"object\";\n}\n","import {\n\tDirective,\n\tOnInit,\n\tOnDestroy,\n\tInput,\n\tHostListener,\n\tElementRef,\n\tInject,\n\tRenderer2,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { tap, delay, takeUntil } from \"rxjs/operators\";\n\nimport { CommandOptions, COMMAND_CONFIG } from \"./config\";\nimport { Command } from \"./command\";\nimport { isCommand, isCommandCreator } from \"./command.util\";\nimport { CommandCreator, ICommand } from \"./command.model\";\n\n/**\n * Controls the state of a component in sync with `Command`.\n *\n * @example\n * ### Most common usage\n * ```html\n * <button [ssvCommand]=\"saveCmd\">Save</button>\n * ```\n *\n *\n * ### Usage with options\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandOptions]=\"{executingCssClass: 'in-progress'}\">Save</button>\n * ```\n *\n *\n * ### Usage with params\n * This is useful for collections (loops) or using multiple actions with different args.\n * *NOTE: This will share the `isExecuting` when used with multiple controls.*\n *\n * #### With single param\n *\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"{id: 1}\">Save</button>\n * ```\n * *NOTE: if you have only 1 argument as an array, it should be enclosed within an array e.g. `[['apple', 'banana']]`,\n * else it will spread and you will `arg1: \"apple\", arg2: \"banana\"`*\n *\n * #### With multi params\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"[{id: 1}, 'hello', hero]\">Save</button>\n * ```\n *\n * ### Usage with Command Creator\n * This is useful for collections (loops) or using multiple actions with different args, whilst not sharing `isExecuting`.\n *\n *\n * ```html\n * <button [ssvCommand]=\"{host: this, execute: removeHero$, canExecute: isValid$, params: [hero, 1337, 'xx']}\">Save</button>\n * ```\n *\n */\n\nconst NAME_CAMEL = \"ssvCommand\";\n\n// let nextUniqueId = 0;\n\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\texportAs: NAME_CAMEL\n})\nexport class CommandDirective implements OnInit, OnDestroy {\n\n\t// readonly id = `${NAME_CAMEL}-${nextUniqueId++}`;\n\n\t@Input(NAME_CAMEL) commandOrCreator: ICommand | CommandCreator | undefined;\n\n\t@Input(`${NAME_CAMEL}Options`)\n\tget commandOptions(): CommandOptions { return this._commandOptions; }\n\tset commandOptions(value: CommandOptions) {\n\t\tif (value === this._commandOptions) {\n\t\t\treturn;\n\t\t}\n\t\tthis._commandOptions = {\n\t\t\t...this.config,\n\t\t\t...value,\n\t\t};\n\t}\n\n\t@Input(`${NAME_CAMEL}Params`) commandParams: unknown | unknown[];\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\tprivate _commandOptions: CommandOptions = this.config;\n\tprivate _destroy$ = new Subject<void>();\n\n\tconstructor(\n\t\t@Inject(COMMAND_CONFIG) private config: CommandOptions,\n\t\tprivate renderer: Renderer2,\n\t\tprivate element: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t) { }\n\n\tngOnInit(): void {\n\t\t// console.log(\"[ssvCommand::init]\", this.config);\n\t\tif (!this.commandOrCreator) {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] should be defined!`);\n\t\t} else if (isCommand(this.commandOrCreator)) {\n\t\t\tthis._command = this.commandOrCreator;\n\t\t} else if (isCommandCreator(this.commandOrCreator)) {\n\t\t\tconst isAsync = this.commandOrCreator.isAsync || this.commandOrCreator.isAsync === undefined;\n\n\t\t\t// todo: find something like this for ivy (or angular10+)\n\t\t\t// const hostComponent = (this.viewContainer as any)._view.component;\n\n\t\t\tconst execFn = this.commandOrCreator.execute.bind(this.commandOrCreator.host);\n\t\t\tthis.commandParams = this.commandParams || this.commandOrCreator.params;\n\n\t\t\tconst canExec = this.commandOrCreator.canExecute instanceof Function\n\t\t\t\t? this.commandOrCreator.canExecute.bind(this.commandOrCreator.host, this.commandParams)()\n\t\t\t\t: this.commandOrCreator.canExecute;\n\n\t\t\t// console.log(\"[ssvCommand::init] command creator\", {\n\t\t\t// \tfirstParam: this.commandParams ? this.commandParams[0] : null,\n\t\t\t// \tparams: this.commandParams\n\t\t\t// });\n\t\t\tthis._command = new Command(execFn, canExec, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);\n\t\t}\n\n\t\tthis._command.subscribe();\n\t\tthis._command.canExecute$.pipe(\n\t\t\tthis.commandOptions.hasDisabledDelay\n\t\t\t\t? delay(1)\n\t\t\t\t: tap(() => { /* stub */ }),\n\t\t\ttap(x => {\n\t\t\t\tthis.trySetDisabled(!x);\n\t\t\t\t// console.log(\"[ssvCommand::canExecute$]\", { canExecute: x });\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\n\t\tif (this._command.isExecuting$) {\n\t\t\tthis._command.isExecuting$.pipe(\n\t\t\t\ttap(x => {\n\t\t\t\t\t// console.log(\"[ssvCommand::isExecuting$]\", x, this.commandOptions);\n\t\t\t\t\tif (x) {\n\t\t\t\t\t\tthis.renderer.addClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderer.removeClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t).subscribe();\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick(): void {\n\t\t// console.log(\"[ssvCommand::onClick]\", this.commandParams);\n\t\tif (Array.isArray(this.commandParams)) {\n\t\t\tthis._command.execute(...this.commandParams);\n\t\t} else {\n\t\t\tthis._command.execute(this.commandParams);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[ssvCommand::destroy]\");\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tif (this._command) {\n\t\t\tthis._command.unsubscribe();\n\t\t}\n\t}\n\n\tprivate trySetDisabled(disabled: boolean) {\n\t\tif (this.commandOptions.handleDisabled) {\n\t\t\t// console.warn(\">>>> disabled\", { id: this.id, disabled });\n\t\t\tthis.renderer.setProperty(this.element.nativeElement, \"disabled\", disabled);\n\t\t}\n\t}\n\n}\n\n","import { Observable } from \"rxjs\";\nimport { Directive, OnInit, OnDestroy, Input } from \"@angular/core\";\n\nimport { ICommand, CommandCreator } from \"./command.model\";\nimport { isCommandCreator } from \"./command.util\";\nimport { Command } from \"./command\";\n\nconst NAME_CAMEL = \"ssvCommandRef\";\n\n/**\n * Command creator ref, directive which allows creating Command in the template\n * and associate it to a command (in order to share executions).\n * @example\n * ### Most common usage\n * ```html\n * <div #actionCmd=\"ssvCommandRef\" [ssvCommandRef]=\"{host: this, execute: removeHero$, canExecute: isValid$}\">\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * </div>\n * ```\n *\n */\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\texportAs: NAME_CAMEL\n})\nexport class CommandRefDirective implements OnInit, OnDestroy {\n\n\t@Input(NAME_CAMEL) commandCreator: CommandCreator | undefined;\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\n\tngOnInit(): void {\n\t\tif (isCommandCreator(this.commandCreator)) {\n\t\t\tconst isAsync = this.commandCreator.isAsync || this.commandCreator.isAsync === undefined;\n\n\t\t\tconst execFn = this.commandCreator.execute.bind(this.commandCreator.host);\n\t\t\tthis._command = new Command(execFn, this.commandCreator.canExecute as Observable<boolean> | undefined, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[commandRef::destroy]\");\n\t\tif (this._command) {\n\t\t\tthis._command.destroy();\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { CommandDirective } from \"./command.directive\";\nimport { CommandRefDirective } from \"./command-ref.directive\";\nimport { CommandOptions, COMMAND_DEFAULT_CONFIG, COMMAND_CONFIG } from \"./config\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<CommandOptions>(\"@ssv/ngx.command/configData\");\n\nconst components = [\n\tCommandDirective,\n\tCommandRefDirective\n];\n\n@NgModule({\n\tdeclarations: components,\n\tproviders: [\n\t\t{ provide: COMMAND_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t],\n\texports: [...components],\n})\nexport class SsvCommandModule {\n\n\tstatic forRoot(config?: Partial<CommandOptions> | (() => Partial<CommandOptions>)): ModuleWithProviders<SsvCommandModule> {\n\t\treturn {\n\t\t\tngModule: SsvCommandModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions {\n\tconst cfg = typeof config === \"function\" ? config() : config;\n\treturn cfg\n\t\t? {\n\t\t\t...COMMAND_DEFAULT_CONFIG,\n\t\t\t...cfg,\n\t\t}\n\t\t: COMMAND_DEFAULT_CONFIG;\n}\n","export const VERSION = \"2.1.1-dev267\";\n"]}
package/config.d.ts CHANGED
@@ -9,6 +9,10 @@ export interface CommandOptions {
9
9
  * This disables the handling manually and need to pass explicitly `[disabled]="!saveCmd.canExecute"`.
10
10
  */
11
11
  handleDisabled: boolean;
12
+ /** Determine whether to set a `delay(1)` when setting the disabled. Which might be needed when working with external
13
+ * components/directives (such as material button)
14
+ */
15
+ hasDisabledDelay: boolean;
12
16
  }
13
17
  export declare const COMMAND_DEFAULT_CONFIG: Readonly<CommandOptions>;
14
18
  export declare const COMMAND_CONFIG: InjectionToken<CommandOptions>;
@@ -1,6 +1,7 @@
1
1
  import { Directive, Input } from "@angular/core";
2
2
  import { isCommandCreator } from "./command.util";
3
3
  import { Command } from "./command";
4
+ const NAME_CAMEL = "ssvCommandRef";
4
5
  /**
5
6
  * Command creator ref, directive which allows creating Command in the template
6
7
  * and associate it to a command (in order to share executions).
@@ -27,7 +28,7 @@ export class CommandRefDirective {
27
28
  this._command = new Command(execFn, this.commandCreator.canExecute, isAsync);
28
29
  }
29
30
  else {
30
- throw new Error("ssvCommandRef: [ssvCommandRef] is not defined properly!");
31
+ throw new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);
31
32
  }
32
33
  }
33
34
  ngOnDestroy() {
@@ -39,11 +40,11 @@ export class CommandRefDirective {
39
40
  }
40
41
  CommandRefDirective.decorators = [
41
42
  { type: Directive, args: [{
42
- selector: "[ssvCommandRef]",
43
- exportAs: "ssvCommandRef"
43
+ selector: `[${NAME_CAMEL}]`,
44
+ exportAs: NAME_CAMEL
44
45
  },] }
45
46
  ];
46
47
  CommandRefDirective.propDecorators = {
47
- commandCreator: [{ type: Input, args: ["ssvCommandRef",] }]
48
+ commandCreator: [{ type: Input, args: [NAME_CAMEL,] }]
48
49
  };
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1yZWYuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2NpcmNsZWNpL3JlcG8vc3JjLyIsInNvdXJjZXMiOlsiY29tbWFuZC1yZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBS0gsTUFBTSxPQUFPLG1CQUFtQjtJQUkvQixJQUFJLE9BQU8sS0FBZSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBR2pELFFBQVE7UUFDUCxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7WUFFekYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUE2QyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2hIO2FBQU07WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDM0U7SUFDRixDQUFDO0lBRUQsV0FBVztRQUNWLHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN4QjtJQUNGLENBQUM7OztZQTNCRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsUUFBUSxFQUFFLGVBQWU7YUFDekI7Ozs2QkFHQyxLQUFLLFNBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBJQ29tbWFuZCwgQ29tbWFuZENyZWF0b3IgfSBmcm9tIFwiLi9jb21tYW5kLm1vZGVsXCI7XG5pbXBvcnQgeyBpc0NvbW1hbmRDcmVhdG9yIH0gZnJvbSBcIi4vY29tbWFuZC51dGlsXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZFwiO1xuXG4vKipcbiAqIENvbW1hbmQgY3JlYXRvciByZWYsIGRpcmVjdGl2ZSB3aGljaCBhbGxvd3MgY3JlYXRpbmcgQ29tbWFuZCBpbiB0aGUgdGVtcGxhdGVcbiAqIGFuZCBhc3NvY2lhdGUgaXQgdG8gYSBjb21tYW5kIChpbiBvcmRlciB0byBzaGFyZSBleGVjdXRpb25zKS5cbiAqIEBleGFtcGxlXG4gKiAjIyMgTW9zdCBjb21tb24gdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDxkaXYgI2FjdGlvbkNtZD1cInNzdkNvbW1hbmRSZWZcIiBbc3N2Q29tbWFuZFJlZl09XCJ7aG9zdDogdGhpcywgZXhlY3V0ZTogcmVtb3ZlSGVybyQsIGNhbkV4ZWN1dGU6IGlzVmFsaWQkfVwiPlxuICogICAgPGJ1dHRvbiBbc3N2Q29tbWFuZF09XCJhY3Rpb25DbWQuY29tbWFuZFwiIFtzc3ZDb21tYW5kUGFyYW1zXT1cImhlcm9cIj5cbiAqICAgICAgUmVtb3ZlXG4gKiAgICA8L2J1dHRvbj5cbiAqICAgIDxidXR0b24gW3NzdkNvbW1hbmRdPVwiYWN0aW9uQ21kLmNvbW1hbmRcIiBbc3N2Q29tbWFuZFBhcmFtc109XCJoZXJvXCI+XG4gKiAgICAgICBSZW1vdmVcbiAqICAgIDwvYnV0dG9uPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqXG4gKi9cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogXCJbc3N2Q29tbWFuZFJlZl1cIixcblx0ZXhwb3J0QXM6IFwic3N2Q29tbWFuZFJlZlwiXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmRSZWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0QElucHV0KFwic3N2Q29tbWFuZFJlZlwiKSBjb21tYW5kQ3JlYXRvcjogQ29tbWFuZENyZWF0b3IgfCB1bmRlZmluZWQ7XG5cblx0Z2V0IGNvbW1hbmQoKTogSUNvbW1hbmQgeyByZXR1cm4gdGhpcy5fY29tbWFuZDsgfVxuXHRwcml2YXRlIF9jb21tYW5kITogSUNvbW1hbmQ7XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0aWYgKGlzQ29tbWFuZENyZWF0b3IodGhpcy5jb21tYW5kQ3JlYXRvcikpIHtcblx0XHRcdGNvbnN0IGlzQXN5bmMgPSB0aGlzLmNvbW1hbmRDcmVhdG9yLmlzQXN5bmMgfHwgdGhpcy5jb21tYW5kQ3JlYXRvci5pc0FzeW5jID09PSB1bmRlZmluZWQ7XG5cblx0XHRcdGNvbnN0IGV4ZWNGbiA9IHRoaXMuY29tbWFuZENyZWF0b3IuZXhlY3V0ZS5iaW5kKHRoaXMuY29tbWFuZENyZWF0b3IuaG9zdCk7XG5cdFx0XHR0aGlzLl9jb21tYW5kID0gbmV3IENvbW1hbmQoZXhlY0ZuLCB0aGlzLmNvbW1hbmRDcmVhdG9yLmNhbkV4ZWN1dGUgYXMgT2JzZXJ2YWJsZTxib29sZWFuPiB8IHVuZGVmaW5lZCwgaXNBc3luYyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInNzdkNvbW1hbmRSZWY6IFtzc3ZDb21tYW5kUmVmXSBpcyBub3QgZGVmaW5lZCBwcm9wZXJseSFcIik7XG5cdFx0fVxuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJbY29tbWFuZFJlZjo6ZGVzdHJveV1cIik7XG5cdFx0aWYgKHRoaXMuX2NvbW1hbmQpIHtcblx0XHRcdHRoaXMuX2NvbW1hbmQuZGVzdHJveSgpO1xuXHRcdH1cblx0fVxuXG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1yZWYuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2NpcmNsZWNpL3JlcG8vc3JjLyIsInNvdXJjZXMiOlsiY29tbWFuZC1yZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQztBQUVuQzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUtILE1BQU0sT0FBTyxtQkFBbUI7SUFJL0IsSUFBSSxPQUFPLEtBQWUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUdqRCxRQUFRO1FBQ1AsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO1lBRXpGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBNkMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoSDthQUFNO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsTUFBTSxVQUFVLDRCQUE0QixDQUFDLENBQUM7U0FDM0U7SUFDRixDQUFDO0lBRUQsV0FBVztRQUNWLHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN4QjtJQUNGLENBQUM7OztZQTNCRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLElBQUksVUFBVSxHQUFHO2dCQUMzQixRQUFRLEVBQUUsVUFBVTthQUNwQjs7OzZCQUdDLEtBQUssU0FBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IElDb21tYW5kLCBDb21tYW5kQ3JlYXRvciB9IGZyb20gXCIuL2NvbW1hbmQubW9kZWxcIjtcbmltcG9ydCB7IGlzQ29tbWFuZENyZWF0b3IgfSBmcm9tIFwiLi9jb21tYW5kLnV0aWxcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kXCI7XG5cbmNvbnN0IE5BTUVfQ0FNRUwgPSBcInNzdkNvbW1hbmRSZWZcIjtcblxuLyoqXG4gKiBDb21tYW5kIGNyZWF0b3IgcmVmLCBkaXJlY3RpdmUgd2hpY2ggYWxsb3dzIGNyZWF0aW5nIENvbW1hbmQgaW4gdGhlIHRlbXBsYXRlXG4gKiBhbmQgYXNzb2NpYXRlIGl0IHRvIGEgY29tbWFuZCAoaW4gb3JkZXIgdG8gc2hhcmUgZXhlY3V0aW9ucykuXG4gKiBAZXhhbXBsZVxuICogIyMjIE1vc3QgY29tbW9uIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8ZGl2ICNhY3Rpb25DbWQ9XCJzc3ZDb21tYW5kUmVmXCIgW3NzdkNvbW1hbmRSZWZdPVwie2hvc3Q6IHRoaXMsIGV4ZWN1dGU6IHJlbW92ZUhlcm8kLCBjYW5FeGVjdXRlOiBpc1ZhbGlkJH1cIj5cbiAqICAgIDxidXR0b24gW3NzdkNvbW1hbmRdPVwiYWN0aW9uQ21kLmNvbW1hbmRcIiBbc3N2Q29tbWFuZFBhcmFtc109XCJoZXJvXCI+XG4gKiAgICAgIFJlbW92ZVxuICogICAgPC9idXR0b24+XG4gKiAgICA8YnV0dG9uIFtzc3ZDb21tYW5kXT1cImFjdGlvbkNtZC5jb21tYW5kXCIgW3NzdkNvbW1hbmRQYXJhbXNdPVwiaGVyb1wiPlxuICogICAgICAgUmVtb3ZlXG4gKiAgICA8L2J1dHRvbj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6IGBbJHtOQU1FX0NBTUVMfV1gLFxuXHRleHBvcnRBczogTkFNRV9DQU1FTFxufSlcbmV4cG9ydCBjbGFzcyBDb21tYW5kUmVmRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG5cdEBJbnB1dChOQU1FX0NBTUVMKSBjb21tYW5kQ3JlYXRvcjogQ29tbWFuZENyZWF0b3IgfCB1bmRlZmluZWQ7XG5cblx0Z2V0IGNvbW1hbmQoKTogSUNvbW1hbmQgeyByZXR1cm4gdGhpcy5fY29tbWFuZDsgfVxuXHRwcml2YXRlIF9jb21tYW5kITogSUNvbW1hbmQ7XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0aWYgKGlzQ29tbWFuZENyZWF0b3IodGhpcy5jb21tYW5kQ3JlYXRvcikpIHtcblx0XHRcdGNvbnN0IGlzQXN5bmMgPSB0aGlzLmNvbW1hbmRDcmVhdG9yLmlzQXN5bmMgfHwgdGhpcy5jb21tYW5kQ3JlYXRvci5pc0FzeW5jID09PSB1bmRlZmluZWQ7XG5cblx0XHRcdGNvbnN0IGV4ZWNGbiA9IHRoaXMuY29tbWFuZENyZWF0b3IuZXhlY3V0ZS5iaW5kKHRoaXMuY29tbWFuZENyZWF0b3IuaG9zdCk7XG5cdFx0XHR0aGlzLl9jb21tYW5kID0gbmV3IENvbW1hbmQoZXhlY0ZuLCB0aGlzLmNvbW1hbmRDcmVhdG9yLmNhbkV4ZWN1dGUgYXMgT2JzZXJ2YWJsZTxib29sZWFuPiB8IHVuZGVmaW5lZCwgaXNBc3luYyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgJHtOQU1FX0NBTUVMfTogWyR7TkFNRV9DQU1FTH1dIGlzIG5vdCBkZWZpbmVkIHByb3Blcmx5IWApO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwiW2NvbW1hbmRSZWY6OmRlc3Ryb3ldXCIpO1xuXHRcdGlmICh0aGlzLl9jb21tYW5kKSB7XG5cdFx0XHR0aGlzLl9jb21tYW5kLmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cblxufVxuIl19
@@ -46,7 +46,8 @@ import { isCommand, isCommandCreator } from "./command.util";
46
46
  * ```
47
47
  *
48
48
  */
49
- const SELECTOR = "ssvCommand";
49
+ const NAME_CAMEL = "ssvCommand";
50
+ // let nextUniqueId = 0;
50
51
  export class CommandDirective {
51
52
  constructor(config, renderer, element, cdr) {
52
53
  this.config = config;
@@ -66,9 +67,8 @@ export class CommandDirective {
66
67
  get command() { return this._command; }
67
68
  ngOnInit() {
68
69
  // console.log("[ssvCommand::init]", this.config);
69
- this.trySetDisabled(true);
70
70
  if (!this.commandOrCreator) {
71
- throw new Error("ssvCommand: [ssvCommand] should be defined!");
71
+ throw new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] should be defined!`);
72
72
  }
73
73
  else if (isCommand(this.commandOrCreator)) {
74
74
  this._command = this.commandOrCreator;
@@ -89,10 +89,12 @@ export class CommandDirective {
89
89
  this._command = new Command(execFn, canExec, isAsync);
90
90
  }
91
91
  else {
92
- throw new Error("ssvCommand: [ssvCommand] is not defined properly!");
92
+ throw new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);
93
93
  }
94
94
  this._command.subscribe();
95
- this._command.canExecute$.pipe(delay(1), tap(x => {
95
+ this._command.canExecute$.pipe(this.commandOptions.hasDisabledDelay
96
+ ? delay(1)
97
+ : tap(() => { }), tap(x => {
96
98
  this.trySetDisabled(!x);
97
99
  // console.log("[ssvCommand::canExecute$]", { canExecute: x });
98
100
  this.cdr.markForCheck();
@@ -128,14 +130,15 @@ export class CommandDirective {
128
130
  }
129
131
  trySetDisabled(disabled) {
130
132
  if (this.commandOptions.handleDisabled) {
133
+ // console.warn(">>>> disabled", { id: this.id, disabled });
131
134
  this.renderer.setProperty(this.element.nativeElement, "disabled", disabled);
132
135
  }
133
136
  }
134
137
  }
135
138
  CommandDirective.decorators = [
136
139
  { type: Directive, args: [{
137
- selector: `[${SELECTOR}]`,
138
- exportAs: "ssvCommand"
140
+ selector: `[${NAME_CAMEL}]`,
141
+ exportAs: NAME_CAMEL
139
142
  },] }
140
143
  ];
141
144
  CommandDirective.ctorParameters = () => [
@@ -145,9 +148,9 @@ CommandDirective.ctorParameters = () => [
145
148
  { type: ChangeDetectorRef }
146
149
  ];
147
150
  CommandDirective.propDecorators = {
148
- commandOrCreator: [{ type: Input, args: [SELECTOR,] }],
149
- commandOptions: [{ type: Input, args: [`${SELECTOR}Options`,] }],
150
- commandParams: [{ type: Input, args: [`${SELECTOR}Params`,] }],
151
+ commandOrCreator: [{ type: Input, args: [NAME_CAMEL,] }],
152
+ commandOptions: [{ type: Input, args: [`${NAME_CAMEL}Options`,] }],
153
+ commandParams: [{ type: Input, args: [`${NAME_CAMEL}Params`,] }],
151
154
  onClick: [{ type: HostListener, args: ["click",] }]
152
155
  };
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJjb21tYW5kLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUdULEtBQUssRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFrQixjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBRUgsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBTTlCLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QjVCLFlBQ2lDLE1BQXNCLEVBQzlDLFFBQW1CLEVBQ25CLE9BQW1CLEVBQ25CLEdBQXNCO1FBSEUsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBUHZCLG9CQUFlLEdBQW1CLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPcEMsQ0FBQztJQXhCTCxJQUNJLGNBQWMsS0FBcUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNyRSxJ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VCxVQUFVO1lBR1YsaUJBQWlCOzs7K0JBNkRoQixLQUFLLFNBQUMsUUFBUTs2QkFFZCxLQUFLLFNBQUMsR0FBRyxRQUFRLFNBQVM7NEJBWTFCLEtBQUssU0FBQyxHQUFHLFFBQVEsUUFBUTtzQkEyRXpCLFlBQVksU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGlyZWN0aXZlLFxuXHRPbkluaXQsXG5cdE9uRGVzdHJveSxcblx0SW5wdXQsXG5cdEhvc3RMaXN0ZW5lcixcblx0RWxlbWVudFJlZixcblx0SW5qZWN0LFxuXHRSZW5kZXJlcjIsXG5cdENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YXAsIGRlbGF5LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgQ29tbWFuZE9wdGlvbnMsIENPTU1BTkRfQ09ORklHIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZFwiO1xuaW1wb3J0IHsgaXNDb21tYW5kLCBpc0NvbW1hbmRDcmVhdG9yIH0gZnJvbSBcIi4vY29tbWFuZC51dGlsXCI7XG5pbXBvcnQgeyBDb21tYW5kQ3JlYXRvciwgSUNvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kLm1vZGVsXCI7XG5cbi8qKlxuICogQ29udHJvbHMgdGhlIHN0YXRlIG9mIGEgY29tcG9uZW50IGluIHN5bmMgd2l0aCBgQ29tbWFuZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqICMjIyBNb3N0IGNvbW1vbiB1c2FnZVxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBbc3N2Q29tbWFuZF09XCJzYXZlQ21kXCI+U2F2ZTwvYnV0dG9uPlxuICogYGBgXG4gKlxuICpcbiAqICMjIyBVc2FnZSB3aXRoIG9wdGlvbnNcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW3NzdkNvbW1hbmRdPVwic2F2ZUNtZFwiIFtzc3ZDb21tYW5kT3B0aW9uc109XCJ7ZXhlY3V0aW5nQ3NzQ2xhc3M6ICdpbi1wcm9ncmVzcyd9XCI+U2F2ZTwvYnV0dG9uPlxuICogYGBgXG4gKlxuICpcbiAqICMjIyBVc2FnZSB3aXRoIHBhcmFtc1xuICogVGhpcyBpcyB1c2VmdWwgZm9yIGNvbGxlY3Rpb25zIChsb29wcykgb3IgdXNpbmcgbXVsdGlwbGUgYWN0aW9ucyB3aXRoIGRpZmZlcmVudCBhcmdzLlxuICogKk5PVEU6IFRoaXMgd2lsbCBzaGFyZSB0aGUgYGlzRXhlY3V0aW5nYCB3aGVuIHVzZWQgd2l0aCBtdWx0aXBsZSBjb250cm9scy4qXG4gKlxuICogIyMjIyBXaXRoIHNpbmdsZSBwYXJhbVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW3NzdkNvbW1hbmRdPVwic2F2ZUNtZFwiIFtzc3ZDb21tYW5kUGFyYW1zXT1cIntpZDogMX1cIj5TYXZlPC9idXR0b24+XG4gKiBgYGBcbiAqICpOT1RFOiBpZiB5b3UgaGF2ZSBvbmx5IDEgYXJndW1lbnQgYXMgYW4gYXJyYXksIGl0IHNob3VsZCBiZSBlbmNsb3NlZCB3aXRoaW4gYW4gYXJyYXkgZS5nLiBgW1snYXBwbGUnLCAnYmFuYW5hJ11dYCxcbiAqIGVsc2UgaXQgd2lsbCBzcHJlYWQgYW5kIHlvdSB3aWxsIGBhcmcxOiBcImFwcGxlXCIsIGFyZzI6IFwiYmFuYW5hXCJgKlxuICpcbiAgKiAjIyMjIFdpdGggbXVsdGkgcGFyYW1zXG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIFtzc3ZDb21tYW5kXT1cInNhdmVDbWRcIiBbc3N2Q29tbWFuZFBhcmFtc109XCJbe2lkOiAxfSwgJ2hlbGxvJywgaGVyb11cIj5TYXZlPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiAjIyMgVXNhZ2Ugd2l0aCBDb21tYW5kIENyZWF0b3JcbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBjb2xsZWN0aW9ucyAobG9vcHMpIG9yIHVzaW5nIG11bHRpcGxlIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQgYXJncywgd2hpbHN0IG5vdCBzaGFyaW5nIGBpc0V4ZWN1dGluZ2AuXG4gKlxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW3NzdkNvbW1hbmRdPVwie2hvc3Q6IHRoaXMsIGV4ZWN1dGU6IHJlbW92ZUhlcm8kLCBjYW5FeGVjdXRlOiBpc1ZhbGlkJCwgcGFyYW1zOiBbaGVybywgMTMzNywgJ3h4J119XCI+U2F2ZTwvYnV0dG9uPlxuICogYGBgXG4gKlxuICovXG5cbmNvbnN0IFNFTEVDVE9SID0gXCJzc3ZDb21tYW5kXCI7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogYFske1NFTEVDVE9SfV1gLFxuXHRleHBvcnRBczogXCJzc3ZDb21tYW5kXCJcbn0pXG5leHBvcnQgY2xhc3MgQ29tbWFuZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuXHRASW5wdXQoU0VMRUNUT1IpIGNvbW1hbmRPckNyZWF0b3I6IElDb21tYW5kIHwgQ29tbWFuZENyZWF0b3IgfCB1bmRlZmluZWQ7XG5cblx0QElucHV0KGAke1NFTEVDVE9SfU9wdGlvbnNgKVxuXHRnZXQgY29tbWFuZE9wdGlvbnMoKTogQ29tbWFuZE9wdGlvbnMgeyByZXR1cm4gdGhpcy5fY29tbWFuZE9wdGlvbnM7IH1cblx0c2V0IGNvbW1hbmRPcHRpb25zKHZhbHVlOiBDb21tYW5kT3B0aW9ucykge1xuXHRcdGlmICh2YWx1ZSA9PT0gdGhpcy5fY29tbWFuZE9wdGlvbnMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5fY29tbWFuZE9wdGlvbnMgPSB7XG5cdFx0XHQuLi50aGlzLmNvbmZpZyxcblx0XHRcdC4uLnZhbHVlLFxuXHRcdH07XG5cdH1cblxuXHRASW5wdXQoYCR7U0VMRUNUT1J9UGFyYW1zYCkgY29tbWFuZFBhcmFtczogdW5rbm93biB8IHVua25vd25bXTtcblxuXHRnZXQgY29tbWFuZCgpOiBJQ29tbWFuZCB7IHJldHVybiB0aGlzLl9jb21tYW5kOyB9XG5cdHByaXZhdGUgX2NvbW1hbmQhOiBJQ29tbWFuZDtcblx0cHJpdmF0ZSBfY29tbWFuZE9wdGlvbnM6IENvbW1hbmRPcHRpb25zID0gdGhpcy5jb25maWc7XG5cdHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASW5qZWN0KENPTU1BTkRfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogQ29tbWFuZE9wdGlvbnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcblx0XHRwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cdCkgeyB9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJbc3N2Q29tbWFuZDo6aW5pdF1cIiwgdGhpcy5jb25maWcpO1xuXHRcdHRoaXMudHJ5U2V0RGlzYWJsZWQodHJ1ZSk7XG5cdFx0aWYgKCF0aGlzLmNvbW1hbmRPckNyZWF0b3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInNzdkNvbW1hbmQ6IFtzc3ZDb21tYW5kXSBzaG91bGQgYmUgZGVmaW5lZCFcIik7XG5cdFx0fSBlbHNlIGlmIChpc0NvbW1hbmQodGhpcy5jb21tYW5kT3JDcmVhdG9yKSkge1xuXHRcdFx0dGhpcy5fY29tbWFuZCA9IHRoaXMuY29tbWFuZE9yQ3JlYXRvcjtcblx0XHR9IGVsc2UgaWYgKGlzQ29tbWFuZENyZWF0b3IodGhpcy5jb21tYW5kT3JDcmVhdG9yKSkge1xuXHRcdFx0Y29uc3QgaXNBc3luYyA9IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5pc0FzeW5jIHx8IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5pc0FzeW5jID09PSB1bmRlZmluZWQ7XG5cblx0XHRcdC8vIHRvZG86IGZpbmQgc29tZXRoaW5nIGxpa2UgdGhpcyBmb3IgaXZ5IChvciBhbmd1bGFyMTArKVxuXHRcdFx0Ly8gY29uc3QgaG9zdENvbXBvbmVudCA9ICh0aGlzLnZpZXdDb250YWluZXIgYXMgYW55KS5fdmlldy5jb21wb25lbnQ7XG5cblx0XHRcdGNvbnN0IGV4ZWNGbiA9IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5leGVjdXRlLmJpbmQodGhpcy5jb21tYW5kT3JDcmVhdG9yLmhvc3QpO1xuXHRcdFx0dGhpcy5jb21tYW5kUGFyYW1zID0gdGhpcy5jb21tYW5kUGFyYW1zIHx8IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5wYXJhbXM7XG5cblx0XHRcdGNvbnN0IGNhbkV4ZWMgPSB0aGlzLmNvbW1hbmRPckNyZWF0b3IuY2FuRXhlY3V0ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uXG5cdFx0XHRcdD8gdGhpcy5jb21tYW5kT3JDcmVhdG9yLmNhbkV4ZWN1dGUuYmluZCh0aGlzLmNvbW1hbmRPckNyZWF0b3IuaG9zdCwgdGhpcy5jb21tYW5kUGFyYW1zKSgpXG5cdFx0XHRcdDogdGhpcy5jb21tYW5kT3JDcmVhdG9yLmNhbkV4ZWN1dGU7XG5cblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiW3NzdkNvbW1hbmQ6OmluaXRdIGNvbW1hbmQgY3JlYXRvclwiLCB7XG5cdFx0XHQvLyBcdGZpcnN0UGFyYW06IHRoaXMuY29tbWFuZFBhcmFtcyA/IHRoaXMuY29tbWFuZFBhcmFtc1swXSA6IG51bGwsXG5cdFx0XHQvLyBcdHBhcmFtczogdGhpcy5jb21tYW5kUGFyYW1zXG5cdFx0XHQvLyB9KTtcblx0XHRcdHRoaXMuX2NvbW1hbmQgPSBuZXcgQ29tbWFuZChleGVjRm4sIGNhbkV4ZWMsIGlzQXN5bmMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzc3ZDb21tYW5kOiBbc3N2Q29tbWFuZF0gaXMgbm90IGRlZmluZWQgcHJvcGVybHkhXCIpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2NvbW1hbmQuc3Vic2NyaWJlKCk7XG5cdFx0dGhpcy5fY29tbWFuZC5jYW5FeGVjdXRlJC5waXBlKFxuXHRcdFx0ZGVsYXkoMSksXG5cdFx0XHR0YXAoeCA9PiB7XG5cdFx0XHRcdHRoaXMudHJ5U2V0RGlzYWJsZWQoIXgpO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIltzc3ZDb21tYW5kOjpjYW5FeGVjdXRlJF1cIiwgeyBjYW5FeGVjdXRlOiB4IH0pO1xuXHRcdFx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0XHRcdH0pLFxuXHRcdFx0dGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcblx0XHQpLnN1YnNjcmliZSgpO1xuXG5cdFx0aWYgKHRoaXMuX2NvbW1hbmQuaXNFeGVjdXRpbmckKSB7XG5cdFx0XHR0aGlzLl9jb21tYW5kLmlzRXhlY3V0aW5nJC5waXBlKFxuXHRcdFx0XHR0YXAoeCA9PiB7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJbc3N2Q29tbWFuZDo6aXNFeGVjdXRpbmckXVwiLCB4LCB0aGlzLmNvbW1hbmRPcHRpb25zKTtcblx0XHRcdFx0XHRpZiAoeCkge1xuXHRcdFx0XHRcdFx0dGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcblx0XHRcdFx0XHRcdFx0dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tbWFuZE9wdGlvbnMuZXhlY3V0aW5nQ3NzQ2xhc3Ncblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG5cdFx0XHRcdFx0XHRcdHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHRcdFx0XHR0aGlzLmNvbW1hbmRPcHRpb25zLmV4ZWN1dGluZ0Nzc0NsYXNzXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG5cdFx0XHQpLnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxuXHRvbkNsaWNrKCk6IHZvaWQge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwiW3NzdkNvbW1hbmQ6Om9uQ2xpY2tdXCIsIHRoaXMuY29tbWFuZFBhcmFtcyk7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5jb21tYW5kUGFyYW1zKSkge1xuXHRcdFx0dGhpcy5fY29tbWFuZC5leGVjdXRlKC4uLnRoaXMuY29tbWFuZFBhcmFtcyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2NvbW1hbmQuZXhlY3V0ZSh0aGlzLmNvbW1hbmRQYXJhbXMpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwiW3NzdkNvbW1hbmQ6OmRlc3Ryb3ldXCIpO1xuXHRcdHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcblx0XHR0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuXHRcdGlmICh0aGlzLl9jb21tYW5kKSB7XG5cdFx0XHR0aGlzLl9jb21tYW5kLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSB0cnlTZXREaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuXHRcdGlmICh0aGlzLmNvbW1hbmRPcHRpb25zLmhhbmRsZURpc2FibGVkKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBcImRpc2FibGVkXCIsIGRpc2FibGVkKTtcblx0XHR9XG5cdH1cblxufVxuXG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJjb21tYW5kLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUdULEtBQUssRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFrQixjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBRUgsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDO0FBRWhDLHdCQUF3QjtBQU14QixNQUFNLE9BQU8sZ0JBQWdCO0lBeUI1QixZQUNpQyxNQUFzQixFQUM5QyxRQUFtQixFQUNuQixPQUFtQixFQUNuQixHQUFzQjtRQUhFLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVB2QixvQkFBZSxHQUFtQixJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBT3BDLENBQUM7SUF4QkwsSUFDSSxjQUFjLEtBQXFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFD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QUM7OztZQTFIRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLElBQUksVUFBVSxHQUFHO2dCQUMzQixRQUFRLEVBQUUsVUFBVTthQUNwQjs7OzRDQTJCRSxNQUFNLFNBQUMsY0FBYztZQXhGdkIsU0FBUztZQUZULFVBQVU7WUFHVixpQkFBaUI7OzsrQkFpRWhCLEtBQUssU0FBQyxVQUFVOzZCQUVoQixLQUFLLFNBQUMsR0FBRyxVQUFVLFNBQVM7NEJBWTVCLEtBQUssU0FBQyxHQUFHLFVBQVUsUUFBUTtzQkE0RTNCLFlBQVksU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGlyZWN0aXZlLFxuXHRPbkluaXQsXG5cdE9uRGVzdHJveSxcblx0SW5wdXQsXG5cdEhvc3RMaXN0ZW5lcixcblx0RWxlbWVudFJlZixcblx0SW5qZWN0LFxuXHRSZW5kZXJlcjIsXG5cdENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YXAsIGRlbGF5LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgQ29tbWFuZE9wdGlvbnMsIENPTU1BTkRfQ09ORklHIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZFwiO1xuaW1wb3J0IHsgaXNDb21tYW5kLCBpc0NvbW1hbmRDcmVhdG9yIH0gZnJvbSBcIi4vY29tbWFuZC51dGlsXCI7XG5pbXBvcnQgeyBDb21tYW5kQ3JlYXRvciwgSUNvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kLm1vZGVsXCI7XG5cbi8qKlxuICogQ29udHJvbHMgdGhlIHN0YXRlIG9mIGEgY29tcG9uZW50IGluIHN5bmMgd2l0aCBgQ29tbWFuZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqICMjIyBNb3N0IGNvbW1vbiB1c2FnZVxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBbc3N2Q29tbWFuZF09XCJzYXZlQ21kXCI+U2F2ZTwvYnV0dG9uPlxuICogYGBgXG4gKlxuICpcbiAqICMjIyBVc2FnZSB3aXRoIG9wdGlvbnNcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW3NzdkNvbW1hbmRdPVwic2F2ZUNtZFwiIFtzc3ZDb21tYW5kT3B0aW9uc109XCJ7ZXhlY3V0aW5nQ3NzQ2xhc3M6ICdpbi1wcm9ncmVzcyd9XCI+U2F2ZTwvYnV0dG9uPlxuICogYGBgXG4gKlxuICpcbiAqICMjIyBVc2FnZSB3aXRoIHBhcmFtc1xuICogVGhpcyBpcyB1c2VmdWwgZm9yIGNvbGxlY3Rpb25zIChsb29wcykgb3IgdXNpbmcgbXVsdGlwbGUgYWN0aW9ucyB3aXRoIGRpZmZlcmVudCBhcmdzLlxuICogKk5PVEU6IFRoaXMgd2lsbCBzaGFyZSB0aGUgYGlzRXhlY3V0aW5nYCB3aGVuIHVzZWQgd2l0aCBtdWx0aXBsZSBjb250cm9scy4qXG4gKlxuICogIyMjIyBXaXRoIHNpbmdsZSBwYXJhbVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW3NzdkNvbW1hbmRdPVwic2F2ZUNtZFwiIFtzc3ZDb21tYW5kUGFyYW1zXT1cIntpZDogMX1cIj5TYXZlPC9idXR0b24+XG4gKiBgYGBcbiAqICpOT1RFOiBpZiB5b3UgaGF2ZSBvbmx5IDEgYXJndW1lbnQgYXMgYW4gYXJyYXksIGl0IHNob3VsZCBiZSBlbmNsb3NlZCB3aXRoaW4gYW4gYXJyYXkgZS5nLiBgW1snYXBwbGUnLCAnYmFuYW5hJ11dYCxcbiAqIGVsc2UgaXQgd2lsbCBzcHJlYWQgYW5kIHlvdSB3aWxsIGBhcmcxOiBcImFwcGxlXCIsIGFyZzI6IFwiYmFuYW5hXCJgKlxuICpcbiAgKiAjIyMjIFdpdGggbXVsdGkgcGFyYW1zXG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIFtzc3ZDb21tYW5kXT1cInNhdmVDbWRcIiBbc3N2Q29tbWFuZFBhcmFtc109XCJbe2lkOiAxfSwgJ2hlbGxvJywgaGVyb11cIj5TYXZlPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiAjIyMgVXNhZ2Ugd2l0aCBDb21tYW5kIENyZWF0b3JcbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBjb2xsZWN0aW9ucyAobG9vcHMpIG9yIHVzaW5nIG11bHRpcGxlIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQgYXJncywgd2hpbHN0IG5vdCBzaGFyaW5nIGBpc0V4ZWN1dGluZ2AuXG4gKlxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW3NzdkNvbW1hbmRdPVwie2hvc3Q6IHRoaXMsIGV4ZWN1dGU6IHJlbW92ZUhlcm8kLCBjYW5FeGVjdXRlOiBpc1ZhbGlkJCwgcGFyYW1zOiBbaGVybywgMTMzNywgJ3h4J119XCI+U2F2ZTwvYnV0dG9uPlxuICogYGBgXG4gKlxuICovXG5cbmNvbnN0IE5BTUVfQ0FNRUwgPSBcInNzdkNvbW1hbmRcIjtcblxuLy8gbGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogYFske05BTUVfQ0FNRUx9XWAsXG5cdGV4cG9ydEFzOiBOQU1FX0NBTUVMXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0Ly8gcmVhZG9ubHkgaWQgPSBgJHtOQU1FX0NBTUVMfS0ke25leHRVbmlxdWVJZCsrfWA7XG5cblx0QElucHV0KE5BTUVfQ0FNRUwpIGNvbW1hbmRPckNyZWF0b3I6IElDb21tYW5kIHwgQ29tbWFuZENyZWF0b3IgfCB1bmRlZmluZWQ7XG5cblx0QElucHV0KGAke05BTUVfQ0FNRUx9T3B0aW9uc2ApXG5cdGdldCBjb21tYW5kT3B0aW9ucygpOiBDb21tYW5kT3B0aW9ucyB7IHJldHVybiB0aGlzLl9jb21tYW5kT3B0aW9uczsgfVxuXHRzZXQgY29tbWFuZE9wdGlvbnModmFsdWU6IENvbW1hbmRPcHRpb25zKSB7XG5cdFx0aWYgKHZhbHVlID09PSB0aGlzLl9jb21tYW5kT3B0aW9ucykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLl9jb21tYW5kT3B0aW9ucyA9IHtcblx0XHRcdC4uLnRoaXMuY29uZmlnLFxuXHRcdFx0Li4udmFsdWUsXG5cdFx0fTtcblx0fVxuXG5cdEBJbnB1dChgJHtOQU1FX0NBTUVMfVBhcmFtc2ApIGNvbW1hbmRQYXJhbXM6IHVua25vd24gfCB1bmtub3duW107XG5cblx0Z2V0IGNvbW1hbmQoKTogSUNvbW1hbmQgeyByZXR1cm4gdGhpcy5fY29tbWFuZDsgfVxuXHRwcml2YXRlIF9jb21tYW5kITogSUNvbW1hbmQ7XG5cdHByaXZhdGUgX2NvbW1hbmRPcHRpb25zOiBDb21tYW5kT3B0aW9ucyA9IHRoaXMuY29uZmlnO1xuXHRwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0QEluamVjdChDT01NQU5EX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IENvbW1hbmRPcHRpb25zLFxuXHRcdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcblx0XHRwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuXHQpIHsgfVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwiW3NzdkNvbW1hbmQ6OmluaXRdXCIsIHRoaXMuY29uZmlnKTtcblx0XHRpZiAoIXRoaXMuY29tbWFuZE9yQ3JlYXRvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGAke05BTUVfQ0FNRUx9OiBbJHtOQU1FX0NBTUVMfV0gc2hvdWxkIGJlIGRlZmluZWQhYCk7XG5cdFx0fSBlbHNlIGlmIChpc0NvbW1hbmQodGhpcy5jb21tYW5kT3JDcmVhdG9yKSkge1xuXHRcdFx0dGhpcy5fY29tbWFuZCA9IHRoaXMuY29tbWFuZE9yQ3JlYXRvcjtcblx0XHR9IGVsc2UgaWYgKGlzQ29tbWFuZENyZWF0b3IodGhpcy5jb21tYW5kT3JDcmVhdG9yKSkge1xuXHRcdFx0Y29uc3QgaXNBc3luYyA9IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5pc0FzeW5jIHx8IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5pc0FzeW5jID09PSB1bmRlZmluZWQ7XG5cblx0XHRcdC8vIHRvZG86IGZpbmQgc29tZXRoaW5nIGxpa2UgdGhpcyBmb3IgaXZ5IChvciBhbmd1bGFyMTArKVxuXHRcdFx0Ly8gY29uc3QgaG9zdENvbXBvbmVudCA9ICh0aGlzLnZpZXdDb250YWluZXIgYXMgYW55KS5fdmlldy5jb21wb25lbnQ7XG5cblx0XHRcdGNvbnN0IGV4ZWNGbiA9IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5leGVjdXRlLmJpbmQodGhpcy5jb21tYW5kT3JDcmVhdG9yLmhvc3QpO1xuXHRcdFx0dGhpcy5jb21tYW5kUGFyYW1zID0gdGhpcy5jb21tYW5kUGFyYW1zIHx8IHRoaXMuY29tbWFuZE9yQ3JlYXRvci5wYXJhbXM7XG5cblx0XHRcdGNvbnN0IGNhbkV4ZWMgPSB0aGlzLmNvbW1hbmRPckNyZWF0b3IuY2FuRXhlY3V0ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uXG5cdFx0XHRcdD8gdGhpcy5jb21tYW5kT3JDcmVhdG9yLmNhbkV4ZWN1dGUuYmluZCh0aGlzLmNvbW1hbmRPckNyZWF0b3IuaG9zdCwgdGhpcy5jb21tYW5kUGFyYW1zKSgpXG5cdFx0XHRcdDogdGhpcy5jb21tYW5kT3JDcmVhdG9yLmNhbkV4ZWN1dGU7XG5cblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiW3NzdkNvbW1hbmQ6OmluaXRdIGNvbW1hbmQgY3JlYXRvclwiLCB7XG5cdFx0XHQvLyBcdGZpcnN0UGFyYW06IHRoaXMuY29tbWFuZFBhcmFtcyA/IHRoaXMuY29tbWFuZFBhcmFtc1swXSA6IG51bGwsXG5cdFx0XHQvLyBcdHBhcmFtczogdGhpcy5jb21tYW5kUGFyYW1zXG5cdFx0XHQvLyB9KTtcblx0XHRcdHRoaXMuX2NvbW1hbmQgPSBuZXcgQ29tbWFuZChleGVjRm4sIGNhbkV4ZWMsIGlzQXN5bmMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYCR7TkFNRV9DQU1FTH06IFske05BTUVfQ0FNRUx9XSBpcyBub3QgZGVmaW5lZCBwcm9wZXJseSFgKTtcblx0XHR9XG5cblx0XHR0aGlzLl9jb21tYW5kLnN1YnNjcmliZSgpO1xuXHRcdHRoaXMuX2NvbW1hbmQuY2FuRXhlY3V0ZSQucGlwZShcblx0XHRcdHRoaXMuY29tbWFuZE9wdGlvbnMuaGFzRGlzYWJsZWREZWxheVxuXHRcdFx0XHQ/IGRlbGF5KDEpXG5cdFx0XHRcdDogdGFwKCgpID0+IHsgLyogc3R1YiAqLyB9KSxcblx0XHRcdHRhcCh4ID0+IHtcblx0XHRcdFx0dGhpcy50cnlTZXREaXNhYmxlZCgheCk7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiW3NzdkNvbW1hbmQ6OmNhbkV4ZWN1dGUkXVwiLCB7IGNhbkV4ZWN1dGU6IHggfSk7XG5cdFx0XHRcdHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXHRcdFx0fSksXG5cdFx0XHR0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuXHRcdCkuc3Vic2NyaWJlKCk7XG5cblx0XHRpZiAodGhpcy5fY29tbWFuZC5pc0V4ZWN1dGluZyQpIHtcblx0XHRcdHRoaXMuX2NvbW1hbmQuaXNFeGVjdXRpbmckLnBpcGUoXG5cdFx0XHRcdHRhcCh4ID0+IHtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIltzc3ZDb21tYW5kOjppc0V4ZWN1dGluZyRdXCIsIHgsIHRoaXMuY29tbWFuZE9wdGlvbnMpO1xuXHRcdFx0XHRcdGlmICh4KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuXHRcdFx0XHRcdFx0XHR0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0XHRcdFx0dGhpcy5jb21tYW5kT3B0aW9ucy5leGVjdXRpbmdDc3NDbGFzc1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcblx0XHRcdFx0XHRcdFx0dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tbWFuZE9wdGlvbnMuZXhlY3V0aW5nQ3NzQ2xhc3Ncblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcblx0XHRcdCkuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXG5cdG9uQ2xpY2soKTogdm9pZCB7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJbc3N2Q29tbWFuZDo6b25DbGlja11cIiwgdGhpcy5jb21tYW5kUGFyYW1zKTtcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbW1hbmRQYXJhbXMpKSB7XG5cdFx0XHR0aGlzLl9jb21tYW5kLmV4ZWN1dGUoLi4udGhpcy5jb21tYW5kUGFyYW1zKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fY29tbWFuZC5leGVjdXRlKHRoaXMuY29tbWFuZFBhcmFtcyk7XG5cdFx0fVxuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJbc3N2Q29tbWFuZDo6ZGVzdHJveV1cIik7XG5cdFx0dGhpcy5fZGVzdHJveSQubmV4dCgpO1xuXHRcdHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cdFx0aWYgKHRoaXMuX2NvbW1hbmQpIHtcblx0XHRcdHRoaXMuX2NvbW1hbmQudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHRyeVNldERpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0aWYgKHRoaXMuY29tbWFuZE9wdGlvbnMuaGFuZGxlRGlzYWJsZWQpIHtcblx0XHRcdC8vIGNvbnNvbGUud2FybihcIj4+Pj4gZGlzYWJsZWRcIiwgeyBpZDogdGhpcy5pZCwgZGlzYWJsZWQgfSk7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBcImRpc2FibGVkXCIsIGRpc2FibGVkKTtcblx0XHR9XG5cdH1cblxufVxuXG4iXX0=
package/esm2015/config.js CHANGED
@@ -2,6 +2,7 @@ import { InjectionToken } from "@angular/core";
2
2
  export const COMMAND_DEFAULT_CONFIG = Object.freeze({
3
3
  executingCssClass: "executing",
4
4
  handleDisabled: true,
5
+ hasDisabledDelay: false,
5
6
  });
6
7
  export const COMMAND_CONFIG = new InjectionToken("command-config");
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2NpcmNsZWNpL3JlcG8vc3JjLyIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFlL0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQTZCLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDN0UsaUJBQWlCLEVBQUUsV0FBVztJQUM5QixjQUFjLEVBQUUsSUFBSTtDQUNwQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZE9wdGlvbnMge1xuXHQvKipcblx0ICogQ3NzIENsYXNzIHdoaWNoIGdldHMgYWRkZWQvcmVtb3ZlZCBvbiB0aGUgQ29tbWFuZCBlbGVtZW50J3MgaG9zdCB3aGlsZSBDb21tYW5kIGBpc0V4ZWN1dGluZyRgLlxuXHQgKi9cblx0ZXhlY3V0aW5nQ3NzQ2xhc3M6IHN0cmluZztcblxuXHQvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBkaXNhYmxlZCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIGRpcmVjdGl2ZSBvciBub3QuXG5cdCAqIERpc2FibGUgaGFuZGxlZCBieSBkaXJlY3RpdmUncyBkb2Vzbid0IGFsd2F5cyBwbGF5IG5pY2Ugd2hlbiB1c2VkIHdpdGggb3RoZXIgY29tcG9uZW50L3BpcGUvZGlyZWN0aXZlIGFuZCB0aGV5IGFsc28gaGFuZGxlIGRpc2FibGVkLlxuXHQgKiBUaGlzIGRpc2FibGVzIHRoZSBoYW5kbGluZyBtYW51YWxseSBhbmQgbmVlZCB0byBwYXNzIGV4cGxpY2l0bHkgYFtkaXNhYmxlZF09XCIhc2F2ZUNtZC5jYW5FeGVjdXRlXCJgLlxuXHQgKi9cblx0aGFuZGxlRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBDT01NQU5EX0RFRkFVTFRfQ09ORklHOiBSZWFkb25seTxDb21tYW5kT3B0aW9ucz4gPSBPYmplY3QuZnJlZXplKHtcblx0ZXhlY3V0aW5nQ3NzQ2xhc3M6IFwiZXhlY3V0aW5nXCIsXG5cdGhhbmRsZURpc2FibGVkOiB0cnVlLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDT01NQU5EX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21tYW5kT3B0aW9ucz4oXCJjb21tYW5kLWNvbmZpZ1wiKTtcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2NpcmNsZWNpL3JlcG8vc3JjLyIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFvQi9DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbkQsaUJBQWlCLEVBQUUsV0FBVztJQUM5QixjQUFjLEVBQUUsSUFBSTtJQUNwQixnQkFBZ0IsRUFBRSxLQUFLO0NBQ0wsQ0FBQyxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kT3B0aW9ucyB7XG5cdC8qKlxuXHQgKiBDc3MgQ2xhc3Mgd2hpY2ggZ2V0cyBhZGRlZC9yZW1vdmVkIG9uIHRoZSBDb21tYW5kIGVsZW1lbnQncyBob3N0IHdoaWxlIENvbW1hbmQgYGlzRXhlY3V0aW5nJGAuXG5cdCAqL1xuXHRleGVjdXRpbmdDc3NDbGFzczogc3RyaW5nO1xuXG5cdC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGRpc2FibGVkIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgZGlyZWN0aXZlIG9yIG5vdC5cblx0ICogRGlzYWJsZSBoYW5kbGVkIGJ5IGRpcmVjdGl2ZSdzIGRvZXNuJ3QgYWx3YXlzIHBsYXkgbmljZSB3aGVuIHVzZWQgd2l0aCBvdGhlciBjb21wb25lbnQvcGlwZS9kaXJlY3RpdmUgYW5kIHRoZXkgYWxzbyBoYW5kbGUgZGlzYWJsZWQuXG5cdCAqIFRoaXMgZGlzYWJsZXMgdGhlIGhhbmRsaW5nIG1hbnVhbGx5IGFuZCBuZWVkIHRvIHBhc3MgZXhwbGljaXRseSBgW2Rpc2FibGVkXT1cIiFzYXZlQ21kLmNhbkV4ZWN1dGVcImAuXG5cdCAqL1xuXHRoYW5kbGVEaXNhYmxlZDogYm9vbGVhbjtcblxuXHQvKiogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gc2V0IGEgYGRlbGF5KDEpYCB3aGVuIHNldHRpbmcgdGhlIGRpc2FibGVkLiBXaGljaCBtaWdodCBiZSBuZWVkZWQgd2hlbiB3b3JraW5nIHdpdGggZXh0ZXJuYWxcblx0ICogY29tcG9uZW50cy9kaXJlY3RpdmVzIChzdWNoIGFzIG1hdGVyaWFsIGJ1dHRvbilcblx0ICovXG5cdGhhc0Rpc2FibGVkRGVsYXk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBDT01NQU5EX0RFRkFVTFRfQ09ORklHID0gT2JqZWN0LmZyZWV6ZSh7XG5cdGV4ZWN1dGluZ0Nzc0NsYXNzOiBcImV4ZWN1dGluZ1wiLFxuXHRoYW5kbGVEaXNhYmxlZDogdHJ1ZSxcblx0aGFzRGlzYWJsZWREZWxheTogZmFsc2UsXG59IGFzIENvbW1hbmRPcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IENPTU1BTkRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPENvbW1hbmRPcHRpb25zPihcImNvbW1hbmQtY29uZmlnXCIpO1xuIl19
@@ -1,2 +1,2 @@
1
- export const VERSION = "2.1.1-dev246";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIyLjEuMS1kZXYyNDZcIjtcbiJdfQ==
1
+ export const VERSION = "2.1.1-dev267";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIyLjEuMS1kZXYyNjdcIjtcbiJdfQ==
@@ -130,6 +130,7 @@ class CommandAsync extends Command {
130
130
  const COMMAND_DEFAULT_CONFIG = Object.freeze({
131
131
  executingCssClass: "executing",
132
132
  handleDisabled: true,
133
+ hasDisabledDelay: false,
133
134
  });
134
135
  const COMMAND_CONFIG = new InjectionToken("command-config");
135
136
 
@@ -200,7 +201,8 @@ function isAssumedType(x) {
200
201
  * ```
201
202
  *
202
203
  */
203
- const SELECTOR = "ssvCommand";
204
+ const NAME_CAMEL = "ssvCommand";
205
+ // let nextUniqueId = 0;
204
206
  class CommandDirective {
205
207
  constructor(config, renderer, element, cdr) {
206
208
  this.config = config;
@@ -220,9 +222,8 @@ class CommandDirective {
220
222
  get command() { return this._command; }
221
223
  ngOnInit() {
222
224
  // console.log("[ssvCommand::init]", this.config);
223
- this.trySetDisabled(true);
224
225
  if (!this.commandOrCreator) {
225
- throw new Error("ssvCommand: [ssvCommand] should be defined!");
226
+ throw new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] should be defined!`);
226
227
  }
227
228
  else if (isCommand(this.commandOrCreator)) {
228
229
  this._command = this.commandOrCreator;
@@ -243,10 +244,12 @@ class CommandDirective {
243
244
  this._command = new Command(execFn, canExec, isAsync);
244
245
  }
245
246
  else {
246
- throw new Error("ssvCommand: [ssvCommand] is not defined properly!");
247
+ throw new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);
247
248
  }
248
249
  this._command.subscribe();
249
- this._command.canExecute$.pipe(delay(1), tap(x => {
250
+ this._command.canExecute$.pipe(this.commandOptions.hasDisabledDelay
251
+ ? delay(1)
252
+ : tap(() => { }), tap(x => {
250
253
  this.trySetDisabled(!x);
251
254
  // console.log("[ssvCommand::canExecute$]", { canExecute: x });
252
255
  this.cdr.markForCheck();
@@ -282,14 +285,15 @@ class CommandDirective {
282
285
  }
283
286
  trySetDisabled(disabled) {
284
287
  if (this.commandOptions.handleDisabled) {
288
+ // console.warn(">>>> disabled", { id: this.id, disabled });
285
289
  this.renderer.setProperty(this.element.nativeElement, "disabled", disabled);
286
290
  }
287
291
  }
288
292
  }
289
293
  CommandDirective.decorators = [
290
294
  { type: Directive, args: [{
291
- selector: `[${SELECTOR}]`,
292
- exportAs: "ssvCommand"
295
+ selector: `[${NAME_CAMEL}]`,
296
+ exportAs: NAME_CAMEL
293
297
  },] }
294
298
  ];
295
299
  CommandDirective.ctorParameters = () => [
@@ -299,12 +303,13 @@ CommandDirective.ctorParameters = () => [
299
303
  { type: ChangeDetectorRef }
300
304
  ];
301
305
  CommandDirective.propDecorators = {
302
- commandOrCreator: [{ type: Input, args: [SELECTOR,] }],
303
- commandOptions: [{ type: Input, args: [`${SELECTOR}Options`,] }],
304
- commandParams: [{ type: Input, args: [`${SELECTOR}Params`,] }],
306
+ commandOrCreator: [{ type: Input, args: [NAME_CAMEL,] }],
307
+ commandOptions: [{ type: Input, args: [`${NAME_CAMEL}Options`,] }],
308
+ commandParams: [{ type: Input, args: [`${NAME_CAMEL}Params`,] }],
305
309
  onClick: [{ type: HostListener, args: ["click",] }]
306
310
  };
307
311
 
312
+ const NAME_CAMEL$1 = "ssvCommandRef";
308
313
  /**
309
314
  * Command creator ref, directive which allows creating Command in the template
310
315
  * and associate it to a command (in order to share executions).
@@ -331,7 +336,7 @@ class CommandRefDirective {
331
336
  this._command = new Command(execFn, this.commandCreator.canExecute, isAsync);
332
337
  }
333
338
  else {
334
- throw new Error("ssvCommandRef: [ssvCommandRef] is not defined properly!");
339
+ throw new Error(`${NAME_CAMEL$1}: [${NAME_CAMEL$1}] is not defined properly!`);
335
340
  }
336
341
  }
337
342
  ngOnDestroy() {
@@ -343,12 +348,12 @@ class CommandRefDirective {
343
348
  }
344
349
  CommandRefDirective.decorators = [
345
350
  { type: Directive, args: [{
346
- selector: "[ssvCommandRef]",
347
- exportAs: "ssvCommandRef"
351
+ selector: `[${NAME_CAMEL$1}]`,
352
+ exportAs: NAME_CAMEL$1
348
353
  },] }
349
354
  ];
350
355
  CommandRefDirective.propDecorators = {
351
- commandCreator: [{ type: Input, args: ["ssvCommandRef",] }]
356
+ commandCreator: [{ type: Input, args: [NAME_CAMEL$1,] }]
352
357
  };
353
358
 
354
359
  /** @internal */
@@ -383,7 +388,7 @@ function _moduleConfigFactory(config) {
383
388
  ? Object.assign(Object.assign({}, COMMAND_DEFAULT_CONFIG), cfg) : COMMAND_DEFAULT_CONFIG;
384
389
  }
385
390
 
386
- const VERSION = "2.1.1-dev246";
391
+ const VERSION = "2.1.1-dev267";
387
392
 
388
393
  /**
389
394
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ssv-ngx.command.js","sources":["../../src/command.ts","../../src/config.ts","../../src/command.util.ts","../../src/command.directive.ts","../../src/command-ref.directive.ts","../../src/module.ts","../../src/version.ts","../../src/ssv-ngx.command.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Observable, combineLatest, Subscription, Subject, BehaviorSubject, of, EMPTY } from \"rxjs\";\nimport { tap, map, filter, switchMap, catchError, finalize, take } from \"rxjs/operators\";\nimport { ICommand } from \"./command.model\";\n\n/**\n * Command object used to encapsulate information which is needed to perform an action.\n */\nexport class Command implements ICommand {\n\n\t/** Determines whether the command is currently executing, as a snapshot value. */\n\tget isExecuting(): boolean {\n\t\treturn this._isExecuting;\n\t}\n\n\t/** Determines whether the command can execute or not, as a snapshot value. */\n\tget canExecute(): boolean {\n\t\treturn this._canExecute;\n\t}\n\n\t/** Determines whether the command is currently executing, as an observable. */\n\tget isExecuting$(): Observable<boolean> {\n\t\treturn this._isExecuting$.asObservable();\n\t}\n\n\t/** Determines whether to auto destroy when having 0 subscribers. */\n\tautoDestroy = true;\n\n\t/** Determines whether the command can execute or not, as an observable. */\n\treadonly canExecute$: Observable<boolean>;\n\n\tprivate _isExecuting$ = new BehaviorSubject<boolean>(false);\n\tprivate _isExecuting = false;\n\tprivate _canExecute = true;\n\tprivate executionPipe$ = new Subject<unknown[] | undefined>();\n\tprivate isExecuting$$ = Subscription.EMPTY;\n\tprivate canExecute$$ = Subscription.EMPTY;\n\tprivate executionPipe$$ = Subscription.EMPTY;\n\tprivate subscribersCount = 0;\n\n\t/**\n\t * Creates an instance of Command.\n\t *\n\t * @param execute Execute function to invoke - use `isAsync: true` when `Observable<any>`.\n\t * @param canExecute Observable which determines whether it can execute or not.\n\t * @param isAsync Indicates that the execute function is async e.g. Observable.\n\t */\n\tconstructor(\n\t\texecute: (...args: unknown[]) => unknown,\n\t\tcanExecute$?: Observable<boolean>,\n\t\tisAsync?: boolean,\n\t) {\n\t\tif (canExecute$) {\n\t\t\tthis.canExecute$ = combineLatest([\n\t\t\t\tthis._isExecuting$,\n\t\t\t\tcanExecute$\n\t\t\t]).pipe(\n\t\t\t\tmap(([isExecuting, canExecuteResult]) => {\n\t\t\t\t\t// console.log(\"[command::combineLatest$] update!\", { isExecuting, canExecuteResult });\n\t\t\t\t\tthis._isExecuting = isExecuting;\n\t\t\t\t\tthis._canExecute = !isExecuting && !!canExecuteResult;\n\t\t\t\t\treturn this._canExecute;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tthis.canExecute$$ = this.canExecute$.subscribe();\n\t\t} else {\n\t\t\tthis.canExecute$ = this._isExecuting$.pipe(\n\t\t\t\tmap(x => {\n\t\t\t\t\tconst canExecute = !x;\n\t\t\t\t\tthis._canExecute = canExecute;\n\t\t\t\t\treturn canExecute;\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.isExecuting$$ = this._isExecuting$\n\t\t\t\t.pipe(tap(x => this._isExecuting = x))\n\t\t\t\t.subscribe();\n\t\t}\n\t\tthis.executionPipe$$ = this.buildExecutionPipe(execute, isAsync).subscribe();\n\t}\n\n\t/** Execute function to invoke. */\n\texecute(...args: unknown[]): void {\n\t\t// console.warn(\"[command::execute]\", args);\n\t\tthis.executionPipe$.next(args);\n\t}\n\n\t/** Disposes all resources held by subscriptions. */\n\tdestroy(): void {\n\t\t// console.warn(\"[command::destroy]\");\n\t\tthis.executionPipe$$.unsubscribe();\n\t\tthis.canExecute$$.unsubscribe();\n\t\tthis.isExecuting$$.unsubscribe();\n\t}\n\n\tsubscribe(): void {\n\t\tthis.subscribersCount++;\n\t}\n\n\tunsubscribe(): void {\n\t\tthis.subscribersCount--;\n\t\t// console.log(\"[command::unsubscribe]\", { autoDestroy: this.autoDestroy, subscribersCount: this.subscribersCount });\n\t\tif (this.autoDestroy && this.subscribersCount <= 0) {\n\t\t\tthis.destroy();\n\t\t}\n\t}\n\n\tprivate buildExecutionPipe(execute: (...args: unknown[]) => any, isAsync?: boolean): Observable<unknown> {\n\t\tlet pipe$ = this.executionPipe$.pipe(\n\t\t\t// tap(x => console.warn(\">>>> executionPipe\", this._canExecute)),\n\t\t\tfilter(() => this._canExecute),\n\t\t\ttap(() => {\n\t\t\t\t// console.log(\"[command::executionPipe$] do#1 - set execute\", { args: x });\n\t\t\t\tthis._isExecuting$.next(true);\n\t\t\t})\n\t\t);\n\n\t\tconst execFn = isAsync\n\t\t\t? switchMap<unknown[] | undefined, any[]>(args => {\n\t\t\t\tif (args) {\n\t\t\t\t\treturn execute(...args);\n\t\t\t\t}\n\t\t\t\treturn execute();\n\t\t\t})\n\t\t\t: tap((args: unknown[] | undefined) => {\n\t\t\t\tif (args) {\n\t\t\t\t\texecute(...args);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\texecute();\n\t\t\t});\n\n\t\tpipe$ = pipe$.pipe(\n\t\t\tswitchMap(args => of(args).pipe(\n\t\t\t\texecFn,\n\t\t\t\tfinalize(() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] finalize inner#1 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t\tcatchError(error => {\n\t\t\t\t\tconsole.error(\"Unhandled execute error\", error);\n\t\t\t\t\treturn EMPTY;\n\t\t\t\t}),\n\t\t\t)),\n\t\t\ttap(\n\t\t\t\t() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] tap#2 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t},\n\t\t\t)\n\t\t);\n\t\treturn pipe$;\n\t}\n\n}\n\n/**\n * Async Command object used to encapsulate information which is needed to perform an action,\n * which takes an execute function as Observable/Promise.\n */\nexport class CommandAsync extends Command {\n\n\tconstructor(\n\t\texecute: (...args: unknown[]) => Observable<unknown> | Promise<unknown>,\n\t\tcanExecute$?: Observable<boolean>,\n\t) {\n\t\tsuper(execute, canExecute$, true);\n\t}\n\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport interface CommandOptions {\n\t/**\n\t * Css Class which gets added/removed on the Command element's host while Command `isExecuting$`.\n\t */\n\texecutingCssClass: string;\n\n\t/** Determines whether the disabled will be handled by the directive or not.\n\t * Disable handled by directive's doesn't always play nice when used with other component/pipe/directive and they also handle disabled.\n\t * This disables the handling manually and need to pass explicitly `[disabled]=\"!saveCmd.canExecute\"`.\n\t */\n\thandleDisabled: boolean;\n}\n\nexport const COMMAND_DEFAULT_CONFIG: Readonly<CommandOptions> = Object.freeze({\n\texecutingCssClass: \"executing\",\n\thandleDisabled: true,\n});\n\nexport const COMMAND_CONFIG = new InjectionToken<CommandOptions>(\"command-config\");\n","import { AbstractControl, AbstractControlDirective } from \"@angular/forms\";\nimport { Observable, of } from \"rxjs\";\nimport { map, distinctUntilChanged, startWith, delay } from \"rxjs/operators\";\n\nimport { CommandCreator, ICommand } from \"./command.model\";\nimport { Command } from \"./command\";\n\n/** Determines whether the arg object is of type `Command`. */\nexport function isCommand(arg: unknown): arg is ICommand {\n\treturn arg instanceof Command;\n}\n\n/** Determines whether the arg object is of type `CommandCreator`. */\nexport function isCommandCreator(arg: unknown): arg is CommandCreator {\n\tif (arg instanceof Command) {\n\t\treturn false;\n\t} else if (isAssumedType<CommandCreator>(arg) && arg.execute && arg.host) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport interface CanExecuteFormOptions {\n\t/** Determines whether to check for validity. (defaults: true) */\n\tvalidity?: boolean;\n\n\t/** Determines whether to check whether UI has been touched. (defaults: true) */\n\tdirty?: boolean;\n}\n\n/** Get form is valid as an observable. */\nexport function canExecuteFromNgForm(\n\tform: AbstractControl | AbstractControlDirective,\n\toptions?: CanExecuteFormOptions\n): Observable<boolean> {\n\tconst opts: CanExecuteFormOptions = { validity: true, dirty: true, ...options };\n\n\treturn form.statusChanges\n\t\t? form.statusChanges.pipe(\n\t\t\tdelay(0),\n\t\t\tstartWith(form.valid),\n\t\t\tmap(() => !!(!opts.validity || form.valid) && !!(!opts.dirty || form.dirty)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t\t: of(true);\n}\n\nfunction isAssumedType<T = Record<string, unknown>>(x: unknown): x is Partial<T> {\n\treturn x !== null && typeof x === \"object\";\n}\n","import {\n\tDirective,\n\tOnInit,\n\tOnDestroy,\n\tInput,\n\tHostListener,\n\tElementRef,\n\tInject,\n\tRenderer2,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { tap, delay, takeUntil } from \"rxjs/operators\";\n\nimport { CommandOptions, COMMAND_CONFIG } from \"./config\";\nimport { Command } from \"./command\";\nimport { isCommand, isCommandCreator } from \"./command.util\";\nimport { CommandCreator, ICommand } from \"./command.model\";\n\n/**\n * Controls the state of a component in sync with `Command`.\n *\n * @example\n * ### Most common usage\n * ```html\n * <button [ssvCommand]=\"saveCmd\">Save</button>\n * ```\n *\n *\n * ### Usage with options\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandOptions]=\"{executingCssClass: 'in-progress'}\">Save</button>\n * ```\n *\n *\n * ### Usage with params\n * This is useful for collections (loops) or using multiple actions with different args.\n * *NOTE: This will share the `isExecuting` when used with multiple controls.*\n *\n * #### With single param\n *\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"{id: 1}\">Save</button>\n * ```\n * *NOTE: if you have only 1 argument as an array, it should be enclosed within an array e.g. `[['apple', 'banana']]`,\n * else it will spread and you will `arg1: \"apple\", arg2: \"banana\"`*\n *\n * #### With multi params\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"[{id: 1}, 'hello', hero]\">Save</button>\n * ```\n *\n * ### Usage with Command Creator\n * This is useful for collections (loops) or using multiple actions with different args, whilst not sharing `isExecuting`.\n *\n *\n * ```html\n * <button [ssvCommand]=\"{host: this, execute: removeHero$, canExecute: isValid$, params: [hero, 1337, 'xx']}\">Save</button>\n * ```\n *\n */\n\nconst SELECTOR = \"ssvCommand\";\n\n@Directive({\n\tselector: `[${SELECTOR}]`,\n\texportAs: \"ssvCommand\"\n})\nexport class CommandDirective implements OnInit, OnDestroy {\n\n\t@Input(SELECTOR) commandOrCreator: ICommand | CommandCreator | undefined;\n\n\t@Input(`${SELECTOR}Options`)\n\tget commandOptions(): CommandOptions { return this._commandOptions; }\n\tset commandOptions(value: CommandOptions) {\n\t\tif (value === this._commandOptions) {\n\t\t\treturn;\n\t\t}\n\t\tthis._commandOptions = {\n\t\t\t...this.config,\n\t\t\t...value,\n\t\t};\n\t}\n\n\t@Input(`${SELECTOR}Params`) commandParams: unknown | unknown[];\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\tprivate _commandOptions: CommandOptions = this.config;\n\tprivate _destroy$ = new Subject<void>();\n\n\tconstructor(\n\t\t@Inject(COMMAND_CONFIG) private config: CommandOptions,\n\t\tprivate renderer: Renderer2,\n\t\tprivate element: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t) { }\n\n\tngOnInit(): void {\n\t\t// console.log(\"[ssvCommand::init]\", this.config);\n\t\tthis.trySetDisabled(true);\n\t\tif (!this.commandOrCreator) {\n\t\t\tthrow new Error(\"ssvCommand: [ssvCommand] should be defined!\");\n\t\t} else if (isCommand(this.commandOrCreator)) {\n\t\t\tthis._command = this.commandOrCreator;\n\t\t} else if (isCommandCreator(this.commandOrCreator)) {\n\t\t\tconst isAsync = this.commandOrCreator.isAsync || this.commandOrCreator.isAsync === undefined;\n\n\t\t\t// todo: find something like this for ivy (or angular10+)\n\t\t\t// const hostComponent = (this.viewContainer as any)._view.component;\n\n\t\t\tconst execFn = this.commandOrCreator.execute.bind(this.commandOrCreator.host);\n\t\t\tthis.commandParams = this.commandParams || this.commandOrCreator.params;\n\n\t\t\tconst canExec = this.commandOrCreator.canExecute instanceof Function\n\t\t\t\t? this.commandOrCreator.canExecute.bind(this.commandOrCreator.host, this.commandParams)()\n\t\t\t\t: this.commandOrCreator.canExecute;\n\n\t\t\t// console.log(\"[ssvCommand::init] command creator\", {\n\t\t\t// \tfirstParam: this.commandParams ? this.commandParams[0] : null,\n\t\t\t// \tparams: this.commandParams\n\t\t\t// });\n\t\t\tthis._command = new Command(execFn, canExec, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(\"ssvCommand: [ssvCommand] is not defined properly!\");\n\t\t}\n\n\t\tthis._command.subscribe();\n\t\tthis._command.canExecute$.pipe(\n\t\t\tdelay(1),\n\t\t\ttap(x => {\n\t\t\t\tthis.trySetDisabled(!x);\n\t\t\t\t// console.log(\"[ssvCommand::canExecute$]\", { canExecute: x });\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\n\t\tif (this._command.isExecuting$) {\n\t\t\tthis._command.isExecuting$.pipe(\n\t\t\t\ttap(x => {\n\t\t\t\t\t// console.log(\"[ssvCommand::isExecuting$]\", x, this.commandOptions);\n\t\t\t\t\tif (x) {\n\t\t\t\t\t\tthis.renderer.addClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderer.removeClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t).subscribe();\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick(): void {\n\t\t// console.log(\"[ssvCommand::onClick]\", this.commandParams);\n\t\tif (Array.isArray(this.commandParams)) {\n\t\t\tthis._command.execute(...this.commandParams);\n\t\t} else {\n\t\t\tthis._command.execute(this.commandParams);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[ssvCommand::destroy]\");\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tif (this._command) {\n\t\t\tthis._command.unsubscribe();\n\t\t}\n\t}\n\n\tprivate trySetDisabled(disabled: boolean) {\n\t\tif (this.commandOptions.handleDisabled) {\n\t\t\tthis.renderer.setProperty(this.element.nativeElement, \"disabled\", disabled);\n\t\t}\n\t}\n\n}\n\n","import { Observable } from \"rxjs\";\nimport { Directive, OnInit, OnDestroy, Input } from \"@angular/core\";\n\nimport { ICommand, CommandCreator } from \"./command.model\";\nimport { isCommandCreator } from \"./command.util\";\nimport { Command } from \"./command\";\n\n/**\n * Command creator ref, directive which allows creating Command in the template\n * and associate it to a command (in order to share executions).\n * @example\n * ### Most common usage\n * ```html\n * <div #actionCmd=\"ssvCommandRef\" [ssvCommandRef]=\"{host: this, execute: removeHero$, canExecute: isValid$}\">\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * </div>\n * ```\n *\n */\n@Directive({\n\tselector: \"[ssvCommandRef]\",\n\texportAs: \"ssvCommandRef\"\n})\nexport class CommandRefDirective implements OnInit, OnDestroy {\n\n\t@Input(\"ssvCommandRef\") commandCreator: CommandCreator | undefined;\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\n\tngOnInit(): void {\n\t\tif (isCommandCreator(this.commandCreator)) {\n\t\t\tconst isAsync = this.commandCreator.isAsync || this.commandCreator.isAsync === undefined;\n\n\t\t\tconst execFn = this.commandCreator.execute.bind(this.commandCreator.host);\n\t\t\tthis._command = new Command(execFn, this.commandCreator.canExecute as Observable<boolean> | undefined, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(\"ssvCommandRef: [ssvCommandRef] is not defined properly!\");\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[commandRef::destroy]\");\n\t\tif (this._command) {\n\t\t\tthis._command.destroy();\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { CommandDirective } from \"./command.directive\";\nimport { CommandRefDirective } from \"./command-ref.directive\";\nimport { CommandOptions, COMMAND_DEFAULT_CONFIG, COMMAND_CONFIG } from \"./config\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<CommandOptions>(\"@ssv/ngx.command/configData\");\n\nconst components = [\n\tCommandDirective,\n\tCommandRefDirective\n];\n\n@NgModule({\n\tdeclarations: components,\n\tproviders: [\n\t\t{ provide: COMMAND_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t],\n\texports: [...components],\n})\nexport class SsvCommandModule {\n\n\tstatic forRoot(config?: Partial<CommandOptions> | (() => Partial<CommandOptions>)): ModuleWithProviders<SsvCommandModule> {\n\t\treturn {\n\t\t\tngModule: SsvCommandModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions {\n\tconst cfg = typeof config === \"function\" ? config() : config;\n\treturn cfg\n\t\t? {\n\t\t\t...COMMAND_DEFAULT_CONFIG,\n\t\t\t...cfg,\n\t\t}\n\t\t: COMMAND_DEFAULT_CONFIG;\n}\n","export const VERSION = \"2.1.1-dev246\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ssv-ngx.command.js","sources":["../../src/command.ts","../../src/config.ts","../../src/command.util.ts","../../src/command.directive.ts","../../src/command-ref.directive.ts","../../src/module.ts","../../src/version.ts","../../src/ssv-ngx.command.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Observable, combineLatest, Subscription, Subject, BehaviorSubject, of, EMPTY } from \"rxjs\";\nimport { tap, map, filter, switchMap, catchError, finalize, take } from \"rxjs/operators\";\nimport { ICommand } from \"./command.model\";\n\n/**\n * Command object used to encapsulate information which is needed to perform an action.\n */\nexport class Command implements ICommand {\n\n\t/** Determines whether the command is currently executing, as a snapshot value. */\n\tget isExecuting(): boolean {\n\t\treturn this._isExecuting;\n\t}\n\n\t/** Determines whether the command can execute or not, as a snapshot value. */\n\tget canExecute(): boolean {\n\t\treturn this._canExecute;\n\t}\n\n\t/** Determines whether the command is currently executing, as an observable. */\n\tget isExecuting$(): Observable<boolean> {\n\t\treturn this._isExecuting$.asObservable();\n\t}\n\n\t/** Determines whether to auto destroy when having 0 subscribers. */\n\tautoDestroy = true;\n\n\t/** Determines whether the command can execute or not, as an observable. */\n\treadonly canExecute$: Observable<boolean>;\n\n\tprivate _isExecuting$ = new BehaviorSubject<boolean>(false);\n\tprivate _isExecuting = false;\n\tprivate _canExecute = true;\n\tprivate executionPipe$ = new Subject<unknown[] | undefined>();\n\tprivate isExecuting$$ = Subscription.EMPTY;\n\tprivate canExecute$$ = Subscription.EMPTY;\n\tprivate executionPipe$$ = Subscription.EMPTY;\n\tprivate subscribersCount = 0;\n\n\t/**\n\t * Creates an instance of Command.\n\t *\n\t * @param execute Execute function to invoke - use `isAsync: true` when `Observable<any>`.\n\t * @param canExecute Observable which determines whether it can execute or not.\n\t * @param isAsync Indicates that the execute function is async e.g. Observable.\n\t */\n\tconstructor(\n\t\texecute: (...args: unknown[]) => unknown,\n\t\tcanExecute$?: Observable<boolean>,\n\t\tisAsync?: boolean,\n\t) {\n\t\tif (canExecute$) {\n\t\t\tthis.canExecute$ = combineLatest([\n\t\t\t\tthis._isExecuting$,\n\t\t\t\tcanExecute$\n\t\t\t]).pipe(\n\t\t\t\tmap(([isExecuting, canExecuteResult]) => {\n\t\t\t\t\t// console.log(\"[command::combineLatest$] update!\", { isExecuting, canExecuteResult });\n\t\t\t\t\tthis._isExecuting = isExecuting;\n\t\t\t\t\tthis._canExecute = !isExecuting && !!canExecuteResult;\n\t\t\t\t\treturn this._canExecute;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tthis.canExecute$$ = this.canExecute$.subscribe();\n\t\t} else {\n\t\t\tthis.canExecute$ = this._isExecuting$.pipe(\n\t\t\t\tmap(x => {\n\t\t\t\t\tconst canExecute = !x;\n\t\t\t\t\tthis._canExecute = canExecute;\n\t\t\t\t\treturn canExecute;\n\t\t\t\t})\n\t\t\t);\n\t\t\tthis.isExecuting$$ = this._isExecuting$\n\t\t\t\t.pipe(tap(x => this._isExecuting = x))\n\t\t\t\t.subscribe();\n\t\t}\n\t\tthis.executionPipe$$ = this.buildExecutionPipe(execute, isAsync).subscribe();\n\t}\n\n\t/** Execute function to invoke. */\n\texecute(...args: unknown[]): void {\n\t\t// console.warn(\"[command::execute]\", args);\n\t\tthis.executionPipe$.next(args);\n\t}\n\n\t/** Disposes all resources held by subscriptions. */\n\tdestroy(): void {\n\t\t// console.warn(\"[command::destroy]\");\n\t\tthis.executionPipe$$.unsubscribe();\n\t\tthis.canExecute$$.unsubscribe();\n\t\tthis.isExecuting$$.unsubscribe();\n\t}\n\n\tsubscribe(): void {\n\t\tthis.subscribersCount++;\n\t}\n\n\tunsubscribe(): void {\n\t\tthis.subscribersCount--;\n\t\t// console.log(\"[command::unsubscribe]\", { autoDestroy: this.autoDestroy, subscribersCount: this.subscribersCount });\n\t\tif (this.autoDestroy && this.subscribersCount <= 0) {\n\t\t\tthis.destroy();\n\t\t}\n\t}\n\n\tprivate buildExecutionPipe(execute: (...args: unknown[]) => any, isAsync?: boolean): Observable<unknown> {\n\t\tlet pipe$ = this.executionPipe$.pipe(\n\t\t\t// tap(x => console.warn(\">>>> executionPipe\", this._canExecute)),\n\t\t\tfilter(() => this._canExecute),\n\t\t\ttap(() => {\n\t\t\t\t// console.log(\"[command::executionPipe$] do#1 - set execute\", { args: x });\n\t\t\t\tthis._isExecuting$.next(true);\n\t\t\t})\n\t\t);\n\n\t\tconst execFn = isAsync\n\t\t\t? switchMap<unknown[] | undefined, any[]>(args => {\n\t\t\t\tif (args) {\n\t\t\t\t\treturn execute(...args);\n\t\t\t\t}\n\t\t\t\treturn execute();\n\t\t\t})\n\t\t\t: tap((args: unknown[] | undefined) => {\n\t\t\t\tif (args) {\n\t\t\t\t\texecute(...args);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\texecute();\n\t\t\t});\n\n\t\tpipe$ = pipe$.pipe(\n\t\t\tswitchMap(args => of(args).pipe(\n\t\t\t\texecFn,\n\t\t\t\tfinalize(() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] finalize inner#1 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t\tcatchError(error => {\n\t\t\t\t\tconsole.error(\"Unhandled execute error\", error);\n\t\t\t\t\treturn EMPTY;\n\t\t\t\t}),\n\t\t\t)),\n\t\t\ttap(\n\t\t\t\t() => {\n\t\t\t\t\t// console.log(\"[command::executionPipe$] tap#2 - set idle\");\n\t\t\t\t\tthis._isExecuting$.next(false);\n\t\t\t\t},\n\t\t\t)\n\t\t);\n\t\treturn pipe$;\n\t}\n\n}\n\n/**\n * Async Command object used to encapsulate information which is needed to perform an action,\n * which takes an execute function as Observable/Promise.\n */\nexport class CommandAsync extends Command {\n\n\tconstructor(\n\t\texecute: (...args: unknown[]) => Observable<unknown> | Promise<unknown>,\n\t\tcanExecute$?: Observable<boolean>,\n\t) {\n\t\tsuper(execute, canExecute$, true);\n\t}\n\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport interface CommandOptions {\n\t/**\n\t * Css Class which gets added/removed on the Command element's host while Command `isExecuting$`.\n\t */\n\texecutingCssClass: string;\n\n\t/** Determines whether the disabled will be handled by the directive or not.\n\t * Disable handled by directive's doesn't always play nice when used with other component/pipe/directive and they also handle disabled.\n\t * This disables the handling manually and need to pass explicitly `[disabled]=\"!saveCmd.canExecute\"`.\n\t */\n\thandleDisabled: boolean;\n\n\t/** Determine whether to set a `delay(1)` when setting the disabled. Which might be needed when working with external\n\t * components/directives (such as material button)\n\t */\n\thasDisabledDelay: boolean;\n}\n\nexport const COMMAND_DEFAULT_CONFIG = Object.freeze({\n\texecutingCssClass: \"executing\",\n\thandleDisabled: true,\n\thasDisabledDelay: false,\n} as CommandOptions);\n\nexport const COMMAND_CONFIG = new InjectionToken<CommandOptions>(\"command-config\");\n","import { AbstractControl, AbstractControlDirective } from \"@angular/forms\";\nimport { Observable, of } from \"rxjs\";\nimport { map, distinctUntilChanged, startWith, delay } from \"rxjs/operators\";\n\nimport { CommandCreator, ICommand } from \"./command.model\";\nimport { Command } from \"./command\";\n\n/** Determines whether the arg object is of type `Command`. */\nexport function isCommand(arg: unknown): arg is ICommand {\n\treturn arg instanceof Command;\n}\n\n/** Determines whether the arg object is of type `CommandCreator`. */\nexport function isCommandCreator(arg: unknown): arg is CommandCreator {\n\tif (arg instanceof Command) {\n\t\treturn false;\n\t} else if (isAssumedType<CommandCreator>(arg) && arg.execute && arg.host) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport interface CanExecuteFormOptions {\n\t/** Determines whether to check for validity. (defaults: true) */\n\tvalidity?: boolean;\n\n\t/** Determines whether to check whether UI has been touched. (defaults: true) */\n\tdirty?: boolean;\n}\n\n/** Get form is valid as an observable. */\nexport function canExecuteFromNgForm(\n\tform: AbstractControl | AbstractControlDirective,\n\toptions?: CanExecuteFormOptions\n): Observable<boolean> {\n\tconst opts: CanExecuteFormOptions = { validity: true, dirty: true, ...options };\n\n\treturn form.statusChanges\n\t\t? form.statusChanges.pipe(\n\t\t\tdelay(0),\n\t\t\tstartWith(form.valid),\n\t\t\tmap(() => !!(!opts.validity || form.valid) && !!(!opts.dirty || form.dirty)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t\t: of(true);\n}\n\nfunction isAssumedType<T = Record<string, unknown>>(x: unknown): x is Partial<T> {\n\treturn x !== null && typeof x === \"object\";\n}\n","import {\n\tDirective,\n\tOnInit,\n\tOnDestroy,\n\tInput,\n\tHostListener,\n\tElementRef,\n\tInject,\n\tRenderer2,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { tap, delay, takeUntil } from \"rxjs/operators\";\n\nimport { CommandOptions, COMMAND_CONFIG } from \"./config\";\nimport { Command } from \"./command\";\nimport { isCommand, isCommandCreator } from \"./command.util\";\nimport { CommandCreator, ICommand } from \"./command.model\";\n\n/**\n * Controls the state of a component in sync with `Command`.\n *\n * @example\n * ### Most common usage\n * ```html\n * <button [ssvCommand]=\"saveCmd\">Save</button>\n * ```\n *\n *\n * ### Usage with options\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandOptions]=\"{executingCssClass: 'in-progress'}\">Save</button>\n * ```\n *\n *\n * ### Usage with params\n * This is useful for collections (loops) or using multiple actions with different args.\n * *NOTE: This will share the `isExecuting` when used with multiple controls.*\n *\n * #### With single param\n *\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"{id: 1}\">Save</button>\n * ```\n * *NOTE: if you have only 1 argument as an array, it should be enclosed within an array e.g. `[['apple', 'banana']]`,\n * else it will spread and you will `arg1: \"apple\", arg2: \"banana\"`*\n *\n * #### With multi params\n * ```html\n * <button [ssvCommand]=\"saveCmd\" [ssvCommandParams]=\"[{id: 1}, 'hello', hero]\">Save</button>\n * ```\n *\n * ### Usage with Command Creator\n * This is useful for collections (loops) or using multiple actions with different args, whilst not sharing `isExecuting`.\n *\n *\n * ```html\n * <button [ssvCommand]=\"{host: this, execute: removeHero$, canExecute: isValid$, params: [hero, 1337, 'xx']}\">Save</button>\n * ```\n *\n */\n\nconst NAME_CAMEL = \"ssvCommand\";\n\n// let nextUniqueId = 0;\n\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\texportAs: NAME_CAMEL\n})\nexport class CommandDirective implements OnInit, OnDestroy {\n\n\t// readonly id = `${NAME_CAMEL}-${nextUniqueId++}`;\n\n\t@Input(NAME_CAMEL) commandOrCreator: ICommand | CommandCreator | undefined;\n\n\t@Input(`${NAME_CAMEL}Options`)\n\tget commandOptions(): CommandOptions { return this._commandOptions; }\n\tset commandOptions(value: CommandOptions) {\n\t\tif (value === this._commandOptions) {\n\t\t\treturn;\n\t\t}\n\t\tthis._commandOptions = {\n\t\t\t...this.config,\n\t\t\t...value,\n\t\t};\n\t}\n\n\t@Input(`${NAME_CAMEL}Params`) commandParams: unknown | unknown[];\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\tprivate _commandOptions: CommandOptions = this.config;\n\tprivate _destroy$ = new Subject<void>();\n\n\tconstructor(\n\t\t@Inject(COMMAND_CONFIG) private config: CommandOptions,\n\t\tprivate renderer: Renderer2,\n\t\tprivate element: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t) { }\n\n\tngOnInit(): void {\n\t\t// console.log(\"[ssvCommand::init]\", this.config);\n\t\tif (!this.commandOrCreator) {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] should be defined!`);\n\t\t} else if (isCommand(this.commandOrCreator)) {\n\t\t\tthis._command = this.commandOrCreator;\n\t\t} else if (isCommandCreator(this.commandOrCreator)) {\n\t\t\tconst isAsync = this.commandOrCreator.isAsync || this.commandOrCreator.isAsync === undefined;\n\n\t\t\t// todo: find something like this for ivy (or angular10+)\n\t\t\t// const hostComponent = (this.viewContainer as any)._view.component;\n\n\t\t\tconst execFn = this.commandOrCreator.execute.bind(this.commandOrCreator.host);\n\t\t\tthis.commandParams = this.commandParams || this.commandOrCreator.params;\n\n\t\t\tconst canExec = this.commandOrCreator.canExecute instanceof Function\n\t\t\t\t? this.commandOrCreator.canExecute.bind(this.commandOrCreator.host, this.commandParams)()\n\t\t\t\t: this.commandOrCreator.canExecute;\n\n\t\t\t// console.log(\"[ssvCommand::init] command creator\", {\n\t\t\t// \tfirstParam: this.commandParams ? this.commandParams[0] : null,\n\t\t\t// \tparams: this.commandParams\n\t\t\t// });\n\t\t\tthis._command = new Command(execFn, canExec, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);\n\t\t}\n\n\t\tthis._command.subscribe();\n\t\tthis._command.canExecute$.pipe(\n\t\t\tthis.commandOptions.hasDisabledDelay\n\t\t\t\t? delay(1)\n\t\t\t\t: tap(() => { /* stub */ }),\n\t\t\ttap(x => {\n\t\t\t\tthis.trySetDisabled(!x);\n\t\t\t\t// console.log(\"[ssvCommand::canExecute$]\", { canExecute: x });\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\n\t\tif (this._command.isExecuting$) {\n\t\t\tthis._command.isExecuting$.pipe(\n\t\t\t\ttap(x => {\n\t\t\t\t\t// console.log(\"[ssvCommand::isExecuting$]\", x, this.commandOptions);\n\t\t\t\t\tif (x) {\n\t\t\t\t\t\tthis.renderer.addClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderer.removeClass(\n\t\t\t\t\t\t\tthis.element.nativeElement,\n\t\t\t\t\t\t\tthis.commandOptions.executingCssClass\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t).subscribe();\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick(): void {\n\t\t// console.log(\"[ssvCommand::onClick]\", this.commandParams);\n\t\tif (Array.isArray(this.commandParams)) {\n\t\t\tthis._command.execute(...this.commandParams);\n\t\t} else {\n\t\t\tthis._command.execute(this.commandParams);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[ssvCommand::destroy]\");\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tif (this._command) {\n\t\t\tthis._command.unsubscribe();\n\t\t}\n\t}\n\n\tprivate trySetDisabled(disabled: boolean) {\n\t\tif (this.commandOptions.handleDisabled) {\n\t\t\t// console.warn(\">>>> disabled\", { id: this.id, disabled });\n\t\t\tthis.renderer.setProperty(this.element.nativeElement, \"disabled\", disabled);\n\t\t}\n\t}\n\n}\n\n","import { Observable } from \"rxjs\";\nimport { Directive, OnInit, OnDestroy, Input } from \"@angular/core\";\n\nimport { ICommand, CommandCreator } from \"./command.model\";\nimport { isCommandCreator } from \"./command.util\";\nimport { Command } from \"./command\";\n\nconst NAME_CAMEL = \"ssvCommandRef\";\n\n/**\n * Command creator ref, directive which allows creating Command in the template\n * and associate it to a command (in order to share executions).\n * @example\n * ### Most common usage\n * ```html\n * <div #actionCmd=\"ssvCommandRef\" [ssvCommandRef]=\"{host: this, execute: removeHero$, canExecute: isValid$}\">\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * <button [ssvCommand]=\"actionCmd.command\" [ssvCommandParams]=\"hero\">\n * Remove\n * </button>\n * </div>\n * ```\n *\n */\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\texportAs: NAME_CAMEL\n})\nexport class CommandRefDirective implements OnInit, OnDestroy {\n\n\t@Input(NAME_CAMEL) commandCreator: CommandCreator | undefined;\n\n\tget command(): ICommand { return this._command; }\n\tprivate _command!: ICommand;\n\n\tngOnInit(): void {\n\t\tif (isCommandCreator(this.commandCreator)) {\n\t\t\tconst isAsync = this.commandCreator.isAsync || this.commandCreator.isAsync === undefined;\n\n\t\t\tconst execFn = this.commandCreator.execute.bind(this.commandCreator.host);\n\t\t\tthis._command = new Command(execFn, this.commandCreator.canExecute as Observable<boolean> | undefined, isAsync);\n\t\t} else {\n\t\t\tthrow new Error(`${NAME_CAMEL}: [${NAME_CAMEL}] is not defined properly!`);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\t// console.log(\"[commandRef::destroy]\");\n\t\tif (this._command) {\n\t\t\tthis._command.destroy();\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { CommandDirective } from \"./command.directive\";\nimport { CommandRefDirective } from \"./command-ref.directive\";\nimport { CommandOptions, COMMAND_DEFAULT_CONFIG, COMMAND_CONFIG } from \"./config\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<CommandOptions>(\"@ssv/ngx.command/configData\");\n\nconst components = [\n\tCommandDirective,\n\tCommandRefDirective\n];\n\n@NgModule({\n\tdeclarations: components,\n\tproviders: [\n\t\t{ provide: COMMAND_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t],\n\texports: [...components],\n})\nexport class SsvCommandModule {\n\n\tstatic forRoot(config?: Partial<CommandOptions> | (() => Partial<CommandOptions>)): ModuleWithProviders<SsvCommandModule> {\n\t\treturn {\n\t\t\tngModule: SsvCommandModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions {\n\tconst cfg = typeof config === \"function\" ? config() : config;\n\treturn cfg\n\t\t? {\n\t\t\t...COMMAND_DEFAULT_CONFIG,\n\t\t\t...cfg,\n\t\t}\n\t\t: COMMAND_DEFAULT_CONFIG;\n}\n","export const VERSION = \"2.1.1-dev267\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["NAME_CAMEL"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssv/ngx.command",
3
- "version": "2.1.1-dev246",
3
+ "version": "2.1.1-dev267",
4
4
  "versionSuffix": "",
5
5
  "description": "Command pattern implementation for angular. Command used to encapsulate information which is needed to perform an action.",
6
6
  "keywords": [
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"Command":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":48,"character":11,"module":"./command"},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"boolean"}]},{"__symbolic":"reference","name":"boolean"}]}],"execute":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"unsubscribe":[{"__symbolic":"method"}],"buildExecutionPipe":[{"__symbolic":"method"}]}},"CommandAsync":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Command"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":163,"character":11,"module":"./command"},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"boolean"}]}]}]}},"CommandDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":64,"character":1},"arguments":[{"selector":"[ssvCommand]","exportAs":"ssvCommand"}]}],"members":{"commandOrCreator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":2},"arguments":["ssvCommand"]}]}],"commandOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":2},"arguments":["ssvCommandOptions"]}]}],"commandParams":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":2},"arguments":["ssvCommandParams"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":92,"character":3},"arguments":[{"__symbolic":"reference","name":"COMMAND_CONFIG"}]}],null,null,null],"parameters":[{"__symbolic":"reference","name":"CommandOptions"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":93,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":94,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":95,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":159,"character":2},"arguments":["click"]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"trySetDisabled":[{"__symbolic":"method"}]}},"CommandRefDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":24,"character":1},"arguments":[{"selector":"[ssvCommandRef]","exportAs":"ssvCommandRef"}]}],"members":{"commandCreator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":2},"arguments":["ssvCommandRef"]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"isCommand":{"__symbolic":"function","parameters":["arg"],"value":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"arg"},"right":{"__symbolic":"reference","name":"Command"}}},"isCommandCreator":{"__symbolic":"function"},"CanExecuteFormOptions":{"__symbolic":"interface"},"canExecuteFromNgForm":{"__symbolic":"function"},"CommandCreator":{"__symbolic":"interface"},"ICommand":{"__symbolic":"interface"},"CommandOptions":{"__symbolic":"interface"},"COMMAND_DEFAULT_CONFIG":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"executingCssClass":"executing","handleDisabled":true}]},"COMMAND_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":34},"arguments":["command-config"]},"MODULE_CONFIG_DATA":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":38},"arguments":["@ssv/ngx.command/configData"]},"SsvCommandModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"CommandDirective"},{"__symbolic":"reference","name":"CommandRefDirective"}],"providers":[{"provide":{"__symbolic":"reference","name":"COMMAND_CONFIG"},"useFactory":{"__symbolic":"reference","name":"_moduleConfigFactory"},"deps":[[{"__symbolic":"reference","name":"MODULE_CONFIG_DATA"},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":17,"character":95}}]]}],"exports":[{"__symbolic":"reference","name":"CommandDirective"},{"__symbolic":"reference","name":"CommandRefDirective"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"SsvCommandModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MODULE_CONFIG_DATA"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"_moduleConfigFactory":{"__symbolic":"function"},"VERSION":"2.1.1-dev246"},"origins":{"Command":"./command","CommandAsync":"./command","CommandDirective":"./command.directive","CommandRefDirective":"./command-ref.directive","isCommand":"./command.util","isCommandCreator":"./command.util","CanExecuteFormOptions":"./command.util","canExecuteFromNgForm":"./command.util","CommandCreator":"./command.model","ICommand":"./command.model","CommandOptions":"./config","COMMAND_DEFAULT_CONFIG":"./config","COMMAND_CONFIG":"./config","MODULE_CONFIG_DATA":"./module","SsvCommandModule":"./module","_moduleConfigFactory":"./module","VERSION":"./version"},"importAs":"@ssv/ngx.command"}
1
+ {"__symbolic":"module","version":4,"metadata":{"Command":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":48,"character":11,"module":"./command"},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"boolean"}]},{"__symbolic":"reference","name":"boolean"}]}],"execute":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"unsubscribe":[{"__symbolic":"method"}],"buildExecutionPipe":[{"__symbolic":"method"}]}},"CommandAsync":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Command"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":163,"character":11,"module":"./command"},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"boolean"}]}]}]}},"CommandDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":66,"character":1},"arguments":[{"selector":"[ssvCommand]","exportAs":"ssvCommand"}]}],"members":{"commandOrCreator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":2},"arguments":["ssvCommand"]}]}],"commandOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":2},"arguments":["ssvCommandOptions"]}]}],"commandParams":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":2},"arguments":["ssvCommandParams"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":96,"character":3},"arguments":[{"__symbolic":"reference","name":"COMMAND_CONFIG"}]}],null,null,null],"parameters":[{"__symbolic":"reference","name":"CommandOptions"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":97,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":98,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":99,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":164,"character":2},"arguments":["click"]}]}],"ngOnDestroy":[{"__symbolic":"method"}],"trySetDisabled":[{"__symbolic":"method"}]}},"CommandRefDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":26,"character":1},"arguments":[{"selector":"[ssvCommandRef]","exportAs":"ssvCommandRef"}]}],"members":{"commandCreator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":2},"arguments":["ssvCommandRef"]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"isCommand":{"__symbolic":"function","parameters":["arg"],"value":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"arg"},"right":{"__symbolic":"reference","name":"Command"}}},"isCommandCreator":{"__symbolic":"function"},"CanExecuteFormOptions":{"__symbolic":"interface"},"canExecuteFromNgForm":{"__symbolic":"function"},"CommandCreator":{"__symbolic":"interface"},"ICommand":{"__symbolic":"interface"},"CommandOptions":{"__symbolic":"interface"},"COMMAND_DEFAULT_CONFIG":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"executingCssClass":"executing","handleDisabled":true,"hasDisabledDelay":false}]},"COMMAND_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":26,"character":34},"arguments":["command-config"]},"MODULE_CONFIG_DATA":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":38},"arguments":["@ssv/ngx.command/configData"]},"SsvCommandModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"CommandDirective"},{"__symbolic":"reference","name":"CommandRefDirective"}],"providers":[{"provide":{"__symbolic":"reference","name":"COMMAND_CONFIG"},"useFactory":{"__symbolic":"reference","name":"_moduleConfigFactory"},"deps":[[{"__symbolic":"reference","name":"MODULE_CONFIG_DATA"},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":17,"character":95}}]]}],"exports":[{"__symbolic":"reference","name":"CommandDirective"},{"__symbolic":"reference","name":"CommandRefDirective"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"SsvCommandModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MODULE_CONFIG_DATA"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"_moduleConfigFactory":{"__symbolic":"function"},"VERSION":"2.1.1-dev267"},"origins":{"Command":"./command","CommandAsync":"./command","CommandDirective":"./command.directive","CommandRefDirective":"./command-ref.directive","isCommand":"./command.util","isCommandCreator":"./command.util","CanExecuteFormOptions":"./command.util","canExecuteFromNgForm":"./command.util","CommandCreator":"./command.model","ICommand":"./command.model","CommandOptions":"./config","COMMAND_DEFAULT_CONFIG":"./config","COMMAND_CONFIG":"./config","MODULE_CONFIG_DATA":"./module","SsvCommandModule":"./module","_moduleConfigFactory":"./module","VERSION":"./version"},"importAs":"@ssv/ngx.command"}
package/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "2.1.1-dev246";
1
+ export declare const VERSION = "2.1.1-dev267";