@zajno/common 1.2.6 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/coverage/clover.xml +410 -144
  2. package/coverage/coverage-final.json +38 -30
  3. package/coverage/lcov-report/index.html +34 -19
  4. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  5. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  6. package/coverage/lcov-report/src/async/arrays.ts.html +5 -5
  7. package/coverage/lcov-report/src/async/index.html +1 -1
  8. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  9. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  10. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  11. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/index.html +1 -1
  13. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  17. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  19. package/coverage/lcov-report/src/enumHelper.ts.html +11 -11
  20. package/coverage/lcov-report/src/event.ts.html +3 -3
  21. package/coverage/lcov-report/src/index.html +49 -19
  22. package/coverage/lcov-report/src/lazy.light.ts.html +155 -0
  23. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  24. package/coverage/lcov-report/src/logger/index.html +1 -1
  25. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  26. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  27. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  28. package/coverage/lcov-report/src/math/arrays.ts.html +1 -1
  29. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  30. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  31. package/coverage/lcov-report/src/math/index.html +1 -1
  32. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  33. package/coverage/lcov-report/src/transitionObserver.ts.html +113 -41
  34. package/coverage/lcov-report/src/types.ts.html +143 -0
  35. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +22 -22
  36. package/coverage/lcov-report/src/validation/creditCard.ts.html +4 -4
  37. package/coverage/lcov-report/src/validation/helpers.ts.html +6 -6
  38. package/coverage/lcov-report/src/validation/index.html +1 -1
  39. package/coverage/lcov-report/src/validation/index.ts.html +6 -6
  40. package/coverage/lcov-report/src/validation/types.ts.html +2 -2
  41. package/coverage/lcov-report/src/validation/validators.ts.html +5 -5
  42. package/coverage/lcov-report/src/validation/wrappers.ts.html +5 -5
  43. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +209 -0
  44. package/coverage/lcov-report/src/viewModels/LabeledFlagModel.ts.html +146 -0
  45. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +530 -0
  46. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +188 -0
  47. package/coverage/lcov-report/{enumHelper.ts.html → src/viewModels/SelectModel.ts.html} +158 -152
  48. package/coverage/lcov-report/src/viewModels/SelectViewModel.ts.html +434 -0
  49. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +329 -0
  50. package/coverage/lcov-report/src/viewModels/index.html +186 -0
  51. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +239 -0
  52. package/coverage/lcov-report/transitionObserver.ts.html +77 -41
  53. package/coverage/lcov.info +765 -184
  54. package/lib/timeHelper.d.ts +3 -0
  55. package/lib/timeHelper.d.ts.map +1 -1
  56. package/lib/timeHelper.js +3 -0
  57. package/lib/timeHelper.js.map +1 -1
  58. package/lib/transitionObserver.d.ts +3 -1
  59. package/lib/transitionObserver.d.ts.map +1 -1
  60. package/lib/transitionObserver.js +25 -5
  61. package/lib/transitionObserver.js.map +1 -1
  62. package/lib/types.d.ts +5 -0
  63. package/lib/types.d.ts.map +1 -1
  64. package/lib/types.js +14 -0
  65. package/lib/types.js.map +1 -1
  66. package/lib/viewModels/FlagModel.d.ts +19 -0
  67. package/lib/viewModels/FlagModel.d.ts.map +1 -0
  68. package/lib/viewModels/FlagModel.js +38 -0
  69. package/lib/viewModels/FlagModel.js.map +1 -0
  70. package/lib/viewModels/MultiSelectModel.d.ts +41 -0
  71. package/lib/viewModels/MultiSelectModel.d.ts.map +1 -0
  72. package/lib/viewModels/MultiSelectModel.js +150 -0
  73. package/lib/viewModels/MultiSelectModel.js.map +1 -0
  74. package/lib/viewModels/NumberModel.d.ts +16 -0
  75. package/lib/viewModels/NumberModel.d.ts.map +1 -0
  76. package/lib/viewModels/NumberModel.js +40 -0
  77. package/lib/viewModels/NumberModel.js.map +1 -0
  78. package/lib/viewModels/PromptModal.d.ts +31 -0
  79. package/lib/viewModels/PromptModal.d.ts.map +1 -0
  80. package/lib/viewModels/PromptModal.js +57 -0
  81. package/lib/viewModels/PromptModal.js.map +1 -0
  82. package/lib/viewModels/{SelectViewModel.d.ts → SelectModel.d.ts} +14 -8
  83. package/lib/viewModels/SelectModel.d.ts.map +1 -0
  84. package/lib/viewModels/SelectModel.js +109 -0
  85. package/lib/viewModels/SelectModel.js.map +1 -0
  86. package/lib/viewModels/{TextInputViewModel.d.ts → TextModel.d.ts} +10 -9
  87. package/lib/viewModels/TextModel.d.ts.map +1 -0
  88. package/lib/viewModels/{TextInputViewModel.js → TextModel.js} +8 -23
  89. package/lib/viewModels/TextModel.js.map +1 -0
  90. package/lib/viewModels/Validatable.d.ts +9 -7
  91. package/lib/viewModels/Validatable.d.ts.map +1 -1
  92. package/lib/viewModels/Validatable.js +22 -8
  93. package/lib/viewModels/Validatable.js.map +1 -1
  94. package/lib/viewModels/ValuesCollector.d.ts +28 -0
  95. package/lib/viewModels/ValuesCollector.d.ts.map +1 -0
  96. package/lib/viewModels/ValuesCollector.js +51 -0
  97. package/lib/viewModels/ValuesCollector.js.map +1 -0
  98. package/lib/viewModels/index.d.ts +7 -5
  99. package/lib/viewModels/index.d.ts.map +1 -1
  100. package/lib/viewModels/index.js +7 -5
  101. package/lib/viewModels/index.js.map +1 -1
  102. package/lib/viewModels/wrappers.d.ts +15 -0
  103. package/lib/viewModels/wrappers.d.ts.map +1 -0
  104. package/lib/viewModels/wrappers.js +43 -0
  105. package/lib/viewModels/wrappers.js.map +1 -0
  106. package/package.json +1 -1
  107. package/src/__tests__/transitionObserver.test.ts +10 -5
  108. package/src/timeHelper.ts +3 -0
  109. package/src/transitionObserver.ts +32 -8
  110. package/src/types.ts +16 -0
  111. package/src/viewModels/FlagModel.ts +43 -0
  112. package/src/viewModels/MultiSelectModel.ts +150 -0
  113. package/src/viewModels/NumberModel.ts +36 -0
  114. package/src/viewModels/PromptModal.ts +65 -0
  115. package/src/viewModels/SelectModel.ts +125 -0
  116. package/src/viewModels/{TextInputViewModel.ts → TextModel.ts} +22 -26
  117. package/src/viewModels/Validatable.ts +26 -11
  118. package/src/viewModels/ValuesCollector.ts +84 -0
  119. package/src/viewModels/__tests__/multiSelect.test.ts +23 -0
  120. package/src/viewModels/__tests__/select.test.ts +71 -0
  121. package/src/viewModels/__tests__/wrappers.test.ts +79 -0
  122. package/src/viewModels/index.ts +9 -5
  123. package/src/viewModels/wrappers.ts +53 -0
  124. package/yarn-error.log +3709 -0
  125. package/lib/viewModels/PromptModalViewModel.d.ts +0 -27
  126. package/lib/viewModels/PromptModalViewModel.d.ts.map +0 -1
  127. package/lib/viewModels/PromptModalViewModel.js +0 -56
  128. package/lib/viewModels/PromptModalViewModel.js.map +0 -1
  129. package/lib/viewModels/RadioButtonGroupViewModel.d.ts +0 -11
  130. package/lib/viewModels/RadioButtonGroupViewModel.d.ts.map +0 -1
  131. package/lib/viewModels/RadioButtonGroupViewModel.js +0 -51
  132. package/lib/viewModels/RadioButtonGroupViewModel.js.map +0 -1
  133. package/lib/viewModels/RadioButtonViewModel.d.ts +0 -9
  134. package/lib/viewModels/RadioButtonViewModel.d.ts.map +0 -1
  135. package/lib/viewModels/RadioButtonViewModel.js +0 -32
  136. package/lib/viewModels/RadioButtonViewModel.js.map +0 -1
  137. package/lib/viewModels/SelectViewModel.d.ts.map +0 -1
  138. package/lib/viewModels/SelectViewModel.js +0 -88
  139. package/lib/viewModels/SelectViewModel.js.map +0 -1
  140. package/lib/viewModels/TextInputViewModel.d.ts.map +0 -1
  141. package/lib/viewModels/TextInputViewModel.js.map +0 -1
  142. package/src/viewModels/PromptModalViewModel.ts +0 -71
  143. package/src/viewModels/RadioButtonGroupViewModel.ts +0 -47
  144. package/src/viewModels/RadioButtonViewModel.ts +0 -26
  145. package/src/viewModels/SelectViewModel.ts +0 -88
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptModal.js","sourceRoot":"","sources":["../../src/viewModels/PromptModal.ts"],"names":[],"mappings":";;;;AAAA,+BAA0D;AAC1D,2CAAwC;AAOxC,MAAa,gBAAgB;IAMzB;QALgB,aAAQ,GAAG,IAAI,qBAAS,EAAE,CAAC;QAGnC,mBAAc,GAAM,IAAI,CAAC;QAS1B,cAAS,GAAG,CAAC,MAAS,EAAE,EAAE;YAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC;QAGK,eAAU,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC;QAEQ,cAAS,GAAG,KAAK,EAAE,EAA8B,EAAE,KAAK,GAAG,IAAI,EAAE,WAAW,GAAG,KAAK,EAAE,EAAE;YAC9F,IAAI,EAAE,EAAE;gBACJ,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC;gBACrB,IAAI,WAAW,EAAE;oBACb,MAAM,OAAO,CAAC;iBACjB;aACJ;YAED,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;QACL,CAAC,CAAC;QA5BE,qBAAc,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;CA0BtD;AAhCG;IADC,iBAAU,CAAC,GAAG;;wDACkB;AASjC;IADC,aAAM;;mDAIL;AAGF;IADC,aAAM;;oDAIL;AAtBN,4CAoCC;AAaD,MAAa,oBAAqB,SAAQ,gBAAmC;IAA7E;;QAKI,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACtG,aAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACzG,CAAC;IANG,IAAI,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IAE9D,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;CAI/D;AAPD,oDAOC"}
@@ -1,25 +1,31 @@
1
- export declare class Select<T = any> {
1
+ import { FlagModel, ILabeledFlagModel } from './FlagModel';
2
+ import { ValidatableModel } from './Validatable';
3
+ import { IValueModel } from './ValuesCollector';
4
+ export declare class Select<T = any> extends ValidatableModel<T> implements IValueModel<string> {
2
5
  private readonly _items;
3
6
  private readonly _accessor;
4
7
  private _index;
5
- private _open;
6
- private _error;
8
+ readonly opened: FlagModel;
9
+ private _indexLocked;
10
+ private _initialIndex;
11
+ private readonly _flags;
7
12
  constructor(_items: readonly T[], _accessor: (item: T) => string, initialIndex?: number);
13
+ protected get valueToValidate(): T;
8
14
  get values(): readonly string[];
9
- get open(): boolean;
10
- set open(value: boolean);
11
- get error(): boolean;
12
- set error(value: boolean);
15
+ get flags(): readonly ILabeledFlagModel[];
13
16
  get items(): readonly T[];
17
+ get value(): string;
14
18
  get selectedValue(): string;
19
+ set value(v: string);
15
20
  set selectedValue(value: string);
16
21
  get selectedItem(): T;
17
22
  set selectedItem(item: T);
18
23
  get index(): number;
19
24
  set index(val: number);
20
25
  reset: () => void;
26
+ private createFlags;
21
27
  }
22
28
  export declare class SelectString<T extends string = string> extends Select<T> {
23
29
  constructor(items: readonly T[], initialIndex?: number);
24
30
  }
25
- //# sourceMappingURL=SelectViewModel.d.ts.map
31
+ //# sourceMappingURL=SelectModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/SelectModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,qBAAa,MAAM,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,MAAM,CAAC;IAW/E,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAV9B,OAAO,CAAC,MAAM,CAAqB;IAEnC,SAAgB,MAAM,YAAmB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAG1C,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC/C,YAAY,GAAE,MAAU;IAS5B,SAAS,KAAK,eAAe,MAAgC;IAE7D,IACI,MAAM,IAAI,SAAS,MAAM,EAAE,CAE9B;IAED,IAAI,KAAK,iCAER;IAED,IAAI,KAAK,iBAER;IAED,IAAI,KAAK,IAMI,MAAM,CANuB;IAC1C,IAAI,aAAa,IAMQ,MAAM,CAH9B;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAA6B;IAChD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAK9B;IAED,IAAI,YAAY,IAAI,CAAC,CAEpB;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,EAKvB;IAED,IAAI,KAAK,IAIM,MAAM,CAFpB;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAiBpB;IAED,KAAK,aAGH;IAEF,OAAO,CAAC,WAAW;CAoBtB;AAGD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;gBACtD,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,YAAY,GAAE,MAAU;CAG5D"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectString = exports.Select = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const lazy_light_1 = require("../lazy.light");
6
+ const mobx_1 = require("mobx");
7
+ const FlagModel_1 = require("./FlagModel");
8
+ const Validatable_1 = require("./Validatable");
9
+ const wrappers_1 = require("./wrappers");
10
+ class Select extends Validatable_1.ValidatableModel {
11
+ constructor(_items, _accessor, initialIndex = 0) {
12
+ super();
13
+ this._items = _items;
14
+ this._accessor = _accessor;
15
+ this._index = undefined;
16
+ this.opened = new FlagModel_1.FlagModel();
17
+ this._indexLocked = false;
18
+ this._initialIndex = null;
19
+ this._flags = lazy_light_1.createLazy(() => this.createFlags());
20
+ this.reset = () => {
21
+ super.reset();
22
+ this.index = this._initialIndex;
23
+ };
24
+ mobx_1.makeObservable(this);
25
+ this._initialIndex = initialIndex;
26
+ this._index = initialIndex;
27
+ }
28
+ get valueToValidate() { return this.selectedItem; }
29
+ get values() {
30
+ return this._items.map(i => this._accessor(i));
31
+ }
32
+ get flags() {
33
+ return this._flags.value;
34
+ }
35
+ get items() {
36
+ return this._items;
37
+ }
38
+ get value() { return this.selectedValue; }
39
+ get selectedValue() {
40
+ const vs = this.values;
41
+ return vs.length ? vs[this._index] : null;
42
+ }
43
+ set value(v) { this.selectedValue = v; }
44
+ set selectedValue(value) {
45
+ const index = this.values.indexOf(value);
46
+ if (index >= 0) {
47
+ this.index = index;
48
+ }
49
+ }
50
+ get selectedItem() {
51
+ return this._items.length ? this._items[this._index] : null;
52
+ }
53
+ set selectedItem(item) {
54
+ const index = this._items.indexOf(item);
55
+ if (index >= 0) {
56
+ this.index = index;
57
+ }
58
+ }
59
+ get index() {
60
+ return this._index;
61
+ }
62
+ set index(val) {
63
+ if (this._indexLocked) {
64
+ return;
65
+ }
66
+ this._index = val;
67
+ // update all flags to be properly selected
68
+ try {
69
+ this._indexLocked = true;
70
+ if (this._flags.hasValue) {
71
+ this._flags.value.forEach((f, i) => f.value = (i === this._index));
72
+ }
73
+ }
74
+ finally {
75
+ this._indexLocked = false;
76
+ }
77
+ }
78
+ createFlags() {
79
+ const flags = this._items
80
+ .map((item, index) => {
81
+ const flag = wrappers_1.withLabel(new FlagModel_1.FlagModel(index === this.index), () => this._accessor(item));
82
+ // react on every flag is changed directly
83
+ mobx_1.reaction(() => flag.value, isSelected => {
84
+ if (isSelected) {
85
+ this.index = index;
86
+ }
87
+ });
88
+ return flag;
89
+ });
90
+ return flags;
91
+ }
92
+ }
93
+ tslib_1.__decorate([
94
+ mobx_1.observable,
95
+ tslib_1.__metadata("design:type", Number)
96
+ ], Select.prototype, "_index", void 0);
97
+ tslib_1.__decorate([
98
+ mobx_1.computed,
99
+ tslib_1.__metadata("design:type", Array),
100
+ tslib_1.__metadata("design:paramtypes", [])
101
+ ], Select.prototype, "values", null);
102
+ exports.Select = Select;
103
+ class SelectString extends Select {
104
+ constructor(items, initialIndex = 0) {
105
+ super(items, v => v, initialIndex);
106
+ }
107
+ }
108
+ exports.SelectString = SelectString;
109
+ //# sourceMappingURL=SelectModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectModel.js","sourceRoot":"","sources":["../../src/viewModels/SelectModel.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,24 @@
1
- import { ValidatableViewModel, ValidationConfig } from './Validatable';
2
- export declare type StringGetter = (() => string) | string;
1
+ import { Getter } from '../types';
2
+ import { ValidatableModel, ValidationConfig } from './Validatable';
3
+ import { IValueModel } from './ValuesCollector';
3
4
  export declare type TextInputConfig = {
4
- name?: StringGetter;
5
- title?: StringGetter;
6
- value?: StringGetter;
5
+ name?: Getter<string>;
6
+ title?: Getter<string>;
7
+ value?: Getter<string>;
7
8
  async?: boolean;
8
- validation?: ValidationConfig;
9
+ validation?: ValidationConfig<string>;
9
10
  noSubscribe?: boolean;
10
11
  };
11
12
  export declare class Text {
12
13
  private _value;
13
14
  constructor(config: {
14
- value: StringGetter;
15
+ value: Getter<string>;
15
16
  async?: boolean;
16
17
  noSubscribe?: boolean;
17
18
  });
18
19
  get value(): string;
19
20
  }
20
- export declare class TextInputVM extends ValidatableViewModel {
21
+ export declare class TextInputVM extends ValidatableModel implements IValueModel<string> {
21
22
  private _value;
22
23
  private _focused;
23
24
  private _name;
@@ -35,4 +36,4 @@ export declare class TextInputVM extends ValidatableViewModel {
35
36
  private onBlur;
36
37
  reset(): void;
37
38
  }
38
- //# sourceMappingURL=TextInputViewModel.d.ts.map
39
+ //# sourceMappingURL=TextModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/TextModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,oBAAY,eAAe,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,UAAU,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAeF,qBAAa,IAAI;IAEb,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;IAKrF,IAAI,KAAK,WAA0B;CACtC;AAED,qBAAa,WAAY,SAAQ,gBAAiB,YAAW,WAAW,CAAC,MAAM,CAAC;IAE5E,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,KAAK,CAAgB;IAG7B,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;gBAExC,MAAM,CAAC,EAAE,eAAe;IAYpC,IAAI,KAAK,WAA0B;IACnC,IAAI,IAAI,WAAyB;IACjC,IAAI,KAAK,WAA0B;IAEnC,IAAI,KAAK,CAAC,GAAG,QAAA,EAMZ;IAED,IACI,OAAO,YAEV;IAED,IAAI,OAAO,YAEV;IAED,IAAI,OAAO,CAAC,GAAG,SAAA,EAQd;IAED,SAAS,KAAK,eAAe,WAAwC;IAErE,OAAO,CAAC,MAAM;IAId,KAAK;CAMR"}
@@ -3,24 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TextInputVM = exports.Text = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const mobx_1 = require("mobx");
6
+ const types_1 = require("../types");
6
7
  const logger_1 = tslib_1.__importDefault(require("../logger"));
7
8
  const Validatable_1 = require("./Validatable");
8
9
  function FromGetter(getter, setter, autorunDelay = null, noAutorun = null) {
9
- if (typeof getter === 'function') {
10
- if (noAutorun) {
11
- setter(getter());
12
- }
13
- else {
14
- mobx_1.autorun(() => {
15
- setter(getter());
16
- }, { delay: autorunDelay });
17
- return true;
18
- }
10
+ if (noAutorun || typeof getter !== 'function') {
11
+ setter(types_1.Getter.getValue(getter));
12
+ return null;
19
13
  }
20
- else if (typeof getter === 'string') {
21
- setter(getter);
22
- }
23
- return false;
14
+ return mobx_1.reaction(() => types_1.Getter.getValue(getter), setter, { delay: autorunDelay, fireImmediately: true });
24
15
  }
25
16
  class Text {
26
17
  constructor(config) {
@@ -35,7 +26,7 @@ tslib_1.__decorate([
35
26
  tslib_1.__metadata("design:type", String)
36
27
  ], Text.prototype, "_value", void 0);
37
28
  exports.Text = Text;
38
- class TextInputVM extends Validatable_1.ValidatableViewModel {
29
+ class TextInputVM extends Validatable_1.ValidatableModel {
39
30
  constructor(config) {
40
31
  super(config && config.validation);
41
32
  this._value = '';
@@ -75,7 +66,7 @@ class TextInputVM extends Validatable_1.ValidatableViewModel {
75
66
  }
76
67
  super.reset();
77
68
  }
78
- get valueToValidate() { return this.value; }
69
+ get valueToValidate() { var _a; return ((_a = this.value) !== null && _a !== void 0 ? _a : '').trim(); }
79
70
  onBlur() {
80
71
  this.validate();
81
72
  }
@@ -106,11 +97,5 @@ tslib_1.__decorate([
106
97
  tslib_1.__metadata("design:type", Object),
107
98
  tslib_1.__metadata("design:paramtypes", [])
108
99
  ], TextInputVM.prototype, "isEmpty", null);
109
- tslib_1.__decorate([
110
- mobx_1.action,
111
- tslib_1.__metadata("design:type", Function),
112
- tslib_1.__metadata("design:paramtypes", []),
113
- tslib_1.__metadata("design:returntype", void 0)
114
- ], TextInputVM.prototype, "reset", null);
115
100
  exports.TextInputVM = TextInputVM;
116
- //# sourceMappingURL=TextInputViewModel.js.map
101
+ //# sourceMappingURL=TextModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextModel.js","sourceRoot":"","sources":["../../src/viewModels/TextModel.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,25 @@
1
1
  import { ValidatorFunction, ValidatorFunctionAsync } from '../validation';
2
- export declare type ValueValidator = ValidatorFunction | ValidatorFunctionAsync;
2
+ export declare type ValueValidator<T> = ValidatorFunction<T> | ValidatorFunctionAsync<T>;
3
3
  export declare type ValidationErrorsStrings = {
4
4
  [code: number]: string;
5
5
  };
6
- export declare type ValidationConfig = {
7
- validator: ValueValidator;
6
+ export declare type ValidationConfig<T> = {
7
+ validator: ValueValidator<Readonly<T>>;
8
8
  errors: ValidationErrorsStrings;
9
9
  };
10
- export declare abstract class ValidatableViewModel {
10
+ export declare abstract class ValidatableModel<T = string> {
11
11
  private _validator;
12
12
  private _strings;
13
13
  private _error;
14
14
  private _validationError;
15
- constructor(config?: ValidationConfig);
16
- protected abstract get valueToValidate(): string;
15
+ constructor(config?: ValidationConfig<T>);
16
+ protected abstract get valueToValidate(): Readonly<T>;
17
17
  get isValid(): boolean;
18
18
  get error(): string;
19
+ setValidationConfig(config?: ValidationConfig<T>): this;
19
20
  validate(): Promise<boolean>;
21
+ getIsInvalid(): Promise<boolean>;
20
22
  reset(): void;
21
- static IsSomeInvalid(validatables: ValidatableViewModel[], stopOnFail?: boolean): Promise<boolean>;
23
+ static IsSomeInvalid(validatables: ReadonlyArray<Readonly<ValidatableModel>>, stopOnFail?: boolean): Promise<boolean>;
22
24
  }
23
25
  //# sourceMappingURL=Validatable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Validatable.d.ts","sourceRoot":"","sources":["../../src/viewModels/Validatable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAqC,MAAM,eAAe,CAAC;AAG7G,oBAAY,cAAc,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;AACxE,oBAAY,uBAAuB,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAEjE,oBAAY,gBAAgB,GAAG;IAAE,SAAS,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAE9F,8BAAsB,oBAAoB;IAEtC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,QAAQ,CAAiC;IAGjD,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,gBAAgB,CAAyB;gBAErC,MAAM,CAAC,EAAE,gBAAgB;IAMrC,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,MAAM,CAAC;IAEjD,IAAI,OAAO,YAA2B;IAEtC,IAAI,KAAK,WAA0B;IAE7B,QAAQ;IAuBd,KAAK;WAKQ,aAAa,CAAC,YAAY,EAAE,oBAAoB,EAAE,EAAE,UAAU,UAAO;CAQrF"}
1
+ {"version":3,"file":"Validatable.d.ts","sourceRoot":"","sources":["../../src/viewModels/Validatable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAqC,MAAM,eAAe,CAAC;AAG7G,oBAAY,cAAc,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACjF,oBAAY,uBAAuB,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAEjE,oBAAY,gBAAgB,CAAC,CAAC,IAAI;IAC9B,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,uBAAuB,CAAC;CACnC,CAAC;AAGF,8BAAsB,gBAAgB,CAAC,CAAC,GAAG,MAAM;IAE7C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,QAAQ,CAAiC;IAGjD,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,gBAAgB,CAAyB;gBAErC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAKxC,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtD,IAAI,OAAO,YAA2B;IAEtC,IAAI,KAAK,WAA0B;IAE5B,mBAAmB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAMjD,QAAQ;IAuBR,YAAY;IAMlB,KAAK;WAKQ,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,UAAO;CAQxG"}
@@ -1,29 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ValidatableViewModel = void 0;
3
+ exports.ValidatableModel = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const mobx_1 = require("mobx");
6
6
  const validation_1 = require("../validation");
7
7
  const arrays_1 = require("../async/arrays");
8
- class ValidatableViewModel {
8
+ const EmptyValidator = () => validation_1.ValidationErrors.None;
9
+ class ValidatableModel {
9
10
  constructor(config) {
10
11
  this._validator = null;
11
12
  this._strings = null;
12
13
  this._error = null;
13
14
  this._validationError = null;
14
15
  mobx_1.makeObservable(this);
15
- this._validator = (config && config.validator) || (() => validation_1.ValidationErrors.None);
16
- this._strings = config && config.errors;
16
+ this.setValidationConfig(config);
17
17
  }
18
18
  get isValid() { return !this._error; }
19
19
  get error() { return this._error; }
20
+ setValidationConfig(config) {
21
+ this._validator = (config === null || config === void 0 ? void 0 : config.validator) || EmptyValidator;
22
+ this._strings = config === null || config === void 0 ? void 0 : config.errors;
23
+ return this;
24
+ }
20
25
  async validate() {
21
- var _a;
22
26
  if (!this._validator) {
23
27
  return true;
24
28
  }
25
29
  try {
26
- const valid = await this._validator(((_a = this.valueToValidate) !== null && _a !== void 0 ? _a : '').trim());
30
+ const valid = await this._validator(this.valueToValidate);
27
31
  this._validationError = valid === validation_1.ValidationErrors.None
28
32
  ? null
29
33
  : new validation_1.ValidationError('Unknown error', valid);
@@ -40,6 +44,10 @@ class ValidatableViewModel {
40
44
  }
41
45
  return this._validationError == null;
42
46
  }
47
+ async getIsInvalid() {
48
+ const valid = await this.validate();
49
+ return !valid;
50
+ }
43
51
  reset() {
44
52
  this._validationError = null;
45
53
  this._error = null;
@@ -55,6 +63,12 @@ class ValidatableViewModel {
55
63
  tslib_1.__decorate([
56
64
  mobx_1.observable,
57
65
  tslib_1.__metadata("design:type", String)
58
- ], ValidatableViewModel.prototype, "_error", void 0);
59
- exports.ValidatableViewModel = ValidatableViewModel;
66
+ ], ValidatableModel.prototype, "_error", void 0);
67
+ tslib_1.__decorate([
68
+ mobx_1.action,
69
+ tslib_1.__metadata("design:type", Function),
70
+ tslib_1.__metadata("design:paramtypes", []),
71
+ tslib_1.__metadata("design:returntype", void 0)
72
+ ], ValidatableModel.prototype, "reset", null);
73
+ exports.ValidatableModel = ValidatableModel;
60
74
  //# sourceMappingURL=Validatable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Validatable.js","sourceRoot":"","sources":["../../src/viewModels/Validatable.ts"],"names":[],"mappings":";;;;AAAA,+BAAkD;AAClD,8CAA6G;AAC7G,4CAA4C;AAO5C,MAAsB,oBAAoB;IAUtC,YAAY,MAAyB;QAR7B,eAAU,GAAmB,IAAI,CAAC;QAClC,aAAQ,GAA4B,IAAI,CAAC;QAGzC,WAAM,GAAW,IAAI,CAAC;QAEtB,qBAAgB,GAAoB,IAAI,CAAC;QAG7C,qBAAc,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,6BAAgB,CAAC,IAAI,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IAC5C,CAAC;IAID,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtC,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnC,KAAK,CAAC,QAAQ;;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,IAAI,CAAC;SACf;QAED,IAAI;YACA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAC,IAAI,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,gBAAgB,GAAG,KAAK,KAAK,6BAAgB,CAAC,IAAI;gBACnD,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,4BAAe,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;SACrD;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,gBAAgB,GAAG,GAAsB,CAAC;SAClD;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;aAAM;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACtD;QACD,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,KAAK;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,YAAoC,EAAE,UAAU,GAAG,IAAI;QAC9E,IAAI,UAAU,EAAE;YACZ,OAAO,kBAAS,CAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACpE;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACJ;AApDG;IADC,iBAAU;;oDACmB;AANlC,oDA0DC"}
1
+ {"version":3,"file":"Validatable.js","sourceRoot":"","sources":["../../src/viewModels/Validatable.ts"],"names":[],"mappings":";;;;AAAA,+BAA0D;AAC1D,8CAA6G;AAC7G,4CAA4C;AAU5C,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,6BAAgB,CAAC,IAAI,CAAC;AACnD,MAAsB,gBAAgB;IAUlC,YAAY,MAA4B;QARhC,eAAU,GAAgC,IAAI,CAAC;QAC/C,aAAQ,GAA4B,IAAI,CAAC;QAGzC,WAAM,GAAW,IAAI,CAAC;QAEtB,qBAAgB,GAAoB,IAAI,CAAC;QAG7C,qBAAc,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAID,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtC,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,mBAAmB,CAAC,MAA4B;QACnD,IAAI,CAAC,UAAU,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,KAAI,cAAc,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,IAAI,CAAC;SACf;QAED,IAAI;YACA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,GAAG,KAAK,KAAK,6BAAgB,CAAC,IAAI;gBACnD,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,4BAAe,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;SACrD;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,gBAAgB,GAAG,GAAsB,CAAC;SAClD;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;aAAM;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACtD;QACD,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY;QACd,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC;IAClB,CAAC;IAGD,KAAK;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,YAAuD,EAAE,UAAU,GAAG,IAAI;QACjG,IAAI,UAAU,EAAE;YACZ,OAAO,kBAAS,CAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACpE;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACJ;AA/DG;IADC,iBAAU;;gDACmB;AAkD9B;IADC,aAAM;;;;6CAIN;AA3DL,4CAqEC"}
@@ -0,0 +1,28 @@
1
+ export interface IValueModel<TValue> {
2
+ value: TValue;
3
+ }
4
+ export interface IValueCollector<TSource, TValue> {
5
+ getValue(source: TSource): TValue;
6
+ setValue(source: TSource, value: TValue): void;
7
+ }
8
+ declare type SimpleCollector<T> = {
9
+ get: () => T;
10
+ set: (t: T) => void;
11
+ };
12
+ export declare type ModelCollectorsMap<T> = {
13
+ [P in keyof T]?: IValueModel<T[P]>;
14
+ };
15
+ export declare type CollectorsMap<T> = {
16
+ [P in keyof T]?: SimpleCollector<T[P]>;
17
+ };
18
+ export declare class ModelCollector<T extends Object> {
19
+ private readonly _collectors;
20
+ addModels(models: ModelCollectorsMap<T>): this;
21
+ addModel<TKey extends keyof T, TSource extends IValueModel<T[TKey]>>(key: TKey, source: TSource): this;
22
+ addCollector<TKey extends keyof T, TModel, TCollector extends IValueCollector<TModel, T[TKey]>>(key: TKey, model: TModel, collector: TCollector): this;
23
+ remove(key: keyof T): this;
24
+ collect(): T;
25
+ populate(data: T): void;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=ValuesCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValuesCollector.d.ts","sourceRoot":"","sources":["../../src/viewModels/ValuesCollector.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW,CAAC,MAAM;IAC/B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe,CAAC,OAAO,EAAE,MAAM;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAED,aAAK,eAAe,CAAC,CAAC,IAAI;IACtB,GAAG,EAAE,MAAM,CAAC,CAAC;IACb,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;CACvB,CAAC;AAMF,oBAAY,kBAAkB,CAAC,CAAC,IAAI;KAC/B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC;AAEF,oBAAY,aAAa,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,CAAC;AAEF,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM;IAExC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAEpD,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAKvC,QAAQ,CAAC,IAAI,SAAS,MAAM,CAAC,EAAE,OAAO,SAAS,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;IAS/F,YAAY,CAAC,IAAI,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,SAAS,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU;IAS/I,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;IAMnB,OAAO,IAAI,CAAC;IAYZ,QAAQ,CAAC,IAAI,EAAE,CAAC;CAW1B"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelCollector = void 0;
4
+ class ModelCollector {
5
+ constructor() {
6
+ this._collectors = {};
7
+ }
8
+ addModels(models) {
9
+ Object.entries(models).forEach(pair => this.addModel(pair[0], pair[1]));
10
+ return this;
11
+ }
12
+ addModel(key, source) {
13
+ this._collectors[key] = {
14
+ get: () => source.value,
15
+ set: v => { source.value = v; },
16
+ };
17
+ return this;
18
+ }
19
+ addCollector(key, model, collector) {
20
+ this._collectors[key] = {
21
+ get: () => collector.getValue(model),
22
+ set: v => collector.setValue(model, v),
23
+ };
24
+ return this;
25
+ }
26
+ remove(key) {
27
+ delete this._collectors[key];
28
+ return this;
29
+ }
30
+ collect() {
31
+ const res = {};
32
+ Object.entries(this._collectors).forEach(pair => {
33
+ const key = pair[0];
34
+ const collector = pair[1];
35
+ res[key] = collector.get();
36
+ });
37
+ return res;
38
+ }
39
+ populate(data) {
40
+ Object.entries(data).forEach(pair => {
41
+ const key = pair[0];
42
+ const value = pair[1];
43
+ const collector = this._collectors[key];
44
+ if (collector) {
45
+ collector.set(value);
46
+ }
47
+ });
48
+ }
49
+ }
50
+ exports.ModelCollector = ModelCollector;
51
+ //# sourceMappingURL=ValuesCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValuesCollector.js","sourceRoot":"","sources":["../../src/viewModels/ValuesCollector.ts"],"names":[],"mappings":";;;AA2BA,MAAa,cAAc;IAA3B;QAEqB,gBAAW,GAA2B,EAAG,CAAC;IAsD/D,CAAC;IApDU,SAAS,CAAC,MAA6B;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,QAAQ,CAA6D,GAAS,EAAE,MAAe;QAClG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG;YACpB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK;YACvB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAClC,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAoF,GAAS,EAAE,KAAa,EAAE,SAAqB;QAClJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG;YACpB,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;SACzC,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,GAAY;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,OAAO;QACV,MAAM,GAAG,GAAG,EAAQ,CAAC;QAErB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAY,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAgC,CAAC;YACzD,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,QAAQ,CAAC,IAAO;QACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAY,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAe,CAAC;YAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACxB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAxDD,wCAwDC"}
@@ -1,7 +1,9 @@
1
- export * from './PromptModalViewModel';
2
- export * from './RadioButtonGroupViewModel';
3
- export * from './RadioButtonViewModel';
4
- export * from './SelectViewModel';
5
- export * from './TextInputViewModel';
6
1
  export * from './Validatable';
2
+ export * from './TextModel';
3
+ export * from './FlagModel';
4
+ export * from './NumberModel';
5
+ export * from './wrappers';
6
+ export * from './SelectModel';
7
+ export * from './MultiSelectModel';
8
+ export * from './PromptModal';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewModels/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewModels/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAE3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,eAAe,CAAC"}
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./PromptModalViewModel"), exports);
5
- tslib_1.__exportStar(require("./RadioButtonGroupViewModel"), exports);
6
- tslib_1.__exportStar(require("./RadioButtonViewModel"), exports);
7
- tslib_1.__exportStar(require("./SelectViewModel"), exports);
8
- tslib_1.__exportStar(require("./TextInputViewModel"), exports);
9
4
  tslib_1.__exportStar(require("./Validatable"), exports);
5
+ tslib_1.__exportStar(require("./TextModel"), exports);
6
+ tslib_1.__exportStar(require("./FlagModel"), exports);
7
+ tslib_1.__exportStar(require("./NumberModel"), exports);
8
+ tslib_1.__exportStar(require("./wrappers"), exports);
9
+ tslib_1.__exportStar(require("./SelectModel"), exports);
10
+ tslib_1.__exportStar(require("./MultiSelectModel"), exports);
11
+ tslib_1.__exportStar(require("./PromptModal"), exports);
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/viewModels/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,sEAA4C;AAC5C,iEAAuC;AACvC,4DAAkC;AAClC,+DAAqC;AACrC,wDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/viewModels/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,sDAA4B;AAC5B,sDAA4B;AAC5B,wDAA8B;AAC9B,qDAA2B;AAE3B,wDAA8B;AAC9B,6DAAmC;AAEnC,wDAA8B"}
@@ -0,0 +1,15 @@
1
+ import { Getter } from '../types';
2
+ import { IValueModel } from './ValuesCollector';
3
+ export interface ILabel<T> {
4
+ readonly label: T;
5
+ }
6
+ export declare function withLabel<T, TModel extends IValueModel<T>, TLabel = string>(model: TModel, label: Getter<TLabel>): TModel & ILabel<TLabel>;
7
+ export declare function inject<T, TModel extends IValueModel<T>>(model: TModel, source: IValueModel<T>): TModel;
8
+ export declare function wrap<T, TModel extends IValueModel<T>, TRes>(model: TModel, getter: (m: TModel) => TRes, setter: (v: TRes, model: TModel) => void): IValueModel<TRes>;
9
+ declare type LabeledModel<T, TModel extends IValueModel<T>, TLabel = string> = TModel & ILabel<TLabel>;
10
+ interface LabeledModelCtor<T, TModel extends IValueModel<T>, TLabel = string> {
11
+ new (label?: Getter<TLabel>, initial?: T): LabeledModel<T, TModel, TLabel>;
12
+ }
13
+ export declare function mixinLabel<T, TModel extends IValueModel<T>, TLabel = string>(Superclass: new (initial?: T) => TModel): LabeledModelCtor<T, TModel, TLabel>;
14
+ export {};
15
+ //# sourceMappingURL=wrappers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrappers.d.ts","sourceRoot":"","sources":["../../src/viewModels/wrappers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,2BAShH;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,UAS7F;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAKpK;AAED,aAAK,YAAY,CAAC,CAAC,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAE/F,UAAU,gBAAgB,CAAC,CAAC,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IACxE,KAAK,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9E;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAU1J"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mixinLabel = exports.wrap = exports.inject = exports.withLabel = void 0;
4
+ const types_1 = require("../types");
5
+ function withLabel(model, label) {
6
+ const _label = label;
7
+ Object.defineProperty(model, 'label', {
8
+ configurable: true,
9
+ enumerable: false,
10
+ get() { return types_1.Getter.getValue(_label); },
11
+ });
12
+ return model;
13
+ }
14
+ exports.withLabel = withLabel;
15
+ function inject(model, source) {
16
+ Object.defineProperty(model, 'value', {
17
+ configurable: true,
18
+ enumerable: false,
19
+ get() { return source.value; },
20
+ set(v) { source.value = v; },
21
+ });
22
+ return model;
23
+ }
24
+ exports.inject = inject;
25
+ function wrap(model, getter, setter) {
26
+ return {
27
+ get value() { return getter(model); },
28
+ set value(v) { setter(v, model); },
29
+ };
30
+ }
31
+ exports.wrap = wrap;
32
+ function mixinLabel(Superclass) {
33
+ // @ts-ignore
34
+ class Sub extends Superclass {
35
+ constructor(label, initial) {
36
+ super(initial);
37
+ withLabel(this, label);
38
+ }
39
+ }
40
+ return Sub;
41
+ }
42
+ exports.mixinLabel = mixinLabel;
43
+ //# sourceMappingURL=wrappers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrappers.js","sourceRoot":"","sources":["../../src/viewModels/wrappers.ts"],"names":[],"mappings":";;;AAAA,oCAAkC;AAOlC,SAAgB,SAAS,CAAoD,KAAa,EAAE,KAAqB;IAC7G,MAAM,MAAM,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;QAClC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;QACjB,GAAG,KAAK,OAAO,cAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO,KAAgC,CAAC;AAC5C,CAAC;AATD,8BASC;AAED,SAAgB,MAAM,CAAmC,KAAa,EAAE,MAAsB;IAC1F,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;QAClC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;QACjB,GAAG,KAAK,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,GAAG,CAAC,CAAI,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;KAClC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACjB,CAAC;AATD,wBASC;AAED,SAAgB,IAAI,CAAyC,KAAa,EAAE,MAA2B,EAAE,MAAwC;IAC7I,OAAO;QACH,IAAI,KAAK,KAAK,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,CAAO,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3C,CAAC;AACN,CAAC;AALD,oBAKC;AAQD,SAAgB,UAAU,CAAoD,UAAuC;IACjH,aAAa;IACb,MAAM,GAAI,SAAQ,UAAU;QACxB,YAAY,KAAqB,EAAE,OAAW;YAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;YACf,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;KACJ;IAED,OAAO,GAAU,CAAC;AACtB,CAAC;AAVD,gCAUC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zajno/common",
3
- "version": "1.2.6",
3
+ "version": "1.3.0",
4
4
  "description": "Zajno's re-usable utilities for JS/TS projects",
5
5
  "repository": {
6
6
  "type": "git",