@zajno/common 1.2.8 → 1.3.2

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 (189) hide show
  1. package/coverage/clover.xml +587 -275
  2. package/coverage/coverage-final.json +39 -30
  3. package/coverage/lcov-report/NumberModel.ts.html +188 -0
  4. package/coverage/lcov-report/arrays.ts.html +602 -0
  5. package/coverage/lcov-report/calc.ts.html +278 -0
  6. package/coverage/lcov-report/enumHelper.ts.html +449 -0
  7. package/coverage/lcov-report/index.html +48 -33
  8. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  9. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +2 -2
  10. package/coverage/lcov-report/src/async/arrays.ts.html +5 -5
  11. package/coverage/lcov-report/src/async/index.html +1 -1
  12. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  13. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/index.html +1 -1
  17. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  19. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  20. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  21. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  22. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  23. package/coverage/lcov-report/src/enumHelper.ts.html +11 -11
  24. package/coverage/lcov-report/src/event.ts.html +3 -3
  25. package/coverage/lcov-report/src/index.html +41 -11
  26. package/coverage/lcov-report/src/lazy.light.ts.html +155 -0
  27. package/coverage/lcov-report/src/logger/batch.ts.html +107 -0
  28. package/coverage/lcov-report/src/logger/console.ts.html +10 -25
  29. package/coverage/lcov-report/src/logger/index.html +54 -39
  30. package/coverage/lcov-report/src/logger/index.ts.html +88 -61
  31. package/coverage/lcov-report/src/logger/named.ts.html +31 -31
  32. package/coverage/lcov-report/src/logger/proxy.ts.html +13 -13
  33. package/coverage/lcov-report/src/math/arrays.ts.html +269 -32
  34. package/coverage/lcov-report/src/math/calc.ts.html +11 -11
  35. package/coverage/lcov-report/src/math/distribution.ts.html +2 -2
  36. package/coverage/lcov-report/src/math/index.html +11 -11
  37. package/coverage/lcov-report/src/math/index.ts.html +6 -6
  38. package/coverage/lcov-report/src/transitionObserver.ts.html +5 -5
  39. package/coverage/lcov-report/src/types.ts.html +158 -0
  40. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +22 -22
  41. package/coverage/lcov-report/src/validation/creditCard.ts.html +4 -4
  42. package/coverage/lcov-report/src/validation/helpers.ts.html +6 -6
  43. package/coverage/lcov-report/src/validation/index.html +1 -1
  44. package/coverage/lcov-report/src/validation/index.ts.html +6 -6
  45. package/coverage/lcov-report/src/validation/types.ts.html +2 -2
  46. package/coverage/lcov-report/src/validation/validators.ts.html +5 -5
  47. package/coverage/lcov-report/src/validation/wrappers.ts.html +5 -5
  48. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +212 -0
  49. package/coverage/lcov-report/src/viewModels/LabeledFlagModel.ts.html +137 -0
  50. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +563 -0
  51. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +197 -0
  52. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +464 -0
  53. package/coverage/lcov-report/src/viewModels/SelectViewModel.ts.html +437 -0
  54. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +329 -0
  55. package/coverage/lcov-report/src/viewModels/index.html +186 -0
  56. package/coverage/lcov-report/src/viewModels/labeled.ts.html +128 -0
  57. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +227 -0
  58. package/coverage/lcov-report/transitionObserver.ts.html +41 -77
  59. package/coverage/lcov.info +1128 -438
  60. package/lib/event.d.ts.map +1 -1
  61. package/lib/event.js +1 -1
  62. package/lib/event.js.map +1 -1
  63. package/lib/logger/batch.d.ts +3 -0
  64. package/lib/logger/batch.d.ts.map +1 -0
  65. package/lib/logger/batch.js +12 -0
  66. package/lib/logger/batch.js.map +1 -0
  67. package/lib/logger/console.d.ts +0 -1
  68. package/lib/logger/console.d.ts.map +1 -1
  69. package/lib/logger/console.js +0 -3
  70. package/lib/logger/console.js.map +1 -1
  71. package/lib/logger/file.d.ts +15 -0
  72. package/lib/logger/file.d.ts.map +1 -0
  73. package/lib/logger/file.js +43 -0
  74. package/lib/logger/file.js.map +1 -0
  75. package/lib/logger/index.d.ts +7 -6
  76. package/lib/logger/index.d.ts.map +1 -1
  77. package/lib/logger/index.js +34 -21
  78. package/lib/logger/index.js.map +1 -1
  79. package/lib/logger/named.js +3 -3
  80. package/lib/logger/named.js.map +1 -1
  81. package/lib/logger/proxy.d.ts +1 -1
  82. package/lib/logger/proxy.d.ts.map +1 -1
  83. package/lib/logger/proxy.js +2 -2
  84. package/lib/logger/proxy.js.map +1 -1
  85. package/lib/math/arrays.d.ts +15 -0
  86. package/lib/math/arrays.d.ts.map +1 -1
  87. package/lib/math/arrays.js +69 -1
  88. package/lib/math/arrays.js.map +1 -1
  89. package/lib/transitionObserver.d.ts.map +1 -1
  90. package/lib/transitionObserver.js +2 -2
  91. package/lib/transitionObserver.js.map +1 -1
  92. package/lib/types.d.ts +9 -0
  93. package/lib/types.d.ts.map +1 -1
  94. package/lib/types.js +18 -0
  95. package/lib/types.js.map +1 -1
  96. package/lib/viewModels/FlagModel.d.ts +19 -0
  97. package/lib/viewModels/FlagModel.d.ts.map +1 -0
  98. package/lib/viewModels/FlagModel.js +39 -0
  99. package/lib/viewModels/FlagModel.js.map +1 -0
  100. package/lib/viewModels/MultiSelectModel.d.ts +45 -0
  101. package/lib/viewModels/MultiSelectModel.d.ts.map +1 -0
  102. package/lib/viewModels/MultiSelectModel.js +162 -0
  103. package/lib/viewModels/MultiSelectModel.js.map +1 -0
  104. package/lib/viewModels/NumberModel.d.ts +18 -0
  105. package/lib/viewModels/NumberModel.d.ts.map +1 -0
  106. package/lib/viewModels/NumberModel.js +41 -0
  107. package/lib/viewModels/NumberModel.js.map +1 -0
  108. package/lib/viewModels/PromptModal.d.ts +31 -0
  109. package/lib/viewModels/PromptModal.d.ts.map +1 -0
  110. package/lib/viewModels/PromptModal.js +57 -0
  111. package/lib/viewModels/PromptModal.js.map +1 -0
  112. package/lib/viewModels/SelectModel.d.ts +33 -0
  113. package/lib/viewModels/SelectModel.d.ts.map +1 -0
  114. package/lib/viewModels/SelectModel.js +110 -0
  115. package/lib/viewModels/SelectModel.js.map +1 -0
  116. package/lib/viewModels/{TextInputViewModel.d.ts → TextModel.d.ts} +12 -10
  117. package/lib/viewModels/TextModel.d.ts.map +1 -0
  118. package/lib/viewModels/{TextInputViewModel.js → TextModel.js} +13 -28
  119. package/lib/viewModels/TextModel.js.map +1 -0
  120. package/lib/viewModels/Validatable.d.ts +9 -7
  121. package/lib/viewModels/Validatable.d.ts.map +1 -1
  122. package/lib/viewModels/Validatable.js +22 -8
  123. package/lib/viewModels/Validatable.js.map +1 -1
  124. package/lib/viewModels/ValuesCollector.d.ts +26 -0
  125. package/lib/viewModels/ValuesCollector.d.ts.map +1 -0
  126. package/lib/viewModels/ValuesCollector.js +51 -0
  127. package/lib/viewModels/ValuesCollector.js.map +1 -0
  128. package/lib/viewModels/index.d.ts +8 -5
  129. package/lib/viewModels/index.d.ts.map +1 -1
  130. package/lib/viewModels/index.js +8 -5
  131. package/lib/viewModels/index.js.map +1 -1
  132. package/lib/viewModels/types.d.ts +16 -0
  133. package/lib/viewModels/types.d.ts.map +1 -0
  134. package/lib/viewModels/types.js +3 -0
  135. package/lib/viewModels/types.js.map +1 -0
  136. package/lib/viewModels/wrappers.d.ts +12 -0
  137. package/lib/viewModels/wrappers.d.ts.map +1 -0
  138. package/lib/viewModels/wrappers.js +43 -0
  139. package/lib/viewModels/wrappers.js.map +1 -0
  140. package/package.json +1 -1
  141. package/src/event.ts +2 -2
  142. package/src/logger/__tests__/{index.test.ts → logger.test.ts} +97 -41
  143. package/src/logger/batch.ts +9 -0
  144. package/src/logger/console.ts +0 -5
  145. package/src/logger/file.ts +46 -0
  146. package/src/logger/index.ts +37 -28
  147. package/src/logger/named.ts +3 -3
  148. package/src/logger/proxy.ts +2 -2
  149. package/src/math/__tests__/arrays.test.ts +53 -0
  150. package/src/math/arrays.ts +79 -0
  151. package/src/transitionObserver.ts +2 -2
  152. package/src/types.ts +21 -0
  153. package/src/viewModels/FlagModel.ts +44 -0
  154. package/src/viewModels/MultiSelectModel.ts +161 -0
  155. package/src/viewModels/NumberModel.ts +39 -0
  156. package/src/viewModels/PromptModal.ts +65 -0
  157. package/src/viewModels/SelectModel.ts +128 -0
  158. package/src/viewModels/{TextInputViewModel.ts → TextModel.ts} +25 -28
  159. package/src/viewModels/Validatable.ts +26 -11
  160. package/src/viewModels/ValuesCollector.ts +81 -0
  161. package/src/viewModels/__tests__/multiSelect.test.ts +23 -0
  162. package/src/viewModels/__tests__/select.test.ts +71 -0
  163. package/src/viewModels/__tests__/wrappers.test.ts +79 -0
  164. package/src/viewModels/index.ts +10 -5
  165. package/src/viewModels/types.ts +19 -0
  166. package/src/viewModels/wrappers.ts +49 -0
  167. package/lib/viewModels/PromptModalViewModel.d.ts +0 -27
  168. package/lib/viewModels/PromptModalViewModel.d.ts.map +0 -1
  169. package/lib/viewModels/PromptModalViewModel.js +0 -56
  170. package/lib/viewModels/PromptModalViewModel.js.map +0 -1
  171. package/lib/viewModels/RadioButtonGroupViewModel.d.ts +0 -11
  172. package/lib/viewModels/RadioButtonGroupViewModel.d.ts.map +0 -1
  173. package/lib/viewModels/RadioButtonGroupViewModel.js +0 -51
  174. package/lib/viewModels/RadioButtonGroupViewModel.js.map +0 -1
  175. package/lib/viewModels/RadioButtonViewModel.d.ts +0 -9
  176. package/lib/viewModels/RadioButtonViewModel.d.ts.map +0 -1
  177. package/lib/viewModels/RadioButtonViewModel.js +0 -32
  178. package/lib/viewModels/RadioButtonViewModel.js.map +0 -1
  179. package/lib/viewModels/SelectViewModel.d.ts +0 -25
  180. package/lib/viewModels/SelectViewModel.d.ts.map +0 -1
  181. package/lib/viewModels/SelectViewModel.js +0 -88
  182. package/lib/viewModels/SelectViewModel.js.map +0 -1
  183. package/lib/viewModels/TextInputViewModel.d.ts.map +0 -1
  184. package/lib/viewModels/TextInputViewModel.js.map +0 -1
  185. package/src/viewModels/PromptModalViewModel.ts +0 -71
  186. package/src/viewModels/RadioButtonGroupViewModel.ts +0 -47
  187. package/src/viewModels/RadioButtonViewModel.ts +0 -26
  188. package/src/viewModels/SelectViewModel.ts +0 -88
  189. package/yarn-error.log +0 -3709
