@ng-atomic/common 0.0.1 → 1.2.1

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 (85) hide show
  1. package/bundles/ng-atomic-common-directives-ios-safari-scroll-buggyfill.umd.js +94 -0
  2. package/bundles/ng-atomic-common-directives-ios-safari-scroll-buggyfill.umd.js.map +1 -0
  3. package/bundles/ng-atomic-common-directives-ios-safari-scroll-buggyfill.umd.min.js +2 -0
  4. package/bundles/ng-atomic-common-directives-ios-safari-scroll-buggyfill.umd.min.js.map +1 -0
  5. package/bundles/ng-atomic-common-directives.umd.js +3 -4
  6. package/bundles/ng-atomic-common-directives.umd.js.map +1 -1
  7. package/bundles/ng-atomic-common-directives.umd.min.js +1 -1
  8. package/bundles/ng-atomic-common-directives.umd.min.js.map +1 -1
  9. package/bundles/ng-atomic-common-pipes.umd.js +37 -36
  10. package/bundles/ng-atomic-common-pipes.umd.js.map +1 -1
  11. package/bundles/ng-atomic-common-pipes.umd.min.js +1 -1
  12. package/bundles/ng-atomic-common-pipes.umd.min.js.map +1 -1
  13. package/bundles/ng-atomic-common-services.umd.js +104 -4
  14. package/bundles/ng-atomic-common-services.umd.js.map +1 -1
  15. package/bundles/ng-atomic-common-services.umd.min.js +2 -2
  16. package/bundles/ng-atomic-common-services.umd.min.js.map +1 -1
  17. package/bundles/ng-atomic-common-store.umd.js +8 -6
  18. package/bundles/ng-atomic-common-store.umd.js.map +1 -1
  19. package/bundles/ng-atomic-common-store.umd.min.js +2 -2
  20. package/bundles/ng-atomic-common-store.umd.min.js.map +1 -1
  21. package/bundles/ng-atomic-common-utils.umd.js +57 -11
  22. package/bundles/ng-atomic-common-utils.umd.js.map +1 -1
  23. package/bundles/ng-atomic-common-utils.umd.min.js +16 -1
  24. package/bundles/ng-atomic-common-utils.umd.min.js.map +1 -1
  25. package/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.d.ts +1 -3
  26. package/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.d.ts +5 -0
  27. package/directives/ios-safari-scroll-buggyfill/package.json +10 -0
  28. package/esm2015/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.js +3 -6
  29. package/esm2015/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.js.map +1 -1
  30. package/esm2015/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.js +5 -0
  31. package/esm2015/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.js.map +1 -0
  32. package/esm2015/pipes/smart-exp/smart-exp.pipe.js +15 -15
  33. package/esm2015/pipes/smart-exp/smart-exp.pipe.js.map +1 -1
  34. package/esm2015/pipes/yen/yen.pipe.js +2 -2
  35. package/esm2015/pipes/yen/yen.pipe.js.map +1 -1
  36. package/esm2015/services/form/form.service.js +33 -0
  37. package/esm2015/services/form/form.service.js.map +1 -0
  38. package/esm2015/services/form/index.js +2 -0
  39. package/esm2015/services/form/index.js.map +1 -0
  40. package/esm2015/services/index.js +2 -0
  41. package/esm2015/services/index.js.map +1 -1
  42. package/esm2015/services/query-resolver/index.js +2 -0
  43. package/esm2015/services/query-resolver/index.js.map +1 -0
  44. package/esm2015/services/query-resolver/query-resolver.service.js +28 -0
  45. package/esm2015/services/query-resolver/query-resolver.service.js.map +1 -0
  46. package/esm2015/store/entities.page.store.js +4 -4
  47. package/esm2015/store/entities.page.store.js.map +1 -1
  48. package/esm2015/utils/date-utils/date-utils.js +13 -0
  49. package/esm2015/utils/date-utils/date-utils.js.map +1 -0
  50. package/esm2015/utils/date-utils/index.js +2 -0
  51. package/esm2015/utils/date-utils/index.js.map +1 -0
  52. package/esm2015/utils/index.js +3 -0
  53. package/esm2015/utils/index.js.map +1 -1
  54. package/esm2015/utils/query/query.resolver.js +16 -8
  55. package/esm2015/utils/query/query.resolver.js.map +1 -1
  56. package/esm2015/utils/smart-exp-transformer/index.js +2 -0
  57. package/esm2015/utils/smart-exp-transformer/index.js.map +1 -0
  58. package/esm2015/utils/smart-exp-transformer/smart-exp-transformer.js +15 -0
  59. package/esm2015/utils/smart-exp-transformer/smart-exp-transformer.js.map +1 -0
  60. package/fesm2015/ng-atomic-common-directives-ios-safari-scroll-buggyfill.js +55 -0
  61. package/fesm2015/ng-atomic-common-directives-ios-safari-scroll-buggyfill.js.map +1 -0
  62. package/fesm2015/ng-atomic-common-directives.js +3 -6
  63. package/fesm2015/ng-atomic-common-directives.js.map +1 -1
  64. package/fesm2015/ng-atomic-common-pipes.js +28 -28
  65. package/fesm2015/ng-atomic-common-pipes.js.map +1 -1
  66. package/fesm2015/ng-atomic-common-services.js +60 -2
  67. package/fesm2015/ng-atomic-common-services.js.map +1 -1
  68. package/fesm2015/ng-atomic-common-store.js +5 -3
  69. package/fesm2015/ng-atomic-common-store.js.map +1 -1
  70. package/fesm2015/ng-atomic-common-utils.js +43 -10
  71. package/fesm2015/ng-atomic-common-utils.js.map +1 -1
  72. package/package.json +7 -4
  73. package/pipes/smart-exp/smart-exp.pipe.d.ts +4 -1
  74. package/services/form/form.service.d.ts +7 -0
  75. package/services/form/index.d.ts +1 -0
  76. package/services/index.d.ts +2 -0
  77. package/services/query-resolver/index.d.ts +1 -0
  78. package/services/query-resolver/query-resolver.service.d.ts +9 -0
  79. package/store/entities.page.store.d.ts +3 -2
  80. package/utils/date-utils/date-utils.d.ts +10 -0
  81. package/utils/date-utils/index.d.ts +1 -0
  82. package/utils/index.d.ts +2 -0
  83. package/utils/query/query.resolver.d.ts +2 -1
  84. package/utils/smart-exp-transformer/index.d.ts +1 -0
  85. package/utils/smart-exp-transformer/smart-exp-transformer.d.ts +6 -0
@@ -0,0 +1,13 @@
1
+ import * as dayjs from 'dayjs';
2
+ export const removeComma = (str) => str.replace(/\,/g, '');
3
+ export const DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ss';
4
+ const DATE_REGEX = /^[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])$/;
5
+ const DATETIME_REGEX = /^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\+([+-][0-2]\d:[0-5]\d)$/;
6
+ export const isDateStr = (str) => str && !!str.match(DATE_REGEX);
7
+ export const isDateTimeStr = (str) => str && !!str.match(DATE_REGEX);
8
+ const ISO_REGEX = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
9
+ export const isIsoString = (str) => str && !!str.match(ISO_REGEX);
10
+ export function timestampToDayjs(timestamp) {
11
+ return timestamp ? dayjs(timestamp.toDate()) : null;
12
+ }
13
+ //# sourceMappingURL=date-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../../../../../libs/common/utils/date-utils/date-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AACjD,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAC3E,MAAM,cAAc,GAAG,uEAAuE,CAAC;AAC/F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAkB,EAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEnG,MAAM,SAAS,GAAG,0EAA0E,CAAC;AAC7F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAkB,EAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAOhG,MAAM,UAAU,gBAAgB,CAAC,SAA2B;IAC1D,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC","sourcesContent":["import * as dayjs from 'dayjs';\n\nexport const removeComma = (str: string) => str.replace(/\\,/g, '');\n\nexport const DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ss';\nconst DATE_REGEX = /^[0-9]{4}\\/(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])$/;\nconst DATETIME_REGEX = /^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\+([+-][0-2]\\d:[0-5]\\d)$/;\nexport const isDateStr = (str: string | null): str is string => str && !!str.match(DATE_REGEX);\nexport const isDateTimeStr = (str: string | null): str is string => str && !!str.match(DATE_REGEX);\n\nconst ISO_REGEX = /\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)/;\nexport const isIsoString = (str: string | null): str is string => str && !!str.match(ISO_REGEX);\n\n\nexport interface Timestamp {\n toDate: () => Date;\n}\n\nexport function timestampToDayjs(timestamp: Timestamp | null): dayjs.Dayjs | null {\n return timestamp ? dayjs(timestamp.toDate()) : null;\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from './date-utils';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/common/utils/date-utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC","sourcesContent":["export * from './date-utils';"]}
@@ -1,6 +1,9 @@
1
1
  export * from './comma';
2
2
  export * from './compare-by-id';
3
+ export * from './date-utils';
3
4
  export * from './mat-dayjs-date';
5
+ export * from './smart-exp-transformer';
4
6
  export * from './to-object';
5
7
  export * from './query';
8
+ // export * from './define-element';
6
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/common/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC","sourcesContent":["export * from './comma';\nexport * from './compare-by-id';\nexport * from './mat-dayjs-date';\nexport * from './to-object';\nexport * from './query';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/common/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,oCAAoC","sourcesContent":["export * from './comma';\nexport * from './compare-by-id';\nexport * from './date-utils';\nexport * from './mat-dayjs-date';\nexport * from './smart-exp-transformer';\nexport * from './to-object';\nexport * from './query';\n// export * from './define-element';\n"]}
@@ -1,24 +1,26 @@
1
- import { toObject } from '../to-object';
2
1
  import { flatten } from 'flat';
