@sankhyalabs/sankhyablocks 1.3.34 → 1.4.0-beta.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 (239) hide show
  1. package/dist/cjs/SnkMessageBuilder-d8215915.js +221 -0
  2. package/dist/cjs/app-globals-3a1e7e63.js +5 -0
  3. package/dist/cjs/css-shim-b8158822.js +6 -0
  4. package/dist/cjs/dom-36862b77.js +75 -0
  5. package/dist/cjs/filter-item-type.enum-3daf58d3.js +16 -0
  6. package/dist/cjs/index-84fe3b86.js +20 -0
  7. package/dist/cjs/index-93965c41.js +141 -0
  8. package/dist/cjs/index-b0b676c5.js +3298 -0
  9. package/dist/cjs/index-e90ae303.js +2408 -0
  10. package/dist/cjs/loader.cjs.js +19 -3
  11. package/dist/cjs/sankhyablocks.cjs.js +117 -5
  12. package/dist/cjs/shadow-css-346c0795.js +389 -0
  13. package/dist/cjs/snk-application.cjs.entry.js +744 -174
  14. package/dist/cjs/snk-crud.cjs.entry.js +70 -0
  15. package/dist/cjs/snk-data-unit.cjs.entry.js +272 -0
  16. package/dist/cjs/snk-filter-bar.cjs.entry.js +466 -0
  17. package/dist/cjs/snk-filter-binary-select.cjs.entry.js +47 -0
  18. package/dist/cjs/snk-filter-detail.cjs.entry.js +84 -0
  19. package/dist/cjs/snk-filter-item.cjs.entry.js +177 -0
  20. package/dist/cjs/snk-filter-list.cjs.entry.js +91 -0
  21. package/dist/cjs/snk-filter-modal.cjs.entry.js +37 -0
  22. package/dist/cjs/snk-filter-multi-select.cjs.entry.js +23 -0
  23. package/dist/cjs/snk-filter-number.cjs.entry.js +24 -0
  24. package/dist/cjs/snk-filter-period.cjs.entry.js +37 -0
  25. package/dist/cjs/snk-filter-personalized.cjs.entry.js +89 -0
  26. package/dist/cjs/snk-filter-search.cjs.entry.js +44 -0
  27. package/dist/cjs/snk-filter-text.cjs.entry.js +22 -0
  28. package/dist/cjs/snk-form.cjs.entry.js +133 -0
  29. package/dist/cjs/snk-grid.cjs.entry.js +79 -0
  30. package/dist/cjs/snk-pesquisa.cjs.entry.js +5 -5
  31. package/dist/cjs/snk-taskbar.cjs.entry.js +160 -0
  32. package/dist/cjs/taskbar-elements-283c737e.js +93 -0
  33. package/dist/cjs/taskbar-processor-6bd0d35c.js +47 -0
  34. package/dist/cjs/teste-pesquisa.cjs.entry.js +5 -5
  35. package/dist/collection/collection-manifest.json +19 -2
  36. package/dist/collection/components/snk-application/errorhandler/snk-error-handler.js +9 -2
  37. package/dist/collection/components/snk-application/snk-application.js +1179 -627
  38. package/dist/collection/components/snk-crud/snk-crud.css +6 -0
  39. package/dist/collection/components/snk-crud/snk-crud.js +201 -0
  40. package/dist/collection/components/snk-data-unit/snk-data-unit.css +6 -0
  41. package/dist/collection/components/snk-data-unit/snk-data-unit.js +517 -0
  42. package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +100 -0
  43. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.js +88 -0
  44. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +64 -0
  45. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +65 -0
  46. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-period.js +78 -0
  47. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.js +161 -0
  48. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +118 -0
  49. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-text.js +63 -0
  50. package/dist/collection/components/snk-filter-bar/filter-item/filter-item-type.enum.js +12 -0
  51. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +153 -0
  52. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +278 -0
  53. package/dist/collection/components/snk-filter-bar/filter-list/snk-filter-list.js +233 -0
  54. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +196 -0
  55. package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +136 -0
  56. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +452 -0
  57. package/dist/collection/components/snk-form/snk-form.css +34 -0
  58. package/dist/collection/components/snk-form/snk-form.js +258 -0
  59. package/dist/collection/components/snk-grid/snk-grid.css +18 -0
  60. package/dist/collection/components/snk-grid/snk-grid.js +203 -0
  61. package/dist/collection/components/snk-pesquisa/snk-pesquisa.js +80 -79
  62. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +86 -0
  63. package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +43 -0
  64. package/dist/collection/components/snk-taskbar/snk-taskbar.css +3 -0
  65. package/dist/collection/components/snk-taskbar/snk-taskbar.js +307 -0
  66. package/dist/collection/components/teste-pesquisa/teste-pesquisa.js +12 -9
  67. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +37 -12
  68. package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +52 -21
  69. package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +62 -0
  70. package/dist/collection/lib/http/data-fetcher/fetchers/grid-config-fetcher.js +4 -3
  71. package/dist/collection/lib/http/data-fetcher/fetchers/totals-fetcher.js +47 -0
  72. package/dist/collection/lib/index.js +1 -0
  73. package/dist/collection/lib/message/SnkMessageBuilder.js +121 -0
  74. package/dist/collection/lib/message/resources/snk-data-unit.msg.js +23 -0
  75. package/dist/collection/lib/message/resources/snk-filter-bar.msg.js +30 -0
  76. package/dist/collection/lib/message/resources/snk-form.msg.js +10 -0
  77. package/dist/collection/lib/message/resources/snk-taskbar.msg.js +17 -0
  78. package/dist/components/SnkMessageBuilder.js +199 -0
  79. package/dist/components/filter-item-type.enum.js +14 -0
  80. package/dist/components/index.d.ts +20 -5
  81. package/dist/components/index.js +24 -0
  82. package/dist/components/index2.js +2394 -0
  83. package/dist/components/index3.js +139 -0
  84. package/dist/components/snk-application2.js +727 -146
  85. package/dist/components/snk-crud.d.ts +11 -0
  86. package/dist/components/snk-crud.js +139 -0
  87. package/dist/components/snk-data-unit.d.ts +11 -0
  88. package/dist/components/snk-data-unit.js +294 -0
  89. package/dist/components/snk-filter-bar.d.ts +11 -0
  90. package/dist/components/snk-filter-bar.js +6 -0
  91. package/dist/components/snk-filter-bar2.js +504 -0
  92. package/dist/components/snk-filter-binary-select.d.ts +11 -0
  93. package/dist/components/snk-filter-binary-select.js +63 -0
  94. package/dist/components/snk-filter-detail.d.ts +11 -0
  95. package/dist/components/snk-filter-detail.js +6 -0
  96. package/dist/components/snk-filter-detail2.js +98 -0
  97. package/dist/components/snk-filter-item.d.ts +11 -0
  98. package/dist/components/snk-filter-item.js +6 -0
  99. package/dist/components/snk-filter-item2.js +198 -0
  100. package/dist/components/snk-filter-list.d.ts +11 -0
  101. package/dist/components/snk-filter-list.js +6 -0
  102. package/dist/components/snk-filter-list2.js +111 -0
  103. package/dist/components/snk-filter-modal.d.ts +11 -0
  104. package/dist/components/snk-filter-modal.js +6 -0
  105. package/dist/components/snk-filter-modal2.js +73 -0
  106. package/dist/components/snk-filter-multi-select.d.ts +11 -0
  107. package/dist/components/snk-filter-multi-select.js +39 -0
  108. package/dist/components/snk-filter-number.d.ts +11 -0
  109. package/dist/components/snk-filter-number.js +40 -0
  110. package/dist/components/snk-filter-period.d.ts +11 -0
  111. package/dist/components/snk-filter-period.js +53 -0
  112. package/dist/components/snk-filter-personalized.d.ts +11 -0
  113. package/dist/components/snk-filter-personalized.js +107 -0
  114. package/dist/components/snk-filter-search.d.ts +11 -0
  115. package/dist/components/snk-filter-search.js +62 -0
  116. package/dist/components/snk-filter-text.d.ts +11 -0
  117. package/dist/components/snk-filter-text.js +38 -0
  118. package/dist/components/snk-form.d.ts +11 -0
  119. package/dist/components/snk-form.js +6 -0
  120. package/dist/components/snk-form2.js +159 -0
  121. package/dist/components/snk-grid.d.ts +11 -0
  122. package/dist/components/snk-grid.js +6 -0
  123. package/dist/components/snk-grid2.js +133 -0
  124. package/dist/components/snk-pesquisa2.js +1 -1
  125. package/dist/components/snk-taskbar.d.ts +11 -0
  126. package/dist/components/snk-taskbar.js +6 -0
  127. package/dist/components/snk-taskbar2.js +264 -0
  128. package/dist/components/taskbar-processor.js +45 -0
  129. package/dist/components/teste-pesquisa.js +1 -1
  130. package/dist/esm/SnkMessageBuilder-35a20271.js +199 -0
  131. package/dist/esm/app-globals-0f993ce5.js +3 -0
  132. package/dist/esm/css-shim-b3f2ee8d.js +4 -0
  133. package/dist/esm/dom-665d6011.js +73 -0
  134. package/dist/esm/filter-item-type.enum-a79b2fa8.js +14 -0
  135. package/dist/esm/index-2b4d2d14.js +3262 -0
  136. package/dist/esm/index-5992b7e6.js +139 -0
  137. package/dist/esm/index-c683b2b0.js +2394 -0
  138. package/dist/esm/index-c71285cb.js +17 -0
  139. package/dist/esm/loader.js +19 -3
  140. package/dist/esm/polyfills/css-shim.js +1 -1
  141. package/dist/esm/sankhyablocks.js +117 -5
  142. package/dist/esm/shadow-css-b18e99d7.js +387 -0
  143. package/dist/esm/snk-application.entry.js +717 -147
  144. package/dist/esm/snk-crud.entry.js +66 -0
  145. package/dist/esm/snk-data-unit.entry.js +268 -0
  146. package/dist/esm/snk-filter-bar.entry.js +462 -0
  147. package/dist/esm/snk-filter-binary-select.entry.js +43 -0
  148. package/dist/esm/snk-filter-detail.entry.js +80 -0
  149. package/dist/esm/snk-filter-item.entry.js +173 -0
  150. package/dist/esm/snk-filter-list.entry.js +87 -0
  151. package/dist/esm/snk-filter-modal.entry.js +33 -0
  152. package/dist/esm/snk-filter-multi-select.entry.js +19 -0
  153. package/dist/esm/snk-filter-number.entry.js +20 -0
  154. package/dist/esm/snk-filter-period.entry.js +33 -0
  155. package/dist/esm/snk-filter-personalized.entry.js +85 -0
  156. package/dist/esm/snk-filter-search.entry.js +40 -0
  157. package/dist/esm/snk-filter-text.entry.js +18 -0
  158. package/dist/esm/snk-form.entry.js +129 -0
  159. package/dist/esm/snk-grid.entry.js +75 -0
  160. package/dist/esm/snk-pesquisa.entry.js +2 -2
  161. package/dist/esm/snk-taskbar.entry.js +156 -0
  162. package/dist/esm/taskbar-elements-35d64ff9.js +90 -0
  163. package/dist/esm/taskbar-processor-aa6772c9.js +45 -0
  164. package/dist/esm/teste-pesquisa.entry.js +2 -2
  165. package/dist/sankhyablocks/SnkMessageBuilder-35a20271.js +199 -0
  166. package/dist/sankhyablocks/app-globals-0f993ce5.js +3 -0
  167. package/dist/sankhyablocks/css-shim-b3f2ee8d.js +4 -0
  168. package/dist/sankhyablocks/dom-665d6011.js +73 -0
  169. package/dist/sankhyablocks/filter-item-type.enum-a79b2fa8.js +14 -0
  170. package/dist/sankhyablocks/index-2b4d2d14.js +3262 -0
  171. package/dist/sankhyablocks/index-5992b7e6.js +139 -0
  172. package/dist/sankhyablocks/index-c683b2b0.js +2394 -0
  173. package/dist/sankhyablocks/index-c71285cb.js +17 -0
  174. package/dist/sankhyablocks/index.esm.js +1 -0
  175. package/dist/sankhyablocks/sankhyablocks.esm.js +129 -1
  176. package/dist/sankhyablocks/shadow-css-b18e99d7.js +387 -0
  177. package/dist/sankhyablocks/snk-application.entry.js +8166 -0
  178. package/dist/sankhyablocks/snk-crud.entry.js +66 -0
  179. package/dist/sankhyablocks/snk-data-unit.entry.js +268 -0
  180. package/dist/sankhyablocks/snk-filter-bar.entry.js +462 -0
  181. package/dist/sankhyablocks/snk-filter-binary-select.entry.js +43 -0
  182. package/dist/sankhyablocks/snk-filter-detail.entry.js +80 -0
  183. package/dist/sankhyablocks/snk-filter-item.entry.js +173 -0
  184. package/dist/sankhyablocks/snk-filter-list.entry.js +87 -0
  185. package/dist/sankhyablocks/snk-filter-modal.entry.js +33 -0
  186. package/dist/sankhyablocks/snk-filter-multi-select.entry.js +19 -0
  187. package/dist/sankhyablocks/snk-filter-number.entry.js +20 -0
  188. package/dist/sankhyablocks/snk-filter-period.entry.js +33 -0
  189. package/dist/sankhyablocks/snk-filter-personalized.entry.js +85 -0
  190. package/dist/sankhyablocks/snk-filter-search.entry.js +40 -0
  191. package/dist/sankhyablocks/snk-filter-text.entry.js +18 -0
  192. package/dist/sankhyablocks/snk-form.entry.js +129 -0
  193. package/dist/sankhyablocks/snk-grid.entry.js +75 -0
  194. package/dist/sankhyablocks/snk-pesquisa.entry.js +311 -0
  195. package/dist/sankhyablocks/snk-taskbar.entry.js +156 -0
  196. package/dist/sankhyablocks/taskbar-elements-35d64ff9.js +90 -0
  197. package/dist/sankhyablocks/taskbar-processor-aa6772c9.js +45 -0
  198. package/dist/sankhyablocks/teste-pesquisa.entry.js +33 -0
  199. package/dist/types/components/snk-application/errorhandler/snk-error-handler.d.ts +1 -0
  200. package/dist/types/components/snk-application/snk-application.d.ts +149 -16
  201. package/dist/types/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.d.ts +4 -0
  202. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.d.ts +12 -0
  203. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.d.ts +7 -0
  204. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-number.d.ts +7 -0
  205. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-period.d.ts +14 -0
  206. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.d.ts +23 -0
  207. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +12 -0
  208. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-text.d.ts +7 -0
  209. package/dist/types/components/snk-filter-bar/filter-item/filter-item-type.enum.d.ts +11 -0
  210. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +16 -0
  211. package/dist/types/components/snk-filter-bar/filter-list/snk-filter-list.d.ts +40 -0
  212. package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +23 -0
  213. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +29 -0
  214. package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +12 -0
  215. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +84 -0
  216. package/dist/types/components.d.ts +744 -8
  217. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +7 -6
  218. package/dist/types/lib/http/data-fetcher/fetchers/dataunit-fetcher.d.ts +2 -0
  219. package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +6 -0
  220. package/dist/types/lib/http/data-fetcher/fetchers/grid-config-fetcher.d.ts +1 -1
  221. package/dist/types/lib/http/data-fetcher/fetchers/totals-fetcher.d.ts +8 -0
  222. package/dist/types/lib/index.d.ts +1 -0
  223. package/dist/types/lib/message/SnkMessageBuilder.d.ts +42 -0
  224. package/dist/types/lib/message/resources/snk-data-unit.msg.d.ts +2 -0
  225. package/dist/types/lib/message/resources/snk-filter-bar.msg.d.ts +2 -0
  226. package/dist/types/lib/message/resources/snk-form.msg.d.ts +2 -0
  227. package/dist/types/lib/message/resources/snk-taskbar.msg.d.ts +2 -0
  228. package/dist/types/stencil-public-runtime.d.ts +15 -4
  229. package/loader/package.json +1 -0
  230. package/package.json +5 -5
  231. package/react/components.d.ts +0 -2
  232. package/react/components.js +0 -2
  233. package/react/components.js.map +1 -1
  234. package/dist/cjs/index-1133bc2a.js +0 -1235
  235. package/dist/esm/index-ffda6382.js +0 -1208
  236. package/dist/sankhyablocks/p-2a7b4cb3.entry.js +0 -1
  237. package/dist/sankhyablocks/p-9520d78a.entry.js +0 -1
  238. package/dist/sankhyablocks/p-98e8490d.entry.js +0 -69
  239. package/dist/sankhyablocks/p-edcb9d8e.js +0 -2
