@ngutil/graphics 0.0.48 → 0.0.50

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.
@@ -25,9 +25,9 @@ export interface RevealCoverOptions extends CoverOptions {
25
25
  }
26
26
  export declare class CoverService {
27
27
  #private;
28
- solid(options: SolidCoverOptions): Observable<void>;
29
- crop(options: CropCoverOptions): Observable<void>;
30
- reveal(options: RevealCoverOptions): Observable<void>;
28
+ solid(options: SolidCoverOptions): Observable<HTMLDivElement>;
29
+ crop(options: CropCoverOptions): Observable<HTMLDivElement>;
30
+ reveal(options: RevealCoverOptions): Observable<HTMLDivElement>;
31
31
  static ɵfac: i0.ɵɵFactoryDeclaration<CoverService, never>;
32
32
  static ɵprov: i0.ɵɵInjectableDeclaration<CoverService>;
33
33
  }
@@ -4,11 +4,11 @@ import { coerceElement } from "@ngutil/common";
4
4
  import * as i0 from "@angular/core";
5
5
  export class CoverService {
6
6
  solid(options) {
7
- return new Observable((dest) => {
7
+ return new Observable(dest => {
8
8
  const container = coerceElement(options.container);
9
9
  const cover = this.#createElement(options);
10
10
  container.appendChild(cover);
11
- dest.next();
11
+ dest.next(cover);
12
12
  return () => {
13
13
  cover.parentElement?.removeChild(cover);
14
14
  };
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
39
39
  type: Injectable,
40
40
  args: [{ providedIn: "root" }]
41
41
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyYXBoaWNzL3NyYy9jb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQTs7QUF5QjVELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLEtBQUssQ0FBQyxPQUEwQjtRQUM1QixPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsSUFBc0IsRUFBRSxFQUFFO1lBQzdDLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUMxQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUVYLE9BQU8sR0FBRyxFQUFFO2dCQUNSLEtBQUssQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzNDLENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELElBQUksQ0FBQyxPQUF5QjtRQUMxQixPQUFPLEVBQUUsRUFBRSxDQUFBO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUEyQjtRQUM5QixPQUFPLEVBQUUsRUFBRSxDQUFBO0lBQ2YsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFxQjtRQUNoQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQTtRQUM5QixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUE7UUFFdkUsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLDZCQUE2QixDQUFBO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ0osRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUM1QyxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDOzhHQWxDUSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaWJlciB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgY29lcmNlRWxlbWVudCwgRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcbmltcG9ydCB7IFJlY3QgfSBmcm9tIFwiQG5ndXRpbC9zdHlsZVwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ292ZXJPcHRpb25zIHtcbiAgICBjb250YWluZXI6IEVsZW1lbnRJbnB1dFxuICAgIGNvbG9yOiBcInRyYW5zcGFyZW50XCIgfCBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb2xpZENvdmVyT3B0aW9ucyBleHRlbmRzIENvdmVyT3B0aW9ucyB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENyb3BDb3Zlck9wdGlvbnMgZXh0ZW5kcyBDb3Zlck9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIEVsZW1lbnQgdGhhdCB3aWxsIGJlIGludGVyYWN0aXZlIHdoaWxlIHRoZSBjb3ZlciBpcyB2aXNpYmxlXG4gICAgICovXG4gICAgY3JvcDogRWxlbWVudElucHV0IHwgT2JzZXJ2YWJsZTxSZWN0PlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldmVhbENvdmVyT3B0aW9ucyBleHRlbmRzIENvdmVyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogTGVmdCBhbmQgcmlnaHQgY29vcmRpbmF0ZXMgaW5zaWRlIHRoZSBjb250YWluZXJcbiAgICAgKi9cbiAgICBvcmlnaW46IHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBDb3ZlclNlcnZpY2Uge1xuICAgIHNvbGlkKG9wdGlvbnM6IFNvbGlkQ292ZXJPcHRpb25zKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoZGVzdDogU3Vic2NyaWJlcjx2b2lkPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gY29lcmNlRWxlbWVudChvcHRpb25zLmNvbnRhaW5lcilcbiAgICAgICAgICAgIGNvbnN0IGNvdmVyID0gdGhpcy4jY3JlYXRlRWxlbWVudChvcHRpb25zKVxuICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNvdmVyKVxuICAgICAgICAgICAgZGVzdC5uZXh0KClcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb3Zlci5wYXJlbnRFbGVtZW50Py5yZW1vdmVDaGlsZChjb3ZlcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBjcm9wKG9wdGlvbnM6IENyb3BDb3Zlck9wdGlvbnMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG9mKClcbiAgICB9XG5cbiAgICByZXZlYWwob3B0aW9uczogUmV2ZWFsQ292ZXJPcHRpb25zKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBvZigpXG4gICAgfVxuXG4gICAgI2NyZWF0ZUVsZW1lbnQob3B0aW9uczogQ292ZXJPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKVxuICAgICAgICBlbC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIlxuICAgICAgICBlbC5zdHlsZS50b3AgPSBlbC5zdHlsZS5yaWdodCA9IGVsLnN0eWxlLmJvdHRvbSA9IGVsLnN0eWxlLmxlZnQgPSBcIjBweFwiXG5cbiAgICAgICAgaWYgKG9wdGlvbnMuY29sb3IgPT09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDAwMSlcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gb3B0aW9ucy5jb2xvclxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVsXG4gICAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyYXBoaWNzL3NyYy9jb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFckMsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQTs7QUF5QjVELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLEtBQUssQ0FBQyxPQUEwQjtRQUM1QixPQUFPLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUMxQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFFaEIsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDM0MsQ0FBQyxDQUFBO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQXlCO1FBQzFCLE9BQU8sRUFBRSxFQUFFLENBQUE7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQTJCO1FBQzlCLE9BQU8sRUFBRSxFQUFFLENBQUE7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQXFCO1FBQ2hDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDeEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFBO1FBQzlCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQTtRQUV2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDbEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsNkJBQTZCLENBQUE7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDSixFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzVDLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7OEdBbENRLFlBQVk7a0hBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgUmVjdCB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuZXhwb3J0IGludGVyZmFjZSBDb3Zlck9wdGlvbnMge1xuICAgIGNvbnRhaW5lcjogRWxlbWVudElucHV0XG4gICAgY29sb3I6IFwidHJhbnNwYXJlbnRcIiB8IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvbGlkQ292ZXJPcHRpb25zIGV4dGVuZHMgQ292ZXJPcHRpb25zIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JvcENvdmVyT3B0aW9ucyBleHRlbmRzIENvdmVyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogRWxlbWVudCB0aGF0IHdpbGwgYmUgaW50ZXJhY3RpdmUgd2hpbGUgdGhlIGNvdmVyIGlzIHZpc2libGVcbiAgICAgKi9cbiAgICBjcm9wOiBFbGVtZW50SW5wdXQgfCBPYnNlcnZhYmxlPFJlY3Q+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV2ZWFsQ292ZXJPcHRpb25zIGV4dGVuZHMgQ292ZXJPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBMZWZ0IGFuZCByaWdodCBjb29yZGluYXRlcyBpbnNpZGUgdGhlIGNvbnRhaW5lclxuICAgICAqL1xuICAgIG9yaWdpbjogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIENvdmVyU2VydmljZSB7XG4gICAgc29saWQob3B0aW9uczogU29saWRDb3Zlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEhUTUxEaXZFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShkZXN0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvZXJjZUVsZW1lbnQob3B0aW9ucy5jb250YWluZXIpXG4gICAgICAgICAgICBjb25zdCBjb3ZlciA9IHRoaXMuI2NyZWF0ZUVsZW1lbnQob3B0aW9ucylcbiAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjb3ZlcilcbiAgICAgICAgICAgIGRlc3QubmV4dChjb3ZlcilcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb3Zlci5wYXJlbnRFbGVtZW50Py5yZW1vdmVDaGlsZChjb3ZlcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBjcm9wKG9wdGlvbnM6IENyb3BDb3Zlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEhUTUxEaXZFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiBvZigpXG4gICAgfVxuXG4gICAgcmV2ZWFsKG9wdGlvbnM6IFJldmVhbENvdmVyT3B0aW9ucyk6IE9ic2VydmFibGU8SFRNTERpdkVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIG9mKClcbiAgICB9XG5cbiAgICAjY3JlYXRlRWxlbWVudChvcHRpb25zOiBDb3Zlck9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpXG4gICAgICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiXG4gICAgICAgIGVsLnN0eWxlLnRvcCA9IGVsLnN0eWxlLnJpZ2h0ID0gZWwuc3R5bGUuYm90dG9tID0gZWwuc3R5bGUubGVmdCA9IFwiMHB4XCJcblxuICAgICAgICBpZiAob3B0aW9ucy5jb2xvciA9PT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMDAxKVwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBvcHRpb25zLmNvbG9yXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxcbiAgICB9XG59XG4iXX0=
@@ -4,16 +4,16 @@ export function animationObservable({ builder, animation, element, options }) {
4
4
  return new Observable((dst) => {
5
5
  const factory = builder.build(animation);
6
6
  const player = factory.create(coerceElement(element), options);
7
- player.onDestroy(() => {
7
+ const done = () => {
8
+ dst.next();
8
9
  dst.complete();
9
- });
10
- player.onDone(() => {
11
- dst.complete();
12
- });
10
+ };
11
+ player.onDestroy(done);
12
+ player.onDone(done);
13
13
  player.play();
14
14
  return () => {
15
15
  player.destroy();
16
16
  };
17
17
  });
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLW9ic2VydmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmFwaGljcy9zcmMvdXRpbC9hbmltYXRpb24tb2JzZXJ2YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFTNUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUE2QjtJQUNuRyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsR0FBcUIsRUFBRSxFQUFFO1FBQzVDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDeEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFOUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2xCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDZixHQUFHLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFYixPQUFPLEdBQUcsRUFBRTtZQUNSLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNwQixDQUFDLENBQUE7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25CdWlsZGVyLCBBbmltYXRpb25NZXRhZGF0YSwgQW5pbWF0aW9uT3B0aW9ucyB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCJcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgY29lcmNlRWxlbWVudCwgRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRpb25PYnNlcnZhYmxlUGFyYW1zIHtcbiAgICBidWlsZGVyOiBBbmltYXRpb25CdWlsZGVyXG4gICAgYW5pbWF0aW9uOiBBbmltYXRpb25NZXRhZGF0YSB8IEFuaW1hdGlvbk1ldGFkYXRhW11cbiAgICBlbGVtZW50OiBFbGVtZW50SW5wdXRcbiAgICBvcHRpb25zPzogQW5pbWF0aW9uT3B0aW9uc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5pbWF0aW9uT2JzZXJ2YWJsZSh7IGJ1aWxkZXIsIGFuaW1hdGlvbiwgZWxlbWVudCwgb3B0aW9ucyB9OiBBbmltYXRpb25PYnNlcnZhYmxlUGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChkc3Q6IFN1YnNjcmliZXI8dm9pZD4pID0+IHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IGJ1aWxkZXIuYnVpbGQoYW5pbWF0aW9uKVxuICAgICAgICBjb25zdCBwbGF5ZXIgPSBmYWN0b3J5LmNyZWF0ZShjb2VyY2VFbGVtZW50KGVsZW1lbnQpLCBvcHRpb25zKVxuXG4gICAgICAgIHBsYXllci5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgZHN0LmNvbXBsZXRlKClcbiAgICAgICAgfSlcbiAgICAgICAgcGxheWVyLm9uRG9uZSgoKSA9PiB7XG4gICAgICAgICAgICBkc3QuY29tcGxldGUoKVxuICAgICAgICB9KVxuICAgICAgICBwbGF5ZXIucGxheSgpXG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHBsYXllci5kZXN0cm95KClcbiAgICAgICAgfVxuICAgIH0pXG59XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLW9ic2VydmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmFwaGljcy9zcmMvdXRpbC9hbmltYXRpb24tb2JzZXJ2YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFTNUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUE2QjtJQUNuRyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsR0FBcUIsRUFBRSxFQUFFO1FBQzVDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDeEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFOUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2QsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ1YsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2xCLENBQUMsQ0FBQTtRQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFYixPQUFPLEdBQUcsRUFBRTtZQUNSLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNwQixDQUFDLENBQUE7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25CdWlsZGVyLCBBbmltYXRpb25NZXRhZGF0YSwgQW5pbWF0aW9uT3B0aW9ucyB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCJcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgY29lcmNlRWxlbWVudCwgRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRpb25PYnNlcnZhYmxlUGFyYW1zIHtcbiAgICBidWlsZGVyOiBBbmltYXRpb25CdWlsZGVyXG4gICAgYW5pbWF0aW9uOiBBbmltYXRpb25NZXRhZGF0YSB8IEFuaW1hdGlvbk1ldGFkYXRhW11cbiAgICBlbGVtZW50OiBFbGVtZW50SW5wdXRcbiAgICBvcHRpb25zPzogQW5pbWF0aW9uT3B0aW9uc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5pbWF0aW9uT2JzZXJ2YWJsZSh7IGJ1aWxkZXIsIGFuaW1hdGlvbiwgZWxlbWVudCwgb3B0aW9ucyB9OiBBbmltYXRpb25PYnNlcnZhYmxlUGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChkc3Q6IFN1YnNjcmliZXI8dm9pZD4pID0+IHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IGJ1aWxkZXIuYnVpbGQoYW5pbWF0aW9uKVxuICAgICAgICBjb25zdCBwbGF5ZXIgPSBmYWN0b3J5LmNyZWF0ZShjb2VyY2VFbGVtZW50KGVsZW1lbnQpLCBvcHRpb25zKVxuXG4gICAgICAgIGNvbnN0IGRvbmUgPSAoKSA9PiB7XG4gICAgICAgICAgICBkc3QubmV4dCgpXG4gICAgICAgICAgICBkc3QuY29tcGxldGUoKVxuICAgICAgICB9XG5cbiAgICAgICAgcGxheWVyLm9uRGVzdHJveShkb25lKVxuICAgICAgICBwbGF5ZXIub25Eb25lKGRvbmUpXG4gICAgICAgIHBsYXllci5wbGF5KClcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgcGxheWVyLmRlc3Ryb3koKVxuICAgICAgICB9XG4gICAgfSlcbn1cbiJdfQ==
@@ -161,11 +161,11 @@ function maxPossibleRadius(x, y, w, h) {
161
161
 
162
162
  class CoverService {
163
163
  solid(options) {
164
- return new Observable((dest) => {
164
+ return new Observable(dest => {
165
165
  const container = coerceElement(options.container);
166
166
  const cover = this.#createElement(options);
167
167
  container.appendChild(cover);
168
- dest.next();
168
+ dest.next(cover);
169
169
  return () => {
170
170
  cover.parentElement?.removeChild(cover);
171
171
  };
@@ -201,12 +201,12 @@ function animationObservable({ builder, animation, element, options }) {
201
201
  return new Observable((dst) => {
202
202
  const factory = builder.build(animation);
203
203
  const player = factory.create(coerceElement(element), options);
204
- player.onDestroy(() => {
204
+ const done = () => {
205
+ dst.next();
205
206
  dst.complete();
206
- });
207
- player.onDone(() => {
208
- dst.complete();
209
- });
207
+ };
208
+ player.onDestroy(done);
209
+ player.onDone(done);
210
210
  player.play();
211
211
  return () => {
212
212
  player.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"ngutil-graphics.mjs","sources":["../../../../packages/graphics/src/ripple/ripple.directive.ts","../../../../packages/graphics/src/cover.service.ts","../../../../packages/graphics/src/util/animation-observable.ts","../../../../packages/graphics/src/ngutil-graphics.ts"],"sourcesContent":["import { Directive, ElementRef, NgZone, TemplateRef } from \"@angular/core\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\n@Directive({\n standalone: true,\n selector: \"ng-template[nuRipple]\",\n exportAs: \"nuRipple\"\n})\nexport class RippleDirective extends Destructible {\n #current?: Ripple\n\n constructor(\n private readonly tplRef: TemplateRef<any>,\n private readonly zone: NgZone,\n private readonly el: ElementRef<Node>\n ) {\n super()\n zone.runOutsideAngular(() => {\n const target = el.nativeElement.parentElement\n if (target) {\n target.addEventListener(\"mousedown\", this.#onMouseDown)\n this.d.any(() => target.removeEventListener(\"mousedown\", this.#onMouseDown))\n }\n })\n }\n\n begin(event: MouseEvent) {\n this.#current?.autoDestroy()\n const cfg = this.#createRippleConfig(event)\n const ripple = this.#createRipple(cfg)\n this.#current = ripple\n\n const refEl = this.tplRef.elementRef.nativeElement as HTMLElement\n refEl.parentNode?.insertBefore(ripple.el, refEl)\n ripple.start()\n }\n\n end() {\n this.#current?.autoDestroy()\n }\n\n #createRipple(config: RippleConfig) {\n const ripple = new Ripple(config, this.zone, () => {\n if (this.#current === ripple) {\n this.#current = undefined\n }\n })\n this.d.disposable(ripple)\n return ripple\n }\n\n #createRippleConfig(event: MouseEvent): RippleConfig {\n const container = event.currentTarget as HTMLElement\n const bounds = container.getBoundingClientRect()\n const w = bounds.width\n const h = bounds.height\n const x = event.clientX - bounds.left\n const y = event.clientY - bounds.top\n const r = maxPossibleRadius(x, y, w, h) + Math.min(w, h)\n return { x, y, w, h, r, d: 600 }\n }\n\n #onMouseDown = (event: MouseEvent) => {\n this.begin(event)\n }\n}\n\ntype RippleConfig = { x: number; y: number; w: number; h: number; r: number; d: number }\n\nexport class Ripple implements IDisposable {\n public readonly el: HTMLDivElement\n public readonly isRunning: boolean = false\n\n #autoDestroy = false\n #hiding = false\n\n constructor(\n config: RippleConfig,\n zone: NgZone,\n public readonly onDestroy: () => void\n ) {\n const el = document.createElement(\"div\")\n el.style.position = \"absolute\"\n el.style.top = `${config.y - config.r}px`\n el.style.left = `${config.x - config.r}px`\n el.style.width = `${config.r * 2}px`\n el.style.height = `${config.r * 2}px`\n el.style.pointerEvents = \"none\"\n el.style.backgroundColor = \"var(--ripple-color)\"\n el.style.borderRadius = \"50%\"\n el.style.transition = `opacity ${config.d / 2}ms ease-out, transform ${config.d}ms ease-out`\n el.style.opacity = \"0\"\n el.style.transformOrigin = \"center\"\n el.style.transform = \"scale(0)\"\n this.el = el\n\n zone.runOutsideAngular(() => {\n el.addEventListener(\"transitionstart\", this.#transBegin)\n el.addEventListener(\"transitionend\", this.#transEnd)\n el.addEventListener(\"transitioncancel\", this.#transEnd)\n document.addEventListener(\"mouseup\", this.autoDestroy, { capture: true, passive: true })\n document.addEventListener(\"dragend\", this.autoDestroy, { capture: true, passive: true })\n })\n }\n\n start() {\n // eslint-disable-next-line no-extra-semi\n ;(this as { isRunning: boolean }).isRunning = true\n // XXX: force style apply\n const opacity = typeof window !== \"undefined\" ? Number(window.getComputedStyle(this.el).opacity) : 1\n this.el.style.opacity = opacity ? \"0.3\" : \"0.3\"\n this.el.style.transform = \"scale(1)\"\n }\n\n autoDestroy = () => {\n if (this.isRunning) {\n this.#autoDestroy = true\n } else {\n this.#fadeOut()\n }\n }\n\n dispose(): void {\n this.el.removeEventListener(\"transitionstart\", this.#transBegin)\n this.el.removeEventListener(\"transitionend\", this.#transEnd)\n this.el.removeEventListener(\"transitioncancel\", this.#transEnd)\n document.removeEventListener(\"mouseup\", this.autoDestroy, { capture: true })\n this.el.parentNode?.removeChild(this.el)\n this.onDestroy()\n }\n\n #transBegin = () => {\n // eslint-disable-next-line no-extra-semi\n ;(this as { isRunning: boolean }).isRunning = true\n }\n\n #transEnd = (event: TransitionEvent) => {\n if (event.propertyName === \"opacity\") {\n if (this.#hiding) {\n this.dispose()\n } else {\n if (this.#autoDestroy) {\n this.#fadeOut()\n }\n }\n } else if (event.propertyName === \"transform\") {\n // eslint-disable-next-line no-extra-semi\n ;(this as { isRunning: boolean }).isRunning = false\n if (this.#autoDestroy) {\n this.dispose()\n }\n }\n }\n\n #fadeOut() {\n if (this.#hiding) {\n return\n }\n this.#hiding = true\n this.el.style.opacity = \"0\"\n }\n}\n\nfunction maxPossibleRadius(x: number, y: number, w: number, h: number) {\n const distX = Math.max(x, Math.abs(w - x))\n const distY = Math.max(y, Math.abs(h - y))\n return Math.sqrt(distX * distX + distY * distY)\n}\n","import { Injectable } from \"@angular/core\"\n\nimport { Observable, of, Subscriber } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { Rect } from \"@ngutil/style\"\n\nexport interface CoverOptions {\n container: ElementInput\n color: \"transparent\" | string\n}\n\nexport interface SolidCoverOptions extends CoverOptions {}\n\nexport interface CropCoverOptions extends CoverOptions {\n /**\n * Element that will be interactive while the cover is visible\n */\n crop: ElementInput | Observable<Rect>\n}\n\nexport interface RevealCoverOptions extends CoverOptions {\n /**\n * Left and right coordinates inside the container\n */\n origin: { left: number; top: number }\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class CoverService {\n solid(options: SolidCoverOptions): Observable<void> {\n return new Observable((dest: Subscriber<void>) => {\n const container = coerceElement(options.container)\n const cover = this.#createElement(options)\n container.appendChild(cover)\n dest.next()\n\n return () => {\n cover.parentElement?.removeChild(cover)\n }\n })\n }\n\n crop(options: CropCoverOptions): Observable<void> {\n return of()\n }\n\n reveal(options: RevealCoverOptions): Observable<void> {\n return of()\n }\n\n #createElement(options: CoverOptions) {\n const el = document.createElement(\"div\")\n el.style.position = \"absolute\"\n el.style.top = el.style.right = el.style.bottom = el.style.left = \"0px\"\n\n if (options.color === \"transparent\") {\n el.style.backgroundColor = \"rgba(255, 255, 255, 0.0001)\"\n } else {\n el.style.backgroundColor = options.color\n }\n\n return el\n }\n}\n","import { AnimationBuilder, AnimationMetadata, AnimationOptions } from \"@angular/animations\"\n\nimport { Observable, Subscriber } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nexport interface AnimationObservableParams {\n builder: AnimationBuilder\n animation: AnimationMetadata | AnimationMetadata[]\n element: ElementInput\n options?: AnimationOptions\n}\n\nexport function animationObservable({ builder, animation, element, options }: AnimationObservableParams) {\n return new Observable((dst: Subscriber<void>) => {\n const factory = builder.build(animation)\n const player = factory.create(coerceElement(element), options)\n\n player.onDestroy(() => {\n dst.complete()\n })\n player.onDone(() => {\n dst.complete()\n })\n player.play()\n\n return () => {\n player.destroy()\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":"ngutil-graphics.mjs","sources":["../../../../packages/graphics/src/ripple/ripple.directive.ts","../../../../packages/graphics/src/cover.service.ts","../../../../packages/graphics/src/util/animation-observable.ts","../../../../packages/graphics/src/ngutil-graphics.ts"],"sourcesContent":["import { Directive, ElementRef, NgZone, TemplateRef } from \"@angular/core\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\n@Directive({\n standalone: true,\n selector: \"ng-template[nuRipple]\",\n exportAs: \"nuRipple\"\n})\nexport class RippleDirective extends Destructible {\n #current?: Ripple\n\n constructor(\n private readonly tplRef: TemplateRef<any>,\n private readonly zone: NgZone,\n private readonly el: ElementRef<Node>\n ) {\n super()\n zone.runOutsideAngular(() => {\n const target = el.nativeElement.parentElement\n if (target) {\n target.addEventListener(\"mousedown\", this.#onMouseDown)\n this.d.any(() => target.removeEventListener(\"mousedown\", this.#onMouseDown))\n }\n })\n }\n\n begin(event: MouseEvent) {\n this.#current?.autoDestroy()\n const cfg = this.#createRippleConfig(event)\n const ripple = this.#createRipple(cfg)\n this.#current = ripple\n\n const refEl = this.tplRef.elementRef.nativeElement as HTMLElement\n refEl.parentNode?.insertBefore(ripple.el, refEl)\n ripple.start()\n }\n\n end() {\n this.#current?.autoDestroy()\n }\n\n #createRipple(config: RippleConfig) {\n const ripple = new Ripple(config, this.zone, () => {\n if (this.#current === ripple) {\n this.#current = undefined\n }\n })\n this.d.disposable(ripple)\n return ripple\n }\n\n #createRippleConfig(event: MouseEvent): RippleConfig {\n const container = event.currentTarget as HTMLElement\n const bounds = container.getBoundingClientRect()\n const w = bounds.width\n const h = bounds.height\n const x = event.clientX - bounds.left\n const y = event.clientY - bounds.top\n const r = maxPossibleRadius(x, y, w, h) + Math.min(w, h)\n return { x, y, w, h, r, d: 600 }\n }\n\n #onMouseDown = (event: MouseEvent) => {\n this.begin(event)\n }\n}\n\ntype RippleConfig = { x: number; y: number; w: number; h: number; r: number; d: number }\n\nexport class Ripple implements IDisposable {\n public readonly el: HTMLDivElement\n public readonly isRunning: boolean = false\n\n #autoDestroy = false\n #hiding = false\n\n constructor(\n config: RippleConfig,\n zone: NgZone,\n public readonly onDestroy: () => void\n ) {\n const el = document.createElement(\"div\")\n el.style.position = \"absolute\"\n el.style.top = `${config.y - config.r}px`\n el.style.left = `${config.x - config.r}px`\n el.style.width = `${config.r * 2}px`\n el.style.height = `${config.r * 2}px`\n el.style.pointerEvents = \"none\"\n el.style.backgroundColor = \"var(--ripple-color)\"\n el.style.borderRadius = \"50%\"\n el.style.transition = `opacity ${config.d / 2}ms ease-out, transform ${config.d}ms ease-out`\n el.style.opacity = \"0\"\n el.style.transformOrigin = \"center\"\n el.style.transform = \"scale(0)\"\n this.el = el\n\n zone.runOutsideAngular(() => {\n el.addEventListener(\"transitionstart\", this.#transBegin)\n el.addEventListener(\"transitionend\", this.#transEnd)\n el.addEventListener(\"transitioncancel\", this.#transEnd)\n document.addEventListener(\"mouseup\", this.autoDestroy, { capture: true, passive: true })\n document.addEventListener(\"dragend\", this.autoDestroy, { capture: true, passive: true })\n })\n }\n\n start() {\n // eslint-disable-next-line no-extra-semi\n ;(this as { isRunning: boolean }).isRunning = true\n // XXX: force style apply\n const opacity = typeof window !== \"undefined\" ? Number(window.getComputedStyle(this.el).opacity) : 1\n this.el.style.opacity = opacity ? \"0.3\" : \"0.3\"\n this.el.style.transform = \"scale(1)\"\n }\n\n autoDestroy = () => {\n if (this.isRunning) {\n this.#autoDestroy = true\n } else {\n this.#fadeOut()\n }\n }\n\n dispose(): void {\n this.el.removeEventListener(\"transitionstart\", this.#transBegin)\n this.el.removeEventListener(\"transitionend\", this.#transEnd)\n this.el.removeEventListener(\"transitioncancel\", this.#transEnd)\n document.removeEventListener(\"mouseup\", this.autoDestroy, { capture: true })\n this.el.parentNode?.removeChild(this.el)\n this.onDestroy()\n }\n\n #transBegin = () => {\n // eslint-disable-next-line no-extra-semi\n ;(this as { isRunning: boolean }).isRunning = true\n }\n\n #transEnd = (event: TransitionEvent) => {\n if (event.propertyName === \"opacity\") {\n if (this.#hiding) {\n this.dispose()\n } else {\n if (this.#autoDestroy) {\n this.#fadeOut()\n }\n }\n } else if (event.propertyName === \"transform\") {\n // eslint-disable-next-line no-extra-semi\n ;(this as { isRunning: boolean }).isRunning = false\n if (this.#autoDestroy) {\n this.dispose()\n }\n }\n }\n\n #fadeOut() {\n if (this.#hiding) {\n return\n }\n this.#hiding = true\n this.el.style.opacity = \"0\"\n }\n}\n\nfunction maxPossibleRadius(x: number, y: number, w: number, h: number) {\n const distX = Math.max(x, Math.abs(w - x))\n const distY = Math.max(y, Math.abs(h - y))\n return Math.sqrt(distX * distX + distY * distY)\n}\n","import { Injectable } from \"@angular/core\"\n\nimport { Observable, of } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { Rect } from \"@ngutil/style\"\n\nexport interface CoverOptions {\n container: ElementInput\n color: \"transparent\" | string\n}\n\nexport interface SolidCoverOptions extends CoverOptions {}\n\nexport interface CropCoverOptions extends CoverOptions {\n /**\n * Element that will be interactive while the cover is visible\n */\n crop: ElementInput | Observable<Rect>\n}\n\nexport interface RevealCoverOptions extends CoverOptions {\n /**\n * Left and right coordinates inside the container\n */\n origin: { left: number; top: number }\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class CoverService {\n solid(options: SolidCoverOptions): Observable<HTMLDivElement> {\n return new Observable(dest => {\n const container = coerceElement(options.container)\n const cover = this.#createElement(options)\n container.appendChild(cover)\n dest.next(cover)\n\n return () => {\n cover.parentElement?.removeChild(cover)\n }\n })\n }\n\n crop(options: CropCoverOptions): Observable<HTMLDivElement> {\n return of()\n }\n\n reveal(options: RevealCoverOptions): Observable<HTMLDivElement> {\n return of()\n }\n\n #createElement(options: CoverOptions) {\n const el = document.createElement(\"div\")\n el.style.position = \"absolute\"\n el.style.top = el.style.right = el.style.bottom = el.style.left = \"0px\"\n\n if (options.color === \"transparent\") {\n el.style.backgroundColor = \"rgba(255, 255, 255, 0.0001)\"\n } else {\n el.style.backgroundColor = options.color\n }\n\n return el\n }\n}\n","import { AnimationBuilder, AnimationMetadata, AnimationOptions } from \"@angular/animations\"\n\nimport { Observable, Subscriber } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nexport interface AnimationObservableParams {\n builder: AnimationBuilder\n animation: AnimationMetadata | AnimationMetadata[]\n element: ElementInput\n options?: AnimationOptions\n}\n\nexport function animationObservable({ builder, animation, element, options }: AnimationObservableParams) {\n return new Observable((dst: Subscriber<void>) => {\n const factory = builder.build(animation)\n const player = factory.create(coerceElement(element), options)\n\n const done = () => {\n dst.next()\n dst.complete()\n }\n\n player.onDestroy(done)\n player.onDone(done)\n player.play()\n\n return () => {\n player.destroy()\n }\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@ngutil/graphics",
3
- "version": "0.0.48",
3
+ "version": "0.0.50",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^17.3.6",
6
6
  "@angular/common": "^17.3.6",
7
7
  "@angular/core": "^17.3.6",
8
8
  "rxjs": "^7.8.1",
9
- "@ngutil/common": "0.0.48",
10
- "@ngutil/style": "0.0.48"
9
+ "@ngutil/common": "0.0.50",
10
+ "@ngutil/style": "0.0.50"
11
11
  },
12
12
  "publishConfig": {
13
13
  "access": "public",