@zajno/common 1.3.0-beta → 1.3.3

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 (152) hide show
  1. package/.github/workflows/CI.yml +8 -0
  2. package/coverage/clover.xml +428 -360
  3. package/coverage/coverage-final.json +20 -19
  4. package/coverage/lcov-report/index.html +44 -44
  5. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  6. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +2 -2
  7. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  8. package/coverage/lcov-report/src/async/index.html +1 -1
  9. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  10. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  11. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  13. package/coverage/lcov-report/src/dates/index.html +1 -1
  14. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  17. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  19. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  20. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  21. package/coverage/lcov-report/src/event.ts.html +3 -3
  22. package/coverage/lcov-report/src/index.html +21 -21
  23. package/coverage/lcov-report/src/lazy.light.ts.html +3 -3
  24. package/coverage/lcov-report/src/logger/batch.ts.html +107 -0
  25. package/coverage/lcov-report/src/logger/console.ts.html +10 -25
  26. package/coverage/lcov-report/src/logger/index.html +54 -39
  27. package/coverage/lcov-report/src/logger/index.ts.html +88 -61
  28. package/coverage/lcov-report/src/logger/named.ts.html +31 -31
  29. package/coverage/lcov-report/src/logger/proxy.ts.html +13 -13
  30. package/coverage/lcov-report/src/math/arrays.ts.html +293 -32
  31. package/coverage/lcov-report/src/math/calc.ts.html +11 -11
  32. package/coverage/lcov-report/src/math/distribution.ts.html +2 -2
  33. package/coverage/lcov-report/src/math/index.html +11 -11
  34. package/coverage/lcov-report/src/math/index.ts.html +6 -6
  35. package/coverage/lcov-report/src/transitionObserver.ts.html +5 -5
  36. package/coverage/lcov-report/src/types.ts.html +33 -18
  37. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  38. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  39. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  40. package/coverage/lcov-report/src/validation/index.html +1 -1
  41. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  42. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  43. package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
  44. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  45. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +21 -18
  46. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +136 -94
  47. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +19 -10
  48. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +19 -10
  49. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +12 -12
  50. package/coverage/lcov-report/src/viewModels/index.html +45 -45
  51. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +3 -15
  52. package/coverage/lcov.info +871 -720
  53. package/lib/event.d.ts.map +1 -1
  54. package/lib/event.js +1 -1
  55. package/lib/event.js.map +1 -1
  56. package/lib/logger/batch.d.ts +3 -0
  57. package/lib/logger/batch.d.ts.map +1 -0
  58. package/lib/logger/batch.js +12 -0
  59. package/lib/logger/batch.js.map +1 -0
  60. package/lib/logger/console.d.ts +0 -1
  61. package/lib/logger/console.d.ts.map +1 -1
  62. package/lib/logger/console.js +0 -3
  63. package/lib/logger/console.js.map +1 -1
  64. package/lib/logger/file.d.ts +15 -0
  65. package/lib/logger/file.d.ts.map +1 -0
  66. package/lib/logger/file.js +43 -0
  67. package/lib/logger/file.js.map +1 -0
  68. package/lib/logger/index.d.ts +7 -6
  69. package/lib/logger/index.d.ts.map +1 -1
  70. package/lib/logger/index.js +34 -21
  71. package/lib/logger/index.js.map +1 -1
  72. package/lib/logger/named.js +3 -3
  73. package/lib/logger/named.js.map +1 -1
  74. package/lib/logger/proxy.d.ts +1 -1
  75. package/lib/logger/proxy.d.ts.map +1 -1
  76. package/lib/logger/proxy.js +2 -2
  77. package/lib/logger/proxy.js.map +1 -1
  78. package/lib/math/arrays.d.ts +16 -0
  79. package/lib/math/arrays.d.ts.map +1 -1
  80. package/lib/math/arrays.js +77 -1
  81. package/lib/math/arrays.js.map +1 -1
  82. package/lib/transitionObserver.d.ts.map +1 -1
  83. package/lib/transitionObserver.js +2 -2
  84. package/lib/transitionObserver.js.map +1 -1
  85. package/lib/types.d.ts +4 -0
  86. package/lib/types.d.ts.map +1 -1
  87. package/lib/types.js +6 -2
  88. package/lib/types.js.map +1 -1
  89. package/lib/viewModels/FlagModel.d.ts +4 -4
  90. package/lib/viewModels/FlagModel.d.ts.map +1 -1
  91. package/lib/viewModels/FlagModel.js +1 -0
  92. package/lib/viewModels/FlagModel.js.map +1 -1
  93. package/lib/viewModels/MultiSelectModel.d.ts +9 -3
  94. package/lib/viewModels/MultiSelectModel.d.ts.map +1 -1
  95. package/lib/viewModels/MultiSelectModel.js +16 -2
  96. package/lib/viewModels/MultiSelectModel.js.map +1 -1
  97. package/lib/viewModels/NumberModel.d.ts +4 -2
  98. package/lib/viewModels/NumberModel.d.ts.map +1 -1
  99. package/lib/viewModels/NumberModel.js +1 -0
  100. package/lib/viewModels/NumberModel.js.map +1 -1
  101. package/lib/viewModels/{PromptModalViewModel.d.ts → PromptModal.d.ts} +1 -1
  102. package/lib/viewModels/PromptModal.d.ts.map +1 -0
  103. package/lib/viewModels/{PromptModalViewModel.js → PromptModal.js} +1 -1
  104. package/lib/viewModels/PromptModal.js.map +1 -0
  105. package/lib/viewModels/SelectModel.d.ts +4 -2
  106. package/lib/viewModels/SelectModel.d.ts.map +1 -1
  107. package/lib/viewModels/SelectModel.js +1 -0
  108. package/lib/viewModels/SelectModel.js.map +1 -1
  109. package/lib/viewModels/TextModel.d.ts +4 -3
  110. package/lib/viewModels/TextModel.d.ts.map +1 -1
  111. package/lib/viewModels/TextModel.js +5 -11
  112. package/lib/viewModels/TextModel.js.map +1 -1
  113. package/lib/viewModels/ValuesCollector.d.ts +1 -3
  114. package/lib/viewModels/ValuesCollector.d.ts.map +1 -1
  115. package/lib/viewModels/ValuesCollector.js.map +1 -1
  116. package/lib/viewModels/index.d.ts +2 -1
  117. package/lib/viewModels/index.d.ts.map +1 -1
  118. package/lib/viewModels/index.js +2 -1
  119. package/lib/viewModels/index.js.map +1 -1
  120. package/lib/viewModels/types.d.ts +16 -0
  121. package/lib/viewModels/types.d.ts.map +1 -0
  122. package/lib/viewModels/types.js +3 -0
  123. package/lib/viewModels/types.js.map +1 -0
  124. package/lib/viewModels/wrappers.d.ts +1 -4
  125. package/lib/viewModels/wrappers.d.ts.map +1 -1
  126. package/lib/viewModels/wrappers.js.map +1 -1
  127. package/package.json +1 -1
  128. package/src/event.ts +2 -2
  129. package/src/logger/__tests__/{index.test.ts → logger.test.ts} +97 -41
  130. package/src/logger/batch.ts +9 -0
  131. package/src/logger/console.ts +0 -5
  132. package/src/logger/file.ts +46 -0
  133. package/src/logger/index.ts +37 -28
  134. package/src/logger/named.ts +3 -3
  135. package/src/logger/proxy.ts +2 -2
  136. package/src/math/__tests__/arrays.test.ts +53 -0
  137. package/src/math/arrays.ts +87 -0
  138. package/src/transitionObserver.ts +2 -2
  139. package/src/types.ts +6 -1
  140. package/src/viewModels/FlagModel.ts +5 -4
  141. package/src/viewModels/MultiSelectModel.ts +19 -5
  142. package/src/viewModels/NumberModel.ts +5 -2
  143. package/src/viewModels/{PromptModalViewModel.ts → PromptModal.ts} +0 -0
  144. package/src/viewModels/SelectModel.ts +5 -2
  145. package/src/viewModels/TextModel.ts +6 -6
  146. package/src/viewModels/ValuesCollector.ts +1 -4
  147. package/src/viewModels/__tests__/multiSelect.test.ts +127 -12
  148. package/src/viewModels/index.ts +2 -1
  149. package/src/viewModels/types.ts +19 -0
  150. package/src/viewModels/wrappers.ts +1 -5
  151. package/lib/viewModels/PromptModalViewModel.d.ts.map +0 -1
  152. package/lib/viewModels/PromptModalViewModel.js.map +0 -1
