@sankhyalabs/core 0.0.0-bugfix-dev-KB-6165.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 (283) hide show
  1. package/.docs/.nojekyll +1 -0
  2. package/.docs/README.md +63 -0
  3. package/.docs/classes/ApplicationContext.md +90 -0
  4. package/.docs/classes/ArrayUtils.md +99 -0
  5. package/.docs/classes/AuthorizedServiceCaller.md +76 -0
  6. package/.docs/classes/Change.md +190 -0
  7. package/.docs/classes/DataUnit.md +2453 -0
  8. package/.docs/classes/DataUnitAction.md +96 -0
  9. package/.docs/classes/DataUnitStorage.md +116 -0
  10. package/.docs/classes/DateUtils.md +327 -0
  11. package/.docs/classes/ElementIDUtils.md +308 -0
  12. package/.docs/classes/ErrorException.md +214 -0
  13. package/.docs/classes/ErrorTracking.md +62 -0
  14. package/.docs/classes/FloatingManager.md +530 -0
  15. package/.docs/classes/HTMLBuilder.md +45 -0
  16. package/.docs/classes/HttpProvider.md +96 -0
  17. package/.docs/classes/JSUtils.md +115 -0
  18. package/.docs/classes/MaskFormatter-1.md +347 -0
  19. package/.docs/classes/NumberUtils.md +335 -0
  20. package/.docs/classes/ObjectUtils.md +160 -0
  21. package/.docs/classes/OnboardingUtils.md +126 -0
  22. package/.docs/classes/PromiseSync.md +91 -0
  23. package/.docs/classes/ReadyUtil.md +115 -0
  24. package/.docs/classes/RequestMetadata.md +84 -0
  25. package/.docs/classes/SelectionInfo.md +168 -0
  26. package/.docs/classes/SkwHttpProvider.md +109 -0
  27. package/.docs/classes/StringUtils.md +562 -0
  28. package/.docs/classes/TimeFormatter.md +98 -0
  29. package/.docs/classes/UserAgentUtils.md +58 -0
  30. package/.docs/classes/VersionUtils.md +42 -0
  31. package/.docs/classes/WaitingChangeException.md +200 -0
  32. package/.docs/classes/WarningException.md +214 -0
  33. package/.docs/enums/Action.md +294 -0
  34. package/.docs/enums/ChangeOperation.md +52 -0
  35. package/.docs/enums/DataType.md +63 -0
  36. package/.docs/enums/DependencyType.md +41 -0
  37. package/.docs/enums/SelectionMode.md +30 -0
  38. package/.docs/enums/SortMode.md +30 -0
  39. package/.docs/enums/UserInterface.md +195 -0
  40. package/.docs/interfaces/ChildDescriptor.md +41 -0
  41. package/.docs/interfaces/ChildLink.md +30 -0
  42. package/.docs/interfaces/DUActionInterceptor.md +29 -0
  43. package/.docs/interfaces/ExecutionContext.md +58 -0
  44. package/.docs/interfaces/FieldDescriptor.md +140 -0
  45. package/.docs/interfaces/Filter.md +41 -0
  46. package/.docs/interfaces/IElementIDInfo.md +30 -0
  47. package/.docs/interfaces/LoadDataRequest.md +101 -0
  48. package/.docs/interfaces/LoadDataResponse.md +36 -0
  49. package/.docs/interfaces/PageRequest.md +41 -0
  50. package/.docs/interfaces/PaginationInfo.md +75 -0
  51. package/.docs/interfaces/PromiseSyncCallback.md +39 -0
  52. package/.docs/interfaces/QuickFilter.md +41 -0
  53. package/.docs/interfaces/Record.md +62 -0
  54. package/.docs/interfaces/SavedRecord.md +85 -0
  55. package/.docs/interfaces/Sort.md +41 -0
  56. package/.docs/interfaces/SortingProvider.md +29 -0
  57. package/.docs/interfaces/UnitMetadata.md +52 -0
  58. package/.docs/interfaces/WaitingChange.md +41 -0
  59. package/.docs/modules/MaskFormatter.md +37 -0
  60. package/.docs/modules.md +74 -0
  61. package/.docs/package.json +15 -0
  62. package/.eslintignore +2 -0
  63. package/.eslintrc.cjs +35 -0
  64. package/.husky/commit-msg +4 -0
  65. package/.releaserc +58 -0
  66. package/README.md +62 -0
  67. package/commitlint.config.cjs +14 -0
  68. package/dist/async/PromiseSync.d.ts +29 -0
  69. package/dist/async/PromiseSync.js +31 -0
  70. package/dist/async/PromiseSync.js.map +1 -0
  71. package/dist/dataunit/DataUnit.d.ts +924 -0
  72. package/dist/dataunit/DataUnit.js +1621 -0
  73. package/dist/dataunit/DataUnit.js.map +1 -0
  74. package/dist/dataunit/DataUnitStorage.d.ts +24 -0
  75. package/dist/dataunit/DataUnitStorage.js +39 -0
  76. package/dist/dataunit/DataUnitStorage.js.map +1 -0
  77. package/dist/dataunit/formatting/PrettyFormatter.d.ts +2 -0
  78. package/dist/dataunit/formatting/PrettyFormatter.js +94 -0
  79. package/dist/dataunit/formatting/PrettyFormatter.js.map +1 -0
  80. package/dist/dataunit/loading/LoadDataRequest.d.ts +19 -0
  81. package/dist/dataunit/loading/LoadDataRequest.js +2 -0
  82. package/dist/dataunit/loading/LoadDataRequest.js.map +1 -0
  83. package/dist/dataunit/loading/LoadDataResponse.d.ts +9 -0
  84. package/dist/dataunit/loading/LoadDataResponse.js +2 -0
  85. package/dist/dataunit/loading/LoadDataResponse.js.map +1 -0
  86. package/dist/dataunit/loading/PaginationInfo.d.ts +13 -0
  87. package/dist/dataunit/loading/PaginationInfo.js +2 -0
  88. package/dist/dataunit/loading/PaginationInfo.js.map +1 -0
  89. package/dist/dataunit/metadata/DataType.d.ts +54 -0
  90. package/dist/dataunit/metadata/DataType.js +124 -0
  91. package/dist/dataunit/metadata/DataType.js.map +1 -0
  92. package/dist/dataunit/metadata/UnitMetadata.d.ts +88 -0
  93. package/dist/dataunit/metadata/UnitMetadata.js +36 -0
  94. package/dist/dataunit/metadata/UnitMetadata.js.map +1 -0
  95. package/dist/dataunit/state/HistReducer.d.ts +10 -0
  96. package/dist/dataunit/state/HistReducer.js +28 -0
  97. package/dist/dataunit/state/HistReducer.js.map +1 -0
  98. package/dist/dataunit/state/StateManager.d.ts +57 -0
  99. package/dist/dataunit/state/StateManager.js +97 -0
  100. package/dist/dataunit/state/StateManager.js.map +1 -0
  101. package/dist/dataunit/state/action/DataUnitAction.d.ts +40 -0
  102. package/dist/dataunit/state/action/DataUnitAction.js +42 -0
  103. package/dist/dataunit/state/action/DataUnitAction.js.map +1 -0
  104. package/dist/dataunit/state/slice/AddedRecordsSlice.d.ts +12 -0
  105. package/dist/dataunit/state/slice/AddedRecordsSlice.js +30 -0
  106. package/dist/dataunit/state/slice/AddedRecordsSlice.js.map +1 -0
  107. package/dist/dataunit/state/slice/ChangesSlice.d.ts +13 -0
  108. package/dist/dataunit/state/slice/ChangesSlice.js +105 -0
  109. package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -0
  110. package/dist/dataunit/state/slice/InvalidFieldsSlice.d.ts +10 -0
  111. package/dist/dataunit/state/slice/InvalidFieldsSlice.js +66 -0
  112. package/dist/dataunit/state/slice/InvalidFieldsSlice.js.map +1 -0
  113. package/dist/dataunit/state/slice/LoadingControlSlice.d.ts +19 -0
  114. package/dist/dataunit/state/slice/LoadingControlSlice.js +45 -0
  115. package/dist/dataunit/state/slice/LoadingControlSlice.js.map +1 -0
  116. package/dist/dataunit/state/slice/RecordsSlice.d.ts +11 -0
  117. package/dist/dataunit/state/slice/RecordsSlice.js +62 -0
  118. package/dist/dataunit/state/slice/RecordsSlice.js.map +1 -0
  119. package/dist/dataunit/state/slice/RemovedRecordsSlice.d.ts +9 -0
  120. package/dist/dataunit/state/slice/RemovedRecordsSlice.js +25 -0
  121. package/dist/dataunit/state/slice/RemovedRecordsSlice.js.map +1 -0
  122. package/dist/dataunit/state/slice/SelectionSlice.d.ts +19 -0
  123. package/dist/dataunit/state/slice/SelectionSlice.js +155 -0
  124. package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -0
  125. package/dist/dataunit/state/slice/SnapshotSlice.d.ts +19 -0
  126. package/dist/dataunit/state/slice/SnapshotSlice.js +106 -0
  127. package/dist/dataunit/state/slice/SnapshotSlice.js.map +1 -0
  128. package/dist/dataunit/state/slice/UnitMetadataSlice.d.ts +11 -0
  129. package/dist/dataunit/state/slice/UnitMetadataSlice.js +21 -0
  130. package/dist/dataunit/state/slice/UnitMetadataSlice.js.map +1 -0
  131. package/dist/dataunit/state/slice/WaitingChangesSlice.d.ts +12 -0
  132. package/dist/dataunit/state/slice/WaitingChangesSlice.js +56 -0
  133. package/dist/dataunit/state/slice/WaitingChangesSlice.js.map +1 -0
  134. package/dist/exceptions/ErrorException.d.ts +14 -0
  135. package/dist/exceptions/ErrorException.js +13 -0
  136. package/dist/exceptions/ErrorException.js.map +1 -0
  137. package/dist/exceptions/WaitingChangeException.d.ts +12 -0
  138. package/dist/exceptions/WaitingChangeException.js +12 -0
  139. package/dist/exceptions/WaitingChangeException.js.map +1 -0
  140. package/dist/exceptions/WarningException.d.ts +14 -0
  141. package/dist/exceptions/WarningException.js +13 -0
  142. package/dist/exceptions/WarningException.js.map +1 -0
  143. package/dist/html/HTMLBuilder.d.ts +3 -0
  144. package/dist/html/HTMLBuilder.js +9 -0
  145. package/dist/html/HTMLBuilder.js.map +1 -0
  146. package/dist/http/AuthorizedServiceCaller.d.ts +11 -0
  147. package/dist/http/AuthorizedServiceCaller.js +54 -0
  148. package/dist/http/AuthorizedServiceCaller.js.map +1 -0
  149. package/dist/http/HttpProvider.d.ts +25 -0
  150. package/dist/http/HttpProvider.js +74 -0
  151. package/dist/http/HttpProvider.js.map +1 -0
  152. package/dist/http/RequestMetadata.d.ts +30 -0
  153. package/dist/http/RequestMetadata.js +25 -0
  154. package/dist/http/RequestMetadata.js.map +1 -0
  155. package/dist/http/SkwHttpProvider.d.ts +9 -0
  156. package/dist/http/SkwHttpProvider.js +67 -0
  157. package/dist/http/SkwHttpProvider.js.map +1 -0
  158. package/dist/index.d.ts +34 -0
  159. package/dist/index.js +33 -0
  160. package/dist/index.js.map +1 -0
  161. package/dist/traking/ErrorTraking.d.ts +19 -0
  162. package/dist/traking/ErrorTraking.js +34 -0
  163. package/dist/traking/ErrorTraking.js.map +1 -0
  164. package/dist/ui/FloatingManager.d.ts +164 -0
  165. package/dist/ui/FloatingManager.js +358 -0
  166. package/dist/ui/FloatingManager.js.map +1 -0
  167. package/dist/utils/ApplicationContext.d.ts +26 -0
  168. package/dist/utils/ApplicationContext.js +38 -0
  169. package/dist/utils/ApplicationContext.js.map +1 -0
  170. package/dist/utils/ArrayUtils.d.ts +29 -0
  171. package/dist/utils/ArrayUtils.js +57 -0
  172. package/dist/utils/ArrayUtils.js.map +1 -0
  173. package/dist/utils/CriteriaModel.d.ts +107 -0
  174. package/dist/utils/CriteriaModel.js +172 -0
  175. package/dist/utils/CriteriaModel.js.map +1 -0
  176. package/dist/utils/CriteriaParameter.d.ts +69 -0
  177. package/dist/utils/CriteriaParameter.js +83 -0
  178. package/dist/utils/CriteriaParameter.js.map +1 -0
  179. package/dist/utils/DateUtils.d.ts +97 -0
  180. package/dist/utils/DateUtils.js +171 -0
  181. package/dist/utils/DateUtils.js.map +1 -0
  182. package/dist/utils/ElementIDUtils.d.ts +72 -0
  183. package/dist/utils/ElementIDUtils.js +161 -0
  184. package/dist/utils/ElementIDUtils.js.map +1 -0
  185. package/dist/utils/JSUtils.d.ts +36 -0
  186. package/dist/utils/JSUtils.js +66 -0
  187. package/dist/utils/JSUtils.js.map +1 -0
  188. package/dist/utils/MaskFormatter.d.ts +148 -0
  189. package/dist/utils/MaskFormatter.js +356 -0
  190. package/dist/utils/MaskFormatter.js.map +1 -0
  191. package/dist/utils/NumberUtils.d.ts +127 -0
  192. package/dist/utils/NumberUtils.js +245 -0
  193. package/dist/utils/NumberUtils.js.map +1 -0
  194. package/dist/utils/ObjectUtils.d.ts +47 -0
  195. package/dist/utils/ObjectUtils.js +68 -0
  196. package/dist/utils/ObjectUtils.js.map +1 -0
  197. package/dist/utils/OnboardingUtils.d.ts +17 -0
  198. package/dist/utils/OnboardingUtils.js +41 -0
  199. package/dist/utils/OnboardingUtils.js.map +1 -0
  200. package/dist/utils/ReadyUtil.d.ts +24 -0
  201. package/dist/utils/ReadyUtil.js +41 -0
  202. package/dist/utils/ReadyUtil.js.map +1 -0
  203. package/dist/utils/StringUtils.d.ts +167 -0
  204. package/dist/utils/StringUtils.js +328 -0
  205. package/dist/utils/StringUtils.js.map +1 -0
  206. package/dist/utils/TimeFormatter.d.ts +33 -0
  207. package/dist/utils/TimeFormatter.js +98 -0
  208. package/dist/utils/TimeFormatter.js.map +1 -0
  209. package/dist/utils/UserAgentUtils/index.d.ts +15 -0
  210. package/dist/utils/UserAgentUtils/index.js +48 -0
  211. package/dist/utils/UserAgentUtils/index.js.map +1 -0
  212. package/dist/utils/UserAgentUtils/navigatorAgentList.d.ts +17 -0
  213. package/dist/utils/UserAgentUtils/navigatorAgentList.js +40 -0
  214. package/dist/utils/UserAgentUtils/navigatorAgentList.js.map +1 -0
  215. package/dist/utils/VersionUtils.d.ts +7 -0
  216. package/dist/utils/VersionUtils.js +31 -0
  217. package/dist/utils/VersionUtils.js.map +1 -0
  218. package/jest.config.ts +17 -0
  219. package/mock/http/XMLHttpRequest-mock.js +26 -0
  220. package/package.json +52 -0
  221. package/scripts/runlink.bat +1 -0
  222. package/scripts/runlink.sh +1 -0
  223. package/src/async/PromiseSync.ts +49 -0
  224. package/src/dataunit/DataUnit.ts +1835 -0
  225. package/src/dataunit/DataUnitStorage.ts +43 -0
  226. package/src/dataunit/formatting/PrettyFormatter.ts +113 -0
  227. package/src/dataunit/loading/LoadDataRequest.ts +26 -0
  228. package/src/dataunit/loading/LoadDataResponse.ts +11 -0
  229. package/src/dataunit/loading/PaginationInfo.ts +18 -0
  230. package/src/dataunit/metadata/DataType.ts +127 -0
  231. package/src/dataunit/metadata/UnitMetadata.ts +102 -0
  232. package/src/dataunit/state/HistReducer.ts +34 -0
  233. package/src/dataunit/state/StateManager.ts +142 -0
  234. package/src/dataunit/state/action/DataUnitAction.ts +67 -0
  235. package/src/dataunit/state/slice/AddedRecordsSlice.ts +48 -0
  236. package/src/dataunit/state/slice/ChangesSlice.ts +125 -0
  237. package/src/dataunit/state/slice/InvalidFieldsSlice.ts +85 -0
  238. package/src/dataunit/state/slice/LoadingControlSlice.ts +60 -0
  239. package/src/dataunit/state/slice/RecordsSlice.ts +74 -0
  240. package/src/dataunit/state/slice/RemovedRecordsSlice.ts +30 -0
  241. package/src/dataunit/state/slice/SelectionSlice.ts +193 -0
  242. package/src/dataunit/state/slice/SnapshotSlice.ts +139 -0
  243. package/src/dataunit/state/slice/UnitMetadataSlice.ts +30 -0
  244. package/src/dataunit/state/slice/WaitingChangesSlice.ts +74 -0
  245. package/src/exceptions/ErrorException.ts +25 -0
  246. package/src/exceptions/WaitingChangeException.ts +21 -0
  247. package/src/exceptions/WarningException.ts +26 -0
  248. package/src/html/HTMLBuilder.ts +8 -0
  249. package/src/http/AuthorizedServiceCaller.ts +58 -0
  250. package/src/http/HttpProvider.ts +94 -0
  251. package/src/http/RequestMetadata.ts +42 -0
  252. package/src/http/SkwHttpProvider.ts +78 -0
  253. package/src/index.ts +93 -0
  254. package/src/traking/ErrorTraking.ts +37 -0
  255. package/src/ui/FloatingManager.ts +417 -0
  256. package/src/utils/ApplicationContext.ts +42 -0
  257. package/src/utils/ArrayUtils.ts +61 -0
  258. package/src/utils/CriteriaModel.ts +205 -0
  259. package/src/utils/CriteriaParameter.ts +108 -0
  260. package/src/utils/DateUtils.ts +195 -0
  261. package/src/utils/ElementIDUtils.ts +184 -0
  262. package/src/utils/JSUtils.ts +69 -0
  263. package/src/utils/MaskFormatter.ts +407 -0
  264. package/src/utils/NumberUtils.ts +283 -0
  265. package/src/utils/ObjectUtils.ts +76 -0
  266. package/src/utils/OnboardingUtils.ts +46 -0
  267. package/src/utils/ReadyUtil.ts +45 -0
  268. package/src/utils/StringUtils.ts +359 -0
  269. package/src/utils/TimeFormatter.ts +98 -0
  270. package/src/utils/UserAgentUtils/index.ts +62 -0
  271. package/src/utils/UserAgentUtils/navigatorAgentList.ts +39 -0
  272. package/src/utils/VersionUtils.ts +37 -0
  273. package/test/http/HttpProvider.spec.ts +35 -0
  274. package/test/http/SkwHttpProvider.ts.spec.ts +34 -0
  275. package/test/util/CriteriaModel.spec.ts +232 -0
  276. package/test/util/CriteriaParameter.spec.ts +52 -0
  277. package/test/util/DataUnitStorage.spec.ts +63 -0
  278. package/test/util/ElementIDUtils.spec.ts +272 -0
  279. package/test/util/MaskFormatter.spec.ts +138 -0
  280. package/test/util/NumberUtils.spec.ts +182 -0
  281. package/test/util/StringUtils.spec.ts +51 -0
  282. package/test/util/TimeFormatter.spec.ts +26 -0
  283. package/tsconfig.json +16 -0