3
- export const filterByQuery = (items, queryString, dlm = {}) => {
4
- return new QueryResolver(dlm).resolve(items, queryString);
2
+ import { smartExpTransformer } from '../smart-exp-transformer';
3
+ import { toObject } from '../to-object';
4
+ export const filterByQuery = (items, queryString, dlm = {}, transformer = smartExpTransformer) => {
5
+ return new QueryResolver(dlm, transformer).resolve(items, queryString);
5
6
  };
6
7
  class QueryResolver {
7
- constructor(map) {
8
+ constructor(map, transformer) {
9
+ this.transformer = transformer;
8
10
  this.inQueryByKey = (items, query) => {
9
11
  var _a, _b;
10
12
  const [not, _key, value] = this.parseQuery(query);
11
13
  const key = (_b = (_a = this.REVERSED_MAP) === null || _a === void 0 ? void 0 : _a[_key]) !== null && _b !== void 0 ? _b : _key;
12
- return items.filter(item => { var _a; return _not(_in((_a = flatten(toObject(item))) === null || _a === void 0 ? void 0 : _a[key], value), not); });
14
+ return items.filter(item => { var _a; return _not(this.in(key, (_a = flatten(toObject(item))) === null || _a === void 0 ? void 0 : _a[key], value), not); });
13
15
  };
14
16
  this.gtQueryByKey = (items, query) => {
15
17
  var _a, _b;
16
18
  const [_key, value] = query.split('>');
17
19
  const key = (_b = (_a = this.REVERSED_MAP) === null || _a === void 0 ? void 0 : _a[_key]) !== null && _b !== void 0 ? _b : _key;
18
- return items.filter(item => { var _a; return _gt((_a = flatten(toObject(item))) === null || _a === void 0 ? void 0 : _a[key], value); });
20
+ return items.filter(item => { var _a; return this.gt(key, (_a = flatten(toObject(item))) === null || _a === void 0 ? void 0 : _a[key], value); });
19
21
  };
20
- this.inQuery = (items, query) => {
21
- return items.filter(item => Object.values(flatten(toObject(item))).some(value => _in(value, query)));
22
+ this.inQuery = (items, q) => {
23
+ return items.filter(item => Object.entries(flatten(toObject(item))).some(([k, v]) => this.in(k, v, q)));
22
24
  };
23
25
  this.REVERSED_MAP = Object.entries(map).reduce((p, [k, v]) => (Object.assign(Object.assign({}, p), { [v]: k })), {});
24
26
  }
@@ -42,6 +44,12 @@ class QueryResolver {
42
44
  const [_key, value] = query.split(':');
43
45
  return [_key.startsWith('-'), _key.startsWith('-') ? _key.slice(1) : _key, value];
44
46
  }
47
+ in(k, v, q) {
48
+ return _in(this.transformer(v, k), q);
49
+ }
50
+ gt(k, v, q) {
51
+ return _gt(this.transformer(v, k), q);
52
+ }
45
53
  }
46
54
  const _not = (bool, not) => {
47
55
  return not ? !bool : bool;
@@ -1 +1 @@
1
- {"version":3,"file":"query.resolver.js","sourceRoot":"","sources":["../../../../../../libs/common/utils/query/query.resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { toObject } from '../to-object';\nimport { flatten } from 'flat';\n\nexport const filterByQuery = <T>(items: T[], queryString: string, dlm: Record<string, string> = {}): T[] => {\n return new QueryResolver(dlm).resolve(items, queryString);\n}\n\ntype QueryResolveFunc<T> = (items: T[], query: string) => T[];\n\nclass QueryResolver<T extends object = any> {\n REVERSED_MAP: Record<string, string>;\n\n constructor(map: Record<string, string>) {\n this.REVERSED_MAP = Object.entries(map).reduce((p, [k, v]) => ({...p, [v]: k}), {} as Record<string, string>);\n }\n\n resolve(items: T[], queryString: string): T[] {\n return this.resolveQueries(items, queryString.split(' ').filter(q => q.length));\n }\n\n resolveQueries(items: T[], queries: string[]): T[] {\n return queries.reduce((_items, query: string) => {\n if (query.includes(':')) return this.inQueryByKey(_items, query);\n if (query.includes('=')) return this.inQueryByKey(_items, query);\n if (query.includes('>')) return this.gtQueryByKey(_items, query);\n if (query.includes('<')) return this.inQueryByKey(_items, query);\n return this.inQuery(_items, query);\n }, items);\n }\n\n private parseQuery(query: string): [boolean, string, string] {\n const [_key, value] = query.split(':');\n return [_key.startsWith('-'), _key.startsWith('-') ? _key.slice(1) : _key, value];\n }\n\n private inQueryByKey: QueryResolveFunc<T> = (items, query) => {\n const [not, _key, value] = this.parseQuery(query);\n const key = this.REVERSED_MAP?.[_key] ?? _key;\n return items.filter(item => _not(_in(flatten(toObject(item as any))?.[key], value), not));\n }\n\n private gtQueryByKey: QueryResolveFunc<T> = (items, query) => {\n const [_key, value] = query.split('>');\n const key = this.REVERSED_MAP?.[_key] ?? _key;\n return items.filter(item => _gt(flatten(toObject(item as any))?.[key], value));\n }\n\n private inQuery: QueryResolveFunc<T> = (items, query) => {\n return items.filter(item => Object.values(flatten(toObject(item as T))).some(value => _in(value, query)));\n }\n}\n\nconst _not = (bool: boolean, not: boolean): boolean => {\n return not ? !bool : bool;\n}\n\nconst _in = (value: any, query: string) => {\n return typeof value === 'string' ? value?.includes(query) : false;\n}\n\nconst _gt = (value: any, query: string) => {\n return typeof value === 'string' \n ? parseFloat(value) > parseFloat(query) \n : typeof value === 'number'\n ? value > parseFloat(query)\n : false;\n}"]}
1
+ {"version":3,"file":"query.resolver.js","sourceRoot":"","sources":["../../../../../../libs/common/utils/query/query.resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAuB,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAU,EACV,WAAmB,EACnB,MAA8B,EAAE,EAChC,cAAmC,mBAAmB,EACjD,EAAE;IACP,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC,CAAA;AAID,MAAM,aAAa;IAGjB,YACE,GAA2B,EACnB,WAAgC;QAAhC,gBAAW,GAAX,WAAW,CAAqB;QA0BlC,iBAAY,GAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;YAC3D,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,GAAG,eAAG,IAAI,CAAC,YAAY,0CAAG,IAAI,oCAAK,IAAI,CAAC;YAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAE,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,CAAC,0CAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;QACrG,CAAC,CAAA;QAEO,iBAAY,GAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;YAC3D,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,GAAG,eAAG,IAAI,CAAC,YAAY,0CAAG,IAAI,oCAAK,IAAI,CAAC;YAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,IAAI,CAAC,EAAE,CAAC,GAAG,QAAE,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,CAAC,0CAAG,GAAG,GAAG,KAAK,CAAC,CAAA,EAAA,CAAC,CAAC;QAC1F,CAAC,CAAA;QAEO,YAAO,GAAwB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAClD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAA;QAtCC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iCACzD,CAAC,KAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IACZ,EAAE,EAA4B,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,KAAU,EAAE,WAAmB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,cAAc,CAAC,KAAU,EAAE,OAAiB;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAa,EAAE,EAAE;YAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC;IAkBO,EAAE,CAAC,CAAS,EAAE,CAAM,EAAE,CAAS;QACrC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAEO,EAAE,CAAC,CAAS,EAAE,CAAM,EAAE,CAAS;QACrC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,GAAY,EAAW,EAAE;IACpD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAA;AAED,MAAM,GAAG,GAAG,CAAC,KAAU,EAAE,KAAa,EAAW,EAAE;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;AACpE,CAAC,CAAA;AAED,MAAM,GAAG,GAAG,CAAC,KAAU,EAAE,KAAa,EAAW,EAAE;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;YAC3B,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAA","sourcesContent":["import { flatten } from 'flat';\nimport { smartExpTransformer, SmartExpTransformer } from '../smart-exp-transformer';\nimport { toObject } from '../to-object';\n\nexport const filterByQuery = <T>(\n items: T[], \n queryString: string, \n dlm: Record<string, string> = {},\n transformer: SmartExpTransformer = smartExpTransformer,\n): T[] => {\n return new QueryResolver(dlm, transformer).resolve(items, queryString);\n}\n\ntype QueryResolveFunc<T> = (items: T[], query: string) => T[];\n\nclass QueryResolver<T extends object = any> {\n REVERSED_MAP: Record<string, string>;\n\n constructor(\n map: Record<string, string>,\n private transformer: SmartExpTransformer,\n ) {\n this.REVERSED_MAP = Object.entries(map).reduce((p, [k, v]) => ({\n ...p, [v]: k\n }), {} as Record<string, string>);\n }\n\n resolve(items: T[], queryString: string): T[] {\n return this.resolveQueries(items, queryString.split(' ').filter(q => q.length));\n }\n\n resolveQueries(items: T[], queries: string[]): T[] {\n return queries.reduce((_items, query: string) => {\n if (query.includes(':')) return this.inQueryByKey(_items, query);\n if (query.includes('=')) return this.inQueryByKey(_items, query);\n if (query.includes('>')) return this.gtQueryByKey(_items, query);\n if (query.includes('<')) return this.inQueryByKey(_items, query);\n return this.inQuery(_items, query);\n }, items);\n }\n\n private parseQuery(query: string): [boolean, string, string] {\n const [_key, value] = query.split(':');\n return [_key.startsWith('-'), _key.startsWith('-') ? _key.slice(1) : _key, value];\n }\n\n private inQueryByKey: QueryResolveFunc<T> = (items, query) => {\n const [not, _key, value] = this.parseQuery(query);\n const key = this.REVERSED_MAP?.[_key] ?? _key;\n return items.filter(item => _not(this.in(key, flatten(toObject(item as any))?.[key], value), not));\n }\n\n private gtQueryByKey: QueryResolveFunc<T> = (items, query) => {\n const [_key, value] = query.split('>');\n const key = this.REVERSED_MAP?.[_key] ?? _key;\n return items.filter(item => this.gt(key, flatten(toObject(item as any))?.[key], value));\n }\n\n private inQuery: QueryResolveFunc<T> = (items, q) => {\n return items.filter(item => Object.entries(flatten(toObject(item as T))).some(([k, v]) => this.in(k, v, q)));\n }\n\n private in(k: string, v: any, q: string) {\n return _in(this.transformer(v, k), q);\n }\n\n private gt(k: string, v: any, q: string) {\n return _gt(this.transformer(v, k), q);\n }\n}\n\nconst _not = (bool: boolean, not: boolean): boolean => {\n return not ? !bool : bool;\n}\n\nconst _in = (value: any, query: string): boolean => {\n return typeof value === 'string' ? value?.includes(query) : false;\n}\n\nconst _gt = (value: any, query: string): boolean => {\n return typeof value === 'string' \n ? parseFloat(value) > parseFloat(query) \n : typeof value === 'number'\n ? value > parseFloat(query)\n : false;\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from './smart-exp-transformer';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/common/utils/smart-exp-transformer/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC","sourcesContent":["export * from './smart-exp-transformer';"]}
@@ -0,0 +1,15 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import * as dayjs from 'dayjs';
3
+ import { comma } from '../comma';
4
+ export const SMART_EXP_TRANSFORMER = new InjectionToken('[@ng-atomic/common] Smart Transformer');
5
+ export const yenTransform = (value, _unit) => {
6
+ return value < 1 ? `${comma(value * 100)}%` : `${comma(value)}円`;
7
+ };
8
+ export const smartExpTransformer = input => dayjs.isDayjs(input)
9
+ ? input.format('YY/MM/DD')
10
+ : Array.isArray(input)
11
+ ? `${input.length}個のアイテム`
12
+ : typeof input === 'number' && input > 10000
13
+ ? yenTransform(input)
14
+ : input;
15
+ //# sourceMappingURL=smart-exp-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-exp-transformer.js","sourceRoot":"","sources":["../../../../../../libs/common/utils/smart-exp-transformer/smart-exp-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAsB,uCAAuC,CAAC,CAAC;AAItH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,KAAc,EAAU,EAAE;IACpE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACnE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAwB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACnF,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,QAAQ;QACzB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,KAAM;YAC7C,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,KAAK,CAAC","sourcesContent":["import { InjectionToken } from '@angular/core';\nimport * as dayjs from 'dayjs';\nimport { comma } from '../comma';\n\nexport const SMART_EXP_TRANSFORMER = new InjectionToken<SmartExpTransformer>('[@ng-atomic/common] Smart Transformer');\n\nexport type SmartExpTransformer = (input: string | number | dayjs.Dayjs | any, key?: string) => string;\n\nexport const yenTransform = (value: number, _unit?: string): string => {\n return value < 1 ? `${comma(value * 100)}%` : `${comma(value)}円`;\n}\n\nexport const smartExpTransformer: SmartExpTransformer = input => dayjs.isDayjs(input)\n ? input.format('YY/MM/DD')\n : Array.isArray(input) \n ? `${input.length}個のアイテム`\n : typeof input === 'number' && input > 10_000\n ? yenTransform(input)\n : input;"]}
@@ -0,0 +1,55 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ɵɵngDeclareDirective, ɵsetClassMetadata, Directive, HostListener, ɵɵdefineNgModule, ɵɵdefineInjector, ɵɵsetNgModuleScope, NgModule } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+
5
+ class IosSafariScrollBuggyfillDirective {
6
+ ngAfterViewInit() {
7
+ // this.el.nativeElement.addEventListener('touchmove', (e: Event) => {
8
+ // e.preventDefault();
9
+ // }, {passive: false});
10
+ }
11
+ onTouchmove(event) {
12
+ event.preventDefault();
13
+ }
14
+ }
15
+ IosSafariScrollBuggyfillDirective.ɵfac = function IosSafariScrollBuggyfillDirective_Factory(t) { return new (t || IosSafariScrollBuggyfillDirective)(); };
16
+ IosSafariScrollBuggyfillDirective.ɵdir = ɵɵngDeclareDirective({ version: "11.2.14", type: IosSafariScrollBuggyfillDirective, selector: "[iosSafariScrollBuggyfill]", host: { listeners: { "touchmove": "onTouchmove($event)" } }, ngImport: i0 });
17
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵsetClassMetadata(IosSafariScrollBuggyfillDirective, [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: '[iosSafariScrollBuggyfill]'
21
+ }]
22
+ }], null, { onTouchmove: [{
23
+ type: HostListener,
24
+ args: ['touchmove', ['$event']]
25
+ }] }); })();
26
+
27
+ class IosSafariScrollBuggyfillModule {
28
+ }
29
+ IosSafariScrollBuggyfillModule.ɵfac = function IosSafariScrollBuggyfillModule_Factory(t) { return new (t || IosSafariScrollBuggyfillModule)(); };
30
+ IosSafariScrollBuggyfillModule.ɵmod = ɵɵdefineNgModule({ type: IosSafariScrollBuggyfillModule });
31
+ IosSafariScrollBuggyfillModule.ɵinj = ɵɵdefineInjector({ imports: [[
32
+ CommonModule,
33
+ ]] });
34
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && ɵɵsetNgModuleScope(IosSafariScrollBuggyfillModule, { declarations: [IosSafariScrollBuggyfillDirective], imports: [CommonModule], exports: [IosSafariScrollBuggyfillDirective] }); })();
35
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵsetClassMetadata(IosSafariScrollBuggyfillModule, [{
36
+ type: NgModule,
37
+ args: [{
38
+ declarations: [
39
+ IosSafariScrollBuggyfillDirective,
40
+ ],
41
+ imports: [
42
+ CommonModule,
43
+ ],
44
+ exports: [
45
+ IosSafariScrollBuggyfillDirective,
46
+ ]
47
+ }]
48
+ }], null, null); })();
49
+
50
+ /**
51
+ * Generated bundle index. Do not edit.
52
+ */
53
+
54
+ export { IosSafariScrollBuggyfillDirective, IosSafariScrollBuggyfillModule };
55
+ //# sourceMappingURL=ng-atomic-common-directives-ios-safari-scroll-buggyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-atomic-common-directives-ios-safari-scroll-buggyfill.js","sources":["../../../../libs/common/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.ts","../../../../libs/common/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.ts","../../../../libs/common/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.ts"],"sourcesContent":["import { AfterViewInit, Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[iosSafariScrollBuggyfill]'\n})\nexport class IosSafariScrollBuggyfillDirective implements AfterViewInit {\n\n ngAfterViewInit(): void {\n // this.el.nativeElement.addEventListener('touchmove', (e: Event) => {\n // e.preventDefault();\n // }, {passive: false});\n }\n\n @HostListener('touchmove', ['$event'])\n onTouchmove(event: Event) {\n event.preventDefault();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IosSafariScrollBuggyfillDirective } from './ios-safari-scroll-buggyfill.directive';\n\n\n\n@NgModule({\n declarations: [\n IosSafariScrollBuggyfillDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n IosSafariScrollBuggyfillDirective,\n ]\n})\nexport class IosSafariScrollBuggyfillModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAKa,iCAAiC;IAE5C,eAAe;;;;KAId;IAGD,WAAW,CAAC,KAAY;QACtB,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;;kHAXU,iCAAiC;0FAAjC,iCAAiC;oFAAjC,iCAAiC;cAH7C,SAAS;eAAC;gBACT,QAAQ,EAAE,4BAA4B;aACvC;gBAUC,WAAW;kBADV,YAAY;mBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;MCI1B,8BAA8B;;4GAA9B,8BAA8B;+DAA9B,8BAA8B;mEAPhC;YACP,YAAY;SACb;qFAKU,8BAA8B,mBATvC,iCAAiC,aAGjC,YAAY,aAGZ,iCAAiC;oFAGxB,8BAA8B;cAX1C,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,iCAAiC;iBAClC;gBACD,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,OAAO,EAAE;oBACP,iCAAiC;iBAClC;aACF;;;AChBD;;;;;;"}
@@ -1,11 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ɵɵdirectiveInject, ElementRef, ɵɵngDeclareDirective, ɵsetClassMetadata, Directive, HostListener, ɵɵdefineNgModule, ɵɵdefineInjector, ɵɵsetNgModuleScope, NgModule } from '@angular/core';
2
+ import { ɵɵngDeclareDirective, ɵsetClassMetadata, Directive, HostListener, ɵɵdefineNgModule, ɵɵdefineInjector, ɵɵsetNgModuleScope, NgModule } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
 