@@ -2,13 +2,15 @@ import { createLazy } from '../lazy.light';
2
2
  import { action, computed, makeObservable, observable, reaction } from 'mobx';
3
3
  import { FlagModel, ILabeledFlagModel } from './FlagModel';
4
4
  import { ValidatableModel } from './Validatable';
5
- import { IValueModel } from './ValuesCollector';
5
+ import { IValueModel } from './types';
6
6
  import { withLabel } from './wrappers';
7
+ import { ICountableModel, IResetableModel } from 'viewModels';
8
+ import { arraysCompareDistinct } from '../math';
7
9
 
8
- export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> implements IValueModel<readonly string[]> {
10
+ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> implements IValueModel<readonly string[]>, IResetableModel, ICountableModel {
9
11
 
10
12
  @observable
11
- private _indexes = new Set<number>();
13
+ private readonly _indexes = new Set<number>();
12
14
 
13
15
  public readonly opened = new FlagModel();
14
16
  private readonly _initial: number[] = null;
@@ -54,9 +56,14 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> imp
54
56
  set value(v: readonly string[]) { this.selectValues(v); }
55
57
 
56
58
  isIndexSelected(index: number) { return this._indexes.has(index); }
57
- isValueSelected(value: string) { return this.values.includes(value); }
59
+ isValueSelected(value: string) { return this.selectedValues.includes(value); }
58
60
 
59
- get isEmpty() { return this._indexes.size === 0; }
61
+ get count() { return this._items.length; }
62
+ get selectedCount() { return this._indexes.size; }
63
+ get isEmpty() { return this.selectedCount === 0; }
64
+
65
+ @computed
66
+ get isDefault() { return arraysCompareDistinct(this.selectedIndexes, this._initial)?.diff === 0; }
60
67
 
61
68
  protected get valueToValidate() { return this.selectedItems; }
62
69
 
@@ -114,6 +121,9 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> imp
114
121
  }
115
122
  };