@@ -0,0 +1,28 @@
1
+ import { Action } from "./action/DataUnitAction.js";
2
+ class HistReducerImpl {
3
+ constructor() {
4
+ this.sliceName = "";
5
+ }
6
+ reduce(stateManager, _currentState, action) {
7
+ switch (action.type) {
8
+ case Action.DATA_SAVED:
9
+ case Action.EDITION_CANCELED:
10
+ stateManager.clearUndo();
11
+ break;
12
+ case Action.CHANGE_UNDONE:
13
+ stateManager.undo();
14
+ break;
15
+ case Action.CHANGE_REDONE:
16
+ stateManager.redo();
17
+ break;
18
+ }
19
+ }
20
+ }
21
+ export const HistReducer = new HistReducerImpl();
22
+ export const canUndo = (stateManager) => {
23
+ return stateManager.canUndo();
24
+ };
25
+ export const canRedo = (stateManager) => {
26
+ return stateManager.canRedo();
27
+ };
28
+ //# sourceMappingURL=HistReducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistReducer.js","sourceRoot":"","sources":["../../../src/dataunit/state/HistReducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,MAAM,eAAe;IAArB;QAEW,cAAS,GAAW,EAAE,CAAC;IAiBlC,CAAC;IAfU,MAAM,CAAC,YAA0B,EAAE,aAAmB,EAAE,MAAmB;QAE9E,QAAQ,MAAM,CAAC,IAAI,EAAE;YACjB,KAAK,MAAM,CAAC,UAAU,CAAC;YACvB,KAAK,MAAM,CAAC,gBAAgB;gBACxB,YAAY,CAAC,SAAS,EAAE,CAAC;gBACzB,MAAM;YACV,KAAK,MAAM,CAAC,aAAa;gBACrB,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM;YACV,KAAK,MAAM,CAAC,aAAa;gBACrB,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM;SACb;IACL,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAA0B,EAAW,EAAE;IAC3D,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAA0B,EAAW,EAAE;IAC3D,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC,CAAA"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Essa classe representa uma interpretação do padrão de projetos Flux.
3
+ * No padrão Flux os dados da aplicação são chamados de "estado" e existem
4
+ * algumas regras para gerenciamento/manipulação desse estado:
5
+ *
6
+ * 1 - O estado é imutável.
7
+ * 2 - Toda modificação de estado é representada por uma "ação".
8
+ * 3 - Quando "ações" acontecem a "store" cria um novo estado e notifica a todos interessados.
9
+ *
10
+ * Nessa interpretação desse design pattern, o StateManager faz o papel da store,
11
+ * notificando os manipuladores de estado (handlers), que são responsáveis por pedaços
12
+ * do estado (slices).
13
+ *
14
+ * O StateManager mantém dois tipos de estados: "Histórico" e "Não Histórico". No estado
15
+ * "Histórico", sempre que uma alteração de estado acontece, o estado anterior é guardado em
16
+ * uma pilha, o que permite que possamos voltar no tempo, desfazendo algumas ações
17
+ */
18
+ export default class StateManager {
19
+ private _reducers;
20
+ private _past;
21
+ private _future;
22
+ private _present;
23
+ private _nonHist;
24
+ private _histClean;
25
+ constructor(reducers: Array<ActionReducer>);
26
+ process(action: StateAction): void;
27
+ select(sliceName: string, selector: (state: any) => any): any;
28
+ private isHistoric;
29
+ private updateSlice;
30
+ private getSlice;
31
+ canUndo(): boolean;
32
+ canRedo(): boolean;
33
+ undo(): void;
34
+ redo(): void;
35
+ clearUndo(): void;
36
+ persist(): void;
37
+ }
38
+ /**
39
+ * Baseado no padrão Flux, qualquer alteração de estado parte de uma ação.
40
+ * Essa ação pode conter um payload ou não.
41
+ */
42
+ export interface StateAction {
43
+ /**
44
+ * O tipo da ação representa o que aconteceu. Com base nesse tipo
45
+ * os manipuladores de estado agem criando um novo estado.
46
+ */
47
+ type: string;
48
+ /**
49
+ * Muitas ações contém informações importantes para compor o novo estado.
50
+ * Isso é chamado de payload.
51
+ */
52
+ payload?: any;
53
+ }
54
+ export interface ActionReducer {
55
+ sliceName: string;
56
+ reduce(stateManager: StateManager, state: any, action: StateAction): any;
57
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Essa classe representa uma interpretação do padrão de projetos Flux.
3
+ * No padrão Flux os dados da aplicação são chamados de "estado" e existem
4
+ * algumas regras para gerenciamento/manipulação desse estado:
5
+ *
6
+ * 1 - O estado é imutável.
7
+ * 2 - Toda modificação de estado é representada por uma "ação".
8
+ * 3 - Quando "ações" acontecem a "store" cria um novo estado e notifica a todos interessados.
9
+ *
10
+ * Nessa interpretação desse design pattern, o StateManager faz o papel da store,
11
+ * notificando os manipuladores de estado (handlers), que são responsáveis por pedaços
12
+ * do estado (slices).
13
+ *
14
+ * O StateManager mantém dois tipos de estados: "Histórico" e "Não Histórico". No estado
15
+ * "Histórico", sempre que uma alteração de estado acontece, o estado anterior é guardado em
16
+ * uma pilha, o que permite que possamos voltar no tempo, desfazendo algumas ações
17
+ */
18
+ export default class StateManager {
19
+ constructor(reducers) {
20
+ this._past = [];
21
+ this._future = [];
22
+ this._present = {};
23
+ this._nonHist = {};
24
+ this._histClean = false;
25
+ this._reducers = reducers;
26
+ }
27
+ process(action) {
28
+ const oldPresent = this._present;
29
+ let hasHistChange = false;
30
+ this._histClean = false;
31
+ this._reducers.forEach(reducer => {
32
+ const sliceName = reducer.sliceName;
33
+ const isHistoric = this.isHistoric(sliceName);
34
+ const oldSlice = this.getSlice(sliceName, isHistoric);
35
+ const newSlice = reducer.reduce(this, oldSlice, action);
36
+ if (newSlice !== oldSlice) {
37
+ this.updateSlice(sliceName, newSlice, isHistoric);
38
+ hasHistChange || (hasHistChange = isHistoric);
39
+ }
40
+ });
41
+ if (hasHistChange && !this._histClean) {
42
+ this._past.push(oldPresent);
43
+ this._future = [];
44
+ document.dispatchEvent(new CustomEvent("undoableAction", { detail: this }));
45
+ }
46
+ }
47
+ select(sliceName, selector) {
48
+ const isHistoric = this.isHistoric(sliceName);
49
+ return selector(this.getSlice(sliceName, isHistoric));
50
+ }
51
+ isHistoric(slice) {
52
+ return slice.startsWith("hist::");
53
+ }
54
+ updateSlice(name, slice, isHistoric) {
55
+ if (isHistoric) {
56
+ this._present = Object.assign(Object.assign({}, this._present), { [name]: slice });
57
+ if (slice === undefined) {
58
+ delete this._present[name];
59
+ }
60
+ }
61
+ else {
62
+ this._nonHist = Object.assign(Object.assign({}, this._nonHist), { [name]: slice });
63
+ if (slice === undefined) {
64
+ delete this._nonHist[name];
65
+ }
66
+ }
67
+ }
68
+ getSlice(name, isHistoric) {
69
+ return isHistoric ? this._present[name] : this._nonHist[name];
70
+ }
71
+ canUndo() {
72
+ return this._past.length > 0;
73
+ }
74
+ canRedo() {
75
+ return this._future.length > 0;
76
+ }
77
+ undo() {
78
+ if (this.canUndo()) {
79
+ this._future.push(this._present);
80
+ this._present = this._past.pop();
81
+ }
82
+ }
83
+ redo() {
84
+ if (this.canRedo()) {
85
+ this._past.push(this._present);
86
+ this._present = this._future.pop();
87
+ }
88
+ }
89
+ clearUndo() {
90
+ this._histClean = true;
91
+ this._past = [];
92
+ this._future = [];
93
+ }
94
+ persist() {
95
+ }
96
+ }
97
+ //# sourceMappingURL=StateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../../src/dataunit/state/StateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { StateAction } from "../StateManager.js";
2
+ export declare class DataUnitAction implements StateAction {
3
+ private _type;
4
+ private _payload;
5
+ constructor(type: Action, payload?: any);
6
+ get type(): Action;
7
+ get payload(): any;
8
+ }
9
+ export interface ExecutionContext {
10
+ before?: (action: DataUnitAction) => DataUnitAction;
11
+ after?: (action: DataUnitAction) => void;
12
+ }
13
+ export declare enum Action {
14
+ LOADING_METADATA = "loadingMetadata",
15
+ METADATA_LOADED = "metadataLoaded",
16
+ LOADING_DATA = "loadingData",
17
+ DATA_LOADED = "dataLoaded",
18
+ SAVING_DATA = "savingData",
19
+ DATA_SAVED = "dataSaved",
20
+ REMOVING_RECORDS = "removingRecords",
21
+ RECORDS_REMOVED = "recordsRemoved",
22
+ RECORDS_ADDED = "recordsAdded",
23
+ RECORDS_COPIED = "recordsCopied",
24
+ CHANGING_DATA = "changingData",
25
+ WAITING_CHANGE_CANCELED = "waitingChangeCanceled",
26
+ DATA_CHANGED = "dataChanged",
27
+ DATA_RESOLVED = "dataResolved",
28
+ EDITION_CANCELED = "editionCanceled",
29
+ CHANGE_UNDONE = "changeUndone",
30
+ CHANGE_REDONE = "changeRedone",
31
+ SELECTION_CHANGED = "selectionChanged",
32
+ NEXT_SELECTED = "nextSelected",
33
+ PREVIOUS_SELECTED = "previousSelected",
34
+ STATE_CHANGED = "stateChanged",
35
+ LOADING_RECORD = "loadingRecord",
36
+ RECORD_LOADED = "recordLoaded",
37
+ CHILD_CHANGED = "childChanged",
38
+ FIELD_INVALIDATED = "fieldInvalidated",
39
+ INVALIDATE_CLEAN = "invalidateClean"
40
+ }
@@ -0,0 +1,42 @@
1
+ export class DataUnitAction {
2
+ constructor(type, payload) {
3
+ this._type = type;
4
+ this._payload = payload;
5
+ }
6
+ get type() {
7
+ return this._type;
8
+ }
9
+ get payload() {
10
+ return this._payload;
11
+ }
12
+ }
13
+ export var Action;
14
+ (function (Action) {
15
+ Action["LOADING_METADATA"] = "loadingMetadata";
16
+ Action["METADATA_LOADED"] = "metadataLoaded";
17
+ Action["LOADING_DATA"] = "loadingData";
18
+ Action["DATA_LOADED"] = "dataLoaded";
19
+ Action["SAVING_DATA"] = "savingData";
20
+ Action["DATA_SAVED"] = "dataSaved";
21
+ Action["REMOVING_RECORDS"] = "removingRecords";
22
+ Action["RECORDS_REMOVED"] = "recordsRemoved";
23
+ Action["RECORDS_ADDED"] = "recordsAdded";
24
+ Action["RECORDS_COPIED"] = "recordsCopied";
25
+ Action["CHANGING_DATA"] = "changingData";
26
+ Action["WAITING_CHANGE_CANCELED"] = "waitingChangeCanceled";
27
+ Action["DATA_CHANGED"] = "dataChanged";
28
+ Action["DATA_RESOLVED"] = "dataResolved";
29
+ Action["EDITION_CANCELED"] = "editionCanceled";
30
+ Action["CHANGE_UNDONE"] = "changeUndone";
31
+ Action["CHANGE_REDONE"] = "changeRedone";
32
+ Action["SELECTION_CHANGED"] = "selectionChanged";
33
+ Action["NEXT_SELECTED"] = "nextSelected";
34
+ Action["PREVIOUS_SELECTED"] = "previousSelected";
35
+ Action["STATE_CHANGED"] = "stateChanged";
36
+ Action["LOADING_RECORD"] = "loadingRecord";
37
+ Action["RECORD_LOADED"] = "recordLoaded";
38
+ Action["CHILD_CHANGED"] = "childChanged";
39
+ Action["FIELD_INVALIDATED"] = "fieldInvalidated";
40
+ Action["INVALIDATE_CLEAN"] = "invalidateClean";
41
+ })(Action || (Action = {}));
42
+ //# sourceMappingURL=DataUnitAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataUnitAction.js","sourceRoot":"","sources":["../../../../src/dataunit/state/action/DataUnitAction.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IAKvB,YAAY,IAAY,EAAE,OAAY;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAMD,MAAM,CAAN,IAAY,MAwCX;AAxCD,WAAY,MAAM;IAEd,8CAAoC,CAAA;IACpC,4CAAkC,CAAA;IAElC,sCAA4B,CAAA;IAC5B,oCAA0B,CAAA;IAE1B,oCAA0B,CAAA;IAC1B,kCAAwB,CAAA;IAExB,8CAAoC,CAAA;IACpC,4CAAkC,CAAA;IAElC,wCAA8B,CAAA;IAC9B,0CAAgC,CAAA;IAEhC,wCAA8B,CAAA;IAC9B,2DAAiD,CAAA;IACjD,sCAA4B,CAAA;IAC5B,wCAA8B,CAAA;IAE9B,8CAAoC,CAAA;IACpC,wCAA8B,CAAA;IAC9B,wCAA8B,CAAA;IAE9B,gDAAsC,CAAA;IACtC,wCAA8B,CAAA;IAC9B,gDAAsC,CAAA;IAEtC,wCAA8B,CAAA;IAE9B,0CAAgC,CAAA;IAChC,wCAA8B,CAAA;IAE9B,wCAA8B,CAAA;IAE9B,gDAAsC,CAAA;IACtC,8CAAoC,CAAA;AAExC,CAAC,EAxCW,MAAM,KAAN,MAAM,QAwCjB"}
@@ -0,0 +1,12 @@
1
+ import { ActionReducer, StateAction } from "../StateManager.js";
2
+ import StateManager from "../StateManager.js";
3
+ import { Record } from "../../DataUnit.js";
4
+ declare class AddedRecordsReducerImpl implements ActionReducer {
5
+ sliceName: string;
6
+ reduce(_stateManager: StateManager, currentState: Array<Record>, action: StateAction): Array<Record> | undefined;
7
+ }
8
+ export declare const AddedRecordsReducer: AddedRecordsReducerImpl;
9
+ export declare const getAddedRecords: (stateManager: StateManager) => Array<Record>;
10
+ export declare const prepareAddedRecordId: (stateManager: StateManager, source: Array<any>, parentRecordId?: string) => Array<Record>;
11
+ export declare const prepareCopiedRecord: (stateManager: StateManager, source: Array<Record>, parentRecordId?: string) => Array<Record>;
12
+ export {};
@@ -0,0 +1,30 @@
1
+ import { Action } from "../action/DataUnitAction.js";
2
+ class AddedRecordsReducerImpl {
3
+ constructor() {
4
+ this.sliceName = "hist::addedRecords";
5
+ }
6
+ reduce(_stateManager, currentState, action) {
7
+ switch (action.type) {
8
+ case Action.RECORDS_ADDED:
9
+ case Action.RECORDS_COPIED:
10
+ return (currentState || []).concat(action.payload);
11
+ case Action.DATA_SAVED:
12
+ case Action.EDITION_CANCELED:
13
+ return undefined;
14
+ }
15
+ return currentState;
16
+ }
17
+ }
18
+ export const AddedRecordsReducer = new AddedRecordsReducerImpl();
19
+ export const getAddedRecords = (stateManager) => {
20
+ return stateManager.select(AddedRecordsReducer.sliceName, (state) => state);
21
+ };
22
+ export const prepareAddedRecordId = (stateManager, source, parentRecordId) => {
23
+ let index = (getAddedRecords(stateManager) || []).length;
24
+ return source.map(item => (Object.assign(Object.assign(Object.assign({}, item), { __record__id__: `NEW_${index++}` }), (parentRecordId && { __parent__record__id__: parentRecordId }))));
25
+ };
26
+ export const prepareCopiedRecord = (stateManager, source, parentRecordId) => {
27
+ let index = (getAddedRecords(stateManager) || []).length;
28
+ return source.map(item => (Object.assign(Object.assign(Object.assign(Object.assign({}, item), { __record__id__: "NEW_" + (index++) }), (parentRecordId && { __parent__record__id__: parentRecordId })), { __record__source__id__: item.__record__id__, __copy__: true })));
29
+ };
30
+ //# sourceMappingURL=AddedRecordsSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddedRecordsSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/AddedRecordsSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAIrD,MAAM,uBAAuB;IAA7B;QAEW,cAAS,GAAW,oBAAoB,CAAC;IAapD,CAAC;IAXU,MAAM,CAAC,aAA0B,EAAE,YAA2B,EAAE,MAAmB;QACtF,QAAO,MAAM,CAAC,IAAI,EAAC;YACf,KAAK,MAAM,CAAC,aAAa,CAAC;YAC1B,KAAK,MAAM,CAAC,cAAc;gBACtB,OAAO,CAAC,YAAY,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,UAAU,CAAC;YACvB,KAAK,MAAM,CAAC,gBAAgB;gBACxB,OAAO,SAAS,CAAC;SACxB;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,YAA0B,EAAiB,EAAE;IACzE,OAAO,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAA0B,EAAE,MAAkB,EAAE,cAAuB,EAAiB,EAAE;IAC3H,IAAI,KAAK,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,+CACnB,IAAI,KACP,cAAc,EAAE,OAAO,KAAK,EAAE,EAAE,KAC7B,CAAC,cAAc,IAAI,EAAE,sBAAsB,EAAE,cAAc,EAAE,CAAC,EACnE,CAAC,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAA0B,EAAE,MAAqB,EAAE,cAAuB,EAAiB,EAAE;IAC7H,IAAI,KAAK,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,6DACnB,IAAI,KACP,cAAc,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,KAC/B,CAAC,cAAc,IAAI,EAAE,sBAAsB,EAAE,cAAc,EAAE,CAAC,KACjE,sBAAsB,EAAE,IAAI,CAAC,cAAc,EAC3C,QAAQ,EAAE,IAAI,IAAE,CACnB,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ActionReducer, StateAction } from "../StateManager.js";
2
+ import StateManager from "../StateManager.js";
3
+ import { Change } from "../../DataUnit.js";
4
+ declare class ChangesReducerImpl implements ActionReducer {
5
+ sliceName: string;
6
+ reduce(stateManager: StateManager, currentState: Map<string, any>, action: StateAction): Map<string, any> | undefined;
7
+ }
8
+ export declare const ChangesReducer: ChangesReducerImpl;
9
+ export declare const getChanges: (stateManager: StateManager) => Map<string, any>;
10
+ export declare const isDirty: (stateManager: StateManager) => boolean;
11
+ export declare const hasDirtyRecords: (stateManager: StateManager) => boolean;
12
+ export declare const getChangesToSave: (dataUnit: string, stateManager: StateManager) => Array<Change>;
13
+ export {};
@@ -0,0 +1,105 @@
1
+ import { Action } from "../action/DataUnitAction.js";
2
+ import { getRemovedRecords } from "./RemovedRecordsSlice.js";
3
+ import { getAddedRecords } from "./AddedRecordsSlice.js";
4
+ import { Change, ChangeOperation } from "../../DataUnit.js";
5
+ import { getWaitingChanges } from "./WaitingChangesSlice.js";
6
+ import { getSelectionRecords } from './SnapshotSlice.js';
7
+ class ChangesReducerImpl {
8
+ constructor() {
9
+ this.sliceName = "hist::changes";
10
+ }
11
+ reduce(stateManager, currentState, action) {
12
+ var _a;
13
+ switch (action.type) {
14
+ case Action.RECORDS_COPIED:
15
+ const records = action.payload;
16
+ const changes = new Map(getChanges(stateManager));
17
+ records.forEach(r => {
18
+ const rChanges = Object.assign(Object.assign({}, changes.get(r.__record__id__)), r);
19
+ delete rChanges.__old__id__;
20
+ delete rChanges.__record__id__;
21
+ delete rChanges.__parent__record__id__;
22
+ delete rChanges.__record__source__id__;
23
+ delete rChanges.__record__label__;
24
+ delete rChanges.__copy__;
25
+ delete rChanges.__owner__dataunit__name__;
26
+ changes.set(r.__record__id__, rChanges);
27
+ });
28
+ return changes;
29
+ case Action.DATA_CHANGED:
30
+ const selection = action.payload.records || ((_a = getSelectionRecords(stateManager)) === null || _a === void 0 ? void 0 : _a.map(record => record.__record__id__));
31
+ if (selection) {
32
+ const newState = new Map(currentState);
33
+ selection.forEach(recordId => {
34
+ const newChanges = Object.assign(Object.assign({}, newState.get(recordId)), action.payload);
35
+ delete newChanges.records;
36
+ newState.set(recordId, newChanges);
37
+ });
38
+ return newState;
39
+ }
40
+ return currentState;
41
+ case Action.DATA_SAVED:
42
+ case Action.EDITION_CANCELED:
43
+ return undefined;
44
+ }
45
+ return currentState;
46
+ }
47
+ }
48
+ export const ChangesReducer = new ChangesReducerImpl();
49
+ export const getChanges = (stateManager) => {
50
+ return stateManager.select(ChangesReducer.sliceName, (state) => state);
51
+ };
52
+ export const isDirty = (stateManager) => {
53
+ if (getAddedRecords(stateManager) !== undefined) {
54
+ return true;
55
+ }
56
+ if (getRemovedRecords(stateManager) !== undefined) {
57
+ return true;
58
+ }
59
+ return hasDirtyRecords(stateManager);
60
+ };
61
+ export const hasDirtyRecords = (stateManager) => {
62
+ if (getWaitingChanges(stateManager) !== undefined) {
63
+ return true;
64
+ }
65
+ return getChanges(stateManager) !== undefined;
66
+ };
67
+ export const getChangesToSave = (dataUnit, stateManager) => {
68
+ const result = [];
69
+ const changes = getChanges(stateManager);
70
+ const records = getSelectionRecords(stateManager);
71
+ records === null || records === void 0 ? void 0 : records.forEach(r => {
72
+ if (changes) {
73
+ const c = changes.get(r.__record__id__);
74
+ if (c) {
75
+ result.push(new Change(dataUnit, r, c, ChangeOperation.UPDATE, r.__record__source__id__));
76
+ }
77
+ }
78
+ });
79
+ const addedRecords = getAddedRecords(stateManager);
80
+ if (addedRecords) {
81
+ addedRecords.forEach(r => {
82
+ const operation = r.__copy__ ? ChangeOperation.COPY : ChangeOperation.INSERT;
83
+ const changedFields = Object.assign({}, changes === null || changes === void 0 ? void 0 : changes.get(r.__record__id__));
84
+ if (operation === ChangeOperation.INSERT) {
85
+ Object.keys(r).forEach(fieldName => {
86
+ var _a;
87
+ if (!fieldName.startsWith("__") && !((_a = Object.keys(changedFields)) === null || _a === void 0 ? void 0 : _a.includes(fieldName))) {
88
+ changedFields[fieldName] = r[fieldName];
89
+ }
90
+ });
91
+ }
92
+ result.push(new Change(dataUnit, r, changedFields, operation, r.__record__source__id__));
93
+ });
94
+ }
95
+ const removedRecords = getRemovedRecords(stateManager);
96
+ const recordsById = {};
97
+ records === null || records === void 0 ? void 0 : records.forEach(r => recordsById[r.__record__id__] = r);
98
+ if (removedRecords) {
99
+ removedRecords.forEach(id => {
100
+ result.push(new Change(dataUnit, recordsById[id], undefined, ChangeOperation.DELETE));
101
+ });
102
+ }
103
+ return result;
104
+ };
105
+ //# sourceMappingURL=ChangesSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangesSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/ChangesSlice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ActionReducer, StateAction } from "../StateManager.js";
2
+ import StateManager from "../StateManager.js";
3
+ declare class InvalidFieldsReducerImpl implements ActionReducer {
4
+ sliceName: string;
5
+ reduce(_stateManager: StateManager, currentState: Map<string, Map<string, string>>, action: StateAction): Map<string, Map<string, string>> | undefined;
6
+ }
7
+ export declare const InvalidFieldsReducer: InvalidFieldsReducerImpl;
8
+ export declare const getInvalidFields: (stateManager: StateManager) => Map<string, Map<string, string>>;
9
+ export declare const getInvalidFieldMessage: (stateManager: StateManager, fieldName: string, recordId: string) => string | undefined;
10
+ export {};
@@ -0,0 +1,66 @@
1
+ import { Action } from "../action/DataUnitAction.js";
2
+ class InvalidFieldsReducerImpl {
3
+ constructor() {
4
+ this.sliceName = "hist::invalidFields";
5
+ }
6
+ reduce(_stateManager, currentState, action) {
7
+ switch (action.type) {
8
+ case Action.FIELD_INVALIDATED:
9
+ return makeInvalid(currentState, action.payload);
10
+ case Action.INVALIDATE_CLEAN:
11
+ return clearRecord(currentState, action.payload);
12
+ }
13
+ return currentState;
14
+ }
15
+ }
16
+ export const InvalidFieldsReducer = new InvalidFieldsReducerImpl();
17
+ export const getInvalidFields = (stateManager) => {
18
+ return stateManager.select(InvalidFieldsReducer.sliceName, (state) => state);
19
+ };
20
+ export const getInvalidFieldMessage = (stateManager, fieldName, recordId) => {
21
+ const invalidFields = getInvalidFields(stateManager);
22
+ if (invalidFields) {
23
+ const recordInvalidFields = invalidFields.get(recordId);
24
+ if (recordInvalidFields) {
25
+ return recordInvalidFields.get(fieldName);
26
+ }
27
+ }
28
+ return undefined;
29
+ };
30
+ const clearRecord = (currentState, payload) => {
31
+ const { recordId, fieldName } = payload;
32
+ if (recordId == undefined) {
33
+ return undefined;
34
+ }
35
+ if (currentState) {
36
+ const recordInvalidFields = currentState.get(recordId);
37
+ if (recordInvalidFields) {
38
+ const newState = new Map(currentState);
39
+ if (fieldName == undefined) {
40
+ newState.delete(recordId);
41
+ }
42
+ else {
43
+ const newRecorcInvalidFields = new Map(recordInvalidFields);
44
+ newRecorcInvalidFields.delete(fieldName);
45
+ if (newRecorcInvalidFields.size > 0) {
46
+ newState.set(recordId, newRecorcInvalidFields);
47
+ }
48
+ else {
49
+ newState.delete(recordId);
50
+ }
51
+ return newState;
52
+ }
53
+ }
54
+ return currentState;
55
+ }
56
+ return undefined;
57
+ };
58
+ const makeInvalid = (currentState, payload) => {
59
+ const { recordId, message, fieldName } = payload;
60
+ const recordInvalidFields = new Map(currentState === null || currentState === void 0 ? void 0 : currentState.get(recordId));
61
+ recordInvalidFields.set(fieldName, message);
62
+ const newState = new Map(currentState);
63
+ newState.set(recordId, recordInvalidFields);
64
+ return newState;
65
+ };
66
+ //# sourceMappingURL=InvalidFieldsSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidFieldsSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/InvalidFieldsSlice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { LoadDataRequest } from "../../loading/LoadDataRequest.js";
2
+ import { PaginationInfo } from "../../loading/PaginationInfo.js";
3
+ import StateManager, { ActionReducer, StateAction } from "../StateManager.js";
4
+ declare class LoadingControlReducerImpl implements ActionReducer {
5
+ sliceName: string;
6
+ reduce(stateManager: StateManager, currentState: LoadingControlState, action: StateAction): LoadingControlState;
7
+ }
8
+ export declare const LoadingControlReducer: LoadingControlReducerImpl;
9
+ export declare const getPaginationInfo: (stateManager: StateManager) => PaginationInfo | undefined;
10
+ export declare const getCurrentRequest: (stateManager: StateManager) => LoadDataRequest | undefined;
11
+ export declare const getCurrentPage: (stateManager: StateManager) => number;
12
+ export declare const getLastPage: (stateManager: StateManager, pageSize: number) => number;
13
+ export declare const hasMorePages: (stateManager: StateManager) => boolean;
14
+ export declare const hasPreviousPages: (stateManager: StateManager) => boolean;
15
+ interface LoadingControlState {
16
+ lastRequest: LoadDataRequest;
17
+ paginationInfo: PaginationInfo;
18
+ }
19
+ export {};
@@ -0,0 +1,45 @@
1
+ import { Action } from "../action/DataUnitAction.js";
2
+ class LoadingControlReducerImpl {
3
+ constructor() {
4
+ this.sliceName = "loadingControl";
5
+ }
6
+ reduce(stateManager, currentState, action) {
7
+ var _a;
8
+ switch (action.type) {
9
+ case Action.LOADING_DATA:
10
+ return Object.assign(Object.assign({}, currentState), { lastRequest: action.payload });
11
+ case Action.DATA_LOADED:
12
+ return Object.assign(Object.assign({}, currentState), { paginationInfo: (_a = action.payload) === null || _a === void 0 ? void 0 : _a.paginationInfo });
13
+ }
14
+ return currentState;
15
+ }
16
+ }
17
+ export const LoadingControlReducer = new LoadingControlReducerImpl();
18
+ export const getPaginationInfo = (stateManager) => {
19
+ const state = stateManager.select(LoadingControlReducer.sliceName, (state) => state);
20
+ return state ? state.paginationInfo : undefined;
21
+ };
22
+ export const getCurrentRequest = (stateManager) => {
23
+ const state = stateManager.select(LoadingControlReducer.sliceName, (state) => state);
24
+ return state ? state.lastRequest : undefined;
25
+ };
26
+ export const getCurrentPage = (stateManager) => {
27
+ const paginationInfo = getPaginationInfo(stateManager);
28
+ return paginationInfo ? paginationInfo.currentPage : 0;
29
+ };
30
+ export const getLastPage = (stateManager, pageSize) => {
31
+ const paginationInfo = getPaginationInfo(stateManager);
32
+ return paginationInfo ? Math.ceil(paginationInfo.total / pageSize) : 0;
33
+ };
34
+ export const hasMorePages = (stateManager) => {
35
+ const paginationInfo = getPaginationInfo(stateManager);
36
+ if (paginationInfo && paginationInfo.hasMore) {
37
+ return true;
38
+ }
39
+ return false;
40
+ };
41
+ export const hasPreviousPages = (stateManager) => {
42
+ const paginationInfo = getPaginationInfo(stateManager);
43
+ return paginationInfo ? paginationInfo.currentPage > 0 : false;
44
+ };
45
+ //# sourceMappingURL=LoadingControlSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingControlSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/LoadingControlSlice.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,MAAM,yBAAyB;IAA/B;QAEW,cAAS,GAAW,gBAAgB,CAAC;IAWhD,CAAC;IATU,MAAM,CAAC,YAA0B,EAAE,YAAiC,EAAE,MAAmB;;QAC5F,QAAQ,MAAM,CAAC,IAAI,EAAE;YACjB,KAAK,MAAM,CAAC,YAAY;gBACpB,uCAAW,YAAY,KAAE,WAAW,EAAE,MAAM,CAAC,OAAO,IAAE;YAC1D,KAAK,MAAM,CAAC,WAAW;gBACnB,uCAAW,YAAY,KAAE,cAAc,EAAE,MAAA,MAAM,CAAC,OAAO,0CAAE,cAAc,IAAE;SAChF;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAErE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAA0B,EAA4B,EAAE;IACtF,MAAM,KAAK,GAAwB,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,KAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/H,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAA0B,EAA6B,EAAE;IACvF,MAAM,KAAK,GAAwB,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,KAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/H,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,YAA0B,EAAU,EAAE;IACjE,MAAM,cAAc,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAA0B,EAAE,QAAgB,EAAU,EAAE;IAChF,MAAM,cAAc,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,YAA0B,EAAW,EAAE;IAChE,MAAM,cAAc,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvD,IAAG,cAAc,IAAI,cAAc,CAAC,OAAO,EAAC;QACxC,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,YAA0B,EAAW,EAAE;IACpE,MAAM,cAAc,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACnE,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { ActionReducer, StateAction } from "../StateManager.js";
2
+ import StateManager from "../StateManager.js";
3
+ import { Record } from "../../DataUnit.js";
4
+ declare class RecordsReducerImpl implements ActionReducer {
5
+ sliceName: string;
6
+ reduce(stateManager: StateManager, currentState: Array<Record>, action: StateAction): Array<Record>;
7
+ private isNewRecord;
8
+ }
9
+ export declare const RecordsReducer: RecordsReducerImpl;
10
+ export declare const getRecords: (stateManager: StateManager) => Array<Record>;
11
+ export {};