{"version":3,"file":"notiz-toolbelt-box.mjs","sources":["../../../../libs/toolbelt/box/src/box.ts","../../../../libs/toolbelt/box/src/box.pipe.ts","../../../../libs/toolbelt/box/src/notiz-toolbelt-box.ts"],"sourcesContent":["import {\n  ElementRef,\n  Injector,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { mutation$ } from '@notiz/toolbelt/mutation';\nimport { onAnimationFrame } from '@notiz/toolbelt/utils';\nimport { injectResize } from 'ngxtension/resize';\nimport { map, merge, of, startWith } from 'rxjs';\n\nexport const box$ = (el: HTMLElement) => {\n  const injector = inject(Injector);\n  const elInjector = Injector.create({\n    providers: [{ provide: ElementRef, useValue: new ElementRef(el) }],\n    parent: injector,\n  });\n\n  return runInInjectionContext(elInjector, () =>\n    injectResize({\n      scroll: true,\n      debounce: { scroll: 0, resize: 0 },\n      emitInitialResult: true,\n    }),\n  ).pipe(\n    map((res) => new DOMRect(res.x, res.y, res.width, res.height)),\n    map(round),\n  );\n};\n\nfunction round(rect: DOMRect) {\n  return new DOMRect(\n    Math.round(rect.x),\n    Math.round(rect.y),\n    Math.round(rect.width),\n    Math.round(rect.height),\n  );\n}\n\nexport const style$ = (el: HTMLElement) => {\n  if (typeof window === 'undefined') {\n    return of({} as CSSStyleDeclaration);\n  }\n\n  return merge(\n    mutation$(el, { attributes: true, attributeFilter: ['style', 'class'] }),\n  ).pipe(\n    onAnimationFrame(),\n    map(() => window.getComputedStyle(el)),\n    startWith(window.getComputedStyle(el)),\n    // distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b))\n  );\n};\n","import {\n  Injector,\n  Pipe,\n  PipeTransform,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { box$ } from './box';\n\n@Pipe({\n  name: 'box',\n  pure: true,\n  standalone: true,\n})\nexport class BoxPipe implements PipeTransform {\n  injector = inject(Injector);\n\n  transform(value: HTMLElement | undefined) {\n    if (!value) {\n      return;\n    }\n    return runInInjectionContext(this.injector, () =>\n      box$(value),\n    );\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAWa,MAAA,IAAI,GAAG,CAAC,EAAe,KAAI;AACtC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;AACjC,QAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;AAClE,QAAA,MAAM,EAAE,QAAQ;AACjB,KAAA,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC,UAAU,EAAE,MACvC,YAAY,CAAC;AACX,QAAA,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AAClC,QAAA,iBAAiB,EAAE,IAAI;AACxB,KAAA,CAAC,CACH,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC9D,GAAG,CAAC,KAAK,CAAC,CACX,CAAC;AACJ,EAAE;AAEF,SAAS,KAAK,CAAC,IAAa,EAAA;AAC1B,IAAA,OAAO,IAAI,OAAO,CAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CACxB,CAAC;AACJ,CAAC;AAEY,MAAA,MAAM,GAAG,CAAC,EAAe,KAAI;AACxC,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,QAAA,OAAO,EAAE,CAAC,EAAyB,CAAC,CAAC;KACtC;IAED,OAAO,KAAK,CACV,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CACzE,CAAC,IAAI,CACJ,gBAAgB,EAAE,EAClB,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EACtC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAEvC,CAAC;AACJ;;MCtCa,OAAO,CAAA;AALpB,IAAA,WAAA,GAAA;AAME,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAU7B,KAAA;AARC,IAAA,SAAS,CAAC,KAA8B,EAAA;QACtC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;AACD,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAC1C,IAAI,CAAC,KAAK,CAAC,CACZ,CAAC;KACH;8GAVU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBALnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACbD;;AAEG;;;;"}