5
5
  class IosSafariScrollBuggyfillDirective {
6
- constructor(el) {
7
- this.el = el;
8
- }
9
6
  ngAfterViewInit() {
10
7
  // this.el.nativeElement.addEventListener('touchmove', (e: Event) => {
11
8
  // e.preventDefault();
@@ -15,14 +12,14 @@ class IosSafariScrollBuggyfillDirective {
15
12
  event.preventDefault();
16
13
  }
17
14
  }
18
- IosSafariScrollBuggyfillDirective.ɵfac = function IosSafariScrollBuggyfillDirective_Factory(t) { return new (t || IosSafariScrollBuggyfillDirective)(ɵɵdirectiveInject(ElementRef)); };
15
+ IosSafariScrollBuggyfillDirective.ɵfac = function IosSafariScrollBuggyfillDirective_Factory(t) { return new (t || IosSafariScrollBuggyfillDirective)(); };
19
16
  IosSafariScrollBuggyfillDirective.ɵdir = ɵɵngDeclareDirective({ version: "11.2.14", type: IosSafariScrollBuggyfillDirective, selector: "[iosSafariScrollBuggyfill]", host: { listeners: { "touchmove": "onTouchmove($event)" } }, ngImport: i0 });
20
17
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵsetClassMetadata(IosSafariScrollBuggyfillDirective, [{
21
18
  type: Directive,
22
19
  args: [{
23
20
  selector: '[iosSafariScrollBuggyfill]'
24
21
  }]
25
- }], function () { return [{ type: ElementRef }]; }, { onTouchmove: [{
22
+ }], null, { onTouchmove: [{
26
23
  type: HostListener,
27
24
  args: ['touchmove', ['$event']]
28
25
  }] }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-directives.js","sources":["../../../../libs/common/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.ts","../../../../libs/common/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.ts","../../../../libs/common/directives/ng-atomic-common-directives.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[iosSafariScrollBuggyfill]'\n})\nexport class IosSafariScrollBuggyfillDirective implements AfterViewInit {\n\n constructor(private el: ElementRef) { }\n\n ngAfterViewInit(): void {\n // this.el.nativeElement.addEventListener('touchmove', (e: Event) => {\n // e.preventDefault();\n // }, {passive: false});\n }\n\n @HostListener('touchmove', ['$event'])\n onTouchmove(event: Event) {\n event.preventDefault();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IosSafariScrollBuggyfillDirective } from './ios-safari-scroll-buggyfill.directive';\n\n\n\n@NgModule({\n declarations: [\n IosSafariScrollBuggyfillDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n IosSafariScrollBuggyfillDirective,\n ]\n})\nexport class IosSafariScrollBuggyfillModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAKa,iCAAiC;IAE5C,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAK;IAEvC,eAAe;;;;KAId;IAGD,WAAW,CAAC,KAAY;QACtB,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;;kHAbU,iCAAiC;0FAAjC,iCAAiC;oFAAjC,iCAAiC;cAH7C,SAAS;eAAC;gBACT,QAAQ,EAAE,4BAA4B;aACvC;0DAYC,WAAW;kBADV,YAAY;mBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;MCE1B,8BAA8B;;4GAA9B,8BAA8B;+DAA9B,8BAA8B;mEAPhC;YACP,YAAY;SACb;qFAKU,8BAA8B,mBATvC,iCAAiC,aAGjC,YAAY,aAGZ,iCAAiC;oFAGxB,8BAA8B;cAX1C,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,iCAAiC;iBAClC;gBACD,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,OAAO,EAAE;oBACP,iCAAiC;iBAClC;aACF;;;AChBD;;;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-directives.js","sources":["../../../../libs/common/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.ts","../../../../libs/common/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.ts","../../../../libs/common/directives/ng-atomic-common-directives.ts"],"sourcesContent":["import { AfterViewInit, Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[iosSafariScrollBuggyfill]'\n})\nexport class IosSafariScrollBuggyfillDirective implements AfterViewInit {\n\n ngAfterViewInit(): void {\n // this.el.nativeElement.addEventListener('touchmove', (e: Event) => {\n // e.preventDefault();\n // }, {passive: false});\n }\n\n @HostListener('touchmove', ['$event'])\n onTouchmove(event: Event) {\n event.preventDefault();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IosSafariScrollBuggyfillDirective } from './ios-safari-scroll-buggyfill.directive';\n\n\n\n@NgModule({\n declarations: [\n IosSafariScrollBuggyfillDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n IosSafariScrollBuggyfillDirective,\n ]\n})\nexport class IosSafariScrollBuggyfillModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAKa,iCAAiC;IAE5C,eAAe;;;;KAId;IAGD,WAAW,CAAC,KAAY;QACtB,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;;kHAXU,iCAAiC;0FAAjC,iCAAiC;oFAAjC,iCAAiC;cAH7C,SAAS;eAAC;gBACT,QAAQ,EAAE,4BAA4B;aACvC;gBAUC,WAAW;kBADV,YAAY;mBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;MCI1B,8BAA8B;;4GAA9B,8BAA8B;+DAA9B,8BAA8B;mEAPhC;YACP,YAAY;SACb;qFAKU,8BAA8B,mBATvC,iCAAiC,aAGjC,YAAY,aAGZ,iCAAiC;oFAGxB,8BAA8B;cAX1C,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,iCAAiC;iBAClC;gBACD,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,OAAO,EAAE;oBACP,iCAAiC;iBAClC;aACF;;;AChBD;;;;;;"}
@@ -1,8 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, ɵɵdirectiveInject, ɵɵngDeclarePipe, ɵsetClassMetadata, Pipe, Optional, Inject, ɵɵdefineNgModule, ɵɵdefineInjector, ɵɵsetNgModuleScope, NgModule } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
- import { isDayjs } from 'dayjs';
5
- import { comma } from '@ng-atomic/common/utils';
4
+ import { smartExpTransformer, SMART_EXP_TRANSFORMER, yenTransform } from '@ng-atomic/common/utils';
6
5
 
7
6
  const DOMAIN_LANG_MAP = new InjectionToken('domain lang map');
8
7
  class DomainPipe {
@@ -54,35 +53,17 @@ DomainModule.ɵinj = ɵɵdefineInjector({ imports: [[
54
53
  }]
55
54
  }], null, null); })();