116
123
 
124
+ selectIndex = (index: number) => this.setIndexSelected(index, true);
125
+ deSelectIndex = (index: number) => this.setIndexSelected(index, false);
126
+
117
127
  reset = () => {
118
128
  super.reset();
119
129
  this.setInitialIndexes();
@@ -122,6 +132,10 @@ export class MultiSelect<T = any> extends ValidatableModel<ReadonlyArray<T>> imp
122
132
  private setInitialIndexes() {
123
133
  this._indexes.clear();
124
134
  this._initial.forEach(i => this._indexes.add(i));
135
+
136
+ if (this._flags.hasValue) {
137
+ this._flags.value.forEach((flag, index) => flag.value = this._indexes.has(index));
138
+ }
125
139
  }
126
140
 
127
141
  private createFlags() {
@@ -1,7 +1,8 @@
1
1
  import { action, makeObservable, observable } from 'mobx';
2
- import { IValueModel } from './ValuesCollector';
2
+ import { IResetableModel } from 'viewModels';
3
+ import { IValueModel } from './types';
3
4
 
4
- export interface INumberModel {
5
+ export interface INumberModel extends IResetableModel {
5
6
  value: number;
6
7
  }
7
8
 
@@ -21,6 +22,8 @@ export class NumberModel implements INumberModel, IValueModel<number> {
21
22
  get value() { return this._value; }
22
23
  set value(v: number) { this._value = v; }
23
24
 
25
+ get isDefault() { return this._value === this._initial; }
26
+
24
27
  @action
25
28
  reset = () => {
26
29
  this._value = this._initial;
@@ -2,10 +2,11 @@ import { createLazy } from '../lazy.light';
2
2
  import { observable, computed, makeObservable, reaction } from 'mobx';
3
3
  import { FlagModel, ILabeledFlagModel } from './FlagModel';
4
4
  import { ValidatableModel } from './Validatable';
5
- import { IValueModel } from './ValuesCollector';
5
+ import { IValueModel } from './types';
6
6
  import { withLabel } from './wrappers';
7
+ import { IResetableModel } from 'viewModels';
7
8
 
8
- export class Select<T = any> extends ValidatableModel<T> implements IValueModel<string> {
9
+ export class Select<T = any> extends ValidatableModel<T> implements IValueModel<string>, IResetableModel {
9
10
  @observable
10
11
  private _index: number = undefined;
11
12
 
@@ -67,6 +68,8 @@ export class Select<T = any> extends ValidatableModel<T> implements IValueModel<
67
68
  }
68
69
  }
69
70
 
71
+ get isDefault() { return this._index === this._initialIndex; }
72
+
70
73
  get index() {
71
74
  return this._index;
72
75
  }
@@ -1,8 +1,9 @@
1
- import { observable, computed, action, makeObservable, reaction } from 'mobx';
1
+ import { observable, computed, makeObservable, reaction } from 'mobx';
2
2
  import { Getter } from '../types';
3
+ import { IValueModel } from './types';
3
4
  import logger from '../logger';
4
5
  import { ValidatableModel, ValidationConfig } from './Validatable';
5
- import { IValueModel } from './ValuesCollector';
6
+ import { IResetableModel } from 'viewModels';
6
7
 
7
8
  export type TextInputConfig = {
8
9
  name?: Getter<string>;
@@ -39,7 +40,7 @@ export class Text {
39
40
  get value() { return this._value; }
40
41
  }
41
42
 
42
- export class TextInputVM extends ValidatableModel implements IValueModel<string> {
43
+ export class TextInputVM extends ValidatableModel implements IValueModel<string>, IResetableModel {
43
44
  @observable
44
45
  private _value = '';
45
46
 
@@ -103,11 +104,10 @@ export class TextInputVM extends ValidatableModel implements IValueModel<string>
103
104
  this.validate();
104
105
  }
105
106
 
106
- @action
107
- reset() {
107
+ reset = () => {
108
108
  this._value = '';
109
109
  this._focused = false;
110
110
  super.reset();
111
- }
111
+ };
112
112
 
113
113
  }
@@ -1,7 +1,4 @@
1
-
2
- export interface IValueModel<TValue> {
3
- value: TValue;
4
- }
1
+ import { IValueModel } from './types';
5
2
 
6
3
  export interface IValueCollector<TSource, TValue> {
7
4
  getValue(source: TSource): TValue;
@@ -1,23 +1,138 @@
1
- import { MultiSelect } from '../MultiSelectModel';
1
+ import { reaction, toJS } from 'mobx';
2
+ import { arrayRepeat } from '../../math';
3
+ import { MultiSelect, MultiSelectString } from '../MultiSelectModel';
4
+
5
+ type SetType<T> = { items: T[], selected: number[], accessor: (item: T) => string };
2
6
 
3
7
  describe('MultiSelectModel', () => {
4
- it('consistent', () => {
8
+ it('creates', () => {
5
9
  expect(() => new MultiSelect(null, null).values).toThrow();
6
10
  expect(() => new MultiSelect([1], null).values).toThrow();
11
+ });
12
+
13
+ const sets: SetType<any>[] = [
14
+ { items: [1, 2, 3], selected: [1], accessor: i => `_${i}_` },
15
+ { items: [1, 2, 3], selected: [], accessor: i => `_${i}_` },
16
+ { items: ['a', 'b', 'c'], selected: [2], accessor: i => i },
17
+ ];
18
+
19
+ describe('consistent', () => {
20
+ sets.forEach((set, setIndex) => {
21
+ it(`variant ${setIndex + 1}`, () => {
22
+ const items = set.items; // [1, 2, 3];
23
+ const accessor = set.accessor; // (i: number) => `_${i}_`;
24
+ const initialSelected = set.selected; // [1];
25
+ const values = items.map(accessor);
26
+ const selectedValues = initialSelected.map(i => accessor(items[i]));
7
27
 
8
- const items = [1, 2, 3];
9
- const accessor = (i: number) => `_${i}_`;
10
- const values = items.map(accessor);
11
- const initialSelected = [1];
28
+ const vm = new MultiSelect(items, accessor, ...initialSelected);
12
29
 
13
- const vm = new MultiSelect(items, accessor, ...initialSelected);
30
+ expect(vm.items).toStrictEqual(items);
31
+ expect(vm.values).toStrictEqual(values);
32
+ expect(vm.count).toBe(items.length);
33
+ expect(vm.selectedCount).toBe(initialSelected.length);
34
+ expect(vm.selectedIndexes).toStrictEqual(initialSelected);
35
+ expect(vm.selectedValues).toStrictEqual(selectedValues);
14
36
 
15
- expect(vm.items).toStrictEqual(items);
16
- expect(vm.values).toStrictEqual(values);
17
- expect(vm.selectedIndexes).toStrictEqual(initialSelected);
37
+ initialSelected.forEach(index => {
38
+ expect(vm.isIndexSelected(index)).toBe(initialSelected.includes(index));
39
+ });
18
40
 
19
- initialSelected.forEach(index => {
20
- expect(vm.isIndexSelected(index)).toBe(initialSelected.includes(index));
41
+ values.forEach((value) => {
42
+ expect(vm.isValueSelected(value)).toBe(selectedValues.includes(value));
43
+ });
44
+ });
21
45
  });
46
+
47
+ });
48
+
49
+ it('reacts', () => {
50
+ const vm = new MultiSelectString(['a', 'b', 'c']);
51
+
52
+ expect(vm.count).toBe(3);
53
+ expect(vm.selectedCount).toBe(0);
54
+ expect(vm.selectedIndexes).toHaveLength(0);
55
+
56
+ const mocks = arrayRepeat(() => jest.fn().mockImplementation(null), 5);
57
+ const [
58
+ onSelectedIndexes,
59
+ onSelectedItems,
60
+ onSelectedValues,
61
+ onIsIndexSelected,
62
+ onIsValueSelected,
63
+ ] = mocks;
64
+
65
+ const wrapMock = mock => ((a: any) => mock(toJS(a)));
66
+
67
+ const expectEmptyCalls = () => {
68
+ expect(onSelectedIndexes).toHaveBeenCalledWith([]);
69
+ expect(onSelectedItems).toHaveBeenCalledWith([]);
70
+ expect(onSelectedValues).toHaveBeenCalledWith([]);
71
+ mocks.forEach(m => m.mockClear());
72
+ };
73
+
74
+ reaction(() => vm.selectedIndexes, wrapMock(onSelectedIndexes));
75
+ reaction(() => vm.selectedItems, wrapMock(onSelectedItems));
76
+ reaction(() => vm.selectedValues, wrapMock(onSelectedValues));
77
+
78
+ // initially – 'false', so expect only when 'true' should be passed
79
+ reaction(() => vm.isIndexSelected(0), wrapMock(onIsIndexSelected));
80
+ reaction(() => vm.isValueSelected('a'), wrapMock(onIsValueSelected));
81
+
82
+ vm.selectIndex(1);
83
+
84
+ expect(onSelectedIndexes).toHaveBeenCalledWith([1]);
85
+ expect(onSelectedItems).toHaveBeenCalledWith(['b']);
86
+ expect(onSelectedValues).toHaveBeenCalledWith(['b']);
87
+ expect(onIsIndexSelected).not.toHaveBeenCalled();
88
+ expect(onIsValueSelected).not.toHaveBeenCalled();
89
+ mocks.forEach(m => m.mockClear());
90
+
91
+ vm.deSelectIndex(1);
92
+ expect(onIsIndexSelected).not.toHaveBeenCalled();
93
+ expect(onIsValueSelected).not.toHaveBeenCalled();
94
+ expectEmptyCalls();
95
+
96
+ vm.selectItem('c');
97
+
98
+ expect(onSelectedIndexes).toHaveBeenCalledWith([2]);
99
+ expect(onSelectedItems).toHaveBeenCalledWith(['c']);
100
+ expect(onSelectedValues).toHaveBeenCalledWith(['c']);
101
+ expect(onIsIndexSelected).not.toHaveBeenCalled();
102
+ expect(onIsValueSelected).not.toHaveBeenCalled();
103
+ mocks.forEach(m => m.mockClear());
104
+
105
+ vm.deSelectItem('c');
106
+ expect(onIsIndexSelected).not.toHaveBeenCalled();
107
+ expect(onIsValueSelected).not.toHaveBeenCalled();
108
+ expectEmptyCalls();
109
+
110
+ vm.selectValue('a');
111
+
112
+ expect(onSelectedIndexes).toHaveBeenCalledWith([0]);
113
+ expect(onSelectedItems).toHaveBeenCalledWith(['a']);
114
+ expect(onSelectedValues).toHaveBeenCalledWith(['a']);
115
+ expect(onIsIndexSelected).toHaveBeenCalledWith(true);
116
+ expect(onIsValueSelected).toHaveBeenCalledWith(true);
117
+ mocks.forEach(m => m.mockClear());
118
+
119
+ vm.deSelectValue('a');
120
+ expect(onIsIndexSelected).toHaveBeenCalledWith(false);
121
+ expect(onIsValueSelected).toHaveBeenCalledWith(false);
122
+ expectEmptyCalls();
123
+
124
+ vm.selectItems(['a', 'b']);
125
+
126
+ expect(onSelectedIndexes).toHaveBeenCalledWith([0, 1]);
127
+ expect(onSelectedItems).toHaveBeenCalledWith(['a', 'b']);
128
+ expect(onSelectedValues).toHaveBeenCalledWith(['a', 'b']);
129
+ expect(onIsIndexSelected).toHaveBeenCalledWith(true);
130
+ expect(onIsValueSelected).toHaveBeenCalledWith(true);
131
+ mocks.forEach(m => m.mockClear());
132
+
133
+ vm.reset();
134
+ expect(onIsIndexSelected).toHaveBeenCalledWith(false);
135
+ expect(onIsValueSelected).toHaveBeenCalledWith(false);
136
+ expectEmptyCalls();
22
137
  });
23
138
  });
@@ -1,3 +1,4 @@
1
+ export * from './types';
1
2
  export * from './Validatable';
2
3
  export * from './TextModel';
3
4
  export * from './FlagModel';
@@ -7,4 +8,4 @@ export * from './wrappers';
7
8
  export * from './SelectModel';
8
9
  export * from './MultiSelectModel';
9
10
 
10
- export * from './PromptModalViewModel';
11
+ export * from './PromptModal';
@@ -0,0 +1,19 @@
1
+
2
+ export interface IValueModel<TValue> {
3
+ value: TValue;
4
+ }
5
+
6
+ export interface ILabel<T> {
7
+ readonly label: T;
8
+ }
9
+
10
+ export interface IResetableModel {
11
+ readonly reset: () => void;
12
+ readonly isDefault?: boolean;
13
+ }
14
+
15
+ export interface ICountableModel {
16
+ readonly count: number;
17
+ readonly selectedCount?: number;
18
+ readonly isEmpty: boolean;
19
+ }
@@ -1,9 +1,5 @@
1
1
  import { Getter } from '../types';
2
- import { IValueModel } from './ValuesCollector';
3
-
4
- export interface ILabel<T> {
5
- readonly label: T;
6
- }
2
+ import { ILabel, IValueModel } from './types';
7
3
 
8
4
  export function withLabel<T, TModel extends IValueModel<T>, TLabel = string>(model: TModel, label: Getter<TLabel>) {
9
5
  const _label = label;
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromptModalViewModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/PromptModalViewModel.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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromptModalViewModel.js","sourceRoot":"","sources":["../../src/viewModels/PromptModalViewModel.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"}