@@ -0,0 +1,19 @@
1
+ import { IResetableModel } from 'viewModels';
2
+ import { ILabel, IValueModel } from './types';
3
+ export interface IFlagModel extends IValueModel<boolean>, IResetableModel {
4
+ toggle(): void;
5
+ }
6
+ export declare type IFlagModelReadonly = {
7
+ readonly value: boolean;
8
+ };
9
+ export declare type ILabeledFlagModel = IFlagModel & ILabel<string>;
10
+ export declare class FlagModel implements IFlagModel, IFlagModelReadonly {
11
+ private _value;
12
+ constructor(initial?: boolean);
13
+ get value(): boolean;
14
+ set value(value: boolean);
15
+ get isDefault(): boolean;
16
+ toggle: () => void;
17
+ reset: () => void;
18
+ }
19
+ //# sourceMappingURL=FlagModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlagModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/FlagModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,UAAW,SAAQ,WAAW,CAAC,OAAO,CAAC,EAAE,eAAe;IACrE,MAAM,IAAI,IAAI,CAAC;CAClB;AAED,oBAAY,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,oBAAY,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAE5D,qBAAa,SAAU,YAAW,UAAU,EAAE,kBAAkB;IAG5D,OAAO,CAAC,MAAM,CAAkB;gBAEpB,OAAO,UAAQ;IAK3B,IAAI,KAAK,IAIQ,OAAO,CAFvB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAEvB;IAED,IAAI,SAAS,YAAoC;IAGjD,MAAM,aAEJ;IAGF,KAAK,aAEH;CACL"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlagModel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mobx_1 = require("mobx");
6
+ class FlagModel {
7
+ constructor(initial = false) {
8
+ this._value = false;
9
+ this.toggle = () => {
10
+ this._value = !this._value;
11
+ };
12
+ this.reset = () => {
13
+ this._value = false;
14
+ };
15
+ mobx_1.makeObservable(this);
16
+ this._value = initial;
17
+ }
18
+ get value() {
19
+ return this._value;
20
+ }
21
+ set value(value) {
22
+ this._value = value;
23
+ }
24
+ get isDefault() { return this._value === false; }
25
+ }
26
+ tslib_1.__decorate([
27
+ mobx_1.observable,
28
+ tslib_1.__metadata("design:type", Boolean)
29
+ ], FlagModel.prototype, "_value", void 0);
30
+ tslib_1.__decorate([
31
+ mobx_1.action,
32
+ tslib_1.__metadata("design:type", Object)
33
+ ], FlagModel.prototype, "toggle", void 0);
34
+ tslib_1.__decorate([
35
+ mobx_1.action,
36
+ tslib_1.__metadata("design:type", Object)
37
+ ], FlagModel.prototype, "reset", void 0);
38
+ exports.FlagModel = FlagModel;
39
+ //# sourceMappingURL=FlagModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlagModel.js","sourceRoot":"","sources":["../../src/viewModels/FlagModel.ts"],"names":[],"mappings":";;;;AAAA,+BAA0D;AAc1D,MAAa,SAAS;IAKlB,YAAY,OAAO,GAAG,KAAK;QAFnB,WAAM,GAAY,KAAK,CAAC;QAkBhC,WAAM,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,CAAC,CAAC;QAGF,UAAK,GAAG,GAAG,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC;QAtBE,qBAAc,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,KAAc;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;CAWpD;AA1BG;IADC,iBAAU;;yCACqB;AAkBhC;IADC,aAAM;;yCAGL;AAGF;IADC,aAAM;;wCAGL;AA5BN,8BA6BC"}
@@ -0,0 +1,45 @@
1
+ import { FlagModel, ILabeledFlagModel } from './FlagModel';
2
+ import { ValidatableModel } from './Validatable';
3
+ import { IValueModel } from './types';
4
+ import { ICountableModel, IResetableModel } from 'viewModels';
5
+ export declare class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> implements IValueModel<readonly string[]>, IResetableModel, ICountableModel {
6
+ private readonly _items;
7
+ private readonly _accessor;
8
+ private readonly _indexes;
9
+ readonly opened: FlagModel;
10
+ private readonly _initial;
11
+ private readonly _flags;
12
+ private _indexesLocked;
13
+ constructor(_items: readonly T[], _accessor: (item: T) => string, ...selected: number[]);
14
+ get selectedIndexes(): ReadonlyArray<number>;
15
+ get items(): ReadonlyArray<T>;
16
+ get flags(): readonly ILabeledFlagModel[];
17
+ get values(): ReadonlyArray<string>;
18
+ get selectedItems(): ReadonlyArray<T>;
19
+ get selectedValues(): ReadonlyArray<string>;
20
+ get value(): readonly string[];
21
+ set value(v: readonly string[]);
22
+ isIndexSelected(index: number): boolean;
23
+ isValueSelected(value: string): boolean;
24
+ get count(): number;
25
+ get selectedCount(): number;
26
+ get isEmpty(): boolean;
27
+ get isDefault(): boolean;
28
+ protected get valueToValidate(): readonly T[];
29
+ setItemSelected: (item: T, selected: boolean) => void;
30
+ selectItem: (item: T) => void;
31
+ deSelectItem: (item: T) => void;
32
+ selectItems: (items: readonly T[]) => void;
33
+ setValueSelected: (value: string, selected: boolean) => void;
34
+ selectValue: (value: string) => void;
35
+ deSelectValue: (value: string) => void;
36
+ selectValues: (values: readonly string[]) => void;
37
+ setIndexSelected: (index: number, selected: boolean) => void;
38
+ reset: () => void;
39
+ private setInitialIndexes;
40
+ private createFlags;
41
+ }
42
+ export declare class MultiSelectString<T extends string = string> extends MultiSelect<T> {
43
+ constructor(items: ReadonlyArray<T>, ...selected: number[]);
44
+ }
45
+ //# sourceMappingURL=MultiSelectModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelectModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/MultiSelectModel.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,SAAS,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,qBAAa,WAAW,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,eAAe;IAYhJ,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAV9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C,SAAgB,MAAM,YAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,cAAc,CAAS;gBAGV,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC/C,GAAG,QAAQ,EAAE,MAAM,EAAE;IAQzB,IACI,eAAe,IAAI,aAAa,CAAC,MAAM,CAAC,CAAsC;IAElF,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAwB;IAErD,IAAI,KAAK,iCAAgC;IAEzC,IACI,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAElC;IAED,IACI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAEpC;IAED,IACI,cAAc,IAAI,aAAa,CAAC,MAAM,CAAC,CAG1C;IAED,IAAI,KAAK,IACI,SAAS,MAAM,EAAE,CADa;IAC3C,IAAI,KAAK,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAA2B;IAEzD,eAAe,CAAC,KAAK,EAAE,MAAM;IAC7B,eAAe,CAAC,KAAK,EAAE,MAAM;IAE7B,IAAI,KAAK,WAAiC;IAC1C,IAAI,aAAa,WAAiC;IAClD,IAAI,OAAO,YAAuC;IAElD,IACI,SAAS,YAAqF;IAElG,SAAS,KAAK,eAAe,iBAAiC;IAE9D,eAAe,SAAU,CAAC,YAAY,OAAO,UAK3C;IAEF,UAAU,SAAU,CAAC,UAAsC;IAC3D,YAAY,SAAU,CAAC,UAAuC;IAG9D,WAAW,UAAW,SAAS,CAAC,EAAE,UAEhC;IAEF,gBAAgB,UAAW,MAAM,YAAY,OAAO,UAKlD;IAEF,WAAW,UAAW,MAAM,UAAwC;IACpE,aAAa,UAAW,MAAM,UAAyC;IAGvE,YAAY,WAAY,SAAS,MAAM,EAAE,UAEvC;IAGF,gBAAgB,UAAW,MAAM,YAAY,OAAO,UAqBlD;IAEF,KAAK,aAGH;IAEF,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,WAAW;CAgBtB;AAED,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;gBAEhE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE;CAG7D"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiSelectString = exports.MultiSelect = 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
+ const math_1 = require("../math");
11
+ class MultiSelect extends Validatable_1.ValidatableModel {
12
+ constructor(_items, _accessor, ...selected) {
13
+ super();
14
+ this._items = _items;
15
+ this._accessor = _accessor;
16
+ this._indexes = new Set();
17
+ this.opened = new FlagModel_1.FlagModel();
18
+ this._initial = null;
19
+ this._flags = lazy_light_1.createLazy(() => this.createFlags());
20
+ this._indexesLocked = false;
21
+ this.setItemSelected = (item, selected) => {
22
+ const i = this.items.indexOf(item);
23
+ if (i >= 0) {
24
+ this.setIndexSelected(i, selected);
25
+ }
26
+ };
27
+ this.selectItem = (item) => this.setItemSelected(item, true);
28
+ this.deSelectItem = (item) => this.setItemSelected(item, false);
29
+ this.selectItems = (items) => {
30
+ items.forEach(this.selectItem);
31
+ };
32
+ this.setValueSelected = (value, selected) => {
33
+ const i = this.values.indexOf(value);
34
+ if (i >= 0) {
35
+ this.setIndexSelected(i, selected);
36
+ }
37
+ };
38
+ this.selectValue = (value) => this.setValueSelected(value, true);
39
+ this.deSelectValue = (value) => this.setValueSelected(value, false);
40
+ this.selectValues = (values) => {
41
+ values.forEach(this.selectValue);
42
+ };
43
+ this.setIndexSelected = (index, selected) => {
44
+ if (this._indexesLocked) {
45
+ return;
46
+ }
47
+ if (selected) {
48
+ this._indexes.add(index);
49
+ }
50
+ else {
51
+ this._indexes.delete(index);
52
+ }
53
+ if (!this._flags.hasValue) {
54
+ return;
55
+ }
56
+ try {
57
+ this._indexesLocked = true;
58
+ this._flags.value[index].value = selected;
59
+ }
60
+ finally {
61
+ this._indexesLocked = false;
62
+ }
63
+ };
64
+ this.reset = () => {
65
+ super.reset();
66
+ this.setInitialIndexes();
67
+ };
68
+ mobx_1.makeObservable(this);
69
+ this._initial = selected;
70
+ this.setInitialIndexes();
71
+ }
72
+ get selectedIndexes() { return Array.from(this._indexes); }
73
+ get items() { return this._items; }
74
+ get flags() { return this._flags.value; }
75
+ get values() {
76
+ return this._items.map(i => this._accessor(i));
77
+ }
78
+ get selectedItems() {
79
+ return this.selectedIndexes.map(i => this._items[i]);
80
+ }
81
+ get selectedValues() {
82
+ const values = this.values;
83
+ return this.selectedIndexes.map(i => values[i]);
84
+ }
85
+ get value() { return this.selectedValues; }
86
+ set value(v) { this.selectValues(v); }
87
+ isIndexSelected(index) { return this._indexes.has(index); }
88
+ isValueSelected(value) { return this.values.includes(value); }
89
+ get count() { return this._items.length; }
90
+ get selectedCount() { return this._indexes.size; }
91
+ get isEmpty() { return this.selectedCount === 0; }
92
+ get isDefault() { var _a; return ((_a = math_1.arraysCompareDistinct(this.selectedIndexes, this._initial)) === null || _a === void 0 ? void 0 : _a.diff) === 0; }
93
+ get valueToValidate() { return this.selectedItems; }
94
+ setInitialIndexes() {
95
+ this._indexes.clear();
96
+ this._initial.forEach(i => this._indexes.add(i));
97
+ if (this._flags.hasValue) {
98
+ this._flags.value.forEach((flag, index) => flag.value = this._indexes.has(index));
99
+ }
100
+ }
101
+ createFlags() {
102
+ const flags = this._items
103
+ .map((item, index) => {
104
+ const flag = wrappers_1.withLabel(new FlagModel_1.FlagModel(this._indexes.has(index)), () => this._accessor(item));
105
+ // react on every flag is changed directly
106
+ mobx_1.reaction(() => flag.value, isSelected => {
107
+ this.setIndexSelected(index, isSelected);
108
+ });
109
+ return flag;
110
+ });
111
+ return flags;
112
+ }
113
+ }
114
+ tslib_1.__decorate([
115
+ mobx_1.observable,
116
+ tslib_1.__metadata("design:type", Object)
117
+ ], MultiSelect.prototype, "_indexes", void 0);
118
+ tslib_1.__decorate([
119
+ mobx_1.computed,
120
+ tslib_1.__metadata("design:type", Array),
121
+ tslib_1.__metadata("design:paramtypes", [])
122
+ ], MultiSelect.prototype, "selectedIndexes", null);
123
+ tslib_1.__decorate([
124
+ mobx_1.computed,
125
+ tslib_1.__metadata("design:type", Array),
126
+ tslib_1.__metadata("design:paramtypes", [])
127
+ ], MultiSelect.prototype, "values", null);
128
+ tslib_1.__decorate([
129
+ mobx_1.computed,
130
+ tslib_1.__metadata("design:type", Array),
131
+ tslib_1.__metadata("design:paramtypes", [])
132
+ ], MultiSelect.prototype, "selectedItems", null);
133
+ tslib_1.__decorate([
134
+ mobx_1.computed,
135
+ tslib_1.__metadata("design:type", Array),
136
+ tslib_1.__metadata("design:paramtypes", [])
137
+ ], MultiSelect.prototype, "selectedValues", null);
138
+ tslib_1.__decorate([
139
+ mobx_1.computed,
140
+ tslib_1.__metadata("design:type", Object),
141
+ tslib_1.__metadata("design:paramtypes", [])
142
+ ], MultiSelect.prototype, "isDefault", null);
143
+ tslib_1.__decorate([
144
+ mobx_1.action,
145
+ tslib_1.__metadata("design:type", Object)
146
+ ], MultiSelect.prototype, "selectItems", void 0);
147
+ tslib_1.__decorate([
148
+ mobx_1.action,
149
+ tslib_1.__metadata("design:type", Object)
150
+ ], MultiSelect.prototype, "selectValues", void 0);
151
+ tslib_1.__decorate([
152
+ mobx_1.action,
153
+ tslib_1.__metadata("design:type", Object)
154
+ ], MultiSelect.prototype, "setIndexSelected", void 0);
155
+ exports.MultiSelect = MultiSelect;
156
+ class MultiSelectString extends MultiSelect {
157
+ constructor(items, ...selected) {
158
+ super(items, v => v, ...selected);
159
+ }
160
+ }
161
+ exports.MultiSelectString = MultiSelectString;
162
+ //# sourceMappingURL=MultiSelectModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelectModel.js","sourceRoot":"","sources":["../../src/viewModels/MultiSelectModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { IResetableModel } from 'viewModels';
2
+ import { IValueModel } from './types';
3
+ export interface INumberModel extends IResetableModel {
4
+ value: number;
5
+ }
6
+ export declare class NumberModel implements INumberModel, IValueModel<number> {
7
+ private _value;
8
+ private _initial;
9
+ constructor(initial?: number);
10
+ get value(): number;
11
+ set value(v: number);
12
+ get isDefault(): boolean;
13
+ reset: () => void;
14
+ increment: (d?: number) => number;
15
+ decrement: (d?: number) => number;
16
+ }
17
+ export default NumberModel;
18
+ //# sourceMappingURL=NumberModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/NumberModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,YAAa,SAAQ,eAAe;IACjD,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,WAAY,YAAW,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC;IAGjE,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,QAAQ,CAAa;gBAEjB,OAAO,GAAE,MAAU;IAM/B,IAAI,KAAK,IACI,MAAM,CADgB;IACnC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAAsB;IAEzC,IAAI,SAAS,YAA4C;IAGzD,KAAK,aAEH;IAGF,SAAS,yBAA8B;IAGvC,SAAS,yBAA8B;CAC1C;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberModel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mobx_1 = require("mobx");
6
+ class NumberModel {
7
+ constructor(initial = 0) {
8
+ this._value = 0;
9
+ this._initial = 0;
10
+ this.reset = () => {
11
+ this._value = this._initial;
12
+ };
13
+ this.increment = (d = 1) => this.value += d;
14
+ this.decrement = (d = 1) => this.value -= d;
15
+ mobx_1.makeObservable(this);
16
+ this._initial = initial;
17
+ this._value = this._initial;
18
+ }
19
+ get value() { return this._value; }
20
+ set value(v) { this._value = v; }
21
+ get isDefault() { return this._value === this._initial; }
22
+ }
23
+ tslib_1.__decorate([
24
+ mobx_1.observable,
25
+ tslib_1.__metadata("design:type", Number)
26
+ ], NumberModel.prototype, "_value", void 0);
27
+ tslib_1.__decorate([
28
+ mobx_1.action,
29
+ tslib_1.__metadata("design:type", Object)
30
+ ], NumberModel.prototype, "reset", void 0);
31
+ tslib_1.__decorate([
32
+ mobx_1.action,
33
+ tslib_1.__metadata("design:type", Object)
34
+ ], NumberModel.prototype, "increment", void 0);
35
+ tslib_1.__decorate([
36
+ mobx_1.action,
37
+ tslib_1.__metadata("design:type", Object)
38
+ ], NumberModel.prototype, "decrement", void 0);
39
+ exports.NumberModel = NumberModel;
40
+ exports.default = NumberModel;
41
+ //# sourceMappingURL=NumberModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberModel.js","sourceRoot":"","sources":["../../src/viewModels/NumberModel.ts"],"names":[],"mappings":";;;;AAAA,+BAA0D;AAQ1D,MAAa,WAAW;IAOpB,YAAY,UAAkB,CAAC;QAJvB,WAAM,GAAW,CAAC,CAAC;QAEnB,aAAQ,GAAW,CAAC,CAAC;QAc7B,UAAK,GAAG,GAAG,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,CAAC,CAAC;QAGF,cAAS,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAGvC,cAAS,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAnBnC,qBAAc,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,CAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzC,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;CAY5D;AAzBG;IADC,iBAAU;;2CACgB;AAgB3B;IADC,aAAM;;0CAGL;AAGF;IADC,aAAM;;8CACgC;AAGvC;IADC,aAAM;;8CACgC;AA3B3C,kCA4BC;AAED,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { FlagModel } from './FlagModel';
2
+ export declare type BaseModalAction = {
3
+ title?: string;
4
+ message?: string;
5
+ };
6
+ export declare class ModalActionModel<T extends BaseModalAction = BaseModalAction> {
7
+ readonly isActive: FlagModel;
8
+ private _currentAction;
9
+ constructor();
10
+ get currentAction(): T;
11
+ openModal: (action: T) => void;
12
+ closeModal: () => void;
13
+ protected runAction: (cb: () => Promise<void> | void, close?: boolean, awaitAction?: boolean) => Promise<void>;
14
+ }
15
+ export declare type PromptModalAction = BaseModalAction & {
16
+ confirmText?: string;
17
+ rejectText?: string;
18
+ onConfirm?: () => Promise<void> | void;
19
+ onReject?: () => Promise<void> | void;
20
+ awaitActions?: boolean;
21
+ modalImage?: any;
22
+ confirmColor?: string;
23
+ rejectColor?: string;
24
+ };
25
+ export declare class PromptModalViewModel extends ModalActionModel<PromptModalAction> {
26
+ get confirmColor(): string;
27
+ get rejectColor(): string;
28
+ onConfirm: () => Promise<void>;
29
+ onReject: () => Promise<void>;
30
+ }
31
+ //# sourceMappingURL=PromptModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptModal.d.ts","sourceRoot":"","sources":["../../src/viewModels/PromptModal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,oBAAY,eAAe,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACrE,SAAgB,QAAQ,YAAmB;IAG3C,OAAO,CAAC,cAAc,CAAW;;IAMjC,IAAI,aAAa,MAAkC;IAG5C,SAAS,WAAY,CAAC,UAG3B;IAGK,UAAU,aAGf;IAEF,SAAS,CAAC,SAAS,OAAc,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,2DAWzD;CACL;AAED,oBAAY,iBAAiB,GAAG,eAAe,GAAG;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,gBAAgB,CAAC,iBAAiB,CAAC;IACzE,IAAI,YAAY,WAA8C;IAE9D,IAAI,WAAW,WAA6C;IAE5D,SAAS,sBAA6F;IACtG,QAAQ,sBAA6F;CACxG"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromptModalViewModel = exports.ModalActionModel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mobx_1 = require("mobx");
6
+ const FlagModel_1 = require("./FlagModel");
7
+ class ModalActionModel {
8
+ constructor() {
9
+ this.isActive = new FlagModel_1.FlagModel();
10
+ this._currentAction = null;
11
+ this.openModal = (action) => {
12
+ this._currentAction = action;
13
+ this.isActive.value = true;
14
+ };
15
+ this.closeModal = () => {
16
+ this.isActive.value = false;
17
+ this._currentAction = null;
18
+ };
19
+ this.runAction = async (cb, close = true, awaitAction = false) => {
20
+ if (cb) {
21
+ const promise = cb();
22
+ if (awaitAction) {
23
+ await promise;
24
+ }
25
+ }
26
+ if (close) {
27
+ this.closeModal();
28
+ }
29
+ };
30
+ mobx_1.makeObservable(this);
31
+ }
32
+ get currentAction() { return this._currentAction; }
33
+ }
34
+ tslib_1.__decorate([
35
+ mobx_1.observable.ref,
36
+ tslib_1.__metadata("design:type", Object)
37
+ ], ModalActionModel.prototype, "_currentAction", void 0);
38
+ tslib_1.__decorate([
39
+ mobx_1.action,
40
+ tslib_1.__metadata("design:type", Object)
41
+ ], ModalActionModel.prototype, "openModal", void 0);
42
+ tslib_1.__decorate([
43
+ mobx_1.action,
44
+ tslib_1.__metadata("design:type", Object)
45
+ ], ModalActionModel.prototype, "closeModal", void 0);
46
+ exports.ModalActionModel = ModalActionModel;
47
+ class PromptModalViewModel extends ModalActionModel {
48
+ constructor() {
49
+ super(...arguments);
50
+ this.onConfirm = () => this.runAction(this.currentAction.onConfirm, true, this.currentAction.awaitActions);
51
+ this.onReject = () => this.runAction(this.currentAction.onConfirm, true, this.currentAction.awaitActions);
52
+ }
53
+ get confirmColor() { return this.currentAction.confirmColor; }
54
+ get rejectColor() { return this.currentAction.rejectColor; }
55
+ }
56
+ exports.PromptModalViewModel = PromptModalViewModel;
57
+ //# sourceMappingURL=PromptModal.js.map
@@ -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"}
@@ -0,0 +1,33 @@
1
+ import { FlagModel, ILabeledFlagModel } from './FlagModel';
2
+ import { ValidatableModel } from './Validatable';
3
+ import { IValueModel } from './types';
4
+ import { IResetableModel } from 'viewModels';
5
+ export declare class Select<T = any> extends ValidatableModel<T> implements IValueModel<string>, IResetableModel {
6
+ private readonly _items;
7
+ private readonly _accessor;
8
+ private _index;
9
+ readonly opened: FlagModel;
10
+ private _indexLocked;
11
+ private _initialIndex;
12
+ private readonly _flags;
13
+ constructor(_items: readonly T[], _accessor: (item: T) => string, initialIndex?: number);
14
+ protected get valueToValidate(): T;
15
+ get values(): readonly string[];
16
+ get flags(): readonly ILabeledFlagModel[];
17
+ get items(): readonly T[];
18
+ get value(): string;
19
+ get selectedValue(): string;
20
+ set value(v: string);
21
+ set selectedValue(value: string);
22
+ get selectedItem(): T;
23
+ set selectedItem(item: T);
24
+ get isDefault(): boolean;
25
+ get index(): number;
26
+ set index(val: number);
27
+ reset: () => void;
28
+ private createFlags;
29
+ }
30
+ export declare class SelectString<T extends string = string> extends Select<T> {
31
+ constructor(items: readonly T[], initialIndex?: number);
32
+ }
33
+ //# 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,SAAS,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,MAAM,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe;IAWhG,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,SAAS,YAAiD;IAE9D,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,110 @@
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 isDefault() { return this._index === this._initialIndex; }
60
+ get index() {
61
+ return this._index;
62
+ }
63
+ set index(val) {
64
+ if (this._indexLocked) {
65
+ return;
66
+ }
67
+ this._index = val;
68
+ // update all flags to be properly selected
69
+ try {
70
+ this._indexLocked = true;
71
+ if (this._flags.hasValue) {
72
+ this._flags.value.forEach((f, i) => f.value = (i === this._index));
73
+ }
74
+ }
75
+ finally {
76
+ this._indexLocked = false;
77
+ }
78
+ }
79
+ createFlags() {
80
+ const flags = this._items
81
+ .map((item, index) => {
82
+ const flag = wrappers_1.withLabel(new FlagModel_1.FlagModel(index === this.index), () => this._accessor(item));
83
+ // react on every flag is changed directly
84
+ mobx_1.reaction(() => flag.value, isSelected => {
85
+ if (isSelected) {
86
+ this.index = index;
87
+ }
88
+ });
89
+ return flag;
90
+ });
91
+ return flags;
92
+ }
93
+ }
94
+ tslib_1.__decorate([
95
+ mobx_1.observable,
96
+ tslib_1.__metadata("design:type", Number)
97
+ ], Select.prototype, "_index", void 0);
98
+ tslib_1.__decorate([
99
+ mobx_1.computed,
100
+ tslib_1.__metadata("design:type", Array),
101
+ tslib_1.__metadata("design:paramtypes", [])
102
+ ], Select.prototype, "values", null);
103
+ exports.Select = Select;
104
+ class SelectString extends Select {
105
+ constructor(items, initialIndex = 0) {
106
+ super(items, v => v, initialIndex);
107
+ }
108
+ }
109
+ exports.SelectString = SelectString;
110
+ //# 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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"}