@solar-angular/core 19.4.2 → 20.0.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.
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Pipe, makeEnvironmentProviders } from '@angular/core';
3
- import { finalize } from 'rxjs';
2
+ import { InjectionToken, Pipe, makeEnvironmentProviders, signal, computed } from '@angular/core';
3
+ import { finalize, tap } from 'rxjs';
4
+ import { rxResource } from '@angular/core/rxjs-interop';
4
5
 
5
6
  const SOLAR_CONFIG = new InjectionToken('');
6
7
 
@@ -35,10 +36,10 @@ class CnumberPipe {
35
36
  }
36
37
  return str.replace(/零(千|百|拾|角)/g, '零').replace(/(零)+/g, '零').replace(/零(万|亿|元)/g, '$1').replace(/(亿)万|壹(拾)/g, '$1$2').replace(/^元零?|零分/g, '').replace(/元$/g, '元整');
37
38
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CnumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
39
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: CnumberPipe, isStandalone: true, name: "cnumber" }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CnumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
40
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: CnumberPipe, isStandalone: true, name: "cnumber" }); }
40
41
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CnumberPipe, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CnumberPipe, decorators: [{
42
43
  type: Pipe,
43
44
  args: [{
44
45
  name: 'cnumber',
@@ -50,10 +51,10 @@ class FindByIdPipe {
50
51
  transform(id, array) {
51
52
  return array.find(item => item.id === id) ?? null;
52
53
  }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FindByIdPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
54
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: FindByIdPipe, isStandalone: true, name: "findById" }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FindByIdPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
55
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: FindByIdPipe, isStandalone: true, name: "findById" }); }
55
56
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FindByIdPipe, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FindByIdPipe, decorators: [{
57
58
  type: Pipe,
58
59
  args: [{
59
60
  name: 'findById',
@@ -70,9 +71,51 @@ function provideSolar(config) {
70
71
  ]);
71
72
  }
72
73
 
74
+ function pageResource(opts) {
75
+ const pageNo = signal(opts.pageNo || 1, ...(ngDevMode ? [{ debugName: "pageNo" }] : []));
76
+ const pageSize = signal(opts.pageSize || 15, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
77
+ const items = signal([], ...(ngDevMode ? [{ debugName: "items" }] : []));
78
+ // TODO v21 直接用 resource.snapshot
79
+ const snapshotValue = signal(null, ...(ngDevMode ? [{ debugName: "snapshotValue" }] : []));
80
+ const resource = rxResource({
81
+ ...opts,
82
+ params: () => ({
83
+ pageNo: pageNo(),
84
+ pageSize: pageSize(),
85
+ ...opts.params?.()
86
+ }),
87
+ stream: params => opts.stream(params).pipe(tap(page => {
88
+ if (pageNo() === 1) {
89
+ items.set(page.content);
90
+ }
91
+ else {
92
+ items.update(value => [...value, ...page.content]);
93
+ }
94
+ snapshotValue.set(page);
95
+ }))
96
+ });
97
+ const totalPages = computed(() => snapshotValue()?.totalPages || 0, ...(ngDevMode ? [{ debugName: "totalPages" }] : []));
98
+ return Object.assign(resource, {
99
+ items,
100
+ snapshotValue,
101
+ pageNo,
102
+ pageSize,
103
+ totalPages,
104
+ next() {
105
+ if (!resource.value()?.last) {
106
+ pageNo.update(value => ++value);
107
+ }
108
+ },
109
+ reset() {
110
+ pageNo.set(1);
111
+ resource.reload();
112
+ }
113
+ });
114
+ }
115
+
73
116
  /**
74
117
  * Generated bundle index. Do not edit.
75
118
  */
76
119
 
77
- export { CnumberPipe, FindByIdPipe, SOLAR_CONFIG, attachLoading, provideSolar };
120
+ export { CnumberPipe, FindByIdPipe, SOLAR_CONFIG, attachLoading, pageResource, provideSolar };
78
121
  //# sourceMappingURL=solar-angular-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"solar-angular-core.mjs","sources":["../../../packages/core/src/config.ts","../../../packages/core/src/operator.ts","../../../packages/core/src/pipes/cnumber.pipe.ts","../../../packages/core/src/pipes/find-by-id.pipe.ts","../../../packages/core/src/provider.ts","../../../packages/core/src/solar-angular-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface SolarConfig {\n clientId: string;\n earthUrl: string;\n mercuryUrl: string;\n}\n\nexport const SOLAR_CONFIG = new InjectionToken<SolarConfig>('');\n","import { WritableSignal } from '@angular/core';\nimport { Observable, finalize } from 'rxjs';\n\n/**\n * Attaches a loading indicator to an observable.\n *\n * @param loading - A writable signal indicating the loading state.\n * @returns A function that takes an observable and returns a new observable with loading state managed.\n */\nexport function attachLoading<T>(loading: WritableSignal<boolean>) {\n return (observable: Observable<T>) => {\n loading.set(true)\n return observable.pipe(\n finalize(() => loading.set(false))\n );\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'cnumber',\n standalone: true\n})\nexport class CnumberPipe implements PipeTransform {\n\n transform(v: string): any {\n if (!/^(0|[1-9]\\d*)(\\.\\d+)?$/.test(v)) {\n return null;\n }\n let unit = '千百拾亿千百拾万千百拾元角分';\n let str = '';\n v += '00';\n const p = v.indexOf('.');\n if (p >= 0) {\n v = v.substring(0, p) + v.substr(p + 1, 2);\n }\n unit = unit.substr(unit.length - v.length);\n for (let i = 0; i < v.length; i++) {\n str += '零壹贰叁肆伍陆柒捌玖'.charAt(+v.charAt(i)) + unit.charAt(i);\n }\n return str.replace(/零(千|百|拾|角)/g, '零').replace(/(零)+/g, '零').replace(/零(万|亿|元)/g, '$1').replace(/(亿)万|壹(拾)/g, '$1$2').replace(/^元零?|零分/g, '').replace(/元$/g, '元整');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'findById',\n standalone: true\n})\nexport class FindByIdPipe<T extends { id: any }> implements PipeTransform {\n\n transform(id: T['id'], array: T[]): unknown {\n return array.find(item => item.id === id) ?? null;\n }\n\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { SOLAR_CONFIG, SolarConfig } from './config';\n\nexport function provideSolar(config: SolarConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: SOLAR_CONFIG,\n useValue: config\n }\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solar-angular-core.mjs","sources":["../tmp-esm2022/config.js","../tmp-esm2022/operator.js","../tmp-esm2022/pipes/cnumber.pipe.js","../tmp-esm2022/pipes/find-by-id.pipe.js","../tmp-esm2022/provider.js","../tmp-esm2022/resources/page-resource.js","../tmp-esm2022/solar-angular-core.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const SOLAR_CONFIG = new InjectionToken('');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTb2xhckNvbmZpZyB7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIGVhcnRoVXJsOiBzdHJpbmc7XG4gIG1lcmN1cnlVcmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNPTEFSX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTb2xhckNvbmZpZz4oJycpO1xuIl19","import { finalize } from 'rxjs';\n/**\n * Attaches a loading indicator to an observable.\n *\n * @param loading - A writable signal indicating the loading state.\n * @returns A function that takes an observable and returns a new observable with loading state managed.\n */\nexport function attachLoading(loading) {\n return (observable) => {\n loading.set(true);\n return observable.pipe(finalize(() => loading.set(false)));\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9vcGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBSSxPQUFnQztJQUMvRCxPQUFPLENBQUMsVUFBeUIsRUFBRSxFQUFFO1FBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNwQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNuQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEF0dGFjaGVzIGEgbG9hZGluZyBpbmRpY2F0b3IgdG8gYW4gb2JzZXJ2YWJsZS5cbiAqXG4gKiBAcGFyYW0gbG9hZGluZyAtIEEgd3JpdGFibGUgc2lnbmFsIGluZGljYXRpbmcgdGhlIGxvYWRpbmcgc3RhdGUuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gb2JzZXJ2YWJsZSBhbmQgcmV0dXJucyBhIG5ldyBvYnNlcnZhYmxlIHdpdGggbG9hZGluZyBzdGF0ZSBtYW5hZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoTG9hZGluZzxUPihsb2FkaW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPikge1xuICByZXR1cm4gKG9ic2VydmFibGU6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICBsb2FkaW5nLnNldCh0cnVlKVxuICAgIHJldHVybiBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICBmaW5hbGl6ZSgoKSA9PiBsb2FkaW5nLnNldChmYWxzZSkpXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class CnumberPipe {\n transform(v) {\n if (!/^(0|[1-9]\\d*)(\\.\\d+)?$/.test(v)) {\n return null;\n }\n let unit = '千百拾亿千百拾万千百拾元角分';\n let str = '';\n v += '00';\n const p = v.indexOf('.');\n if (p >= 0) {\n v = v.substring(0, p) + v.substr(p + 1, 2);\n }\n unit = unit.substr(unit.length - v.length);\n for (let i = 0; i < v.length; i++) {\n str += '零壹贰叁肆伍陆柒捌玖'.charAt(+v.charAt(i)) + unit.charAt(i);\n }\n return str.replace(/零(千|百|拾|角)/g, '零').replace(/(零)+/g, '零').replace(/零(万|亿|元)/g, '$1').replace(/(亿)万|壹(拾)/g, '$1$2').replace(/^元零?|零分/g, '').replace(/元$/g, '元整');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CnumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: CnumberPipe, isStandalone: true, name: \"cnumber\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CnumberPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'cnumber',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY251bWJlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcGlwZXMvY251bWJlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sV0FBVztJQUV0QixTQUFTLENBQUMsQ0FBUztRQUNqQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7UUFDNUIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDWCxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JLLENBQUM7OEdBbEJVLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NudW1iZXInLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENudW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHY6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCEvXigwfFsxLTldXFxkKikoXFwuXFxkKyk/JC8udGVzdCh2KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGxldCB1bml0ID0gJ+WNg+eZvuaLvuS6v+WNg+eZvuaLvuS4h+WNg+eZvuaLvuWFg+inkuWIhic7XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIHYgKz0gJzAwJztcbiAgICBjb25zdCBwID0gdi5pbmRleE9mKCcuJyk7XG4gICAgaWYgKHAgPj0gMCkge1xuICAgICAgdiA9IHYuc3Vic3RyaW5nKDAsIHApICsgdi5zdWJzdHIocCArIDEsIDIpO1xuICAgIH1cbiAgICB1bml0ID0gdW5pdC5zdWJzdHIodW5pdC5sZW5ndGggLSB2Lmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBzdHIgKz0gJ+mbtuWjuei0sOWPgeiChuS8jemZhuafkuaNjOeOlicuY2hhckF0KCt2LmNoYXJBdChpKSkgKyB1bml0LmNoYXJBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC/pm7Yo5Y2DfOeZvnzmi7586KeSKS9nLCAn6Zu2JykucmVwbGFjZSgvKOmbtikrL2csICfpm7YnKS5yZXBsYWNlKC/pm7Yo5LiHfOS6v3zlhYMpL2csICckMScpLnJlcGxhY2UoLyjkur8p5LiHfOWjuSjmi74pL2csICckMSQyJykucmVwbGFjZSgvXuWFg+mbtj986Zu25YiGL2csICcnKS5yZXBsYWNlKC/lhYMkL2csICflhYPmlbQnKTtcbiAgfVxuXG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class FindByIdPipe {\n transform(id, array) {\n return array.find(item => item.id === id) ?? null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: FindByIdPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: FindByIdPipe, isStandalone: true, name: \"findById\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: FindByIdPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'findById',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1ieS1pZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcGlwZXMvZmluZC1ieS1pZC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixTQUFTLENBQUMsRUFBVyxFQUFFLEtBQVU7UUFDL0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDcEQsQ0FBQzs4R0FKVSxZQUFZOzRHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSnhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZmluZEJ5SWQnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRCeUlkUGlwZTxUIGV4dGVuZHMgeyBpZDogYW55IH0+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKGlkOiBUWydpZCddLCBhcnJheTogVFtdKTogdW5rbm93biB7XG4gICAgcmV0dXJuIGFycmF5LmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkgPz8gbnVsbDtcbiAgfVxuXG59XG4iXX0=","import { makeEnvironmentProviders } from '@angular/core';\nimport { SOLAR_CONFIG } from './config';\nexport function provideSolar(config) {\n return makeEnvironmentProviders([\n {\n provide: SOLAR_CONFIG,\n useValue: config\n }\n ]);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxVQUFVLENBQUM7QUFFckQsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFtQjtJQUM5QyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLFlBQVk7WUFDckIsUUFBUSxFQUFFLE1BQU07U0FDakI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU09MQVJfQ09ORklHLCBTb2xhckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTb2xhcihjb25maWc6IFNvbGFyQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTT0xBUl9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogY29uZmlnXG4gICAgfVxuICBdKTtcbn1cbiJdfQ==","import { computed, signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { tap } from 'rxjs';\nexport function pageResource(opts) {\n const pageNo = signal(opts.pageNo || 1, ...(ngDevMode ? [{ debugName: \"pageNo\" }] : []));\n const pageSize = signal(opts.pageSize || 15, ...(ngDevMode ? [{ debugName: \"pageSize\" }] : []));\n const items = signal([], ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n // TODO v21 直接用 resource.snapshot\n const snapshotValue = signal(null, ...(ngDevMode ? [{ debugName: \"snapshotValue\" }] : []));\n const resource = rxResource({\n ...opts,\n params: () => ({\n pageNo: pageNo(),\n pageSize: pageSize(),\n ...opts.params?.()\n }),\n stream: params => opts.stream(params).pipe(tap(page => {\n if (pageNo() === 1) {\n items.set(page.content);\n }\n else {\n items.update(value => [...value, ...page.content]);\n }\n snapshotValue.set(page);\n }))\n });\n const totalPages = computed(() => snapshotValue()?.totalPages || 0, ...(ngDevMode ? [{ debugName: \"totalPages\" }] : []));\n return Object.assign(resource, {\n items,\n snapshotValue,\n pageNo,\n pageSize,\n totalPages,\n next() {\n if (!resource.value()?.last) {\n pageNo.update(value => ++value);\n }\n },\n reset() {\n pageNo.set(1);\n resource.reload();\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3Jlc291cmNlcy9wYWdlLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUF3QixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsTUFBTSxVQUFVLFlBQVksQ0FBTyxJQUF3RTtJQUN6RyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGtEQUFDLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxvREFBQyxDQUFDO0lBQzdDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBTSxFQUFFLGlEQUFDLENBQUM7SUFDOUIsaUNBQWlDO0lBQ2pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBaUIsSUFBSSx5REFBQyxDQUFDO0lBRW5ELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMxQixHQUFHLElBQUk7UUFDUCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNiLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDaEIsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUNwQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBTztTQUN4QixDQUFDO1FBQ0YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUNIO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLFVBQVUsSUFBSSxDQUFDLHNEQUFDLENBQUM7SUFFcEUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUM3QixLQUFLO1FBQ0wsYUFBYTtRQUNiLE1BQU07UUFDTixRQUFRO1FBQ1IsVUFBVTtRQUNWLElBQUk7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUNELEtBQUs7WUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2QsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVJlc291cmNlT3B0aW9ucywgY29tcHV0ZWQsIFJlc291cmNlTG9hZGVyUGFyYW1zLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJ4UmVzb3VyY2UgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL3N1bic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhZ2VSZXNvdXJjZTxULCBSPihvcHRzOiBQYWdlUmVzb3VyY2VPcHRpb25zPFQsIFI+ICYgeyBwYWdlTm8/OiBudW1iZXIsIHBhZ2VTaXplPzogbnVtYmVyIH0pIHtcbiAgY29uc3QgcGFnZU5vID0gc2lnbmFsKG9wdHMucGFnZU5vIHx8IDEpO1xuICBjb25zdCBwYWdlU2l6ZSA9IHNpZ25hbChvcHRzLnBhZ2VTaXplIHx8IDE1KTtcbiAgY29uc3QgaXRlbXMgPSBzaWduYWw8VFtdPihbXSk7XG4gIC8vIFRPRE8gdjIxIOebtOaOpeeUqCByZXNvdXJjZS5zbmFwc2hvdFxuICBjb25zdCBzbmFwc2hvdFZhbHVlID0gc2lnbmFsPFBhZ2U8VD4gfCBudWxsPihudWxsKTtcblxuICBjb25zdCByZXNvdXJjZSA9IHJ4UmVzb3VyY2Uoe1xuICAgIC4uLm9wdHMsXG4gICAgcGFyYW1zOiAoKSA9PiAoe1xuICAgICAgcGFnZU5vOiBwYWdlTm8oKSxcbiAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZSgpLFxuICAgICAgLi4ub3B0cy5wYXJhbXM/LigpIGFzIFJcbiAgICB9KSxcbiAgICBzdHJlYW06IHBhcmFtcyA9PiBvcHRzLnN0cmVhbShwYXJhbXMpLnBpcGUoXG4gICAgICB0YXAocGFnZSA9PiB7XG4gICAgICAgIGlmIChwYWdlTm8oKSA9PT0gMSkge1xuICAgICAgICAgIGl0ZW1zLnNldChwYWdlLmNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1zLnVwZGF0ZSh2YWx1ZSA9PiBbLi4udmFsdWUsIC4uLnBhZ2UuY29udGVudF0pO1xuICAgICAgICB9XG4gICAgICAgIHNuYXBzaG90VmFsdWUuc2V0KHBhZ2UpO1xuICAgICAgfSlcbiAgICApXG4gIH0pO1xuXG4gIGNvbnN0IHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiBzbmFwc2hvdFZhbHVlKCk/LnRvdGFsUGFnZXMgfHwgMCk7XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocmVzb3VyY2UsIHtcbiAgICBpdGVtcyxcbiAgICBzbmFwc2hvdFZhbHVlLFxuICAgIHBhZ2VObyxcbiAgICBwYWdlU2l6ZSxcbiAgICB0b3RhbFBhZ2VzLFxuICAgIG5leHQoKSB7XG4gICAgICBpZiAoIXJlc291cmNlLnZhbHVlKCk/Lmxhc3QpIHtcbiAgICAgICAgcGFnZU5vLnVwZGF0ZSh2YWx1ZSA9PiArK3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc2V0KCkge1xuICAgICAgcGFnZU5vLnNldCgxKTtcbiAgICAgIHJlc291cmNlLnJlbG9hZCgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVJlc291cmNlT3B0aW9uczxULCBSPiBleHRlbmRzIEJhc2VSZXNvdXJjZU9wdGlvbnM8UGFnZTxUPiwgUj4ge1xuICBzdHJlYW06IChwYXJhbXM6IFJlc291cmNlTG9hZGVyUGFyYW1zPFIgJiB7IHBhZ2VObzogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyIH0+KSA9PiBPYnNlcnZhYmxlPFBhZ2U8VD4+O1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci1jb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvc29sYXItYW5ndWxhci1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,4 +1,57 @@
1
- export * from './config';
2
- export * from './operator';
3
- export * from './pipes';
4
- export * from './provider';
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, WritableSignal, PipeTransform, EnvironmentProviders, BaseResourceOptions, ResourceLoaderParams } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+ import { Page } from '@solar-kit/planets/sun';
5
+
6
+ interface SolarConfig {
7
+ clientId: string;
8
+ earthUrl: string;
9
+ mercuryUrl: string;
10
+ }
11
+ declare const SOLAR_CONFIG: InjectionToken<SolarConfig>;
12
+
13
+ /**
14
+ * Attaches a loading indicator to an observable.
15
+ *
16
+ * @param loading - A writable signal indicating the loading state.
17
+ * @returns A function that takes an observable and returns a new observable with loading state managed.
18
+ */
19
+ declare function attachLoading<T>(loading: WritableSignal<boolean>): (observable: Observable<T>) => Observable<T>;
20
+
21
+ declare class CnumberPipe implements PipeTransform {
22
+ transform(v: string): any;
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnumberPipe, never>;
24
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<CnumberPipe, "cnumber", true>;
25
+ }
26
+
27
+ declare class FindByIdPipe<T extends {
28
+ id: any;
29
+ }> implements PipeTransform {
30
+ transform(id: T['id'], array: T[]): unknown;
31
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FindByIdPipe<any>, never>;
32
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<FindByIdPipe<any>, "findById", true>;
33
+ }
34
+
35
+ declare function provideSolar(config: SolarConfig): EnvironmentProviders;
36
+
37
+ declare function pageResource<T, R>(opts: PageResourceOptions<T, R> & {
38
+ pageNo?: number;
39
+ pageSize?: number;
40
+ }): _angular_core.ResourceRef<Page<T> | undefined> & {
41
+ items: _angular_core.WritableSignal<T[]>;
42
+ snapshotValue: _angular_core.WritableSignal<Page<T> | null>;
43
+ pageNo: _angular_core.WritableSignal<number>;
44
+ pageSize: _angular_core.WritableSignal<number>;
45
+ totalPages: _angular_core.Signal<number>;
46
+ next(): void;
47
+ reset(): void;
48
+ };
49
+ interface PageResourceOptions<T, R> extends BaseResourceOptions<Page<T>, R> {
50
+ stream: (params: ResourceLoaderParams<R & {
51
+ pageNo: number;
52
+ pageSize: number;
53
+ }>) => Observable<Page<T>>;
54
+ }
55
+
56
+ export { CnumberPipe, FindByIdPipe, SOLAR_CONFIG, attachLoading, pageResource, provideSolar };
57
+ export type { PageResourceOptions, SolarConfig };
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@solar-angular/core",
3
- "version": "19.4.2",
3
+ "version": "20.0.1",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
8
  "peerDependencies": {
9
- "@angular/common": ">=19.0.0",
10
- "@angular/core": ">=19.0.0"
9
+ "@angular/common": ">=20.0.0",
10
+ "@angular/core": ">=20.0.0"
11
11
  },
12
12
  "ng-update": {
13
13
  "packageGroup": [
package/config.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export interface SolarConfig {
3
- clientId: string;
4
- earthUrl: string;
5
- mercuryUrl: string;
6
- }
7
- export declare const SOLAR_CONFIG: InjectionToken<SolarConfig>;
package/operator.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import { WritableSignal } from '@angular/core';
2
- import { Observable } from 'rxjs';
3
- /**
4
- * Attaches a loading indicator to an observable.
5
- *
6
- * @param loading - A writable signal indicating the loading state.
7
- * @returns A function that takes an observable and returns a new observable with loading state managed.
8
- */
9
- export declare function attachLoading<T>(loading: WritableSignal<boolean>): (observable: Observable<T>) => Observable<T>;
@@ -1,7 +0,0 @@
1
- import { PipeTransform } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class CnumberPipe implements PipeTransform {
4
- transform(v: string): any;
5
- static ɵfac: i0.ɵɵFactoryDeclaration<CnumberPipe, never>;
6
- static ɵpipe: i0.ɵɵPipeDeclaration<CnumberPipe, "cnumber", true>;
7
- }
@@ -1,9 +0,0 @@
1
- import { PipeTransform } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class FindByIdPipe<T extends {
4
- id: any;
5
- }> implements PipeTransform {
6
- transform(id: T['id'], array: T[]): unknown;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<FindByIdPipe<any>, never>;
8
- static ɵpipe: i0.ɵɵPipeDeclaration<FindByIdPipe<any>, "findById", true>;
9
- }
package/pipes/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './cnumber.pipe';
2
- export * from './find-by-id.pipe';
package/provider.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { EnvironmentProviders } from '@angular/core';
2
- import { SolarConfig } from './config';
3
- export declare function provideSolar(config: SolarConfig): EnvironmentProviders;