56
55
 
57
- class YenPipe {
58
- transform(value, _unit) {
59
- return value < 1 ? `${comma(value * 100)}%` : `${comma(value)}円`;
60
- }
61
- }
62
- YenPipe.ɵfac = function YenPipe_Factory(t) { return new (t || YenPipe)(); };
63
- YenPipe.ɵpipe = ɵɵngDeclarePipe({ version: "11.2.14", ngImport: i0, type: YenPipe, name: "yen" });
64
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵsetClassMetadata(YenPipe, [{
65
- type: Pipe,
66
- args: [{
67
- name: 'yen'
68
- }]
69
- }], null, null); })();
70
-
71
56
  class SmartExpPipe {
57
+ constructor(transformer) {
58
+ var _a;
59
+ this.transformer = transformer;
60
+ (_a = this.transformer) !== null && _a !== void 0 ? _a : (this.transformer = smartExpTransformer);
61
+ }
72
62
  transform(input, key) {
73
- if (isDayjs(input)) {
74
- return input.format('YY/MM/DD');
75
- }
76
- else if (Array.isArray(input)) {
77
- return `${input.length}個のアイテム`;
78
- }
79
- else if (typeof input === 'number' && input > 10000) {
80
- return new YenPipe().transform(input);
81
- }
82
- return input;
63
+ return this.transformer(input, key);
83
64
  }
84
65
  }
85
- SmartExpPipe.ɵfac = function SmartExpPipe_Factory(t) { return new (t || SmartExpPipe)(); };
66
+ SmartExpPipe.ɵfac = function SmartExpPipe_Factory(t) { return new (t || SmartExpPipe)(ɵɵdirectiveInject(SMART_EXP_TRANSFORMER, 8)); };
86
67
  SmartExpPipe.ɵpipe = ɵɵngDeclarePipe({ version: "11.2.14", ngImport: i0, type: SmartExpPipe, name: "smartExp" });
87
68
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵsetClassMetadata(SmartExpPipe, [{
88
69
  type: Pipe,
@@ -90,7 +71,12 @@ SmartExpPipe.ɵpipe = ɵɵngDeclarePipe({ version: "11.2.14", ngImport: i0, type
90
71
  name: 'smartExp',
91
72
  pure: true,
92
73
  }]
93
- }], null, null); })();
74
+ }], function () { return [{ type: undefined, decorators: [{
75
+ type: Optional
76
+ }, {
77
+ type: Inject,
78
+ args: [SMART_EXP_TRANSFORMER]
79
+ }] }]; }, null); })();
94
80
 
95
81
  class SmartExpModule {
96
82
  }
@@ -160,6 +146,20 @@ SmartFieldModule.ɵinj = ɵɵdefineInjector({ imports: [[
160
146
  }]
161
147
  }], null, null); })();
162
148
 
149
+ class YenPipe {
150
+ transform(value, _unit) {
151
+ return yenTransform(value, _unit);
152
+ }
153
+ }
154
+ YenPipe.ɵfac = function YenPipe_Factory(t) { return new (t || YenPipe)(); };
155
+ YenPipe.ɵpipe = ɵɵngDeclarePipe({ version: "11.2.14", ngImport: i0, type: YenPipe, name: "yen" });
156
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵsetClassMetadata(YenPipe, [{
157
+ type: Pipe,
158
+ args: [{
159
+ name: 'yen'
160
+ }]
161
+ }], null, null); })();
162
+
163
163
  class YenModule {
164
164
  }