@@ -1,9 +1,10 @@
1
- import { DataUnit, ChangeOperation, StringUtils, DataType, } from "@sankhyalabs/core";
2
- import { DataFetcher } from "../DataFetcher";
1
+ import { ChangeOperation, DataType, DataUnit, StringUtils } from "@sankhyalabs/core";
3
2
  import { gql } from "graphql-request";
3
+ import { DataFetcher } from "../DataFetcher";
4
4
  export default class DataUnitFetcher {
5
5
  constructor() {
6
6
  this.templateByQuery = new Map();
7
+ this._loadDataTimeout = {};
7
8
  this.buldTemplates();
8
9
  }
9
10
  buldTemplates() {
@@ -32,9 +33,9 @@ export default class DataUnitFetcher {
32
33
  }
33
34
  }
34
35
  }`);
35
- this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $filter: [InputFilter!] $sort: [InputSort!]) {
36
+ this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!]) {
36
37
  $queryAlias$: fetchDataUnit(name: $dataunit){
37
- data(limit: $limit offset: $offset filters: $filter sort: $sort){
38
+ data(limit: $limit offset: $offset filters: $filters sort: $sort){
38
39
  limit
39
40
  offset
40
41
  total
@@ -63,7 +64,7 @@ export default class DataUnitFetcher {
63
64
  getDataUnit(entityName, resourceID) {
64
65
  const dataUnit = new DataUnit(`dd://${entityName}/${resourceID}`);
