@ngageoint/mage.web-core-lib 6.3.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/common/index.d.ts +6 -0
- package/common/mage-common.module.d.ts +9 -0
- package/common/mage-common.module.d.ts.map +1 -0
- package/common/ngageoint-mage.web-core-lib-common.d.ts.map +1 -0
- package/common/public-api.d.ts +3 -0
- package/common/public-api.d.ts.map +1 -0
- package/common/xhr-img.component.d.ts +59 -0
- package/common/xhr-img.component.d.ts.map +1 -0
- package/esm2020/common/mage-common.module.mjs +25 -0
- package/esm2020/common/ngageoint-mage.web-core-lib-common.mjs +5 -0
- package/esm2020/common/public-api.mjs +3 -0
- package/esm2020/common/xhr-img.component.mjs +104 -0
- package/esm2020/event/event-read.service.mjs +3 -0
- package/esm2020/event/event.model.mjs +2 -0
- package/esm2020/event/ngageoint-mage.web-core-lib-event.mjs +5 -0
- package/esm2020/event/public-api.mjs +3 -0
- package/esm2020/feed/feed.model.mjs +2 -0
- package/esm2020/feed/feed.service.mjs +105 -0
- package/esm2020/feed/ngageoint-mage.web-core-lib-feed.mjs +5 -0
- package/esm2020/feed/public-api.mjs +3 -0
- package/esm2020/mage-core-lib.module.mjs +19 -0
- package/esm2020/ngageoint-mage.web-core-lib.mjs +5 -0
- package/esm2020/paging/ngageoint-mage.web-core-lib-paging.mjs +5 -0
- package/esm2020/paging/paging.cdk-data-source.adapter.mjs +52 -0
- package/esm2020/paging/paging.model.mjs +25 -0
- package/esm2020/paging/public-api.mjs +3 -0
- package/esm2020/plugin/ngageoint-mage.web-core-lib-plugin.mjs +5 -0
- package/esm2020/plugin/plugin.model.mjs +2 -0
- package/esm2020/plugin/public-api.mjs +2 -0
- package/esm2020/public-api.mjs +5 -0
- package/esm2020/static-icon/ngageoint-mage.web-core-lib-static-icon.mjs +5 -0
- package/esm2020/static-icon/public-api.mjs +7 -0
- package/esm2020/static-icon/static-icon-form-field/static-icon-form-field.component.mjs +145 -0
- package/esm2020/static-icon/static-icon-img/static-icon-img.component.mjs +35 -0
- package/esm2020/static-icon/static-icon-select/static-icon-select.component.mjs +52 -0
- package/esm2020/static-icon/static-icon.model.mjs +10 -0
- package/esm2020/static-icon/static-icon.module.mjs +54 -0
- package/esm2020/static-icon/static-icon.service.mjs +82 -0
- package/esm2020/user/ngageoint-mage.web-core-lib-user.mjs +5 -0
- package/esm2020/user/public-api.mjs +5 -0
- package/esm2020/user/user-read.service.mjs +40 -0
- package/esm2020/user/user-select/user-select.component.mjs +159 -0
- package/esm2020/user/user.model.mjs +2 -0
- package/esm2020/user/user.module.mjs +64 -0
- package/event/event-read.service.d.ts +12 -0
- package/event/event-read.service.d.ts.map +1 -0
- package/event/event.model.d.ts +7 -0
- package/event/event.model.d.ts.map +1 -0
- package/event/index.d.ts +6 -0
- package/event/ngageoint-mage.web-core-lib-event.d.ts.map +1 -0
- package/event/public-api.d.ts +3 -0
- package/event/public-api.d.ts.map +1 -0
- package/feed/feed.model.d.ts +84 -0
- package/feed/feed.model.d.ts.map +1 -0
- package/feed/feed.service.d.ts +41 -0
- package/feed/feed.service.d.ts.map +1 -0
- package/feed/index.d.ts +6 -0
- package/feed/ngageoint-mage.web-core-lib-feed.d.ts.map +1 -0
- package/feed/public-api.d.ts +3 -0
- package/feed/public-api.d.ts.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib-common.mjs +142 -0
- package/fesm2015/ngageoint-mage.web-core-lib-common.mjs.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib-event.mjs +10 -0
- package/fesm2015/ngageoint-mage.web-core-lib-event.mjs.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib-feed.mjs +114 -0
- package/fesm2015/ngageoint-mage.web-core-lib-feed.mjs.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib-paging.mjs +83 -0
- package/fesm2015/ngageoint-mage.web-core-lib-paging.mjs.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib-plugin.mjs +4 -0
- package/fesm2015/ngageoint-mage.web-core-lib-plugin.mjs.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib-static-icon.mjs +392 -0
- package/fesm2015/ngageoint-mage.web-core-lib-static-icon.mjs.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib-user.mjs +279 -0
- package/fesm2015/ngageoint-mage.web-core-lib-user.mjs.map +1 -0
- package/fesm2015/ngageoint-mage.web-core-lib.mjs +32 -0
- package/fesm2015/ngageoint-mage.web-core-lib.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib-common.mjs +133 -0
- package/fesm2020/ngageoint-mage.web-core-lib-common.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib-event.mjs +10 -0
- package/fesm2020/ngageoint-mage.web-core-lib-event.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib-feed.mjs +112 -0
- package/fesm2020/ngageoint-mage.web-core-lib-feed.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib-paging.mjs +83 -0
- package/fesm2020/ngageoint-mage.web-core-lib-paging.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib-plugin.mjs +4 -0
- package/fesm2020/ngageoint-mage.web-core-lib-plugin.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib-static-icon.mjs +368 -0
- package/fesm2020/ngageoint-mage.web-core-lib-static-icon.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib-user.mjs +262 -0
- package/fesm2020/ngageoint-mage.web-core-lib-user.mjs.map +1 -0
- package/fesm2020/ngageoint-mage.web-core-lib.mjs +30 -0
- package/fesm2020/ngageoint-mage.web-core-lib.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/mage-core-lib.module.d.ts +8 -0
- package/mage-core-lib.module.d.ts.map +1 -0
- package/ngageoint-mage.web-core-lib.d.ts.map +1 -0
- package/package.json +102 -0
- package/paging/index.d.ts +6 -0
- package/paging/ngageoint-mage.web-core-lib-paging.d.ts.map +1 -0
- package/paging/paging.cdk-data-source.adapter.d.ts +21 -0
- package/paging/paging.cdk-data-source.adapter.d.ts.map +1 -0
- package/paging/paging.model.d.ts +28 -0
- package/paging/paging.model.d.ts.map +1 -0
- package/paging/public-api.d.ts +3 -0
- package/paging/public-api.d.ts.map +1 -0
- package/plugin/index.d.ts +6 -0
- package/plugin/ngageoint-mage.web-core-lib-plugin.d.ts.map +1 -0
- package/plugin/plugin.model.d.ts +14 -0
- package/plugin/plugin.model.d.ts.map +1 -0
- package/plugin/public-api.d.ts +2 -0
- package/plugin/public-api.d.ts.map +1 -0
- package/public-api.d.ts +2 -0
- package/public-api.d.ts.map +1 -0
- package/static-icon/index.d.ts +6 -0
- package/static-icon/ngageoint-mage.web-core-lib-static-icon.d.ts.map +1 -0
- package/static-icon/public-api.d.ts +7 -0
- package/static-icon/public-api.d.ts.map +1 -0
- package/static-icon/static-icon-form-field/static-icon-form-field.component.d.ts +32 -0
- package/static-icon/static-icon-form-field/static-icon-form-field.component.d.ts.map +1 -0
- package/static-icon/static-icon-img/static-icon-img.component.d.ts +13 -0
- package/static-icon/static-icon-img/static-icon-img.component.d.ts.map +1 -0
- package/static-icon/static-icon-select/static-icon-select.component.d.ts +22 -0
- package/static-icon/static-icon-select/static-icon-select.component.d.ts.map +1 -0
- package/static-icon/static-icon.model.d.ts +20 -0
- package/static-icon/static-icon.model.d.ts.map +1 -0
- package/static-icon/static-icon.module.d.ts +15 -0
- package/static-icon/static-icon.module.d.ts.map +1 -0
- package/static-icon/static-icon.service.d.ts +21 -0
- package/static-icon/static-icon.service.d.ts.map +1 -0
- package/user/index.d.ts +6 -0
- package/user/ngageoint-mage.web-core-lib-user.d.ts.map +1 -0
- package/user/public-api.d.ts +5 -0
- package/user/public-api.d.ts.map +1 -0
- package/user/user-read.service.d.ts +25 -0
- package/user/user-read.service.d.ts.map +1 -0
- package/user/user-select/user-select.component.d.ts +39 -0
- package/user/user-select/user-select.component.d.ts.map +1 -0
- package/user/user.model.d.ts +86 -0
- package/user/user.model.d.ts.map +1 -0
- package/user/user.module.d.ts +18 -0
- package/user/user.module.d.ts.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# CoreLib
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.13.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project core-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project core-lib`.
|
|
8
|
+
> Note: Don't forget to add `--project core-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build core-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build core-lib`, go to the dist folder `cd dist/core-lib` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test core-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./xhr-img.component";
|
|
3
|
+
import * as i2 from "@angular/platform-browser";
|
|
4
|
+
export declare class MageCommonModule {
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MageCommonModule, never>;
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<MageCommonModule, [typeof i1.XhrImgComponent], [typeof i2.BrowserModule], [typeof i1.XhrImgComponent]>;
|
|
7
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<MageCommonModule>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=mage-common.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mage-common.module.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/common/mage-common.module.ts"],"names":[],"mappings":";;;AAIA,qBAWa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngageoint-mage.web-core-lib-common.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/common/ngageoint-mage.web-core-lib-common.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/common/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { InjectionToken, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* This is a simple interface that includes the [methods](https://www.w3.org/TR/FileAPI/#creating-revoking)
|
|
7
|
+
* from the [URL API](https://developer.mozilla.org/en-US/docs/Web/API/URL) for
|
|
8
|
+
* managing blob URLs. This allows a service to be injected into
|
|
9
|
+
* `XhrImgComponent` and overridden for testing.
|
|
10
|
+
*/
|
|
11
|
+
export interface ObjectUrlService {
|
|
12
|
+
createObjectURL: (typeof URL)['createObjectURL'];
|
|
13
|
+
revokeObjectURL: (typeof URL)['revokeObjectURL'];
|
|
14
|
+
}
|
|
15
|
+
export declare const OBJECT_URL_SERVICE: InjectionToken<ObjectUrlService>;
|
|
16
|
+
/**
|
|
17
|
+
* This component allows fetching images by `XMLHttpRequest` rather than the
|
|
18
|
+
* browser's native mechanism. These image requests are subject to HTTP
|
|
19
|
+
* interceptors that can add authorization headers to the request instead of
|
|
20
|
+
* using cache-defeating URL query parameters to set an auth token. Applying
|
|
21
|
+
* headers to the browser's native `img` requests is impossible, so a query
|
|
22
|
+
* parameter is necessary for authorization, but adding the parameter to the
|
|
23
|
+
* URL effectively bypasses the browser's caching mechanism when the auth token
|
|
24
|
+
* changes for images that
|
|
25
|
+
* should otherwise be subject to caching.
|
|
26
|
+
*
|
|
27
|
+
* The catch to fetching images by XHR is the response must be fetched as a
|
|
28
|
+
* `Blob`. The user then gets a browser-specific URL for the blob by
|
|
29
|
+
* `URL.createObjectURL(blob)`, which can then be assigned to the `src`
|
|
30
|
+
* attribute of an `img` tag. These blob URLs must then be "revoked" by
|
|
31
|
+
* `URL.revokeObjectURL(url)` in order to reclaim object URL's associated
|
|
32
|
+
* resources. See [Mozilla's docs](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications#example_using_object_urls_to_display_images)
|
|
33
|
+
* on the subject.
|
|
34
|
+
*
|
|
35
|
+
* To use the component, simply add the tag to a template and bind the `src`
|
|
36
|
+
* attribute to the source URL of the desired image.
|
|
37
|
+
* ```
|
|
38
|
+
* <mage-xhr-img [src]="someComponent.imageUrlRequiresAuth"></mage-xhr-img>
|
|
39
|
+
* ```
|
|
40
|
+
* The component encapsulates the logic of creating and releasing the object
|
|
41
|
+
* URLs for the image data, preventing memory leaks.
|
|
42
|
+
*/
|
|
43
|
+
export declare class XhrImgComponent implements OnChanges, OnDestroy {
|
|
44
|
+
private objectUrlService;
|
|
45
|
+
private http;
|
|
46
|
+
private sanitizer;
|
|
47
|
+
sourceUrl: string | null;
|
|
48
|
+
safeBlobUrl: SafeUrl | null;
|
|
49
|
+
private blobUrl;
|
|
50
|
+
private subscription;
|
|
51
|
+
constructor(objectUrlService: ObjectUrlService, http: HttpClient, sanitizer: DomSanitizer);
|
|
52
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
53
|
+
ngOnDestroy(): void;
|
|
54
|
+
onImgLoad(): void;
|
|
55
|
+
private disposeCurrent;
|
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<XhrImgComponent, never>;
|
|
57
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XhrImgComponent, "mage-xhr-img", never, { "sourceUrl": "src"; }, {}, never, never, false>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=xhr-img.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xhr-img.component.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/common/xhr-img.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,cAAc,EAAS,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACzH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;;AAKjE;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAA;IAChD,eAAe,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAA;CACjD;AACD,eAAO,MAAM,kBAAkB,kCAAuE,CAAA;AAEtG;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAWa,eAAgB,YAAW,SAAS,EAAE,SAAS;IASlB,OAAO,CAAC,gBAAgB;IAAoB,OAAO,CAAC,IAAI;IAAc,OAAO,CAAC,SAAS;IAN/H,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAC/B,WAAW,EAAE,OAAO,GAAG,IAAI,CAAO;IAElC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAc;gBAEc,gBAAgB,EAAE,gBAAgB,EAAU,IAAI,EAAE,UAAU,EAAU,SAAS,EAAE,YAAY;IAE7I,WAAW,CAAC,OAAO,EAAE,aAAa;IAmBlC,WAAW;IAIX,SAAS;IAIT,OAAO,CAAC,cAAc;yCAtCX,eAAe;2CAAf,eAAe;CA+C3B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
3
|
+
import { XhrImgComponent } from './xhr-img.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class MageCommonModule {
|
|
6
|
+
}
|
|
7
|
+
MageCommonModule.ɵfac = function MageCommonModule_Factory(t) { return new (t || MageCommonModule)(); };
|
|
8
|
+
MageCommonModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MageCommonModule });
|
|
9
|
+
MageCommonModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [BrowserModule] });
|
|
10
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MageCommonModule, [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
imports: [
|
|
14
|
+
BrowserModule
|
|
15
|
+
],
|
|
16
|
+
declarations: [
|
|
17
|
+
XhrImgComponent
|
|
18
|
+
],
|
|
19
|
+
exports: [
|
|
20
|
+
XhrImgComponent
|
|
21
|
+
]
|
|
22
|
+
}]
|
|
23
|
+
}], null, null); })();
|
|
24
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MageCommonModule, { declarations: [XhrImgComponent], imports: [BrowserModule], exports: [XhrImgComponent] }); })();
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnZS1jb21tb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvY29tbW9uL21hZ2UtY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7O0FBYXJELE1BQU0sT0FBTyxnQkFBZ0I7O2dGQUFoQixnQkFBZ0I7a0VBQWhCLGdCQUFnQjtzRUFUekIsYUFBYTt1RkFTSixnQkFBZ0I7Y0FYNUIsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxhQUFhO2lCQUNkO2dCQUNELFlBQVksRUFBRTtvQkFDWixlQUFlO2lCQUNoQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsZUFBZTtpQkFDaEI7YUFDRjs7d0ZBQ1ksZ0JBQWdCLG1CQU56QixlQUFlLGFBSGYsYUFBYSxhQU1iLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlcidcbmltcG9ydCB7IFhockltZ0NvbXBvbmVudCB9IGZyb20gJy4veGhyLWltZy5jb21wb25lbnQnXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBCcm93c2VyTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFhockltZ0NvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgWGhySW1nQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFnZUNvbW1vbk1vZHVsZSB7fSJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdhZ2VvaW50LW1hZ2Uud2ViLWNvcmUtbGliLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL2NvbW1vbi9uZ2FnZW9pbnQtbWFnZS53ZWItY29yZS1saWItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './xhr-img.component';
|
|
2
|
+
export * from './mage-common.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL2NvbW1vbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4veGhyLWltZy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL21hZ2UtY29tbW9uLm1vZHVsZSciXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Component, Inject, InjectionToken, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common/http";
|
|
4
|
+
import * as i2 from "@angular/platform-browser";
|
|
5
|
+
const selector = 'mage-xhr-img';
|
|
6
|
+
export const OBJECT_URL_SERVICE = new InjectionToken(`${selector}.objectUrlService`);
|
|
7
|
+
/**
|
|
8
|
+
* This component allows fetching images by `XMLHttpRequest` rather than the
|
|
9
|
+
* browser's native mechanism. These image requests are subject to HTTP
|
|
10
|
+
* interceptors that can add authorization headers to the request instead of
|
|
11
|
+
* using cache-defeating URL query parameters to set an auth token. Applying
|
|
12
|
+
* headers to the browser's native `img` requests is impossible, so a query
|
|
13
|
+
* parameter is necessary for authorization, but adding the parameter to the
|
|
14
|
+
* URL effectively bypasses the browser's caching mechanism when the auth token
|
|
15
|
+
* changes for images that
|
|
16
|
+
* should otherwise be subject to caching.
|
|
17
|
+
*
|
|
18
|
+
* The catch to fetching images by XHR is the response must be fetched as a
|
|
19
|
+
* `Blob`. The user then gets a browser-specific URL for the blob by
|
|
20
|
+
* `URL.createObjectURL(blob)`, which can then be assigned to the `src`
|
|
21
|
+
* attribute of an `img` tag. These blob URLs must then be "revoked" by
|
|
22
|
+
* `URL.revokeObjectURL(url)` in order to reclaim object URL's associated
|
|
23
|
+
* resources. See [Mozilla's docs](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications#example_using_object_urls_to_display_images)
|
|
24
|
+
* on the subject.
|
|
25
|
+
*
|
|
26
|
+
* To use the component, simply add the tag to a template and bind the `src`
|
|
27
|
+
* attribute to the source URL of the desired image.
|
|
28
|
+
* ```
|
|
29
|
+
* <mage-xhr-img [src]="someComponent.imageUrlRequiresAuth"></mage-xhr-img>
|
|
30
|
+
* ```
|
|
31
|
+
* The component encapsulates the logic of creating and releasing the object
|
|
32
|
+
* URLs for the image data, preventing memory leaks.
|
|
33
|
+
*/
|
|
34
|
+
export class XhrImgComponent {
|
|
35
|
+
constructor(objectUrlService, http, sanitizer) {
|
|
36
|
+
this.objectUrlService = objectUrlService;
|
|
37
|
+
this.http = http;
|
|
38
|
+
this.sanitizer = sanitizer;
|
|
39
|
+
this.sourceUrl = null;
|
|
40
|
+
this.safeBlobUrl = null;
|
|
41
|
+
}
|
|
42
|
+
ngOnChanges(changes) {
|
|
43
|
+
if (!changes.sourceUrl) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (changes.sourceUrl.isFirstChange() && !this.sourceUrl) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
this.disposeCurrent();
|
|
50
|
+
if (!this.sourceUrl) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.subscription = this.http.get(this.sourceUrl, { responseType: 'blob' })
|
|
54
|
+
.subscribe(x => {
|
|
55
|
+
this.objectUrlService.revokeObjectURL(this.blobUrl);
|
|
56
|
+
this.blobUrl = this.objectUrlService.createObjectURL(x);
|
|
57
|
+
this.safeBlobUrl = this.sanitizer.bypassSecurityTrustUrl(this.blobUrl);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
ngOnDestroy() {
|
|
61
|
+
this.disposeCurrent();
|
|
62
|
+
}
|
|
63
|
+
onImgLoad() {
|
|
64
|
+
this.disposeCurrent();
|
|
65
|
+
}
|
|
66
|
+
disposeCurrent() {
|
|
67
|
+
if (this.blobUrl) {
|
|
68
|
+
this.objectUrlService.revokeObjectURL(this.blobUrl);
|
|
69
|
+
}
|
|
70
|
+
if (this.subscription) {
|
|
71
|
+
this.subscription.unsubscribe();
|
|
72
|
+
}
|
|
73
|
+
this.blobUrl = null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
XhrImgComponent.ɵfac = function XhrImgComponent_Factory(t) { return new (t || XhrImgComponent)(i0.ɵɵdirectiveInject(OBJECT_URL_SERVICE), i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i2.DomSanitizer)); };
|
|
77
|
+
XhrImgComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: XhrImgComponent, selectors: [["mage-xhr-img"]], inputs: { sourceUrl: ["src", "sourceUrl"] }, features: [i0.ɵɵProvidersFeature([
|
|
78
|
+
{
|
|
79
|
+
provide: OBJECT_URL_SERVICE,
|
|
80
|
+
useValue: URL
|
|
81
|
+
}
|
|
82
|
+
]), i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "load"]], template: function XhrImgComponent_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
i0.ɵɵelementStart(0, "img", 0);
|
|
84
|
+
i0.ɵɵlistener("load", function XhrImgComponent_Template_img_load_0_listener() { return ctx.onImgLoad(); });
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
i0.ɵɵattribute("src", ctx.safeBlobUrl, i0.ɵɵsanitizeUrl);
|
|
88
|
+
} }, styles: ["img[_ngcontent-%COMP%]{height:100%;width:100%}"] });
|
|
89
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(XhrImgComponent, [{
|
|
90
|
+
type: Component,
|
|
91
|
+
args: [{ selector: `${selector}`, template: `<img [attr.src]="safeBlobUrl" (load)="onImgLoad()"/>`, providers: [
|
|
92
|
+
{
|
|
93
|
+
provide: OBJECT_URL_SERVICE,
|
|
94
|
+
useValue: URL
|
|
95
|
+
}
|
|
96
|
+
], styles: ["img{height:100%;width:100%}\n"] }]
|
|
97
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
98
|
+
type: Inject,
|
|
99
|
+
args: [OBJECT_URL_SERVICE]
|
|
100
|
+
}] }, { type: i1.HttpClient }, { type: i2.DomSanitizer }]; }, { sourceUrl: [{
|
|
101
|
+
type: Input,
|
|
102
|
+
args: ['src']
|
|
103
|
+
}] }); })();
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyLWltZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWxpYi9jb21tb24veGhyLWltZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUE7Ozs7QUFLekgsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFBO0FBWS9CLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFtQixHQUFHLFFBQVEsbUJBQW1CLENBQUMsQ0FBQTtBQUV0Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFZSCxNQUFNLE9BQU8sZUFBZTtJQVMxQixZQUFnRCxnQkFBa0MsRUFBVSxJQUFnQixFQUFVLFNBQXVCO1FBQTdGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQU43SSxjQUFTLEdBQWtCLElBQUksQ0FBQTtRQUMvQixnQkFBVyxHQUFtQixJQUFJLENBQUE7SUFLOEcsQ0FBQztJQUVqSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsT0FBTTtTQUNQO1FBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN4RCxPQUFNO1NBQ1A7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTTtTQUNQO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3hFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hFLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQ3BEO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDaEM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtJQUNyQixDQUFDOzs4RUE5Q1UsZUFBZSx1QkFTTixrQkFBa0I7a0VBVDNCLGVBQWUsK0dBUGY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixRQUFRLEVBQUUsR0FBRzthQUNkO1NBQ0Y7UUFQVSw4QkFBb0Q7UUFBdEIsdUZBQVEsZUFBVyxJQUFDO1FBQWxELGlCQUFvRDs7UUFBL0Msd0RBQXdCOzt1RkFTN0IsZUFBZTtjQVgzQixTQUFTOzJCQUNFLEdBQUcsUUFBUSxFQUFFLFlBQ2Isc0RBQXNELGFBRXJEO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxrQkFBa0I7d0JBQzNCLFFBQVEsRUFBRSxHQUFHO3FCQUNkO2lCQUNGOztzQkFXWSxNQUFNO3VCQUFDLGtCQUFrQjs0RUFOdEMsU0FBUztrQkFEUixLQUFLO21CQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJ1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuY29uc3Qgc2VsZWN0b3IgPSAnbWFnZS14aHItaW1nJ1xuXG4vKipcbiAqIFRoaXMgaXMgYSBzaW1wbGUgaW50ZXJmYWNlIHRoYXQgaW5jbHVkZXMgdGhlIFttZXRob2RzXShodHRwczovL3d3dy53My5vcmcvVFIvRmlsZUFQSS8jY3JlYXRpbmctcmV2b2tpbmcpXG4gKiBmcm9tIHRoZSBbVVJMIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTCkgZm9yXG4gKiBtYW5hZ2luZyBibG9iIFVSTHMuICBUaGlzIGFsbG93cyBhIHNlcnZpY2UgdG8gYmUgaW5qZWN0ZWQgaW50b1xuICogYFhockltZ0NvbXBvbmVudGAgYW5kIG92ZXJyaWRkZW4gZm9yIHRlc3RpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0VXJsU2VydmljZSB7XG4gIGNyZWF0ZU9iamVjdFVSTDogKHR5cGVvZiBVUkwpWydjcmVhdGVPYmplY3RVUkwnXVxuICByZXZva2VPYmplY3RVUkw6ICh0eXBlb2YgVVJMKVsncmV2b2tlT2JqZWN0VVJMJ11cbn1cbmV4cG9ydCBjb25zdCBPQkpFQ1RfVVJMX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JqZWN0VXJsU2VydmljZT4oYCR7c2VsZWN0b3J9Lm9iamVjdFVybFNlcnZpY2VgKVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGFsbG93cyBmZXRjaGluZyBpbWFnZXMgYnkgYFhNTEh0dHBSZXF1ZXN0YCByYXRoZXIgdGhhbiB0aGVcbiAqIGJyb3dzZXIncyBuYXRpdmUgbWVjaGFuaXNtLiAgVGhlc2UgaW1hZ2UgcmVxdWVzdHMgYXJlIHN1YmplY3QgdG8gSFRUUFxuICogaW50ZXJjZXB0b3JzIHRoYXQgY2FuIGFkZCBhdXRob3JpemF0aW9uIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3QgaW5zdGVhZCBvZlxuICogdXNpbmcgY2FjaGUtZGVmZWF0aW5nIFVSTCBxdWVyeSBwYXJhbWV0ZXJzIHRvIHNldCBhbiBhdXRoIHRva2VuLiAgQXBwbHlpbmdcbiAqIGhlYWRlcnMgdG8gdGhlIGJyb3dzZXIncyBuYXRpdmUgYGltZ2AgcmVxdWVzdHMgaXMgaW1wb3NzaWJsZSwgc28gYSBxdWVyeVxuICogcGFyYW1ldGVyIGlzIG5lY2Vzc2FyeSBmb3IgYXV0aG9yaXphdGlvbiwgYnV0IGFkZGluZyB0aGUgcGFyYW1ldGVyIHRvIHRoZVxuICogVVJMIGVmZmVjdGl2ZWx5IGJ5cGFzc2VzIHRoZSBicm93c2VyJ3MgY2FjaGluZyBtZWNoYW5pc20gd2hlbiB0aGUgYXV0aCB0b2tlblxuICogY2hhbmdlcyBmb3IgaW1hZ2VzIHRoYXRcbiAqIHNob3VsZCBvdGhlcndpc2UgYmUgc3ViamVjdCB0byBjYWNoaW5nLlxuICpcbiAqIFRoZSBjYXRjaCB0byBmZXRjaGluZyBpbWFnZXMgYnkgWEhSIGlzIHRoZSByZXNwb25zZSBtdXN0IGJlIGZldGNoZWQgYXMgYVxuICogYEJsb2JgLiAgVGhlIHVzZXIgdGhlbiBnZXRzIGEgYnJvd3Nlci1zcGVjaWZpYyBVUkwgZm9yIHRoZSBibG9iIGJ5XG4gKiBgVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKWAsIHdoaWNoIGNhbiB0aGVuIGJlIGFzc2lnbmVkIHRvIHRoZSBgc3JjYFxuICogYXR0cmlidXRlIG9mIGFuIGBpbWdgIHRhZy4gIFRoZXNlIGJsb2IgVVJMcyBtdXN0IHRoZW4gYmUgXCJyZXZva2VkXCIgYnlcbiAqIGBVUkwucmV2b2tlT2JqZWN0VVJMKHVybClgIGluIG9yZGVyIHRvIHJlY2xhaW0gb2JqZWN0IFVSTCdzIGFzc29jaWF0ZWRcbiAqIHJlc291cmNlcy4gIFNlZSBbTW96aWxsYSdzIGRvY3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlL1VzaW5nX2ZpbGVzX2Zyb21fd2ViX2FwcGxpY2F0aW9ucyNleGFtcGxlX3VzaW5nX29iamVjdF91cmxzX3RvX2Rpc3BsYXlfaW1hZ2VzKVxuICogb24gdGhlIHN1YmplY3QuXG4gKlxuICogVG8gdXNlIHRoZSBjb21wb25lbnQsIHNpbXBseSBhZGQgdGhlIHRhZyB0byBhIHRlbXBsYXRlIGFuZCBiaW5kIHRoZSBgc3JjYFxuICogYXR0cmlidXRlIHRvIHRoZSBzb3VyY2UgVVJMIG9mIHRoZSBkZXNpcmVkIGltYWdlLlxuICogYGBgXG4gKiA8bWFnZS14aHItaW1nIFtzcmNdPVwic29tZUNvbXBvbmVudC5pbWFnZVVybFJlcXVpcmVzQXV0aFwiPjwvbWFnZS14aHItaW1nPlxuICogYGBgXG4gKiBUaGUgY29tcG9uZW50IGVuY2Fwc3VsYXRlcyB0aGUgbG9naWMgb2YgY3JlYXRpbmcgYW5kIHJlbGVhc2luZyB0aGUgb2JqZWN0XG4gKiBVUkxzIGZvciB0aGUgaW1hZ2UgZGF0YSwgcHJldmVudGluZyBtZW1vcnkgbGVha3MuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogYCR7c2VsZWN0b3J9YCxcbiAgdGVtcGxhdGU6IGA8aW1nIFthdHRyLnNyY109XCJzYWZlQmxvYlVybFwiIChsb2FkKT1cIm9uSW1nTG9hZCgpXCIvPmAsXG4gIHN0eWxlczogWyBgaW1nIHsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJSB9YCBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBPQkpFQ1RfVVJMX1NFUlZJQ0UsXG4gICAgICB1c2VWYWx1ZTogVVJMXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFhockltZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBASW5wdXQoJ3NyYycpXG4gIHNvdXJjZVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgc2FmZUJsb2JVcmw6IFNhZmVVcmwgfCBudWxsID0gbnVsbFxuXG4gIHByaXZhdGUgYmxvYlVybDogc3RyaW5nXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb25cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE9CSkVDVF9VUkxfU0VSVklDRSkgcHJpdmF0ZSBvYmplY3RVcmxTZXJ2aWNlOiBPYmplY3RVcmxTZXJ2aWNlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICghY2hhbmdlcy5zb3VyY2VVcmwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5zb3VyY2VVcmwuaXNGaXJzdENoYW5nZSgpICYmICF0aGlzLnNvdXJjZVVybCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuZGlzcG9zZUN1cnJlbnQoKVxuICAgIGlmICghdGhpcy5zb3VyY2VVcmwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuaHR0cC5nZXQodGhpcy5zb3VyY2VVcmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB7XG4gICAgICAgIHRoaXMub2JqZWN0VXJsU2VydmljZS5yZXZva2VPYmplY3RVUkwodGhpcy5ibG9iVXJsKVxuICAgICAgICB0aGlzLmJsb2JVcmwgPSB0aGlzLm9iamVjdFVybFNlcnZpY2UuY3JlYXRlT2JqZWN0VVJMKHgpXG4gICAgICAgIHRoaXMuc2FmZUJsb2JVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHRoaXMuYmxvYlVybClcbiAgICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRpc3Bvc2VDdXJyZW50KClcbiAgfVxuXG4gIG9uSW1nTG9hZCgpIHtcbiAgICB0aGlzLmRpc3Bvc2VDdXJyZW50KClcbiAgfVxuXG4gIHByaXZhdGUgZGlzcG9zZUN1cnJlbnQoKSB7XG4gICAgaWYgKHRoaXMuYmxvYlVybCkge1xuICAgICAgdGhpcy5vYmplY3RVcmxTZXJ2aWNlLnJldm9rZU9iamVjdFVSTCh0aGlzLmJsb2JVcmwpXG4gICAgfVxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgICB0aGlzLmJsb2JVcmwgPSBudWxsXG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const EVENT_READ_SERVICE = new InjectionToken('EventReadService');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtcmVhZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvZXZlbnQvZXZlbnQtcmVhZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFhOUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQW1CLGtCQUFrQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBQYWdpbmdQYXJhbWV0ZXJzIH0gZnJvbSAnQG5nYWdlb2ludC9tYWdlLndlYi1jb3JlLWxpYi9wYWdpbmcnXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE1hZ2VFdmVudCB9IGZyb20gJy4vZXZlbnQubW9kZWwnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRSZWFkU2VydmljZSB7XG4gIGZpbmQod2hpY2g6IEV2ZW50UmVhZFBhcmFtcyk6IE9ic2VydmFibGU8TWFnZUV2ZW50W10+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRSZWFkUGFyYW1zIHtcbiAgcGFnZTogUGFnaW5nUGFyYW1ldGVyc1xufVxuXG5leHBvcnQgY29uc3QgRVZFTlRfUkVBRF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPEV2ZW50UmVhZFNlcnZpY2U+KCdFdmVudFJlYWRTZXJ2aWNlJykiXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWxpYi9ldmVudC9ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNYWdlRXZlbnQge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIGZlZWRJZHM6IHN0cmluZ1tdXG59Il19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdhZ2VvaW50LW1hZ2Uud2ViLWNvcmUtbGliLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvZXZlbnQvbmdhZ2VvaW50LW1hZ2Uud2ViLWNvcmUtbGliLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './event.model';
|
|
2
|
+
export * from './event-read.service';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL2V2ZW50L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUE7QUFDN0IsY0FBYyxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXZlbnQubW9kZWwnXG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LXJlYWQuc2VydmljZSciXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL2ZlZWQvZmVlZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZSwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdnZW9qc29uJztcbmltcG9ydCB7IFJlZ2lzdGVyZWRTdGF0aWNJY29uUmVmZXJlbmNlLCBTb3VyY2VVcmxTdGF0aWNJY29uUmVmZXJlbmNlLCBTdGF0aWNJY29uUmVmZXJlbmNlIH0gZnJvbSAnQG5nYWdlb2ludC9tYWdlLndlYi1jb3JlLWxpYi9zdGF0aWMtaWNvbidcblxuZXhwb3J0IGludGVyZmFjZSBGZWVkIHtcbiAgaWQ6IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICB0b3BpYzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdW1tYXJ5Pzogc3RyaW5nO1xuICBpY29uPzogUmVnaXN0ZXJlZFN0YXRpY0ljb25SZWZlcmVuY2U7XG4gIG1hcFN0eWxlPzogUmVnaXN0ZXJlZE1hcFN0eWxlO1xuICBpdGVtVGVtcG9yYWxQcm9wZXJ0eT86IHN0cmluZztcbiAgaXRlbVByaW1hcnlQcm9wZXJ0eT86IHN0cmluZztcbiAgaXRlbVNlY29uZGFyeVByb3BlcnR5Pzogc3RyaW5nO1xuICBpdGVtc0hhdmVTcGF0aWFsRGltZW5zaW9uPzogYm9vbGVhbjtcbiAgaXRlbXNIYXZlSWRlbnRpdHk/OiBib29sZWFuO1xuICBjb25zdGFudFBhcmFtcz86IGFueTtcbiAgdmFyaWFibGVQYXJhbXNTY2hlbWE/OiBhbnk7XG4gIHVwZGF0ZUZyZXF1ZW5jeVNlY29uZHM/OiBudW1iZXI7XG4gIGl0ZW1Qcm9wZXJ0aWVzU2NoZW1hPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFN0eWxlIHtcbiAgaWNvbj86IFNvdXJjZVVybFN0YXRpY0ljb25SZWZlcmVuY2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlcmVkTWFwU3R5bGUge1xuICBpY29uPzogUmVnaXN0ZXJlZFN0YXRpY0ljb25SZWZlcmVuY2U7XG59XG5cbmV4cG9ydCB0eXBlIFN0eWxlZEZlYXR1cmUgPSBGZWF0dXJlICYgeyBzdHlsZTogTWFwU3R5bGUgfVxuZXhwb3J0IGludGVyZmFjZSBGZWVkQ29udGVudCB7XG4gIGl0ZW1zOiBGZWF0dXJlQ29sbGVjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VUeXBlIHtcbiAgLyoqXG4gICAqIFdlbGwta25vd24gaWRlbnRpZmllciB0aGF0IHRoZSBmZWVkIHBsdWdpbiBjcmVhdG9yIGFzc2lnbnNcbiAgICovXG4gIHBsdWdpblNlcnZpY2VUeXBlSWQ6IHN0cmluZ1xuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIE1BR0Ugc2VydmVyIGdlbmVyYXRlcyB0byByZWZlcmVuY2UgdGhlIHNlcnZpY2UgdHlwZVxuICAgKi9cbiAgaWQ6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIHN1bW1hcnk6IHN0cmluZ1xuICBjb25maWdTY2hlbWE6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2Uge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzZXJ2aWNlVHlwZTogU2VydmljZVR5cGUgfCBzdHJpbmdcbiAgc3VtbWFyeTogc3RyaW5nIHwgbnVsbFxuICBjb25maWc6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRUb3BpYyB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1bW1hcnk/OiBzdHJpbmc7XG4gIGljb24/OiBTb3VyY2VVcmxTdGF0aWNJY29uUmVmZXJlbmNlO1xuICBwYXJhbXNTY2hlbWE/OiBhbnk7XG4gIHVwZGF0ZUZyZXF1ZW5jeVNlY29uZHM/OiBudW1iZXI7XG4gIGl0ZW1zSGF2ZUlkZW50aXR5PzogYm9vbGVhbjtcbiAgaXRlbXNIYXZlU3BhdGlhbERpbWVuc2lvbj86IGJvb2xlYW47XG4gIGl0ZW1UZW1wb3JhbFByb3BlcnR5Pzogc3RyaW5nO1xuICBpdGVtUHJpbWFyeVByb3BlcnR5Pzogc3RyaW5nO1xuICBpdGVtU2Vjb25kYXJ5UHJvcGVydHk/OiBzdHJpbmc7XG4gIGl0ZW1Qcm9wZXJ0aWVzU2NoZW1hPzogYW55O1xuICBtYXBTdHlsZT86IE1hcFN0eWxlXG59XG5cbmV4cG9ydCB0eXBlIEZlZWRFeHBhbmRlZCA9IE9taXQ8RmVlZCwgJ3NlcnZpY2UnIHwgJ3RvcGljJz4gJiB7XG4gIHNlcnZpY2U6IFNlcnZpY2UsXG4gIHRvcGljOiBGZWVkVG9waWNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWVkQ29udGVudCB7XG4gIGZlZWQ6IHN0cmluZ1xuICB2YXJpYWJsZVBhcmFtcz86IGFueVxuICBpdGVtczogRmVhdHVyZUNvbGxlY3Rpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWVkUHJldmlldyB7XG4gIGZlZWQ6IEZlZWRcbiAgY29udGVudD86IEZlZWRDb250ZW50XG59XG5cbmV4cG9ydCB0eXBlIEZlZWRQb3N0ID0gUGFydGlhbDxPbWl0PEZlZWQsICdzZXJ2aWNlJyB8ICd0b3BpYycgfCAnaWNvbic+PiAmIFBpY2s8RmVlZCwgJ3NlcnZpY2UnIHwgJ3RvcGljJz4gJiB7XG4gIGljb24/OiBTdGF0aWNJY29uUmVmZXJlbmNlXG59XG4iXX0=
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
export class FeedService {
|
|
7
|
+
constructor(http) {
|
|
8
|
+
this.http = http;
|
|
9
|
+
// TODO: there is probably a better solution than maintaining this map here
|
|
10
|
+
this._feeds = new BehaviorSubject([]);
|
|
11
|
+
this.feeds = this._feeds.asObservable();
|
|
12
|
+
this._feedItems = new Map();
|
|
13
|
+
}
|
|
14
|
+
feedItems(feedId) {
|
|
15
|
+
return this._feedItems.get(feedId).asObservable();
|
|
16
|
+
}
|
|
17
|
+
fetchAllFeeds() {
|
|
18
|
+
return this.http.get('/api/feeds/');
|
|
19
|
+
}
|
|
20
|
+
fetchFeed(feedId) {
|
|
21
|
+
return this.http.get(`/api/feeds/${feedId}`);
|
|
22
|
+
}
|
|
23
|
+
fetchService(serviceId) {
|
|
24
|
+
return this.http.get(`/api/feeds/services/${serviceId}`);
|
|
25
|
+
}
|
|
26
|
+
createService(service) {
|
|
27
|
+
return this.http.post(`/api/feeds/services`, service);
|
|
28
|
+
}
|
|
29
|
+
fetchServices() {
|
|
30
|
+
return this.http.get(`/api/feeds/services`);
|
|
31
|
+
}
|
|
32
|
+
fetchServiceFeeds(serviceId) {
|
|
33
|
+
return this.http.get(`/api/feeds/services/${serviceId}/feeds`);
|
|
34
|
+
}
|
|
35
|
+
fetchServiceType(serviceTypeId) {
|
|
36
|
+
return this.http.get(`/api/feeds/service_types/${serviceTypeId}`);
|
|
37
|
+
}
|
|
38
|
+
fetchTopics(serviceId) {
|
|
39
|
+
return this.http.get(`/api/feeds/services/${serviceId}/topics`);
|
|
40
|
+
}
|
|
41
|
+
previewFeed(serviceId, topicId, feedSpec, opts) {
|
|
42
|
+
opts = opts || {};
|
|
43
|
+
const skipContentFetch = opts.skipContentFetch === true;
|
|
44
|
+
return this.http.post(`/api/feeds/services/${serviceId}/topics/${topicId}/feed_preview?skip_content_fetch=${skipContentFetch}`, { feed: feedSpec });
|
|
45
|
+
}
|
|
46
|
+
fetchTopic(serviceId, topicId) {
|
|
47
|
+
return this.http.get(`/api/feeds/services/${serviceId}/topics/${topicId}`);
|
|
48
|
+
}
|
|
49
|
+
fetchServiceTypes() {
|
|
50
|
+
return this.http.get(`/api/feeds/service_types`);
|
|
51
|
+
}
|
|
52
|
+
createFeed(serviceId, topicId, feedConfiguration) {
|
|
53
|
+
return this.http.post(`/api/feeds/services/${serviceId}/topics/${topicId}/feeds`, feedConfiguration);
|
|
54
|
+
}
|
|
55
|
+
updateFeed(feed) {
|
|
56
|
+
return this.http.put(`/api/feeds/${feed.id}`, feed);
|
|
57
|
+
}
|
|
58
|
+
deleteFeed(feed) {
|
|
59
|
+
return this.http.delete(`/api/feeds/${feed.id}`, { responseType: 'text' });
|
|
60
|
+
}
|
|
61
|
+
deleteService(service) {
|
|
62
|
+
console.log('delete');
|
|
63
|
+
return this.http.delete(`/api/feeds/services/${service.id}`, { responseType: 'text' });
|
|
64
|
+
}
|
|
65
|
+
fetchFeeds(eventId) {
|
|
66
|
+
const subject = new Subject();
|
|
67
|
+
this.http.get(`/api/events/${eventId}/feeds`).subscribe(feeds => {
|
|
68
|
+
feeds.map(feed => {
|
|
69
|
+
feed.id = feed.id.toString();
|
|
70
|
+
return feed;
|
|
71
|
+
});
|
|
72
|
+
feeds.forEach(feed => {
|
|
73
|
+
let feedItems = this._feedItems.get(feed.id);
|
|
74
|
+
if (!feedItems) {
|
|
75
|
+
feedItems = new BehaviorSubject([]);
|
|
76
|
+
this._feedItems.set(feed.id, feedItems);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
subject.next(feeds);
|
|
80
|
+
this._feeds.next(feeds);
|
|
81
|
+
});
|
|
82
|
+
return subject;
|
|
83
|
+
}
|
|
84
|
+
fetchFeedItems(event, feed) {
|
|
85
|
+
const feedItems = this._feedItems.get(feed.id);
|
|
86
|
+
return this.http.post(`/api/events/${event.id}/feeds/${feed.id}/content`, {}).pipe(map(content => {
|
|
87
|
+
const features = content.items.features;
|
|
88
|
+
features.forEach((feature) => {
|
|
89
|
+
feature.id = String(feature.id);
|
|
90
|
+
feature.properties = feature.properties || {};
|
|
91
|
+
});
|
|
92
|
+
feedItems.next(features);
|
|
93
|
+
return content;
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
FeedService.ɵfac = function FeedService_Factory(t) { return new (t || FeedService)(i0.ɵɵinject(i1.HttpClient)); };
|
|
98
|
+
FeedService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FeedService, factory: FeedService.ɵfac, providedIn: 'root' });
|
|
99
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeedService, [{
|
|
100
|
+
type: Injectable,
|
|
101
|
+
args: [{
|
|
102
|
+
providedIn: 'root'
|
|
103
|
+
}]
|
|
104
|
+
}], function () { return [{ type: i1.HttpClient }]; }, null); })();
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvZmVlZC9mZWVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQVdwQyxNQUFNLE9BQU8sV0FBVztJQUV0QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRXBDLDJFQUEyRTtRQUNuRSxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDN0MsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEMsZUFBVSxHQUFHLElBQUksR0FBRyxFQUEyQyxDQUFDO0lBTmhDLENBQUM7SUFPekMsU0FBUyxDQUFDLE1BQWM7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWUsY0FBYyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxZQUFZLENBQUMsU0FBaUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBVSx1QkFBdUIsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQTZFO1FB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RUFBRSxDQUFBO1lBQy9DLENBQUMsQ0FBQyxDQUFBO1lBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN4QixPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQzs7c0VBbEhVLFdBQVc7aUVBQVgsV0FBVyxXQUFYLFdBQVcsbUJBRlYsTUFBTTt1RkFFUCxXQUFXO2NBSHZCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEZlZWQsIEZlZWRDb250ZW50LCBGZWVkRXhwYW5kZWQsIEZlZWRQb3N0LCBGZWVkUHJldmlldywgRmVlZFRvcGljLCBTZXJ2aWNlLCBTZXJ2aWNlVHlwZSwgU3R5bGVkRmVhdHVyZSB9IGZyb20gJy4vZmVlZC5tb2RlbCdcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRQcmV2aWV3T3B0aW9ucyB7XG4gIHNraXBDb250ZW50RmV0Y2g/OiBib29sZWFuXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgfVxuXG4gIC8vIFRPRE86IHRoZXJlIGlzIHByb2JhYmx5IGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gbWFpbnRhaW5pbmcgdGhpcyBtYXAgaGVyZVxuICBwcml2YXRlIF9mZWVkcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8RmVlZD4+KFtdKTtcbiAgcmVhZG9ubHkgZmVlZHMgPSB0aGlzLl9mZWVkcy5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIF9mZWVkSXRlbXMgPSBuZXcgTWFwPHN0cmluZywgQmVoYXZpb3JTdWJqZWN0PEFycmF5PEZlYXR1cmU+Pj4oKTtcbiAgZmVlZEl0ZW1zKGZlZWRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxGZWF0dXJlPj4ge1xuICAgIHJldHVybiB0aGlzLl9mZWVkSXRlbXMuZ2V0KGZlZWRJZCkuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBmZXRjaEFsbEZlZWRzKCk6IE9ic2VydmFibGU8QXJyYXk8RmVlZD4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcnJheTxGZWVkPj4oJy9hcGkvZmVlZHMvJyk7XG4gIH1cblxuICBmZXRjaEZlZWQoZmVlZElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZlZWRFeHBhbmRlZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEZlZWRFeHBhbmRlZD4oYC9hcGkvZmVlZHMvJHtmZWVkSWR9YCk7XG4gIH1cblxuICBmZXRjaFNlcnZpY2Uoc2VydmljZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlcnZpY2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTZXJ2aWNlPihgL2FwaS9mZWVkcy9zZXJ2aWNlcy8ke3NlcnZpY2VJZH1gKTtcbiAgfVxuXG4gIGNyZWF0ZVNlcnZpY2Uoc2VydmljZTogeyB0aXRsZTogc3RyaW5nLCBzdW1tYXJ5Pzogc3RyaW5nLCBzZXJ2aWNlVHlwZTogc3RyaW5nLCBjb25maWc6IGFueX0pOiBPYnNlcnZhYmxlPFNlcnZpY2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2VydmljZT4oYC9hcGkvZmVlZHMvc2VydmljZXNgLCBzZXJ2aWNlKTtcbiAgfVxuXG4gIGZldGNoU2VydmljZXMoKTogT2JzZXJ2YWJsZTxBcnJheTxTZXJ2aWNlPj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFycmF5PFNlcnZpY2U+PihgL2FwaS9mZWVkcy9zZXJ2aWNlc2ApO1xuICB9XG5cbiAgZmV0Y2hTZXJ2aWNlRmVlZHMoc2VydmljZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PEZlZWQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8RmVlZD4+KGAvYXBpL2ZlZWRzL3NlcnZpY2VzLyR7c2VydmljZUlkfS9mZWVkc2ApO1xuICB9XG5cbiAgZmV0Y2hTZXJ2aWNlVHlwZShzZXJ2aWNlVHlwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlcnZpY2VUeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2VydmljZVR5cGU+KGAvYXBpL2ZlZWRzL3NlcnZpY2VfdHlwZXMvJHtzZXJ2aWNlVHlwZUlkfWApO1xuICB9XG5cbiAgZmV0Y2hUb3BpY3Moc2VydmljZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PEZlZWRUb3BpYz4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcnJheTxGZWVkVG9waWM+PihgL2FwaS9mZWVkcy9zZXJ2aWNlcy8ke3NlcnZpY2VJZH0vdG9waWNzYCk7XG4gIH1cblxuICBwcmV2aWV3RmVlZChzZXJ2aWNlSWQ6IHN0cmluZywgdG9waWNJZDogc3RyaW5nLCBmZWVkU3BlYzogUGFydGlhbDxPbWl0PEZlZWRQb3N0LCAnc2VydmljZScgfCAndG9waWMnPj4sIG9wdHM/OiBGZWVkUHJldmlld09wdGlvbnMpOiBPYnNlcnZhYmxlPEZlZWRQcmV2aWV3PiB7XG4gICAgb3B0cyA9IG9wdHMgfHwge31cbiAgICBjb25zdCBza2lwQ29udGVudEZldGNoOiBib29sZWFuID0gb3B0cy5za2lwQ29udGVudEZldGNoID09PSB0cnVlXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEZlZWRQcmV2aWV3PihcbiAgICAgIGAvYXBpL2ZlZWRzL3NlcnZpY2VzLyR7c2VydmljZUlkfS90b3BpY3MvJHt0b3BpY0lkfS9mZWVkX3ByZXZpZXc/c2tpcF9jb250ZW50X2ZldGNoPSR7c2tpcENvbnRlbnRGZXRjaH1gLFxuICAgICAgeyBmZWVkOiBmZWVkU3BlYyB9KTtcbiAgfVxuXG4gIGZldGNoVG9waWMoc2VydmljZUlkOiBzdHJpbmcsIHRvcGljSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RmVlZFRvcGljPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RmVlZFRvcGljPihgL2FwaS9mZWVkcy9zZXJ2aWNlcy8ke3NlcnZpY2VJZH0vdG9waWNzLyR7dG9waWNJZH1gKTtcbiAgfVxuXG4gIGZldGNoU2VydmljZVR5cGVzKCk6IE9ic2VydmFibGU8QXJyYXk8U2VydmljZVR5cGU+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8U2VydmljZVR5cGU+PihgL2FwaS9mZWVkcy9zZXJ2aWNlX3R5cGVzYCk7XG4gIH1cblxuICBjcmVhdGVGZWVkKHNlcnZpY2VJZDogc3RyaW5nLCB0b3BpY0lkOiBzdHJpbmcsIGZlZWRDb25maWd1cmF0aW9uOiBhbnkpOiBPYnNlcnZhYmxlPEZlZWRFeHBhbmRlZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxGZWVkRXhwYW5kZWQ+KGAvYXBpL2ZlZWRzL3NlcnZpY2VzLyR7c2VydmljZUlkfS90b3BpY3MvJHt0b3BpY0lkfS9mZWVkc2AsIGZlZWRDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHVwZGF0ZUZlZWQoZmVlZDogUGFydGlhbDxPbWl0PEZlZWRQb3N0LCAnaWQnPj4gJiBQaWNrPEZlZWQsICdpZCc+KTogT2JzZXJ2YWJsZTxGZWVkRXhwYW5kZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxGZWVkRXhwYW5kZWQ+KGAvYXBpL2ZlZWRzLyR7ZmVlZC5pZH1gLCBmZWVkKTtcbiAgfVxuXG4gIGRlbGV0ZUZlZWQoZmVlZDogRmVlZCB8IEZlZWRFeHBhbmRlZCk6IE9ic2VydmFibGU8e30+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgL2FwaS9mZWVkcy8ke2ZlZWQuaWR9YCwge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSk7XG4gIH1cblxuICBkZWxldGVTZXJ2aWNlKHNlcnZpY2U6IFNlcnZpY2UpOiBPYnNlcnZhYmxlPHt9PiB7XG4gICAgY29uc29sZS5sb2coJ2RlbGV0ZScpXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYC9hcGkvZmVlZHMvc2VydmljZXMvJHtzZXJ2aWNlLmlkfWAsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gIH1cblxuICBmZXRjaEZlZWRzKGV2ZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8QXJyYXk8RmVlZD4+IHtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QXJyYXk8RmVlZD4+KCk7XG4gICAgdGhpcy5odHRwLmdldDxBcnJheTxGZWVkPj4oYC9hcGkvZXZlbnRzLyR7ZXZlbnRJZH0vZmVlZHNgKS5zdWJzY3JpYmUoZmVlZHMgPT4ge1xuICAgICAgZmVlZHMubWFwKGZlZWQgPT4ge1xuICAgICAgICBmZWVkLmlkID0gZmVlZC5pZC50b1N0cmluZygpO1xuICAgICAgICByZXR1cm4gZmVlZDtcbiAgICAgIH0pO1xuXG4gICAgICBmZWVkcy5mb3JFYWNoKGZlZWQgPT4ge1xuICAgICAgICBsZXQgZmVlZEl0ZW1zID0gdGhpcy5fZmVlZEl0ZW1zLmdldChmZWVkLmlkKTtcbiAgICAgICAgaWYgKCFmZWVkSXRlbXMpIHtcbiAgICAgICAgICBmZWVkSXRlbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PEZlYXR1cmU+PihbXSk7XG4gICAgICAgICAgdGhpcy5fZmVlZEl0ZW1zLnNldChmZWVkLmlkLCBmZWVkSXRlbXMpO1xuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzdWJqZWN0Lm5leHQoZmVlZHMpO1xuICAgICAgdGhpcy5fZmVlZHMubmV4dChmZWVkcyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3ViamVjdDtcbiAgfVxuXG4gIGZldGNoRmVlZEl0ZW1zKGV2ZW50OiBhbnksIGZlZWQ6IEZlZWQpOiBPYnNlcnZhYmxlPEZlZWRDb250ZW50PiB7XG4gICAgY29uc3QgZmVlZEl0ZW1zID0gdGhpcy5fZmVlZEl0ZW1zLmdldChmZWVkLmlkKVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxGZWVkQ29udGVudD4oYC9hcGkvZXZlbnRzLyR7ZXZlbnQuaWR9L2ZlZWRzLyR7ZmVlZC5pZH0vY29udGVudGAsIHt9KS5waXBlKFxuICAgICAgbWFwKGNvbnRlbnQgPT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGNvbnRlbnQuaXRlbXMuZmVhdHVyZXNcbiAgICAgICAgZmVhdHVyZXMuZm9yRWFjaCgoZmVhdHVyZTogU3R5bGVkRmVhdHVyZSkgPT4ge1xuICAgICAgICAgIGZlYXR1cmUuaWQgPSBTdHJpbmcoZmVhdHVyZS5pZClcbiAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMgPSBmZWF0dXJlLnByb3BlcnRpZXMgfHwge31cbiAgICAgICAgfSlcbiAgICAgICAgZmVlZEl0ZW1zLm5leHQoZmVhdHVyZXMpXG4gICAgICAgIHJldHVybiBjb250ZW50XG4gICAgICB9KVxuICAgIClcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdhZ2VvaW50LW1hZ2Uud2ViLWNvcmUtbGliLWZlZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWxpYi9mZWVkL25nYWdlb2ludC1tYWdlLndlYi1jb3JlLWxpYi1mZWVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './feed.model';
|
|
2
|
+
export * from './feed.service';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL2ZlZWQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mZWVkLm1vZGVsJ1xuZXhwb3J0ICogZnJvbSAnLi9mZWVkLnNlcnZpY2UnIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class MageCoreLibModule {
|
|
5
|
+
}
|
|
6
|
+
MageCoreLibModule.ɵfac = function MageCoreLibModule_Factory(t) { return new (t || MageCoreLibModule)(); };
|
|
7
|
+
MageCoreLibModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MageCoreLibModule });
|
|
8
|
+
MageCoreLibModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule] });
|
|
9
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MageCoreLibModule, [{
|
|
10
|
+
type: NgModule,
|
|
11
|
+
args: [{
|
|
12
|
+
declarations: [],
|
|
13
|
+
imports: [
|
|
14
|
+
CommonModule
|
|
15
|
+
]
|
|
16
|
+
}]
|
|
17
|
+
}], null, null); })();
|
|
18
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MageCoreLibModule, { imports: [CommonModule] }); })();
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnZS1jb3JlLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWxpYi9zcmMvbWFnZS1jb3JlLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBVS9DLE1BQU0sT0FBTyxpQkFBaUI7O2tGQUFqQixpQkFBaUI7bUVBQWpCLGlCQUFpQjt1RUFIMUIsWUFBWTt1RkFHSCxpQkFBaUI7Y0FON0IsUUFBUTtlQUFDO2dCQUNSLFlBQVksRUFBRSxFQUFFO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtpQkFDYjthQUNGOzt3RkFDWSxpQkFBaUIsY0FIMUIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1hZ2VDb3JlTGliTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdhZ2VvaW50LW1hZ2Uud2ViLWNvcmUtbGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvc3JjL25nYWdlb2ludC1tYWdlLndlYi1jb3JlLWxpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdhZ2VvaW50LW1hZ2Uud2ViLWNvcmUtbGliLXBhZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL3BhZ2luZy9uZ2FnZW9pbnQtbWFnZS53ZWItY29yZS1saWItcGFnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DataSource } from '@angular/cdk/collections';
|
|
2
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
3
|
+
import { pageForItemIndex } from './paging.model';
|
|
4
|
+
/**
|
|
5
|
+
* This class is an adaptation from the [Angular Material Guide](https://v8.material.angular.io/cdk/scrolling/overview), _"Specifying data" example_, also
|
|
6
|
+
* available on [StackBlitz](https://stackblitz.com/angular/mrbkjagnnra?file=src%2Fapp%2Fcdk-virtual-scroll-data-source-example.ts).
|
|
7
|
+
*/
|
|
8
|
+
export class PagingDataSource extends DataSource {
|
|
9
|
+
constructor(pageSize, fetchPage) {
|
|
10
|
+
super();
|
|
11
|
+
this.pageSize = pageSize;
|
|
12
|
+
this.fetchPage = fetchPage;
|
|
13
|
+
this.data = null;
|
|
14
|
+
this.data$ = new BehaviorSubject([]);
|
|
15
|
+
this.fetchedPages = new Set();
|
|
16
|
+
this.subscription = new Subscription();
|
|
17
|
+
}
|
|
18
|
+
connect(collectionViewer) {
|
|
19
|
+
this.subscription.add(collectionViewer.viewChange.subscribe(range => {
|
|
20
|
+
const startPage = this.pageForItemIndex(range.start);
|
|
21
|
+
const endPage = this.pageForItemIndex(range.end - 1);
|
|
22
|
+
for (let page = startPage; page <= endPage; page++) {
|
|
23
|
+
this.fetch(page);
|
|
24
|
+
}
|
|
25
|
+
}));
|
|
26
|
+
return this.data$;
|
|
27
|
+
}
|
|
28
|
+
disconnect() {
|
|
29
|
+
this.subscription.unsubscribe();
|
|
30
|
+
}
|
|
31
|
+
pageForItemIndex(index) {
|
|
32
|
+
return pageForItemIndex(index, this.pageSize);
|
|
33
|
+
}
|
|
34
|
+
fetch(pageIndex) {
|
|
35
|
+
if (this.fetchedPages.has(pageIndex)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
this.fetchedPages.add(pageIndex);
|
|
39
|
+
const includeTotalCount = !this.data;
|
|
40
|
+
this.fetchPage({ pageSize: this.pageSize, pageIndex: pageIndex, includeTotalCount }).subscribe(page => {
|
|
41
|
+
if (!this.data) {
|
|
42
|
+
if (typeof (page.totalCount) !== 'number') {
|
|
43
|
+
throw new Error('data is null and no total count is available to inform allocation');
|
|
44
|
+
}
|
|
45
|
+
this.data = Array.from({ length: page.totalCount });
|
|
46
|
+
}
|
|
47
|
+
this.data.splice(pageIndex * this.pageSize, this.pageSize, ...page.items);
|
|
48
|
+
this.data$.next(this.data);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5nLmNkay1kYXRhLXNvdXJjZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvcGFnaW5nL3BhZ2luZy5jZGstZGF0YS1zb3VyY2UuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBNEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsVUFBYTtJQU9wRCxZQUFvQixRQUFnQixFQUFVLFNBQThEO1FBQzFHLEtBQUssRUFBRSxDQUFBO1FBRFcsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQXFEO1FBTHBHLFNBQUksR0FBZSxJQUFJLENBQUE7UUFDdkIsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtRQUNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFJekMsQ0FBQztJQUVELE9BQU8sQ0FBQyxnQkFBa0M7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ3BELEtBQUssSUFBSSxJQUFJLEdBQUcsU0FBUyxFQUFFLElBQUksSUFBSSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ25CLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYTtRQUNwQyxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFpQjtRQUM3QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3BDLE9BQU07U0FDUDtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2hDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2QsSUFBSSxPQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFBO2lCQUNyRjtnQkFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7YUFDcEQ7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3pFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25WaWV3ZXIsIERhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBwYWdlRm9ySXRlbUluZGV4LCBQYWdlT2YsIFBhZ2luZ1BhcmFtZXRlcnMgfSBmcm9tICcuL3BhZ2luZy5tb2RlbCdcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIGFuIGFkYXB0YXRpb24gZnJvbSB0aGUgW0FuZ3VsYXIgTWF0ZXJpYWwgR3VpZGVdKGh0dHBzOi8vdjgubWF0ZXJpYWwuYW5ndWxhci5pby9jZGsvc2Nyb2xsaW5nL292ZXJ2aWV3KSwgX1wiU3BlY2lmeWluZyBkYXRhXCIgZXhhbXBsZV8sIGFsc29cbiAqIGF2YWlsYWJsZSBvbiBbU3RhY2tCbGl0el0oaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9hbmd1bGFyL21yYmtqYWdubnJhP2ZpbGU9c3JjJTJGYXBwJTJGY2RrLXZpcnR1YWwtc2Nyb2xsLWRhdGEtc291cmNlLWV4YW1wbGUudHMpLlxuICovXG5leHBvcnQgY2xhc3MgUGFnaW5nRGF0YVNvdXJjZTxUPiBleHRlbmRzIERhdGFTb3VyY2U8VD4ge1xuXG4gIHByaXZhdGUgZGF0YTogVFtdIHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBkYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSlcbiAgcHJpdmF0ZSBmZXRjaGVkUGFnZXMgPSBuZXcgU2V0PG51bWJlcj4oKVxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFnZVNpemU6IG51bWJlciwgcHJpdmF0ZSBmZXRjaFBhZ2U6IChwYWdpbmc6IFBhZ2luZ1BhcmFtZXRlcnMpID0+IE9ic2VydmFibGU8UGFnZU9mPFQ+Pikge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKGNvbGxlY3Rpb25WaWV3ZXIudmlld0NoYW5nZS5zdWJzY3JpYmUocmFuZ2UgPT4ge1xuICAgICAgY29uc3Qgc3RhcnRQYWdlID0gdGhpcy5wYWdlRm9ySXRlbUluZGV4KHJhbmdlLnN0YXJ0KVxuICAgICAgY29uc3QgZW5kUGFnZSA9IHRoaXMucGFnZUZvckl0ZW1JbmRleChyYW5nZS5lbmQgLSAxKVxuICAgICAgZm9yIChsZXQgcGFnZSA9IHN0YXJ0UGFnZTsgcGFnZSA8PSBlbmRQYWdlOyBwYWdlKyspIHtcbiAgICAgICAgdGhpcy5mZXRjaChwYWdlKVxuICAgICAgfVxuICAgIH0pKVxuICAgIHJldHVybiB0aGlzLmRhdGEkXG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgfVxuXG4gIHByaXZhdGUgcGFnZUZvckl0ZW1JbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUZvckl0ZW1JbmRleChpbmRleCwgdGhpcy5wYWdlU2l6ZSlcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2gocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5mZXRjaGVkUGFnZXMuaGFzKHBhZ2VJbmRleCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmZldGNoZWRQYWdlcy5hZGQocGFnZUluZGV4KVxuICAgIGNvbnN0IGluY2x1ZGVUb3RhbENvdW50ID0gIXRoaXMuZGF0YVxuICAgIHRoaXMuZmV0Y2hQYWdlKHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsIHBhZ2VJbmRleDogcGFnZUluZGV4LCBpbmNsdWRlVG90YWxDb3VudCB9KS5zdWJzY3JpYmUocGFnZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGF0YSkge1xuICAgICAgICBpZiAodHlwZW9mKHBhZ2UudG90YWxDb3VudCkgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIGlzIG51bGwgYW5kIG5vIHRvdGFsIGNvdW50IGlzIGF2YWlsYWJsZSB0byBpbmZvcm0gYWxsb2NhdGlvbicpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogcGFnZS50b3RhbENvdW50IH0pXG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEuc3BsaWNlKHBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemUsIHRoaXMucGFnZVNpemUsIC4uLnBhZ2UuaXRlbXMpXG4gICAgICB0aGlzLmRhdGEkLm5leHQodGhpcy5kYXRhKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const pageForItemIndex = (itemIndex, pageSize) => {
|
|
2
|
+
if (typeof pageSize === 'object') {
|
|
3
|
+
pageSize = pageSize.pageSize;
|
|
4
|
+
}
|
|
5
|
+
return Math.floor(itemIndex / pageSize);
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Return the range of item indexes for the given page and page size. The last
|
|
9
|
+
* end portion of the range is exclusive, so when indexing an array the last
|
|
10
|
+
* item of the page would have position `end - 1`. This allows one to pass the
|
|
11
|
+
* values to `Array.slice()`.
|
|
12
|
+
* @param pageIndex
|
|
13
|
+
* @param pageSize
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export const itemRangeOfPage = (pageIndex, pageSize) => {
|
|
17
|
+
if (typeof pageIndex === 'object') {
|
|
18
|
+
pageSize = pageIndex.pageSize;
|
|
19
|
+
pageIndex = pageIndex.pageIndex;
|
|
20
|
+
}
|
|
21
|
+
const start = pageSize * pageIndex;
|
|
22
|
+
const end = start + pageSize;
|
|
23
|
+
return [start, end];
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5nLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvcGFnaW5nL3BhZ2luZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxTQUFpQixFQUFFLFFBQW1DLEVBQVUsRUFBRTtJQUNqRyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUNoQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQTtLQUM3QjtJQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLENBQUE7QUFDekMsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBR3hCLENBQUMsU0FBb0MsRUFBRSxRQUFpQixFQUFzQixFQUFFO0lBQ2xGLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1FBQ2pDLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFBO1FBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFBO0tBQ2hDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLFNBQVMsQ0FBQTtJQUNsQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFBO0lBQzVCLE9BQU8sQ0FBRSxLQUFLLEVBQUUsR0FBRyxDQUFFLENBQUE7QUFDdkIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luZ1BhcmFtZXRlcnMge1xuICBwYWdlU2l6ZTogbnVtYmVyLFxuICBwYWdlSW5kZXg6IG51bWJlcixcbiAgaW5jbHVkZVRvdGFsQ291bnQ/OiBib29sZWFuIHwgbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VPZjxUPiB7XG4gIHBhZ2VTaXplOiBudW1iZXIsXG4gIHBhZ2VJbmRleDogbnVtYmVyLFxuICB0b3RhbENvdW50PzogbnVtYmVyIHwgbnVsbCxcbiAgbmV4dD86IFBhZ2luZ1BhcmFtZXRlcnMgfCBudWxsXG4gIHByZXY/OiBQYWdpbmdQYXJhbWV0ZXJzIHwgbnVsbFxuICBpdGVtczogVFtdXG59XG5cbmV4cG9ydCBjb25zdCBwYWdlRm9ySXRlbUluZGV4ID0gKGl0ZW1JbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyIHwgUGFnaW5nUGFyYW1ldGVycyk6IG51bWJlciA9PiB7XG4gIGlmICh0eXBlb2YgcGFnZVNpemUgPT09ICdvYmplY3QnKSB7XG4gICAgcGFnZVNpemUgPSBwYWdlU2l6ZS5wYWdlU2l6ZVxuICB9XG4gIHJldHVybiBNYXRoLmZsb29yKGl0ZW1JbmRleCAvIHBhZ2VTaXplKVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgcmFuZ2Ugb2YgaXRlbSBpbmRleGVzIGZvciB0aGUgZ2l2ZW4gcGFnZSBhbmQgcGFnZSBzaXplLiAgVGhlIGxhc3RcbiAqIGVuZCBwb3J0aW9uIG9mIHRoZSByYW5nZSBpcyBleGNsdXNpdmUsIHNvIHdoZW4gaW5kZXhpbmcgYW4gYXJyYXkgdGhlIGxhc3RcbiAqIGl0ZW0gb2YgdGhlIHBhZ2Ugd291bGQgaGF2ZSBwb3NpdGlvbiBgZW5kIC0gMWAuICBUaGlzIGFsbG93cyBvbmUgdG8gcGFzcyB0aGVcbiAqIHZhbHVlcyB0byBgQXJyYXkuc2xpY2UoKWAuXG4gKiBAcGFyYW0gcGFnZUluZGV4XG4gKiBAcGFyYW0gcGFnZVNpemVcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBpdGVtUmFuZ2VPZlBhZ2U6IHtcbiAgKHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogWyBudW1iZXIsIG51bWJlciBdXG4gIChwYWdpbmc6IFBhZ2luZ1BhcmFtZXRlcnMpXG59ID0gKHBhZ2VJbmRleDogbnVtYmVyIHwgUGFnaW5nUGFyYW1ldGVycywgcGFnZVNpemU/OiBudW1iZXIpOiBbIG51bWJlciwgbnVtYmVyIF0gPT4ge1xuICBpZiAodHlwZW9mIHBhZ2VJbmRleCA9PT0gJ29iamVjdCcpIHtcbiAgICBwYWdlU2l6ZSA9IHBhZ2VJbmRleC5wYWdlU2l6ZVxuICAgIHBhZ2VJbmRleCA9IHBhZ2VJbmRleC5wYWdlSW5kZXhcbiAgfVxuICBjb25zdCBzdGFydCA9IHBhZ2VTaXplICogcGFnZUluZGV4XG4gIGNvbnN0IGVuZCA9IHN0YXJ0ICsgcGFnZVNpemVcbiAgcmV0dXJuIFsgc3RhcnQsIGVuZCBdXG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './paging.model';
|
|
2
|
+
export * from './paging.cdk-data-source.adapter';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL3BhZ2luZy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxrQ0FBa0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFnaW5nLm1vZGVsJ1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmcuY2RrLWRhdGEtc291cmNlLmFkYXB0ZXInIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdhZ2VvaW50LW1hZ2Uud2ViLWNvcmUtbGliLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL3BsdWdpbi9uZ2FnZW9pbnQtbWFnZS53ZWItY29yZS1saWItcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvcGx1Z2luL3BsdWdpbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSG9va3Mge1xuICBtb2R1bGU6IFR5cGU8dW5rbm93bj5cbiAgYWRtaW5UYWI/OiB7XG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIGljb24/OiB7IHBhdGg6IHN0cmluZyB9IHwgeyBjbGFzc05hbWU6IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIHRhYkNvbnRlbnRDb21wb25lbnQ6IFR5cGU8dW5rbm93bj5cbiAgfVxufSJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './plugin.model';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL3BsdWdpbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BsdWdpbi5tb2RlbCciXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of core-lib
|
|
3
|
+
*/
|
|
4
|
+
export * from './mage-core-lib.module';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx3QkFBd0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29yZS1saWJcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL21hZ2UtY29yZS1saWIubW9kdWxlJ1xuIl19
|