165
165
  YenModule.ɵfac = function YenModule_Factory(t) { return new (t || YenModule)(); };
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-pipes.js","sources":["../../../../libs/common/pipes/domain/domain.pipe.ts","../../../../libs/common/pipes/domain/domain.module.ts","../../../../libs/common/pipes/yen/yen.pipe.ts","../../../../libs/common/pipes/smart-exp/smart-exp.pipe.ts","../../../../libs/common/pipes/smart-exp/smart-exp.module.ts","../../../../libs/common/pipes/smart-field/smart-field.pipe.ts","../../../../libs/common/pipes/smart-field/smart-field.module.ts","../../../../libs/common/pipes/yen/yen.module.ts","../../../../libs/common/pipes/ng-atomic-common-pipes.ts"],"sourcesContent":["import { Inject, InjectionToken, Optional, Pipe } from '@angular/core';\n\nexport type DomainLangMap = Record<string, string>;\nexport const DOMAIN_LANG_MAP = new InjectionToken<DomainLangMap>('domain lang map');\n\n@Pipe({\n name: 'D',\n pure: true,\n})\nexport class DomainPipe {\n constructor(@Optional() @Inject(DOMAIN_LANG_MAP) private map: DomainLangMap) {\n this.map ??= {};\n }\n\n transform(input: string) {\n return this.map?.[input] ?? input;\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomainPipe } from './domain.pipe';\n\n\n\n@NgModule({\n declarations: [\n DomainPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n DomainPipe\n ]\n})\nexport class DomainModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { comma } from '@ng-atomic/common/utils';\n\n@Pipe({\n name: 'yen'\n})\nexport class YenPipe implements PipeTransform {\n\n transform(value: number, _unit?: string): string {\n return value < 1 ? `${comma(value * 100)}%` : `${comma(value)}円`;\n }\n\n}\n","import { Pipe } from '@angular/core';\nimport * as dayjs from 'dayjs';\nimport { YenPipe } from '../yen/yen.pipe';\n\n@Pipe({\n name: 'smartExp',\n pure: true,\n})\nexport class SmartExpPipe {\n transform(input: string | number | dayjs.Dayjs | any, key?: string): string {\n if (dayjs.isDayjs(input)) {\n return input.format('YY/MM/DD');\n } else if (Array.isArray(input)) {\n return `${input.length}個のアイテム`;\n } else if (typeof input === 'number' && input > 10_000) {\n return new YenPipe().transform(input);\n }\n return input;\n }\n}","import { NgModule } from \"@angular/core\";\nimport { SmartExpPipe } from \"./smart-exp.pipe\";\n\n@NgModule({\n declarations: [SmartExpPipe],\n exports: [SmartExpPipe]\n})\nexport class SmartExpModule { }","import { Inject, InjectionToken, Optional, Pipe, PipeTransform } from '@angular/core';\n\ninterface Option<T> {\n name: string;\n value: T;\n}\n\ninterface InputField {\n type: 'input';\n}\n\ninterface DateInputField {\n type: 'date';\n}\n\ninterface SelectField<T> {\n type: 'select';\n options: Option<T>[];\n}\n\ninterface MultiSelectField<T> {\n type: 'multi-select';\n options: Option<T>[];\n}\n\ntype FormField<V> = InputField\n | DateInputField\n | SelectField<V>\n | MultiSelectField<V>;\n\nexport type FormFieldMap = Record<string, FormField<any>>;\n\nexport const FORM_FIELD_MAP = new InjectionToken<FormFieldMap>('[@ng-atomic] Smart Form Field');\n\n@Pipe({\n name: 'smartField',\n pure: true,\n})\nexport class SmartFieldPipe implements PipeTransform {\n\n constructor(\n @Optional() @Inject(FORM_FIELD_MAP) private map: Record<string, FormField<any>>\n ) {\n this.map ??= {\n createdAt: { type: 'date' },\n updatedAt: { type: 'date' },\n deletedAt: { type: 'date' },\n };\n }\n\n transform(key: string): FormField<any> {\n return this.map[key] ?? {type: 'input'};\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SmartFieldPipe } from './smart-field.pipe';\n\n\n\n@NgModule({\n declarations: [\n SmartFieldPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n SmartFieldPipe\n ]\n})\nexport class SmartFieldModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YenPipe } from './yen.pipe';\n\n\n\n@NgModule({\n declarations: [\n YenPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n YenPipe\n ]\n})\nexport class YenModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["dayjs.isDayjs"],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-pipes.js","sources":["../../../../libs/common/pipes/domain/domain.pipe.ts","../../../../libs/common/pipes/domain/domain.module.ts","../../../../libs/common/pipes/smart-exp/smart-exp.pipe.ts","../../../../libs/common/pipes/smart-exp/smart-exp.module.ts","../../../../libs/common/pipes/smart-field/smart-field.pipe.ts","../../../../libs/common/pipes/smart-field/smart-field.module.ts","../../../../libs/common/pipes/yen/yen.pipe.ts","../../../../libs/common/pipes/yen/yen.module.ts","../../../../libs/common/pipes/ng-atomic-common-pipes.ts"],"sourcesContent":["import { Inject, InjectionToken, Optional, Pipe } from '@angular/core';\n\nexport type DomainLangMap = Record<string, string>;\nexport const DOMAIN_LANG_MAP = new InjectionToken<DomainLangMap>('domain lang map');\n\n@Pipe({\n name: 'D',\n pure: true,\n})\nexport class DomainPipe {\n constructor(@Optional() @Inject(DOMAIN_LANG_MAP) private map: DomainLangMap) {\n this.map ??= {};\n }\n\n transform(input: string) {\n return this.map?.[input] ?? input;\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomainPipe } from './domain.pipe';\n\n\n\n@NgModule({\n declarations: [\n DomainPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n DomainPipe\n ]\n})\nexport class DomainModule { }\n","import { Inject, Optional, Pipe } from '@angular/core';\nimport * as dayjs from 'dayjs';\nimport { SMART_EXP_TRANSFORMER, smartExpTransformer, SmartExpTransformer } from '@ng-atomic/common/utils';\n\n@Pipe({\n name: 'smartExp',\n pure: true,\n})\nexport class SmartExpPipe {\n constructor(\n @Optional() @Inject(SMART_EXP_TRANSFORMER) private transformer: SmartExpTransformer\n ) {\n this.transformer ??= smartExpTransformer;\n }\n\n transform(input: string | number | dayjs.Dayjs | any, key?: string): string {\n return this.transformer(input, key);\n }\n}","import { NgModule } from \"@angular/core\";\nimport { SmartExpPipe } from \"./smart-exp.pipe\";\n\n@NgModule({\n declarations: [SmartExpPipe],\n exports: [SmartExpPipe]\n})\nexport class SmartExpModule { }","import { Inject, InjectionToken, Optional, Pipe, PipeTransform } from '@angular/core';\n\ninterface Option<T> {\n name: string;\n value: T;\n}\n\ninterface InputField {\n type: 'input';\n}\n\ninterface DateInputField {\n type: 'date';\n}\n\ninterface SelectField<T> {\n type: 'select';\n options: Option<T>[];\n}\n\ninterface MultiSelectField<T> {\n type: 'multi-select';\n options: Option<T>[];\n}\n\ntype FormField<V> = InputField\n | DateInputField\n | SelectField<V>\n | MultiSelectField<V>;\n\nexport type FormFieldMap = Record<string, FormField<any>>;\n\nexport const FORM_FIELD_MAP = new InjectionToken<FormFieldMap>('[@ng-atomic] Smart Form Field');\n\n@Pipe({\n name: 'smartField',\n pure: true,\n})\nexport class SmartFieldPipe implements PipeTransform {\n\n constructor(\n @Optional() @Inject(FORM_FIELD_MAP) private map: Record<string, FormField<any>>\n ) {\n this.map ??= {\n createdAt: { type: 'date' },\n updatedAt: { type: 'date' },\n deletedAt: { type: 'date' },\n };\n }\n\n transform(key: string): FormField<any> {\n return this.map[key] ?? {type: 'input'};\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SmartFieldPipe } from './smart-field.pipe';\n\n\n\n@NgModule({\n declarations: [\n SmartFieldPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n SmartFieldPipe\n ]\n})\nexport class SmartFieldModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { yenTransform } from '@ng-atomic/common/utils';\n\n@Pipe({\n name: 'yen'\n})\nexport class YenPipe implements PipeTransform {\n\n transform(value: number, _unit?: string): string {\n return yenTransform(value, _unit);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YenPipe } from './yen.pipe';\n\n\n\n@NgModule({\n declarations: [\n YenPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n YenPipe\n ]\n})\nexport class YenModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,43 @@
1
- import { ɵɵdefineInjectable, ɵsetClassMetadata, Injectable, ɵɵinject, ɵɵdefineNgModule, ɵɵdefineInjector, ɵɵsetNgModuleScope, NgModule } from '@angular/core';
1
+ import { isIsoString, toObject, smartExpTransformer, filterByQuery, SMART_EXP_TRANSFORMER } from '@ng-atomic/common/utils';
2
+ import * as dayjs from 'dayjs';
3
+ import { isDayjs } from 'dayjs';
4
+ import { unflatten, flatten } from 'flat';
5
+ import { omit, pick } from 'lodash';
6
+ import { ɵɵdefineInjectable, ɵsetClassMetadata, Injectable, ɵɵinject, Optional, Inject, ɵɵdefineNgModule, ɵɵdefineInjector, ɵɵsetNgModuleScope, NgModule } from '@angular/core';
2
7
  import { Subject } from 'rxjs';
3
8
  import { scan, map, distinctUntilChanged, delay } from 'rxjs/operators';
4
9
  import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
5
10
  import { CommonModule } from '@angular/common';
6
11
 
12
+ const isNumeric = (v) => !isNaN(Number(v));
13
+ const parseQuery = (v, k) => k.match(/id$/i)
14
+ ? v
15
+ : typeof v === 'string' && isIsoString(v)
16
+ ? dayjs(v)
17
+ : isNumeric(v)
18
+ ? Number(v)
19
+ : v;
20
+ class BaseFormService {
21
+ static fromQueryParams(obj) {
22
+ var _a, _b;
23
+ return Object.entries((_b = (_a = unflatten(obj)) === null || _a === void 0 ? void 0 : _a.form) !== null && _b !== void 0 ? _b : {}).reduce((m, [k, v]) => (Object.assign(Object.assign({}, m), { [k]: parseQuery(v, k) })), {});
24
+ }
25
+ static toQueryParams(obj) {
26
+ return flatten({ form: Object.entries(obj).reduce((m, [k, v]) => (Object.assign(Object.assign({}, m), { [k]: isDayjs(v) ? v.isValid() ? v.toISOString() : null : v })), {}) });
27
+ }
28
+ static dayjsKeys(object) {
29
+ return Object.entries(object).filter(([_, v]) => isDayjs(v)).map(([k]) => k);
30
+ }
31
+ static toValue(object) {
32
+ const keys = this.dayjsKeys(object);
33
+ return Object.assign(Object.assign({}, flatten(omit(toObject(object), keys))), pick(toObject(object), keys));
34
+ }
35
+ static fromValue(value) {
36
+ const keys = this.dayjsKeys(value);
37
+ return Object.assign(Object.assign({}, unflatten(omit(value, keys))), pick(value, keys));
38
+ }
39
+ }
40
+
7
41
  class LoadingService {
8
42
  constructor() {
9
43
  this.loadingEntries$ = new Subject();
@@ -32,6 +66,30 @@ LoadingService.ɵprov = ɵɵdefineInjectable({ token: LoadingService, factory: L
32
66
  }]
33
67
  }], function () { return []; }, null); })();
34
68
 