65
66
  dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
66
- dataUnit.dataLoader = (dataUnit, page, sort, filters) => this.loadData(dataUnit, page, sort, filters);
67
+ dataUnit.dataLoader = (dataUnit, request) => this.loadData(dataUnit, request);
67
68
  dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
68
69
  dataUnit.removeLoader = (dataUnit, recordIds) => this.removeRecords(dataUnit, recordIds);
69
70
  return dataUnit;
@@ -100,25 +101,39 @@ export default class DataUnitFetcher {
100
101
  });
101
102
  });
102
103
  }
103
- loadData(dataUnit, page, sort, filter) {
104
+ loadData(dataUnit, request) {
105
+ const duName = dataUnit.name;
106
+ if (this._loadDataTimeout[duName]) {
107
+ clearTimeout(this._loadDataTimeout[duName]);
108
+ delete this._loadDataTimeout[duName];
109
+ }
104
110
  return new Promise((resolve, reject) => {
105
- var _a, _b, _c;
106
- const variables = { dataunit: dataUnit.name, sort, filter };
107
- if (page) {
108
- variables.limit = page.limit;
109
- variables.offset = page.offset;
110
- }
111
- if (!StringUtils.isEmpty((_a = page === null || page === void 0 ? void 0 : page.quickFilter) === null || _a === void 0 ? void 0 : _a.term)) {
111
+ this._loadDataTimeout[duName] = setTimeout(() => {
112
+ delete this._loadDataTimeout[duName];
113
+ this.doLoadData(dataUnit, request)
114
+ .then(result => resolve(result))
115
+ .catch(reason => reject(reason));
116
+ }, 200);
117
+ });
118
+ }
119
+ doLoadData(dataUnit, request) {
120
+ return new Promise((resolve, reject) => {
121
+ var _a;
122
+ const { sort, filters, limit, offset, quickFilter } = request;
123
+ const variables = { dataunit: dataUnit.name, sort, filters };
124
+ variables.limit = limit;
125
+ variables.offset = offset;
126
+ if (!StringUtils.isEmpty(quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.term)) {
112
127
  if (variables.filter === undefined) {
113
128
  variables.filter = [];
114
129
  }
115
130
  const quickFilterCriteria = {
116
131
  name: "__QUICK_FILTER__",
117
132
  expression: "__QUICK_FILTER__",
118
- params: [{ name: "term", dataType: DataType.TEXT, value: page.quickFilter.term }]
133
+ params: [{ name: "term", dataType: DataType.TEXT, value: quickFilter.term }]
119
134
  };
120
- if (((_c = (_b = page.quickFilter) === null || _b === void 0 ? void 0 : _b.fields) === null || _c === void 0 ? void 0 : _c.length) > 0) {
121
- quickFilterCriteria.params.push({ name: "fields", dataType: DataType.OBJECT, value: page.quickFilter.fields });
135
+ if (((_a = quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.fields) === null || _a === void 0 ? void 0 : _a.length) > 0) {
136
+ quickFilterCriteria.params.push({ name: "fields", dataType: DataType.OBJECT, value: quickFilter.fields });
122
137
  }
123
138
  variables.filter.push(quickFilterCriteria);
124
139
  }
@@ -128,16 +143,32 @@ export default class DataUnitFetcher {
128
143
  query: this.templateByQuery.get("fetchData"),
129
144
  })
130
145
  .then((resp) => {
131
- const pageResult = resp.data;
132
- const records = [];
133
- pageResult.records.forEach((responseRecord) => {
146
+ const { limit, offset, total, hasMore, records } = resp.data;
147
+ let paginationInfo;
148
+ if (limit) {
149
+ const firstRecord = total == 0 ? 0 : offset + 1;
150
+ const lastRecord = offset + Math.min(records.length, limit);
151
+ const currentPage = offset / limit;
152
+ paginationInfo = {
153
+ firstRecord,
154
+ lastRecord,
155
+ total,
156
+ currentPage,
157
+ hasMore
158
+ };
159
+ }
160
+ const processedRecords = [];
161
+ records.forEach((responseRecord) => {
134
162
  const duRecord = { __record__id__: responseRecord.id };
135
163
  responseRecord.fields.forEach(({ name, value }) => {
136
164
  duRecord[name] = dataUnit.valueFromString(name, value);
137
165
  });
138
- records.push(duRecord);
166
+ processedRecords.push(duRecord);
167
+ });
168
+ resolve({
169
+ paginationInfo,
170
+ records: processedRecords
139
171
  });
140
- resolve(Object.assign(Object.assign({}, pageResult), { records }));
141
172
  })
142
173
  .catch((error) => {
143
174
  reject(error);
@@ -0,0 +1,62 @@
1
+ import { ResourceFetcher } from "./resource-fetcher";
2
+ function normalizeValue(value) {
3
+ if (value == undefined) {
4
+ return value;
5
+ }
6
+ if (value instanceof Date) {
7
+ return value.toISOString();
8
+ }
9
+ if (typeof value === "object") {
10
+ if (value instanceof Array) {
11
+ return value.map(item => normalizeValue(item));
12
+ }
13
+ else {
14
+ const normalized = Object.assign({}, value);
15
+ Object.keys(value).forEach(prop => {
16
+ if (value[prop]) {
17
+ normalized[prop] = normalizeValue(value[prop]);
18
+ }
19
+ else {
20
+ delete normalized[prop];
21
+ }
22
+ });
23
+ return normalized;
24
+ }
25
+ }
26
+ return value;
27
+ }
28
+ export default class FilterBarConfigFetcher extends ResourceFetcher {
29
+ saveConfig(items, resourceID, configName) {
30
+ const state = items.map(item => {
31
+ const { id, value, fixed, visible } = item;
32
+ const stateItem = { id };
33
+ if (value) {
34
+ stateItem["value"] = normalizeValue(value);
35
+ }
36
+ if (fixed) {
37
+ stateItem["fixed"] = fixed;
38
+ }
39
+ if (visible) {
40
+ stateItem["visible"] = true;
41
+ }
42
+ return stateItem;
43
+ });
44
+ return this.saveResource(state, `cfg://filter/FilterBarState:${resourceID}/${configName}`);
45
+ }
46
+ getConfig(resourceID, configName) {
47
+ return new Promise((accept, reject) => {
48
+ this.loadResource(`cfg://filter/FilterBarState:${resourceID}/${configName}`)
49
+ .then((configAsString) => {
50
+ let fieldsList;
51
+ if (configAsString) {
52
+ const filterBarConfig = JSON.parse(configAsString);
53
+ fieldsList = filterBarConfig.items;
54
+ }
55
+ accept(fieldsList || []);
56
+ })
57
+ .catch((error) => {
58
+ reject(error);
59
+ });
60
+ });
61
+ }
62
+ }
@@ -4,15 +4,16 @@ export default class GridConfigFetcher extends ResourceFetcher {
4
4
  super(...arguments);
5
5
  this.GRID_CONFIG_VERSION = "V3:";
6
6
  }
7
- getConfig(resourceID) {
7
+ getConfig(_gridName, resourceID) {
8
8
  const completePath = `cfg://grid/${this.GRID_CONFIG_VERSION}${resourceID}`;
9
9
  return new Promise((resolve, reject) => {
10
10
  this.loadResource(completePath)
11
11
  .then(loadedResource => {
12
+ let config = undefined;
12
13
  if (loadedResource) {
13
- let config = JSON.parse(loadedResource);
14
- resolve(config);
14
+ config = JSON.parse(loadedResource);
15
15
  }
16
+ resolve(config);
16
17
  }).catch((error) => {
17
18
  reject(error);
18
19
  });
@@ -0,0 +1,47 @@
1
+ import { gql } from "graphql-request";
2
+ import { DataFetcher } from "../DataFetcher";
3
+ export class TotalsFetcher {
4
+ constructor() {
5
+ this.templateByQuery = new Map();
6
+ this.buldTemplates();
7
+ }
8
+ buldTemplates() {
9
+ this.templateByQuery.set("fetchTotals", gql `query($filters: [InputFilter!] $name: String!) {
10
+ $queryAlias$: fetchTotals(name: $name, filters: $filters ){
11
+ name
12
+ value
13
+ }
14
+ }`);
15
+ }
16
+ async getTotals(name, resourceID, filters) {
17
+ const path = `totals://${name}/${resourceID}`;
18
+ let variables = {
19
+ name: path,
20
+ filters: filters
21
+ };
22
+ return DataFetcher.get().callGraphQL({
23
+ values: variables,
24
+ query: this.templateByQuery.get("fetchTotals"),
25
+ });
26
+ }
27
+ fetchTotals(name, resourceID, filters = []) {
28
+ return new Promise((accept, reject) => {
29
+ this.getTotals(name, resourceID, filters)
30
+ .then((result) => {
31
+ if (result.length > 0) {
32
+ const totalsData = new Map();
33
+ result.forEach(total => {
34
+ totalsData.set(total.name, parseFloat(total.value));
35
+ });
36
+ accept(totalsData);
37
+ }
38
+ else {
39
+ reject(`Não foi possível recuperar os totalizadores`);
40
+ }
41
+ })
42
+ .catch((error) => {
43
+ reject(error);
44
+ });
45
+ });
46
+ }
47
+ }
@@ -0,0 +1 @@
1
+ export { DataFetcher } from './http/data-fetcher/DataFetcher';
@@ -0,0 +1,121 @@
1
+ import snkDataUnitMessages from "./resources/snk-data-unit.msg.js";
2
+ import snkFilterBarMessages from "./resources/snk-filter-bar.msg.js";
3
+ import snkFormMessages from "./resources/snk-form.msg.js";
4
+ import snkTaskbarMessages from "./resources/snk-taskbar.msg.js";
5
+ export class SnkMessageBuilder {
6
+ constructor() {
7
+ this._defaults = {
8
+ snkDataUnit: snkDataUnitMessages,
9
+ snkForm: snkFormMessages,
10
+ snkTaskbar: snkTaskbarMessages,
11
+ snkFilterBar: snkFilterBarMessages
12
+ };
13
+ this._currentOperation = OperationMap.CLEAN;
14
+ this.loadAppMessages().then((msgs) => {
15
+ this._appMessages = msgs;
16
+ }, error => {
17
+ console.info('O arquivo de mensagens personalizadas não foi encontrado no caminho /messages/appmessages.js', error);
18
+ });
19
+ }
20
+ /**
21
+ * Existem mensagens sensíveis a operação. Por exemplo, a mensagem
22
+ * de inclusão pode ser diferente da mensagem de alteração do mesmo
23
+ * recurso. Para isso "currentOperation" pode variar de acordo com
24
+ * OperationMap.
25
+ */
26
+ set currentOperation(op) {
27
+ this._currentOperation = op;
28
+ }
29
+ /**
30
+ * Método usado para se obter mensagens, respeitando o padrão do sistema
31
+ * ou as mensagens específicas de cada tela
32
+ *
33
+ * @param key Chave usada para obter mensagens. Deve-se usar o separador "."
34
+ * alcançar diversos níveis.
35
+ * @param params Quando a mensagem possui o padrão {{NOME}} as ocorrências
36
+ * serão substituidas pelo respectivo valor do param.
37
+ * @returns A mensagem formatada.
38
+ */
39
+ getMessage(key, params) {
40
+ if (key == undefined) {
41
+ return undefined;
42
+ }
43
+ var parts = key.split(".");
44
+ let msg = this.resolveMessage(parts, this._appMessages);
45
+ if (msg == undefined) {
46
+ msg = this.resolveMessage(parts, this._defaults);
47
+ }
48
+ if (this.customMessageBuilder) {
49
+ const result = this.customMessageBuilder(key, msg, params);
50
+ msg = result.message;
51
+ params = result.params;
52
+ }
53
+ return this.postProcess(msg, params);
54
+ }
55
+ resolveMessage(keys, object) {
56
+ if (object == undefined) {
57
+ return undefined;
58
+ }
59
+ const key = keys[0];
60
+ const result = object[key];
61
+ if (result) {
62
+ if (this.isOperationSensitive(result)) {
63
+ return result[this._currentOperation];
64
+ }
65
+ else {
66
+ const isLeaf = keys.length === 1 ||
67
+ result == undefined ||
68
+ typeof result === "string";
69
+ return isLeaf ? result : this.resolveMessage(keys.slice(1), result);
70
+ }
71
+ }
72
+ }
73
+ isOperationSensitive(value) {
74
+ return value[OperationMap.CLONE] != undefined ||
75
+ value[OperationMap.INSERT] != undefined ||
76
+ value[OperationMap.UPDATE] != undefined ||
77
+ value[OperationMap.CLEAN] != undefined;
78
+ }
79
+ postProcess(message, params) {
80
+ if (message) {
81
+ const propPattern = /(.*?)\{\{(.+?)\}\}/g;
82
+ let processed = "";
83
+ let tail = message;
84
+ let result;
85
+ while ((result = propPattern.exec(message)) !== null) {
86
+ const [match, head, attribute] = result;
87
+ const tailIndex = result.index + match.length;
88
+ tail = tailIndex < message.length ? message.substring(tailIndex) : "";
89
+ let replacement = params ? params[attribute] : undefined;
90
+ if (replacement == undefined) {
91
+ replacement = "";
92
+ }
93
+ processed += head + replacement;
94
+ }
95
+ return processed + tail;
96
+ }
97
+ else {
98
+ return message;
99
+ }
100
+ }
101
+ loadAppMessages() {
102
+ return new Promise((accept, reject) => {
103
+ const messagesUrl = window['applicationenv'] !== "dev" ? `/${window["MGE_MODULE_NAME"]}/labsApps/${window["APPLICATION_NAME"]}/build/messages/appmessages.js`
104
+ : '/messages/appmessages.js';
105
+ import(/* webpackIgnore: true */ messagesUrl)
106
+ .then(module => {
107
+ accept(module.default);
108
+ })
109
+ .catch(reason => {
110
+ reject(reason);
111
+ });
112
+ });
113
+ }
114
+ }
115
+ export var OperationMap;
116
+ (function (OperationMap) {
117
+ OperationMap["CLONE"] = "clone";
118
+ OperationMap["INSERT"] = "insert";
119
+ OperationMap["UPDATE"] = "update";
120
+ OperationMap["CLEAN"] = "clean";
121
+ })(OperationMap || (OperationMap = {}));
@@ -0,0 +1,23 @@
1
+ const snkDataUnitMessages = {
2
+ saveInfo: {
3
+ clone: "Duplicação realizada!",
4
+ insert: "Inclusão realizada!",
5
+ update: "Aleração realizada!"
6
+ },
7
+ cancelInfo: {
8
+ clone: "Duplicação descartada!",
9
+ insert: "A inclusão descartada!",
10
+ update: "A edição foi descartada!"
11
+ },
12
+ removeInfo: "Registro removido com sucesso!",
13
+ cancelConfirmationTitle: "Aviso",
14
+ cancelConfirmation: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?",
15
+ removeConfirmationTitle: "Excluir",
16
+ removeConfirmation: "Deseja realmente excluir o registro atual?",
17
+ forbidden: "Sem permissão",
18
+ forbiddenUpdate: "Não é possível fazer alterações. Verifique as permissões de acesso.",
19
+ forbiddenInsert: "Não é possível incluir. Verifique as permissões de acesso.",
20
+ forbiddenClone: "Não é possível duplicar. Verifique as permissões de acesso.",
21
+ forbiddenRemove: "Não é possível remover. Verifique as permissões de acesso."
22
+ };
23
+ export default snkDataUnitMessages;
@@ -0,0 +1,30 @@
1
+ const snkFilterBarMessages = {
2
+ "addFilter": "Adicionar filtro",
3
+ "pinFilter": "Fixar filtro",
4
+ "unpinFilter": "Desfixar filtro",
5
+ "removeFilter": "Remover filtro",
6
+ "cleanFilter": "Limpar",
7
+ "applyFilter": "Aplicar",
8
+ "findFilter": "Buscar filtros...",
9
+ "findField": "Buscar filtros...",
10
+ "modalFindFilter": "Buscar filtro",
11
+ "emptyFiltersList": "Não há filtros disponíveis",
12
+ "emptyAppliedFiltersList": "Não há filtros aplicados",
13
+ "customFilter": "Filtro personalizado",
14
+ "defaultFilter": "Filtro padrão",
15
+ "failToLoadConfig": "Falha ao buscar configuração de filtros",
16
+ "clearAllFilters": "Limpar todos os filtros",
17
+ "successfullyCleaned": "Filtro limpo com sucesso!",
18
+ "activeFilter": "{{ACTIVE_FILTERS}} filtro aplicado",
19
+ "activeFilters": "{{ACTIVE_FILTERS}} filtros aplicados",
20
+ "noActiveFilters": "Nenhum filtro aplicado",
21
+ "modalDefaultFilterTitle": "Filtro padrão",
22
+ "modalInfoTextEditDefault": "Use o layout antigo para editar o seu filtro padrão, em breve traremos uma nova experiência.",
23
+ "modalInfoTextCreateDefault": "Use o layout antigo para criar o seu filtro padrão, em breve traremos uma nova experiência.",
24
+ "modalPersonalizedFilterTitle": "Filtro personalizado",
25
+ "modalPersonalizedFilterSubTitle": "Gerencie seus filtros",
26
+ "modalInfoTextCreateEditPersonalized": "Use o layout antigo para criar ou editar filtros, em breve traremos uma nova experiência",
27
+ "modalOkButtonLabel": "Aplicar",
28
+ "modalCancelButtonLabel": "Limpar"
29
+ };
30
+ export default snkFilterBarMessages;
@@ -0,0 +1,10 @@
1
+ const snkFormMessages = {
2
+ title: {
3
+ clone: "Duplicar registro",
4
+ insert: "Cadastrar registro",
5
+ update: "Alterar registro",
6
+ clean: "{{ENTITY_NAME}}"
7
+ },
8
+ goBackTitle: "Voltar"
9
+ };
10
+ export default snkFormMessages;
@@ -0,0 +1,17 @@
1
+ const snkTaskbarMessages = {
2
+ titleUpdate: "Editar",
3
+ titlePrevious: "Anterior",
4
+ titleNext: "Próximo",
5
+ titleRefresh: "Atualizar",
6
+ titleClone: "Duplicar",
7
+ titleRemove: "Excluir",
8
+ titleMoreOptions: "Mais Opções",
9
+ titleInsert: "Cadastrar",
10
+ titleCancel: "Cancelar",
11
+ titleSave: "Salvar",
12
+ titleGridMode: "Modo Grade",
13
+ titleFormMode: "Modo Formulário",
14
+ titleConfigGrid: "Configuração da grade",
15
+ forbidden: "Permissão não liberada"
16
+ };
17
+ export default snkTaskbarMessages;
@@ -0,0 +1,199 @@
1
+ const snkDataUnitMessages = {
2
+ saveInfo: {
3
+ clone: "Duplicação realizada!",
4
+ insert: "Inclusão realizada!",
5
+ update: "Aleração realizada!"
6
+ },
7
+ cancelInfo: {
8
+ clone: "Duplicação descartada!",
9
+ insert: "A inclusão descartada!",
10
+ update: "A edição foi descartada!"
11
+ },
12
+ removeInfo: "Registro removido com sucesso!",
13
+ cancelConfirmationTitle: "Aviso",
14
+ cancelConfirmation: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?",
15
+ removeConfirmationTitle: "Excluir",
16
+ removeConfirmation: "Deseja realmente excluir o registro atual?",
17
+ forbidden: "Sem permissão",
18
+ forbiddenUpdate: "Não é possível fazer alterações. Verifique as permissões de acesso.",
19
+ forbiddenInsert: "Não é possível incluir. Verifique as permissões de acesso.",
20
+ forbiddenClone: "Não é possível duplicar. Verifique as permissões de acesso.",
21
+ forbiddenRemove: "Não é possível remover. Verifique as permissões de acesso."
22
+ };
23
+
24
+ const snkFilterBarMessages = {
25
+ "addFilter": "Adicionar filtro",
26
+ "pinFilter": "Fixar filtro",
27
+ "unpinFilter": "Desfixar filtro",
28
+ "removeFilter": "Remover filtro",
29
+ "cleanFilter": "Limpar",
30
+ "applyFilter": "Aplicar",
31
+ "findFilter": "Buscar filtros...",
32
+ "findField": "Buscar filtros...",
33
+ "modalFindFilter": "Buscar filtro",
34
+ "emptyFiltersList": "Não há filtros disponíveis",
35
+ "emptyAppliedFiltersList": "Não há filtros aplicados",
36
+ "customFilter": "Filtro personalizado",
37
+ "defaultFilter": "Filtro padrão",
38
+ "failToLoadConfig": "Falha ao buscar configuração de filtros",
39
+ "clearAllFilters": "Limpar todos os filtros",
40
+ "successfullyCleaned": "Filtro limpo com sucesso!",
41
+ "activeFilter": "{{ACTIVE_FILTERS}} filtro aplicado",
42
+ "activeFilters": "{{ACTIVE_FILTERS}} filtros aplicados",
43
+ "noActiveFilters": "Nenhum filtro aplicado",
44
+ "modalDefaultFilterTitle": "Filtro padrão",
45
+ "modalInfoTextEditDefault": "Use o layout antigo para editar o seu filtro padrão, em breve traremos uma nova experiência.",
46
+ "modalInfoTextCreateDefault": "Use o layout antigo para criar o seu filtro padrão, em breve traremos uma nova experiência.",
47
+ "modalPersonalizedFilterTitle": "Filtro personalizado",
48
+ "modalPersonalizedFilterSubTitle": "Gerencie seus filtros",
49
+ "modalInfoTextCreateEditPersonalized": "Use o layout antigo para criar ou editar filtros, em breve traremos uma nova experiência",
50
+ "modalOkButtonLabel": "Aplicar",
51
+ "modalCancelButtonLabel": "Limpar"
52
+ };
53
+
54
+ const snkFormMessages = {
55
+ title: {
56
+ clone: "Duplicar registro",
57
+ insert: "Cadastrar registro",
58
+ update: "Alterar registro",
59
+ clean: "{{ENTITY_NAME}}"
60
+ },
61
+ goBackTitle: "Voltar"
62
+ };
63
+
64
+ const snkTaskbarMessages = {
65
+ titleUpdate: "Editar",
66
+ titlePrevious: "Anterior",
67
+ titleNext: "Próximo",
68
+ titleRefresh: "Atualizar",
69
+ titleClone: "Duplicar",
70
+ titleRemove: "Excluir",
71
+ titleMoreOptions: "Mais Opções",
72
+ titleInsert: "Cadastrar",
73
+ titleCancel: "Cancelar",
74
+ titleSave: "Salvar",
75
+ titleGridMode: "Modo Grade",
76
+ titleFormMode: "Modo Formulário",
77
+ titleConfigGrid: "Configuração da grade",
78
+ forbidden: "Permissão não liberada"
79
+ };
80
+
81
+ class SnkMessageBuilder {
82
+ constructor() {
83
+ this._defaults = {
84
+ snkDataUnit: snkDataUnitMessages,
85
+ snkForm: snkFormMessages,
86
+ snkTaskbar: snkTaskbarMessages,
87
+ snkFilterBar: snkFilterBarMessages
88
+ };
89
+ this._currentOperation = OperationMap.CLEAN;
90
+ this.loadAppMessages().then((msgs) => {
91
+ this._appMessages = msgs;
92
+ }, error => {
93
+ console.info('O arquivo de mensagens personalizadas não foi encontrado no caminho /messages/appmessages.js', error);
94
+ });
95
+ }
96
+ /**
97
+ * Existem mensagens sensíveis a operação. Por exemplo, a mensagem
98
+ * de inclusão pode ser diferente da mensagem de alteração do mesmo
99
+ * recurso. Para isso "currentOperation" pode variar de acordo com
100
+ * OperationMap.
101
+ */
102
+ set currentOperation(op) {
103
+ this._currentOperation = op;
104
+ }
105
+ /**
106
+ * Método usado para se obter mensagens, respeitando o padrão do sistema
107
+ * ou as mensagens específicas de cada tela
108
+ *
109
+ * @param key Chave usada para obter mensagens. Deve-se usar o separador "."
110
+ * alcançar diversos níveis.
111
+ * @param params Quando a mensagem possui o padrão {{NOME}} as ocorrências
112
+ * serão substituidas pelo respectivo valor do param.
113
+ * @returns A mensagem formatada.
114
+ */
115
+ getMessage(key, params) {
116
+ if (key == undefined) {
117
+ return undefined;
118
+ }
119
+ var parts = key.split(".");
120
+ let msg = this.resolveMessage(parts, this._appMessages);
121
+ if (msg == undefined) {
122
+ msg = this.resolveMessage(parts, this._defaults);
123
+ }
124
+ if (this.customMessageBuilder) {
125
+ const result = this.customMessageBuilder(key, msg, params);
126
+ msg = result.message;
127
+ params = result.params;
128
+ }
129
+ return this.postProcess(msg, params);
130
+ }
131
+ resolveMessage(keys, object) {
132
+ if (object == undefined) {
133
+ return undefined;
134
+ }
135
+ const key = keys[0];
136
+ const result = object[key];
137
+ if (result) {
138
+ if (this.isOperationSensitive(result)) {
139
+ return result[this._currentOperation];
140
+ }
141
+ else {
142
+ const isLeaf = keys.length === 1 ||
143
+ result == undefined ||
144
+ typeof result === "string";
145
+ return isLeaf ? result : this.resolveMessage(keys.slice(1), result);
146
+ }
147
+ }
148
+ }
149
+ isOperationSensitive(value) {
150
+ return value[OperationMap.CLONE] != undefined ||
151
+ value[OperationMap.INSERT] != undefined ||
152
+ value[OperationMap.UPDATE] != undefined ||
153
+ value[OperationMap.CLEAN] != undefined;
154
+ }
155
+ postProcess(message, params) {
156
+ if (message) {
157
+ const propPattern = /(.*?)\{\{(.+?)\}\}/g;
158
+ let processed = "";
159
+ let tail = message;
160
+ let result;
161
+ while ((result = propPattern.exec(message)) !== null) {
162
+ const [match, head, attribute] = result;
163
+ const tailIndex = result.index + match.length;
164
+ tail = tailIndex < message.length ? message.substring(tailIndex) : "";
165
+ let replacement = params ? params[attribute] : undefined;
166
+ if (replacement == undefined) {
167
+ replacement = "";
168
+ }
169
+ processed += head + replacement;
170
+ }
171
+ return processed + tail;
172
+ }
173
+ else {
174
+ return message;
175
+ }
176
+ }
177
+ loadAppMessages() {
178
+ return new Promise((accept, reject) => {
179
+ const messagesUrl = window['applicationenv'] !== "dev" ? `/${window["MGE_MODULE_NAME"]}/labsApps/${window["APPLICATION_NAME"]}/build/messages/appmessages.js`
180
+ : '/messages/appmessages.js';
181
+ import(/* webpackIgnore: true */ messagesUrl)
182
+ .then(module => {
183
+ accept(module.default);
184
+ })
185
+ .catch(reason => {
186
+ reject(reason);
187
+ });
188
+ });
189
+ }
190
+ }
191
+ var OperationMap;
192
+ (function (OperationMap) {
193
+ OperationMap["CLONE"] = "clone";
194
+ OperationMap["INSERT"] = "insert";
195
+ OperationMap["UPDATE"] = "update";
196
+ OperationMap["CLEAN"] = "clean";
197
+ })(OperationMap || (OperationMap = {}));
198
+
199
+ export { OperationMap as O, SnkMessageBuilder as S };
@@ -0,0 +1,14 @@
1
+ var FilterItemType;
2
+ (function (FilterItemType) {
3
+ FilterItemType["MULTI_SELECT"] = "MULTI_SELECT";
4
+ FilterItemType["BINARY_SELECT"] = "BINARY_SELECT";
5
+ FilterItemType["PERIOD"] = "PERIOD";
6
+ FilterItemType["SEARCH"] = "SEARCH";
7
+ FilterItemType["TEXT"] = "TEXT";
8
+ FilterItemType["NUMBER"] = "NUMBER";
9
+ FilterItemType["DEFAULT_FILTER"] = "DEFAULT_FILTER";
10
+ FilterItemType["PERSONALIZED"] = "PERSONALIZED";
11
+ })(FilterItemType || (FilterItemType = {}));
12
+ const FilterItemType$1 = FilterItemType;
13
+
14
+ export { FilterItemType$1 as F };