69
+ class QueryResolverService {
70
+ constructor(transformer) {
71
+ var _a;
72
+ this.transformer = transformer;
73
+ (_a = this.transformer) !== null && _a !== void 0 ? _a : (this.transformer = smartExpTransformer);
74
+ }
75
+ resolve(items, queryString, dlm = {}) {
76
+ return filterByQuery(items, queryString, dlm, this.transformer);
77
+ }
78
+ }
79
+ QueryResolverService.ɵfac = function QueryResolverService_Factory(t) { return new (t || QueryResolverService)(ɵɵinject(SMART_EXP_TRANSFORMER, 8)); };
80
+ QueryResolverService.ɵprov = ɵɵdefineInjectable({ token: QueryResolverService, factory: QueryResolverService.ɵfac, providedIn: 'root' });
81
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵsetClassMetadata(QueryResolverService, [{
82
+ type: Injectable,
83
+ args: [{
84
+ providedIn: 'root'
85
+ }]
86
+ }], function () { return [{ type: undefined, decorators: [{
87
+ type: Optional
88
+ }, {
89
+ type: Inject,
90
+ args: [SMART_EXP_TRANSFORMER]
91
+ }] }]; }, null); })();
92
+
35
93
  class SnackBarService {
36
94
  constructor(snackBar) {
37
95
  this.snackBar = snackBar;
@@ -76,5 +134,5 @@ SnackBarModule.ɵinj = ɵɵdefineInjector({ imports: [[
76
134
  * Generated bundle index. Do not edit.
77
135
  */
78
136
 
79
- export { LoadingService, SnackBarModule, SnackBarService };
137
+ export { BaseFormService, LoadingService, QueryResolverService, SnackBarModule, SnackBarService };
80
138
  //# sourceMappingURL=ng-atomic-common-services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services.js","sources":["../../../../libs/common/services/loading/loading.service.ts","../../../../libs/common/services/snack-bar/snack-bar.service.ts","../../../../libs/common/services/snack-bar/snack-bar.module.ts","../../../../libs/common/services/ng-atomic-common-services.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { scan, map, distinctUntilChanged, delay } from 'rxjs/operators';\n\ntype LoadingMap = Record<string, boolean>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingService {\n private loadingEntries$ = new Subject<[string, boolean]>();\n\n loadingMap: LoadingMap = {};\n loadingMap$ = this.loadingEntries$.pipe(\n scan((pre, [key, value]) => ({ ...pre, [key]: value }), {} as LoadingMap),\n map((m: LoadingMap) => Object.entries(m)\n .filter(([k, v]: [string, boolean]) => v)\n .reduce((p, [k, v]) => ({ ...p, [k]: v }), {} as LoadingMap)),\n distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)),\n );\n\n isLoading$ = this.loadingMap$.pipe(\n map((m) => !!Object.keys(m).length),\n delay(0),\n );\n\n constructor() {\n this.loadingMap$.subscribe((m) => {\n this.loadingMap = m;\n });\n }\n\n setKey(key: string): void {\n this.loadingEntries$.next([key, true]);\n }\n\n removeKey(key: string): void {\n this.loadingEntries$.next([key, false]);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SnackBarService {\n\n constructor(private snackBar: MatSnackBar) {}\n\n openSnackBar(message: string, action?: string) {\n this.snackBar.open(message, action, {\n duration: 2000,\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n MatSnackBarModule\n ]\n})\nexport class SnackBarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MASa,cAAc;IAiBzB;QAhBQ,oBAAe,GAAG,IAAI,OAAO,EAAqB,CAAC;QAE3D,eAAU,GAAe,EAAE,CAAC;QAC5B,gBAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CACrC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,sCAAW,GAAG,KAAE,CAAC,GAAG,GAAG,KAAK,IAAG,EAAE,EAAgB,CAAC,EACzE,GAAG,CAAC,CAAC,CAAa,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAoB,KAAK,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,sCAAW,CAAC,KAAE,CAAC,CAAC,GAAG,CAAC,IAAG,EAAE,EAAgB,CAAC,CAAC,EAC/D,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAChF,CAAC;QAEF,eAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EACnC,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;QAGA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACrB,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;KACxC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KACzC;;4EA7BU,cAAc;mDAAd,cAAc,WAAd,cAAc,mBAFb,MAAM;oFAEP,cAAc;cAH1B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCDY,eAAe;IAE1B,YAAoB,QAAqB;QAArB,aAAQ,GAAR,QAAQ,CAAa;KAAI;IAE7C,YAAY,CAAC,OAAe,EAAE,MAAe;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;YAClC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;KACJ;;8EARU,eAAe;oDAAf,eAAe,WAAf,eAAe,mBAFd,MAAM;oFAEP,eAAe;cAH3B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCMY,cAAc;;4EAAd,cAAc;+CAAd,cAAc;mDALhB;YACP,YAAY;YACZ,iBAAiB;SAClB;qFAEU,cAAc,cAJvB,YAAY;QACZ,iBAAiB;oFAGR,cAAc;cAP1B,QAAQ;eAAC;gBACR,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE;oBACP,YAAY;oBACZ,iBAAiB;iBAClB;aACF;;;ACXD;;;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-services.js","sources":["../../../../libs/common/services/form/form.service.ts","../../../../libs/common/services/loading/loading.service.ts","../../../../libs/common/services/query-resolver/query-resolver.service.ts","../../../../libs/common/services/snack-bar/snack-bar.service.ts","../../../../libs/common/services/snack-bar/snack-bar.module.ts","../../../../libs/common/services/ng-atomic-common-services.ts"],"sourcesContent":["import { toObject, isIsoString } from '@ng-atomic/common/utils';\nimport * as dayjs from 'dayjs';\nimport { unflatten, flatten } from 'flat';\nimport { omit, pick } from 'lodash';\n\nconst isNumeric = (v: string): boolean => !isNaN(Number(v)) \n\nconst parseQuery = (v: string, k: string): any => k.match(/id$/i) \n ? v\n : typeof v === 'string' && isIsoString(v) \n ? dayjs(v) \n : isNumeric(v)\n ? Number(v)\n : v;\n\nexport class BaseFormService {\n static fromQueryParams<T>(obj: T): object {\n return Object.entries((unflatten(obj) as any)?.form ?? {}).reduce((m, [k, v]: [string, string]) => ({\n ...m, [k]: parseQuery(v, k),\n }), {});\n }\n\n static toQueryParams<T>(obj: object): T { \n return flatten({form: Object.entries(obj).reduce((m, [k, v]) => ({\n ...m, [k]: dayjs.isDayjs(v) ? v.isValid() ? v.toISOString() : null : v,\n }), {})});\n }\n\n static dayjsKeys(object: object): string[] {\n return Object.entries(object).filter(([_, v]) => dayjs.isDayjs(v)).map(([k]) => k);\n }\n\n static toValue(object: object): object {\n const keys = this.dayjsKeys(object);\n return {...flatten(omit(toObject(object), keys)), ...pick(toObject(object), keys)};\n }\n\n static fromValue(value: object): object {\n const keys = this.dayjsKeys(value);\n return {...unflatten(omit(value, keys)), ...pick(value, keys)};\n }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { scan, map, distinctUntilChanged, delay } from 'rxjs/operators';\n\ntype LoadingMap = Record<string, boolean>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingService {\n private loadingEntries$ = new Subject<[string, boolean]>();\n\n loadingMap: LoadingMap = {};\n loadingMap$ = this.loadingEntries$.pipe(\n scan((pre, [key, value]) => ({ ...pre, [key]: value }), {} as LoadingMap),\n map((m: LoadingMap) => Object.entries(m)\n .filter(([k, v]: [string, boolean]) => v)\n .reduce((p, [k, v]) => ({ ...p, [k]: v }), {} as LoadingMap)),\n distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)),\n );\n\n isLoading$ = this.loadingMap$.pipe(\n map((m) => !!Object.keys(m).length),\n delay(0),\n );\n\n constructor() {\n this.loadingMap$.subscribe((m) => {\n this.loadingMap = m;\n });\n }\n\n setKey(key: string): void {\n this.loadingEntries$.next([key, true]);\n }\n\n removeKey(key: string): void {\n this.loadingEntries$.next([key, false]);\n }\n}\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { filterByQuery } from \"@ng-atomic/common/utils\";\nimport { SmartExpTransformer, smartExpTransformer, SMART_EXP_TRANSFORMER } from '@ng-atomic/common/utils';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QueryResolverService {\n constructor(\n @Optional() @Inject(SMART_EXP_TRANSFORMER) private transformer?: SmartExpTransformer,\n ) {\n this.transformer ??= smartExpTransformer;\n }\n\n resolve<T>(items: T[], queryString: string, dlm: Record<string, string> = {}): T[] {\n return filterByQuery(items, queryString, dlm, this.transformer);\n }\n}","import { Injectable } from '@angular/core';\n\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SnackBarService {\n\n constructor(private snackBar: MatSnackBar) {}\n\n openSnackBar(message: string, action?: string) {\n this.snackBar.open(message, action, {\n duration: 2000,\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n MatSnackBarModule\n ]\n})\nexport class SnackBarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["dayjs.isDayjs"],"mappings":";;;;;;;;;;;AAKA,MAAM,SAAS,GAAG,CAAC,CAAS,KAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3D,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,KAAU,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;MAC7D,CAAC;MACD,OAAO,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;UACvC,KAAK,CAAC,CAAC,CAAC;UACR,SAAS,CAAC,CAAC,CAAC;cACZ,MAAM,CAAC,CAAC,CAAC;cACT,CAAC,CAAC;MAEO,eAAe;IAC1B,OAAO,eAAe,CAAI,GAAM;;QAC9B,OAAO,MAAM,CAAC,OAAO,aAAE,SAAS,CAAC,GAAG,CAAS,0CAAE,IAAI,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAmB,sCACzF,CAAC,KAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAC3B,EAAE,EAAE,CAAC,CAAC;KACT;IAED,OAAO,aAAa,CAAI,GAAW;QACjC,OAAO,OAAO,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,sCACtD,CAAC,KAAE,CAAC,CAAC,GAAGA,OAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,CAAC,IACtE,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;KACX;IAED,OAAO,SAAS,CAAC,MAAc;QAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAKA,OAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACpF;IAED,OAAO,OAAO,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,uCAAW,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,GAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE;KACpF;IAED,OAAO,SAAS,CAAC,KAAa;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,uCAAW,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAK,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;KAChE;;;MC/BU,cAAc;IAiBzB;QAhBQ,oBAAe,GAAG,IAAI,OAAO,EAAqB,CAAC;QAE3D,eAAU,GAAe,EAAE,CAAC;QAC5B,gBAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CACrC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,sCAAW,GAAG,KAAE,CAAC,GAAG,GAAG,KAAK,IAAG,EAAE,EAAgB,CAAC,EACzE,GAAG,CAAC,CAAC,CAAa,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAoB,KAAK,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,sCAAW,CAAC,KAAE,CAAC,CAAC,GAAG,CAAC,IAAG,EAAE,EAAgB,CAAC,CAAC,EAC/D,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAChF,CAAC;QAEF,eAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EACnC,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;QAGA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACrB,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;KACxC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KACzC;;4EA7BU,cAAc;mDAAd,cAAc,WAAd,cAAc,mBAFb,MAAM;oFAEP,cAAc;cAH1B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCAY,oBAAoB;IAC/B,YACqD,WAAiC;;QAAjC,gBAAW,GAAX,WAAW,CAAsB;QAEpF,MAAA,IAAI,CAAC,WAAW,oCAAhB,IAAI,CAAC,WAAW,GAAK,mBAAmB,EAAC;KAC1C;IAED,OAAO,CAAI,KAAU,EAAE,WAAmB,EAAE,MAA8B,EAAE;QAC1E,OAAO,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACjE;;wFATU,oBAAoB,WAET,qBAAqB;yDAFhC,oBAAoB,WAApB,oBAAoB,mBAFnB,MAAM;oFAEP,oBAAoB;cAHhC,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;sBAGI,QAAQ;;sBAAI,MAAM;uBAAC,qBAAqB;;;MCHhC,eAAe;IAE1B,YAAoB,QAAqB;QAArB,aAAQ,GAAR,QAAQ,CAAa;KAAI;IAE7C,YAAY,CAAC,OAAe,EAAE,MAAe;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;YAClC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;KACJ;;8EARU,eAAe;oDAAf,eAAe,WAAf,eAAe,mBAFd,MAAM;oFAEP,eAAe;cAH3B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCMY,cAAc;;4EAAd,cAAc;+CAAd,cAAc;mDALhB;YACP,YAAY;YACZ,iBAAiB;SAClB;qFAEU,cAAc,cAJvB,YAAY;QACZ,iBAAiB;oFAGR,cAAc;cAP1B,QAAQ;eAAC;gBACR,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE;oBACP,YAAY;oBACZ,iBAAiB;iBAClB;aACF;;;ACXD;;;;;;"}
@@ -1,7 +1,8 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { ComponentStore } from '@ngrx/component-store';
3
3
  import { filter, tap, switchMap, map, distinctUntilChanged } from 'rxjs/operators';
4
- import { filterByQuery, compareById } from '@ng-atomic/common/utils';
4
+ import { QueryResolverService } from '@ng-atomic/common/services';
5
+ import { compareById } from '@ng-atomic/common/utils';
5
6
 
6
7
  const tryCatch = (promise) => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
7
8
  try {
@@ -42,10 +43,11 @@ class EntityPageStore extends ComponentStore {
42
43
  }
43
44
 
44
45
  class EntitiesPageStore extends ComponentStore {
45
- constructor(initialState) {
46
+ constructor(initialState, queryResolver = new QueryResolverService()) {
46
47
  super(initialState);
48
+ this.queryResolver = queryResolver;
47
49
  this.userId$ = this.select(state => state.userId).pipe(filter(userId => !!userId));
48
- this.entities$ = this.select(({ query, entities }) => filterByQuery(entities, query, this.LANG_MAP))
50
+ this.entities$ = this.select(({ query, entities }) => this.queryResolver.resolve(entities, query, this.LANG_MAP))
49
51
  .pipe(map((entities) => entities.sort(compareById)))
50
52
  .pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
51
53
  this.setUserId = this.updater((state, userId) => (Object.assign(Object.assign({}, state), { userId })));
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-store.js","sources":["../../../../libs/common/store/entity.page.store.ts","../../../../libs/common/store/entities.page.store.ts","../../../../libs/common/store/ng-atomic-common-store.ts"],"sourcesContent":["import { ComponentStore } from '@ngrx/component-store';\nimport { LoadingService, SnackBarService } from '@ng-atomic/common/services';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap, tap } from 'rxjs/operators';\n\nexport type Mode = 'create' | 'update'\n\nexport interface EntityPageState<Entity> {\n mode: Mode;\n entityId: string;\n entity: Entity;\n}\n\nconst tryCatch = (promise: Promise<any>) => new Promise(async (resolve, reject) => {\n try { resolve(await promise); } catch (error) { reject(error); }\n});\n\nexport abstract class EntityPageStore<S extends EntityPageState<Entity>, Entity> extends ComponentStore<S> {\n get entity() { return this.get().entity}\n\n mode$ = this.select(state => state.mode);\n entityId$ = this.select(state => state.entityId).pipe(filter(id => !!id));\n entity$ = this.select(state => state.entity);\n\n setMode = this.updater((state, mode: Mode) => ({...state, mode}));\n setEntityId = this.updater((state, entityId: string) => ({...state, entityId}));\n setEntity = this.updater((state, entity: Entity) => ({...state, entity}));\n\n constructor(initialState?: S) {\n super(initialState);\n this.getEntity(this.entityId$);\n }\n\n getEntityIdAndMode = this.effect((entityId$: Observable<string>) => entityId$.pipe(\n tap(id => this.setMode(id === 'new' ? 'create' : 'update')),\n filter(id => id !== 'new'),\n tap((id: string) => this.setEntityId(id)),\n ));\n\n getEntity = this.effect((entityId$: Observable<string>) => entityId$.pipe(\n switchMap(id => this._getEntity(id)),\n tap((entity: Entity) => this.setEntity(entity)),\n ));\n\n\n\n createEntity(value: Partial<Entity>) {\n const entity: Entity = ({...this.entity, ...value});\n\n this.loading.setKey('[pages/stores/pages/store] Create Store');\n\n return tryCatch(this._createEntity(entity))\n .catch(error => (console.error(error), this.snackBar.openSnackBar('作成に失敗しました。')))\n .finally(() => this.loading.removeKey('[pages/stores/pages/store] Create Store'));\n }\n\n updateEntity(value: Partial<Entity>) {\n const entity: Entity = ({...this.entity, ...value});\n\n this.loading.setKey('[pages/stores/pages/store] Create Store');\n return this._updateEntity(entity)\n .catch(error => (console.error(error), this.snackBar.openSnackBar('更新に失敗しました。')))\n .finally(() => this.loading.removeKey('[pages/stores/pages/store] Create Store'));\n }\n\n abstract _getEntity(id: string): Observable<Entity>;\n abstract _createEntity(entity: Entity): Promise<Entity>;\n abstract _updateEntity(entity: Entity): Promise<void>;\n\n abstract get loading(): LoadingService;\n abstract get snackBar(): SnackBarService;\n\n}\n","import { ComponentStore } from '@ngrx/component-store';\nimport { LoadingService } from '@ng-atomic/common/services';\n// import { Page } from '../components/templates/smart-index';\nimport { filterByQuery } from '@ng-atomic/common/utils';\nimport { compareById } from '@ng-atomic/common/utils';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, tap, map, filter, switchMap } from 'rxjs/operators';\n\nexport type Page = any\n\nexport interface EntitiesPageState<E> {\n userId: string; \n idSet: Set<string>;\n query: string;\n entities: E[]\n page: Page;\n}\n\nexport abstract class EntitiesPageStore<S extends EntitiesPageState<E>, E extends {id: string}> extends ComponentStore<S> {\n abstract LANG_MAP: Record<string, string>;\n\n get page(): Page { return this.get(state => state.page); }\n get idSet(): Set<string> { return this.get(state => state.idSet); }\n\n userId$ = this.select(state => state.userId).pipe(filter(userId => !!userId));\n entities$ = this.select(({query, entities}) => filterByQuery(entities, query, this.LANG_MAP))\n .pipe(map((entities: E[]) => entities.sort(compareById)))\n .pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));\n\n constructor(initialState: S) {\n super(initialState);\n this.getPage(this.entities$);\n this.getEntities(this.userId$);\n }\n\n setUserId = this.updater((state, userId: string) => ({...state, userId}));\n setEntities = this.updater((state, entities: E[]) => ({...state, entities}));\n setPage = this.updater((state, page: Page) => ({...state, page}));\n setIdSet = this.updater((state, idSet: Set<string>) => ({...state, idSet}));\n addId = this.updater((state, id: string) => ({...state, idSet: new Set([...state.idSet, id])}));\n removeId = this.updater((state, id: string) => {\n return {...state, idSet: new Set([...state.idSet].filter(_id => _id !== id))}\n });\n setQuery = this.updater((state, query: string) => ({...state, query}));\n\n getPage = this.effect((entities$: Observable<E[]>) => entities$.pipe(\n tap(({length}: E[]) => this.setPage(this.page.patch({length}))),\n ));\n\n getEntities = this.effect((userId$: Observable<string>) => userId$.pipe(\n filter(userId => !!userId),\n tap(() => this.loading.setKey('[/entities] Get Entities')),\n switchMap(() => this._getEntities()),\n tap((entities: E[]) => this.setEntities(entities)),\n tap(() => this.loading.removeKey('[/entities] Get Entities')),\n )); \n\n abstract _getEntities(): Observable<E[]>;\n abstract loading: LoadingService;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAaA,MAAM,QAAQ,GAAG,CAAC,OAAqB,KAAK,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM;IAC5E,IAAI;QAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;KAAE;IAAC,OAAO,KAAK,EAAE;QAAE,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE;AAClE,CAAC,CAAA,CAAC,CAAC;MAEmB,eAA2D,SAAQ,cAAiB;IAWxG,YAAY,YAAgB;QAC1B,KAAK,CAAC,YAAY,CAAC,CAAC;QATtB,UAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,cAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAE7C,YAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAU,sCAAU,KAAK,KAAE,IAAI,IAAE,CAAC,CAAC;QAClE,gBAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAgB,sCAAU,KAAK,KAAE,QAAQ,IAAE,CAAC,CAAC;QAChF,cAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAc,sCAAU,KAAK,KAAE,MAAM,IAAE,CAAC,CAAC;QAO1E,uBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAA6B,KAAK,SAAS,CAAC,IAAI,CAChF,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAC3D,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,EAC1B,GAAG,CAAC,CAAC,EAAU,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAC1C,CAAC,CAAC;QAEH,cAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAA6B,KAAK,SAAS,CAAC,IAAI,CACvE,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EACpC,GAAG,CAAC,CAAC,MAAc,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAChD,CAAC,CAAC;QAZD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAChC;IAbD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAA,EAAC;IA4BxC,YAAY,CAAC,KAAsB;QACjC,MAAM,MAAM,oCAAgB,IAAI,CAAC,MAAM,GAAK,KAAK,EAAE,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAE/D,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aACxC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;aAChF,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;KACrF;IAED,YAAY,CAAC,KAAsB;QACjC,MAAM,MAAM,oCAAgB,IAAI,CAAC,MAAM,GAAK,KAAK,EAAE,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;aAC9B,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;aAChF,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;KACrF;;;MC7CmB,iBAA0E,SAAQ,cAAiB;IAWvH,YAAY,YAAe;QACzB,KAAK,CAAC,YAAY,CAAC,CAAC;QANtB,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,cAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,KAAK,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1F,IAAI,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;aACxD,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAQzF,cAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAc,sCAAU,KAAK,KAAE,MAAM,IAAE,CAAC,CAAC;QAC1E,gBAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAa,sCAAU,KAAK,KAAE,QAAQ,IAAE,CAAC,CAAC;QAC7E,YAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAU,sCAAU,KAAK,KAAE,IAAI,IAAE,CAAC,CAAC;QAClE,aAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAkB,sCAAU,KAAK,KAAE,KAAK,IAAE,CAAC,CAAC;QAC5E,UAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAU,sCAAU,KAAK,KAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAE,CAAC,CAAC;QAChG,aAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAU;YACxC,uCAAW,KAAK,KAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,IAAC;SAC9E,CAAC,CAAC;QACH,aAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAa,sCAAU,KAAK,KAAE,KAAK,IAAE,CAAC,CAAC;QAEvE,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAA0B,KAAK,SAAS,CAAC,IAAI,CAClE,GAAG,CAAC,CAAC,EAAC,MAAM,EAAM,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,CAChE,CAAC,CAAC;QAEH,gBAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAA2B,KAAK,OAAO,CAAC,IAAI,CACrE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAC1B,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAC1D,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,EACpC,GAAG,CAAC,CAAC,QAAa,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAClD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAC9D,CAAC,CAAC;QAxBD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;IAZD,IAAI,IAAI,KAAW,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;IAC1D,IAAI,KAAK,KAAkB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;;;ACtBrE;;;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-store.js","sources":["../../../../libs/common/store/entity.page.store.ts","../../../../libs/common/store/entities.page.store.ts","../../../../libs/common/store/ng-atomic-common-store.ts"],"sourcesContent":["import { ComponentStore } from '@ngrx/component-store';\nimport { LoadingService, SnackBarService } from '@ng-atomic/common/services';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap, tap } from 'rxjs/operators';\n\nexport type Mode = 'create' | 'update'\n\nexport interface EntityPageState<Entity> {\n mode: Mode;\n entityId: string;\n entity: Entity;\n}\n\nconst tryCatch = (promise: Promise<any>) => new Promise(async (resolve, reject) => {\n try { resolve(await promise); } catch (error) { reject(error); }\n});\n\nexport abstract class EntityPageStore<S extends EntityPageState<Entity>, Entity> extends ComponentStore<S> {\n get entity() { return this.get().entity}\n\n mode$ = this.select(state => state.mode);\n entityId$ = this.select(state => state.entityId).pipe(filter(id => !!id));\n entity$ = this.select(state => state.entity);\n\n setMode = this.updater((state, mode: Mode) => ({...state, mode}));\n setEntityId = this.updater((state, entityId: string) => ({...state, entityId}));\n setEntity = this.updater((state, entity: Entity) => ({...state, entity}));\n\n constructor(initialState?: S) {\n super(initialState);\n this.getEntity(this.entityId$);\n }\n\n getEntityIdAndMode = this.effect((entityId$: Observable<string>) => entityId$.pipe(\n tap(id => this.setMode(id === 'new' ? 'create' : 'update')),\n filter(id => id !== 'new'),\n tap((id: string) => this.setEntityId(id)),\n ));\n\n getEntity = this.effect((entityId$: Observable<string>) => entityId$.pipe(\n switchMap(id => this._getEntity(id)),\n tap((entity: Entity) => this.setEntity(entity)),\n ));\n\n\n\n createEntity(value: Partial<Entity>) {\n const entity: Entity = ({...this.entity, ...value});\n\n this.loading.setKey('[pages/stores/pages/store] Create Store');\n\n return tryCatch(this._createEntity(entity))\n .catch(error => (console.error(error), this.snackBar.openSnackBar('作成に失敗しました。')))\n .finally(() => this.loading.removeKey('[pages/stores/pages/store] Create Store'));\n }\n\n updateEntity(value: Partial<Entity>) {\n const entity: Entity = ({...this.entity, ...value});\n\n this.loading.setKey('[pages/stores/pages/store] Create Store');\n return this._updateEntity(entity)\n .catch(error => (console.error(error), this.snackBar.openSnackBar('更新に失敗しました。')))\n .finally(() => this.loading.removeKey('[pages/stores/pages/store] Create Store'));\n }\n\n abstract _getEntity(id: string): Observable<Entity>;\n abstract _createEntity(entity: Entity): Promise<Entity>;\n abstract _updateEntity(entity: Entity): Promise<void>;\n\n abstract get loading(): LoadingService;\n abstract get snackBar(): SnackBarService;\n\n}\n","import { ComponentStore } from '@ngrx/component-store';\nimport { LoadingService, QueryResolverService } from '@ng-atomic/common/services';\n// import { Page } from '../components/templates/smart-index';\nimport { filterByQuery } from '@ng-atomic/common/utils';\nimport { compareById } from '@ng-atomic/common/utils';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, tap, map, filter, switchMap } from 'rxjs/operators';\n\nexport type Page = any\n\nexport interface EntitiesPageState<E> {\n userId: string; \n idSet: Set<string>;\n query: string;\n entities: E[]\n page: Page;\n}\n\nexport abstract class EntitiesPageStore<S extends EntitiesPageState<E>, E extends {id: string}> extends ComponentStore<S> {\n abstract LANG_MAP: Record<string, string>;\n\n get page(): Page { return this.get(state => state.page); }\n get idSet(): Set<string> { return this.get(state => state.idSet); }\n\n userId$ = this.select(state => state.userId).pipe(filter(userId => !!userId));\n entities$ = this.select(({query, entities}) => this.queryResolver.resolve(entities, query, this.LANG_MAP))\n .pipe(map((entities: E[]) => entities.sort(compareById)))\n .pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));\n\n constructor(\n initialState: S,\n public queryResolver = new QueryResolverService(),\n ) {\n super(initialState);\n this.getPage(this.entities$);\n this.getEntities(this.userId$);\n }\n\n setUserId = this.updater((state, userId: string) => ({...state, userId}));\n setEntities = this.updater((state, entities: E[]) => ({...state, entities}));\n setPage = this.updater((state, page: Page) => ({...state, page}));\n setIdSet = this.updater((state, idSet: Set<string>) => ({...state, idSet}));\n addId = this.updater((state, id: string) => ({...state, idSet: new Set([...state.idSet, id])}));\n removeId = this.updater((state, id: string) => {\n return {...state, idSet: new Set([...state.idSet].filter(_id => _id !== id))}\n });\n setQuery = this.updater((state, query: string) => ({...state, query}));\n\n getPage = this.effect((entities$: Observable<E[]>) => entities$.pipe(\n tap(({length}: E[]) => this.setPage(this.page.patch({length}))),\n ));\n\n getEntities = this.effect((userId$: Observable<string>) => userId$.pipe(\n filter(userId => !!userId),\n tap(() => this.loading.setKey('[/entities] Get Entities')),\n switchMap(() => this._getEntities()),\n tap((entities: E[]) => this.setEntities(entities)),\n tap(() => this.loading.removeKey('[/entities] Get Entities')),\n )); \n\n abstract _getEntities(): Observable<E[]>;\n abstract loading: LoadingService;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAaA,MAAM,QAAQ,GAAG,CAAC,OAAqB,KAAK,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM;IAC5E,IAAI;QAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;KAAE;IAAC,OAAO,KAAK,EAAE;QAAE,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE;AAClE,CAAC,CAAA,CAAC,CAAC;MAEmB,eAA2D,SAAQ,cAAiB;IAWxG,YAAY,YAAgB;QAC1B,KAAK,CAAC,YAAY,CAAC,CAAC;QATtB,UAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,cAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAE7C,YAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAU,sCAAU,KAAK,KAAE,IAAI,IAAE,CAAC,CAAC;QAClE,gBAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAgB,sCAAU,KAAK,KAAE,QAAQ,IAAE,CAAC,CAAC;QAChF,cAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAc,sCAAU,KAAK,KAAE,MAAM,IAAE,CAAC,CAAC;QAO1E,uBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAA6B,KAAK,SAAS,CAAC,IAAI,CAChF,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAC3D,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,EAC1B,GAAG,CAAC,CAAC,EAAU,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAC1C,CAAC,CAAC;QAEH,cAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAA6B,KAAK,SAAS,CAAC,IAAI,CACvE,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EACpC,GAAG,CAAC,CAAC,MAAc,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAChD,CAAC,CAAC;QAZD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAChC;IAbD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAA,EAAC;IA4BxC,YAAY,CAAC,KAAsB;QACjC,MAAM,MAAM,oCAAgB,IAAI,CAAC,MAAM,GAAK,KAAK,EAAE,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAE/D,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aACxC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;aAChF,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;KACrF;IAED,YAAY,CAAC,KAAsB;QACjC,MAAM,MAAM,oCAAgB,IAAI,CAAC,MAAM,GAAK,KAAK,EAAE,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;aAC9B,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;aAChF,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;KACrF;;;MC7CmB,iBAA0E,SAAQ,cAAiB;IAWvH,YACE,YAAe,EACR,gBAAgB,IAAI,oBAAoB,EAAE;QAEjD,KAAK,CAAC,YAAY,CAAC,CAAC;QAFb,kBAAa,GAAb,aAAa,CAA6B;QAPnD,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,cAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACvG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;aACxD,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAWzF,cAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAc,sCAAU,KAAK,KAAE,MAAM,IAAE,CAAC,CAAC;QAC1E,gBAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAa,sCAAU,KAAK,KAAE,QAAQ,IAAE,CAAC,CAAC;QAC7E,YAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAU,sCAAU,KAAK,KAAE,IAAI,IAAE,CAAC,CAAC;QAClE,aAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAkB,sCAAU,KAAK,KAAE,KAAK,IAAE,CAAC,CAAC;QAC5E,UAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAU,sCAAU,KAAK,KAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAE,CAAC,CAAC;QAChG,aAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAU;YACxC,uCAAW,KAAK,KAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,IAAC;SAC9E,CAAC,CAAC;QACH,aAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAa,sCAAU,KAAK,KAAE,KAAK,IAAE,CAAC,CAAC;QAEvE,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAA0B,KAAK,SAAS,CAAC,IAAI,CAClE,GAAG,CAAC,CAAC,EAAC,MAAM,EAAM,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,CAChE,CAAC,CAAC;QAEH,gBAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAA2B,KAAK,OAAO,CAAC,IAAI,CACrE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAC1B,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAC1D,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,EACpC,GAAG,CAAC,CAAC,QAAa,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAClD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAC9D,CAAC,CAAC;QAxBD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;IAfD,IAAI,IAAI,KAAW,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;IAC1D,IAAI,KAAK,KAAkB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;;;ACtBrE;;;;;;"}