lightning-pose-app 1.8.1a2__py3-none-any.whl → 1.8.1a3__py3-none-any.whl

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.
@@ -54403,22 +54403,35 @@ var ViewerSessionsPanelComponent = class _ViewerSessionsPanelComponent {
54403
54403
  (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(ViewerSessionsPanelComponent, { className: "ViewerSessionsPanelComponent", filePath: "src/app/viewer/viewer-left-panel/viewer-sessions-panel.component.ts", lineNumber: 24 });
54404
54404
  })();
54405
54405
 
54406
+ // src/app/utils/comparators.ts
54407
+ var compareStringArraysOrdered = (prev, curr) => {
54408
+ if (prev.length !== curr.length) {
54409
+ return false;
54410
+ }
54411
+ for (let i = 0; i < prev.length; i++) {
54412
+ if (prev[i] !== curr[i]) {
54413
+ return false;
54414
+ }
54415
+ }
54416
+ return true;
54417
+ };
54418
+
54406
54419
  // src/app/view-settings.model.ts
54407
54420
  var ViewSettings = class _ViewSettings {
54408
54421
  _viewsShown = new BehaviorSubject([]);
54409
- viewsShown$ = this._viewsShown.asObservable().pipe(distinctUntilChanged());
54422
+ viewsShown$ = this._viewsShown.asObservable().pipe(distinctUntilChanged(compareStringArraysOrdered));
54410
54423
  viewsShown = toSignal(this.viewsShown$, { requireSync: true });
54411
54424
  setViewsShown(selected) {
54412
54425
  this._viewsShown.next(selected);
54413
54426
  }
54414
54427
  _keypointsShown = new BehaviorSubject([]);
54415
- keypointsShown$ = this._keypointsShown.asObservable().pipe(distinctUntilChanged());
54428
+ keypointsShown$ = this._keypointsShown.asObservable().pipe(distinctUntilChanged(compareStringArraysOrdered));
54416
54429
  keypointsShown = toSignal(this.keypointsShown$, { requireSync: true });
54417
54430
  setKeypointsShown(selected) {
54418
54431
  this._keypointsShown.next(selected);
54419
54432
  }
54420
54433
  _modelsShown = new BehaviorSubject([]);
54421
- modelsShown$ = this._modelsShown.asObservable().pipe(distinctUntilChanged());
54434
+ modelsShown$ = this._modelsShown.asObservable().pipe(distinctUntilChanged(compareStringArraysOrdered));
54422
54435
  modelsShown = toSignal(this.modelsShown$, { requireSync: true });
54423
54436
  setModelsShown(selected) {
54424
54437
  this._modelsShown.next(selected);
@@ -54651,7 +54664,7 @@ var VideoPlayerControlsComponent = class _VideoPlayerControlsComponent {
54651
54664
  var _c04 = ["videoEl"];
54652
54665
  var _c13 = ["*"];
54653
54666
  var VideoTileComponent = class _VideoTileComponent {
54654
- elementRef;
54667
+ host;
54655
54668
  videoElement = null;
54656
54669
  src = input("");
54657
54670
  // Current time of the video element, for displaying for debug info.
@@ -54659,8 +54672,8 @@ var VideoTileComponent = class _VideoTileComponent {
54659
54672
  // the main state, injected from parent so it can be easily shared across video players
54660
54673
  videoPlayerState = inject(VideoPlayerState);
54661
54674
  contentEnd = new EventEmitter();
54662
- constructor(elementRef) {
54663
- this.elementRef = elementRef;
54675
+ constructor(host) {
54676
+ this.host = host;
54664
54677
  this.videoPlayerState.registerVideoPlayer(this);
54665
54678
  combineLatest([
54666
54679
  this.videoPlayerState.currentTime,
@@ -54669,6 +54682,12 @@ var VideoTileComponent = class _VideoTileComponent {
54669
54682
  this.updateLocalCurrentTime();
54670
54683
  });
54671
54684
  }
54685
+ ngOnInit() {
54686
+ const observer = new ResizeObserver(() => {
54687
+ this.updateScaleFactorSignal();
54688
+ });
54689
+ observer.observe(this.host.nativeElement);
54690
+ }
54672
54691
  ngOnDestroy() {
54673
54692
  this.videoPlayerState.unregisterVideoPlayer(this);
54674
54693
  }
@@ -54686,9 +54705,12 @@ var VideoTileComponent = class _VideoTileComponent {
54686
54705
  width: this.videoElement?.nativeElement.videoWidth ?? 1,
54687
54706
  duration: this.videoElement?.nativeElement.duration ?? 0
54688
54707
  });
54689
- this.scaleFactor.set(this.elementRef.nativeElement.clientWidth / this.videoMetadata.value.width);
54708
+ this.updateScaleFactorSignal();
54690
54709
  this.showProjectedContent.set(true);
54691
54710
  }
54711
+ updateScaleFactorSignal() {
54712
+ this.scaleFactor.set(this.host.nativeElement.clientWidth / this.videoMetadata.value.width);
54713
+ }
54692
54714
  updateLocalCurrentTime() {
54693
54715
  this.localCurrentTime.set(this.videoElement?.nativeElement.currentTime ?? 0);
54694
54716
  }
@@ -54707,7 +54729,7 @@ var VideoTileComponent = class _VideoTileComponent {
54707
54729
  let _t;
54708
54730
  \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.videoElement = _t.first);
54709
54731
  }
54710
- }, inputs: { src: [1, "src"] }, outputs: { contentEnd: "contentEnd" }, ngContentSelectors: _c13, decls: 6, vars: 3, consts: [["videoEl", ""], [1, "relative", "shadow-lg", "shadow-black/20", "bg-base-200"], ["preload", "auto", "muted", "", 1, "w-full", 3, "loadedmetadata", "timeupdate", "ended"], ["type", "video/mp4", 3, "src"]], template: function VideoTileComponent_Template(rf, ctx) {
54732
+ }, inputs: { src: [1, "src"] }, outputs: { contentEnd: "contentEnd" }, ngContentSelectors: _c13, decls: 6, vars: 3, consts: [["videoEl", ""], [1, "relative", "shadow-lg", "shadow-black/20", "bg-base-200"], ["preload", "auto", "muted", "", 3, "loadedmetadata", "timeupdate", "ended"], ["type", "video/mp4", 3, "src"]], template: function VideoTileComponent_Template(rf, ctx) {
54711
54733
  if (rf & 1) {
54712
54734
  const _r1 = \u0275\u0275getCurrentView();
54713
54735
  \u0275\u0275projectionDef();
@@ -54734,12 +54756,12 @@ var VideoTileComponent = class _VideoTileComponent {
54734
54756
  \u0275\u0275advance();
54735
54757
  \u0275\u0275classProp("invisible", !ctx.showProjectedContent());
54736
54758
  }
54737
- }, encapsulation: 2, changeDetection: 0 });
54759
+ }, styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n}\n/*# sourceMappingURL=/static/video-tile.component-XSYKMARQ.css.map */"], changeDetection: 0 });
54738
54760
  };
54739
54761
  (() => {
54740
54762
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(VideoTileComponent, [{
54741
54763
  type: Component,
54742
- args: [{ selector: "app-video-tile", imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: '<div class="relative shadow-lg shadow-black/20 bg-base-200">\n <!-- bg is visible during loading state -->\n <!-- wrapper to contain video + keypoints -->\n <video\n #videoEl\n preload="auto"\n (loadedmetadata)="onLoadedMetadata()"\n muted\n class="w-full"\n (timeupdate)="updateLocalCurrentTime()"\n (ended)="onEnd()"\n >\n <source [src]="src()" type="video/mp4" />\n </video>\n <div [class.invisible]="!showProjectedContent()">\n <!-- wrapper to hide content until video inited -->\n <ng-content></ng-content>\n </div>\n</div>\n<!--<p>T: {{ localCurrentTime() }}</p>-->\n' }]
54764
+ args: [{ selector: "app-video-tile", imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: '<style>\r\n :host {\r\n /* Display for angular elements is inline by default.\r\n This is a problem when querying the host height, because it ends up being just 0.\r\n */\r\n display: block;\r\n }\r\n</style>\r\n\r\n<div class="relative shadow-lg shadow-black/20 bg-base-200">\r\n <!-- bg is visible during loading state -->\r\n <!-- wrapper to contain video + keypoints -->\r\n <video\r\n #videoEl\r\n preload="auto"\r\n (loadedmetadata)="onLoadedMetadata()"\r\n muted\r\n (timeupdate)="updateLocalCurrentTime()"\r\n (ended)="onEnd()"\r\n >\r\n <source [src]="src()" type="video/mp4" />\r\n </video>\r\n <div [class.invisible]="!showProjectedContent()">\r\n <!-- wrapper to hide content until video inited -->\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n<!--<p>T: {{ localCurrentTime() }}</p>-->\r\n', styles: ["/* angular:styles/component:css;cca0ce7e24de60b661844ed36e56ee3734a21f5d38966246b6b69d25889a81d9;/home/ksikka/lightning-pose-app/web_ui/src/app/components/video-player/video-tile/video-tile.component.html */\n:host {\n display: block;\n}\n/*# sourceMappingURL=/static/video-tile.component-XSYKMARQ.css.map */\n"] }]
54743
54765
  }], () => [{ type: ElementRef }], { videoElement: [{
54744
54766
  type: ViewChild,
54745
54767
  args: ["videoEl", { static: true }]
@@ -58981,15 +59003,30 @@ var Pair = class _Pair {
58981
59003
  var _forTrack03 = ($index, $item) => $item.videoSrc;
58982
59004
  function ViewerCenterPanelComponent_For_3_Template(rf, ctx) {
58983
59005
  if (rf & 1) {
58984
- \u0275\u0275elementStart(0, "app-video-tile", 2);
58985
- \u0275\u0275element(1, "app-keypoint-container", 3);
59006
+ const _r1 = \u0275\u0275getCurrentView();
59007
+ \u0275\u0275elementStart(0, "div", 2)(1, "div", 3)(2, "h3");
59008
+ \u0275\u0275text(3);
58986
59009
  \u0275\u0275elementEnd();
59010
+ \u0275\u0275elementStart(4, "span", 4);
59011
+ \u0275\u0275listener("click", function ViewerCenterPanelComponent_For_3_Template_span_click_4_listener() {
59012
+ const w_r2 = \u0275\u0275restoreView(_r1).$implicit;
59013
+ const ctx_r2 = \u0275\u0275nextContext();
59014
+ return \u0275\u0275resetView(ctx_r2.onWidgetCloseClick(w_r2));
59015
+ });
59016
+ \u0275\u0275text(5, "close");
59017
+ \u0275\u0275elementEnd()();
59018
+ \u0275\u0275elementStart(6, "app-video-tile", 5);
59019
+ \u0275\u0275element(7, "app-keypoint-container", 6);
59020
+ \u0275\u0275elementEnd()();
58987
59021
  }
58988
59022
  if (rf & 2) {
58989
- const w_r1 = ctx.$implicit;
58990
- \u0275\u0275property("src", w_r1.videoSrc);
59023
+ const w_r2 = ctx.$implicit;
59024
+ \u0275\u0275advance(3);
59025
+ \u0275\u0275textInterpolate(w_r2.id);
59026
+ \u0275\u0275advance(3);
59027
+ \u0275\u0275property("src", w_r2.videoSrc);
58991
59028
  \u0275\u0275advance();
58992
- \u0275\u0275property("labelerMode", false)("keypointModels", w_r1.keypoints());
59029
+ \u0275\u0275property("labelerMode", false)("keypointModels", w_r2.keypoints());
58993
59030
  }
58994
59031
  }
58995
59032
  var ViewerCenterPanelComponent = class _ViewerCenterPanelComponent {
@@ -59125,13 +59162,17 @@ var ViewerCenterPanelComponent = class _ViewerCenterPanelComponent {
59125
59162
  this.videoPlayerState.duration.set(data.duration);
59126
59163
  this.videoPlayerState.fps.set(data.fps);
59127
59164
  }
59165
+ onWidgetCloseClick(w) {
59166
+ const nextViewsShown = this.viewSettings.viewsShown().filter((v) => v != w.id);
59167
+ this.viewSettings.setViewsShown(nextViewsShown);
59168
+ }
59128
59169
  static \u0275fac = function ViewerCenterPanelComponent_Factory(__ngFactoryType__) {
59129
59170
  return new (__ngFactoryType__ || _ViewerCenterPanelComponent)();
59130
59171
  };
59131
- static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _ViewerCenterPanelComponent, selectors: [["app-viewer-center-panel"]], inputs: { viewSettings: "viewSettings" }, decls: 5, vars: 0, consts: [[1, "flex", "flex-col", "h-full"], [1, "video-tile", "w-full", "grow", "flex", "flex-wrap", "overflow-y-auto", "gap-4", "*:grow", "*:shrink-0", "*:max-w-xs", "justify-start", "content-start", "p-4"], [3, "src"], [3, "labelerMode", "keypointModels"]], template: function ViewerCenterPanelComponent_Template(rf, ctx) {
59172
+ static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _ViewerCenterPanelComponent, selectors: [["app-viewer-center-panel"]], inputs: { viewSettings: "viewSettings" }, decls: 5, vars: 0, consts: [[1, "flex", "flex-col", "h-full"], [1, "w-full", "grow", "flex", "flex-wrap", "overflow-y-auto", "gap-4", "*:max-w-xs", "justify-start", "items-start", "content-start", "p-4"], [1, "panel", "!border-none"], [1, "px-2", "py-1", "text-sm", "flex", "justify-between"], [1, "btn", "btn-circle", "btn-xs", "material-icons", "!text-sm", 3, "click"], [1, "w-auto", 3, "src"], [3, "labelerMode", "keypointModels"]], template: function ViewerCenterPanelComponent_Template(rf, ctx) {
59132
59173
  if (rf & 1) {
59133
59174
  \u0275\u0275elementStart(0, "div", 0)(1, "div", 1);
59134
- \u0275\u0275repeaterCreate(2, ViewerCenterPanelComponent_For_3_Template, 2, 3, "app-video-tile", 2, _forTrack03);
59175
+ \u0275\u0275repeaterCreate(2, ViewerCenterPanelComponent_For_3_Template, 8, 4, "div", 2, _forTrack03);
59135
59176
  \u0275\u0275elementEnd();
59136
59177
  \u0275\u0275element(4, "app-video-player-controls");
59137
59178
  \u0275\u0275elementEnd();
@@ -59153,7 +59194,7 @@ var ViewerCenterPanelComponent = class _ViewerCenterPanelComponent {
59153
59194
  VideoPlayerControlsComponent,
59154
59195
  VideoTileComponent,
59155
59196
  KeypointContainerComponent
59156
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: '<div class="flex flex-col h-full">\n <!-- Video content area -->\n <div\n class="video-tile w-full grow flex flex-wrap overflow-y-auto gap-4 *:grow *:shrink-0 *:max-w-xs justify-start content-start p-4"\n >\n <!-- `track videosrc` makes the widget component get\n destroyed and recreated if videoSrc changes. Reactively\n changing videoSrc of an existing video does not work unfortunately. -->\n @for (w of filteredWidgetModels(); track w.videoSrc) {\n <!--@if (viewSettings.viewsShown().indexOf(w.id) >= 0) {-->\n <app-video-tile [src]="w.videoSrc">\n <app-keypoint-container\n [labelerMode]="false"\n [keypointModels]="w.keypoints()"\n ></app-keypoint-container>\n </app-video-tile>\n }\n </div>\n\n <app-video-player-controls></app-video-player-controls>\n</div>\n' }]
59197
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: '<div class="flex flex-col h-full">\r\n <!-- Video content area -->\r\n <div\r\n class="w-full grow flex flex-wrap overflow-y-auto gap-4 *:max-w-xs justify-start items-start content-start p-4"\r\n >\r\n <!-- `track videosrc` makes the widget component get\r\n destroyed and recreated if videoSrc changes. Reactively\r\n changing videoSrc of an existing video does not work unfortunately. -->\r\n @for (w of filteredWidgetModels(); track w.videoSrc) {\r\n <div class="panel !border-none">\r\n <div class="px-2 py-1 text-sm flex justify-between">\r\n <h3>{{ w.id }}</h3>\r\n <span\r\n class="btn btn-circle btn-xs material-icons !text-sm"\r\n (click)="onWidgetCloseClick(w)"\r\n >close</span\r\n >\r\n </div>\r\n <app-video-tile [src]="w.videoSrc" class="w-auto">\r\n <app-keypoint-container\r\n [labelerMode]="false"\r\n [keypointModels]="w.keypoints()"\r\n ></app-keypoint-container>\r\n </app-video-tile>\r\n </div>\r\n }\r\n </div>\r\n\r\n <app-video-player-controls></app-video-player-controls>\r\n</div>\r\n' }]
59157
59198
  }], null, { viewSettings: [{
59158
59199
  type: Input
59159
59200
  }] });
@@ -59205,10 +59246,10 @@ var _c05 = (a0) => [a0];
59205
59246
  function ViewerPageComponent_Conditional_0_For_14_Template(rf, ctx) {
59206
59247
  if (rf & 1) {
59207
59248
  const _r1 = \u0275\u0275getCurrentView();
59208
- \u0275\u0275elementStart(0, "li", 10)(1, "span");
59249
+ \u0275\u0275elementStart(0, "li", 9)(1, "span");
59209
59250
  \u0275\u0275text(2);
59210
59251
  \u0275\u0275elementEnd();
59211
- \u0275\u0275elementStart(3, "input", 13);
59252
+ \u0275\u0275elementStart(3, "input", 12);
59212
59253
  \u0275\u0275listener("change", function ViewerPageComponent_Conditional_0_For_14_Template_input_change_3_listener($event) {
59213
59254
  const cam_r2 = \u0275\u0275restoreView(_r1).$implicit;
59214
59255
  const ctx_r2 = \u0275\u0275nextContext(2);
@@ -59228,10 +59269,10 @@ function ViewerPageComponent_Conditional_0_For_14_Template(rf, ctx) {
59228
59269
  function ViewerPageComponent_Conditional_0_For_22_Template(rf, ctx) {
59229
59270
  if (rf & 1) {
59230
59271
  const _r4 = \u0275\u0275getCurrentView();
59231
- \u0275\u0275elementStart(0, "li", 10)(1, "span");
59272
+ \u0275\u0275elementStart(0, "li", 9)(1, "span");
59232
59273
  \u0275\u0275text(2);
59233
59274
  \u0275\u0275elementEnd();
59234
- \u0275\u0275elementStart(3, "input", 13);
59275
+ \u0275\u0275elementStart(3, "input", 12);
59235
59276
  \u0275\u0275listener("change", function ViewerPageComponent_Conditional_0_For_22_Template_input_change_3_listener($event) {
59236
59277
  const kp_r5 = \u0275\u0275restoreView(_r4).$implicit;
59237
59278
  const ctx_r2 = \u0275\u0275nextContext(2);
@@ -59250,7 +59291,7 @@ function ViewerPageComponent_Conditional_0_For_22_Template(rf, ctx) {
59250
59291
  }
59251
59292
  function ViewerPageComponent_Conditional_0_For_31_For_5_Template(rf, ctx) {
59252
59293
  if (rf & 1) {
59253
- \u0275\u0275elementStart(0, "option", 15);
59294
+ \u0275\u0275elementStart(0, "option", 14);
59254
59295
  \u0275\u0275text(1);
59255
59296
  \u0275\u0275elementEnd();
59256
59297
  }
@@ -59266,7 +59307,7 @@ function ViewerPageComponent_Conditional_0_For_31_Template(rf, ctx) {
59266
59307
  if (rf & 1) {
59267
59308
  const _r6 = \u0275\u0275getCurrentView();
59268
59309
  \u0275\u0275declareLet(0);
59269
- \u0275\u0275elementStart(1, "li", 12)(2, "select", 14);
59310
+ \u0275\u0275elementStart(1, "li", 11)(2, "select", 13);
59270
59311
  \u0275\u0275listener("change", function ViewerPageComponent_Conditional_0_For_31_Template_select_change_2_listener($event) {
59271
59312
  \u0275\u0275restoreView(_r6);
59272
59313
  const modelIndex_r7 = \u0275\u0275readContextLet(0);
@@ -59274,7 +59315,7 @@ function ViewerPageComponent_Conditional_0_For_31_Template(rf, ctx) {
59274
59315
  return \u0275\u0275resetView(ctx_r2.onModelDropdownItemClick(modelIndex_r7, $event));
59275
59316
  });
59276
59317
  \u0275\u0275declareLet(3);
59277
- \u0275\u0275repeaterCreate(4, ViewerPageComponent_Conditional_0_For_31_For_5_Template, 2, 2, "option", 15, \u0275\u0275repeaterTrackByIdentity);
59318
+ \u0275\u0275repeaterCreate(4, ViewerPageComponent_Conditional_0_For_31_For_5_Template, 2, 2, "option", 14, \u0275\u0275repeaterTrackByIdentity);
59278
59319
  \u0275\u0275elementEnd()();
59279
59320
  }
59280
59321
  if (rf & 2) {
@@ -59296,24 +59337,24 @@ function ViewerPageComponent_Conditional_0_Template(rf, ctx) {
59296
59337
  \u0275\u0275element(4, "app-loading-bar", 3);
59297
59338
  \u0275\u0275elementEnd();
59298
59339
  \u0275\u0275element(5, "app-viewer-center-panel", 4);
59299
- \u0275\u0275elementStart(6, "div", 5)(7, "div", 6)(8, "div", 7)(9, "h1", 8);
59340
+ \u0275\u0275elementStart(6, "div", 5)(7, "div", 6)(8, "div")(9, "h1", 7);
59300
59341
  \u0275\u0275text(10, "Views");
59301
59342
  \u0275\u0275elementEnd()();
59302
- \u0275\u0275elementStart(11, "div", 9)(12, "ul");
59303
- \u0275\u0275repeaterCreate(13, ViewerPageComponent_Conditional_0_For_14_Template, 4, 2, "li", 10, \u0275\u0275repeaterTrackByIdentity);
59343
+ \u0275\u0275elementStart(11, "div", 8)(12, "ul");
59344
+ \u0275\u0275repeaterCreate(13, ViewerPageComponent_Conditional_0_For_14_Template, 4, 2, "li", 9, \u0275\u0275repeaterTrackByIdentity);
59304
59345
  \u0275\u0275elementEnd()()();
59305
- \u0275\u0275elementStart(15, "div", 6)(16, "div", 7)(17, "h1", 8);
59346
+ \u0275\u0275elementStart(15, "div", 6)(16, "div")(17, "h1", 7);
59306
59347
  \u0275\u0275text(18, "Keypoints");
59307
59348
  \u0275\u0275elementEnd()();
59308
- \u0275\u0275elementStart(19, "div", 9)(20, "ul");
59309
- \u0275\u0275repeaterCreate(21, ViewerPageComponent_Conditional_0_For_22_Template, 4, 2, "li", 10, \u0275\u0275repeaterTrackByIdentity);
59349
+ \u0275\u0275elementStart(19, "div", 8)(20, "ul");
59350
+ \u0275\u0275repeaterCreate(21, ViewerPageComponent_Conditional_0_For_22_Template, 4, 2, "li", 9, \u0275\u0275repeaterTrackByIdentity);
59310
59351
  \u0275\u0275elementEnd()()();
59311
- \u0275\u0275elementStart(23, "div", 6)(24, "div", 7)(25, "h1", 8);
59352
+ \u0275\u0275elementStart(23, "div", 6)(24, "div")(25, "h1", 7);
59312
59353
  \u0275\u0275text(26, "Models");
59313
59354
  \u0275\u0275elementEnd()();
59314
- \u0275\u0275elementStart(27, "div", 11)(28, "ul");
59355
+ \u0275\u0275elementStart(27, "div", 10)(28, "ul");
59315
59356
  \u0275\u0275declareLet(29);
59316
- \u0275\u0275repeaterCreate(30, ViewerPageComponent_Conditional_0_For_31_Template, 6, 7, "li", 12, \u0275\u0275repeaterTrackByIndex);
59357
+ \u0275\u0275repeaterCreate(30, ViewerPageComponent_Conditional_0_For_31_Template, 6, 7, "li", 11, \u0275\u0275repeaterTrackByIndex);
59317
59358
  \u0275\u0275elementEnd()()()()();
59318
59359
  }
59319
59360
  if (rf & 2) {
@@ -59391,9 +59432,15 @@ var ViewerPageComponent = class _ViewerPageComponent {
59391
59432
  this.viewSelectionModel.changed.asObservable().pipe(takeUntilDestroyed()).subscribe(() => {
59392
59433
  this.viewSettings.setViewsShown(this.viewSelectionModel.selected);
59393
59434
  });
59435
+ this.viewSettings.viewsShown$.pipe(takeUntilDestroyed()).subscribe((viewsShown) => {
59436
+ this.viewSelectionModel.setSelection(...viewsShown);
59437
+ });
59394
59438
  this.keypointSelectionModel.changed.asObservable().pipe(takeUntilDestroyed()).subscribe(() => {
59395
59439
  this.viewSettings.setKeypointsShown(this.keypointSelectionModel.selected);
59396
59440
  });
59441
+ this.viewSettings.keypointsShown$.pipe(takeUntilDestroyed()).subscribe((keypointsShown) => {
59442
+ this.keypointSelectionModel.setSelection(...keypointsShown);
59443
+ });
59397
59444
  }
59398
59445
  onKeypointCheckboxChange(event, keypointName) {
59399
59446
  const target = event.target;
@@ -59433,7 +59480,7 @@ var ViewerPageComponent = class _ViewerPageComponent {
59433
59480
  if (rf & 2) {
59434
59481
  \u0275\u0275queryAdvance();
59435
59482
  }
59436
- }, inputs: { sessionKey: "sessionKey" }, features: [\u0275\u0275ProvidersFeature([VideoPlayerState, ViewSettings])], decls: 1, vars: 1, consts: [[1, "grow", "flex", "flex-row", "items-stretch"], [1, "bg-base-200", "w-60", "xl:w-80", "flex", "flex-col", "justify-between", "shadow-lg"], [1, "p-4"], [1, "h-20", "p-4"], [1, "grow", "z-30", 3, "viewSettings"], [1, "shrink-0", "w-40", "xl:w-60", "h-full"], [1, "panel", "m-4"], [1, "panel-header"], [1, "px-2", "mb-1"], [1, "panel-content", "max-h-60", "overflow-y-auto"], [1, "p-1", "flex", "justify-between", "items-center"], [1, "panel-content", "max-h-60", "overflow-y-visible"], [1, "p-1", "w-full"], ["type", "checkbox", 1, "checkbox", "checkbox-xs", 3, "change", "checked"], [1, "select", "select-sm", "w-full", "flex-grow", 3, "change"], [3, "selected"]], template: function ViewerPageComponent_Template(rf, ctx) {
59483
+ }, inputs: { sessionKey: "sessionKey" }, features: [\u0275\u0275ProvidersFeature([VideoPlayerState, ViewSettings])], decls: 1, vars: 1, consts: [[1, "grow", "flex", "flex-row", "items-stretch"], [1, "bg-base-200", "w-60", "xl:w-80", "flex", "flex-col", "justify-between", "shadow-lg"], [1, "p-4"], [1, "h-20", "p-4"], [1, "grow", "z-30", 3, "viewSettings"], [1, "shrink-0", "w-40", "xl:w-60", "h-full"], [1, "panel", "m-4"], [1, "px-2", "mb-1"], [1, "panel-content", "max-h-60", "overflow-y-auto"], [1, "p-1", "flex", "justify-between", "items-center"], [1, "panel-content", "max-h-60", "overflow-y-visible"], [1, "p-1", "w-full"], ["type", "checkbox", 1, "checkbox", "checkbox-xs", 3, "change", "checked"], [1, "select", "select-sm", "w-full", "flex-grow", 3, "change"], [3, "selected"]], template: function ViewerPageComponent_Template(rf, ctx) {
59437
59484
  if (rf & 1) {
59438
59485
  \u0275\u0275template(0, ViewerPageComponent_Conditional_0_Template, 32, 3, "div", 0);
59439
59486
  }
@@ -59444,7 +59491,7 @@ var ViewerPageComponent = class _ViewerPageComponent {
59444
59491
  ViewerSessionsPanelComponent,
59445
59492
  ViewerCenterPanelComponent,
59446
59493
  LoadingBarComponent
59447
- ], styles: ["\n\n[_nghost-%COMP%] {\n flex-grow: 1;\n display: flex;\n}\n/*# sourceMappingURL=/static/viewer-page.component-KIYG73MW.css.map */"], changeDetection: 0 });
59494
+ ], styles: ["\n\n[_nghost-%COMP%] {\n flex-grow: 1;\n display: flex;\n}\n/*# sourceMappingURL=/static/viewer-page.component-MRTIUFL2.css.map */"], changeDetection: 0 });
59448
59495
  };
59449
59496
  (() => {
59450
59497
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ViewerPageComponent, [{
@@ -59453,119 +59500,122 @@ var ViewerPageComponent = class _ViewerPageComponent {
59453
59500
  ViewerSessionsPanelComponent,
59454
59501
  ViewerCenterPanelComponent,
59455
59502
  LoadingBarComponent
59456
- ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [VideoPlayerState, ViewSettings], template: `<style>
59457
- :host {
59458
- flex-grow: 1;
59459
- display: flex;
59460
- }
59461
- </style>
59462
-
59463
- @if (!isIniting()) {
59464
- <div class="grow flex flex-row items-stretch">
59465
- <!-- Left pane -->
59466
- <div
59467
- class="bg-base-200 w-60 xl:w-80 flex flex-col justify-between shadow-lg"
59468
- >
59469
- <div class="p-4">
59470
- <app-sessions-panel></app-sessions-panel>
59471
- </div>
59472
- <app-loading-bar class="h-20 p-4"></app-loading-bar>
59473
- </div>
59474
-
59475
- <!-- Center content -->
59476
- <app-viewer-center-panel
59477
- class="grow z-30"
59478
- [viewSettings]="viewSettings"
59479
- ></app-viewer-center-panel>
59480
-
59481
- <!-- Right pane -->
59482
- <div class="shrink-0 w-40 xl:w-60 h-full">
59483
- <div class="panel m-4">
59484
- <div class="panel-header">
59485
- <h1 class="px-2 mb-1">Views</h1>
59486
- </div>
59487
- <div class="panel-content max-h-60 overflow-y-auto">
59488
- <ul>
59489
- @for (cam of allViews; track cam) {
59490
- <li class="p-1 flex justify-between items-center">
59491
- <span>{{ cam }}</span>
59492
- <input
59493
- type="checkbox"
59494
- [checked]="viewSelectionModel.isSelected(cam)"
59495
- class="checkbox checkbox-xs"
59496
- (change)="onViewCheckboxChange($event, cam)"
59497
- />
59498
- </li>
59499
- }
59500
- </ul>
59501
- </div>
59502
- </div>
59503
-
59504
- <div class="panel m-4">
59505
- <div class="panel-header">
59506
- <h1 class="px-2 mb-1">Keypoints</h1>
59507
- </div>
59508
- <div class="panel-content max-h-60 overflow-y-auto">
59509
- <ul>
59510
- @for (kp of projectInfoService.allKeypoints(); track kp) {
59511
- <li class="p-1 flex justify-between items-center">
59512
- <span>{{ kp }}</span>
59513
- <input
59514
- type="checkbox"
59515
- [checked]="keypointSelectionModel.isSelected(kp)"
59516
- class="checkbox checkbox-xs"
59517
- (change)="onKeypointCheckboxChange($event, kp)"
59518
- />
59519
- </li>
59520
- }
59521
- </ul>
59522
- </div>
59523
- </div>
59524
-
59525
- <div class="panel m-4">
59526
- <div class="panel-header">
59527
- <h1 class="px-2 mb-1">Models</h1>
59528
- </div>
59529
- <div class="panel-content max-h-60 overflow-y-visible">
59530
- <ul>
59531
- @let modelSelectors =
59532
- viewSettings.modelsShown().length < 2
59533
- ? viewSettings.modelsShown().concat([noneOption])
59534
- : viewSettings.modelsShown();
59535
- <!-- it's important to track index, not model.
59536
- if we put model here, something weird happens when you clear all models and then set a model. -->
59537
- @for (model of modelSelectors; track $index) {
59538
- @let modelIndex = $index;
59539
- <li class="p-1 w-full">
59540
- <select
59541
- class="select select-sm w-full flex-grow"
59542
- [class.border-red-300]="modelIndex === 0"
59543
- [class.border-green-300]="modelIndex === 1"
59544
- (change)="onModelDropdownItemClick(modelIndex, $event)"
59545
- >
59546
- @let options =
59547
- [noneOption].concat(projectInfoService.allModels());
59548
- @for (dropdownItem of options; track dropdownItem) {
59549
- <option [selected]="dropdownItem === model">
59550
- {{ dropdownItem }}
59551
- </option>
59552
- }
59553
- </select>
59554
- </li>
59555
- }
59556
- </ul>
59557
- </div>
59558
- </div>
59559
- </div>
59560
- </div>
59561
- }
59562
- `, styles: ["/* angular:styles/component:css;1fa15f7a0ae1b0259233282b2d49fb361834bf7fd726c58584c186240f9d8f04;/home/ksikka/lightning-pose/app/web_ui/src/app/viewer/viewer-page/viewer-page.component.html */\n:host {\n flex-grow: 1;\n display: flex;\n}\n/*# sourceMappingURL=/static/viewer-page.component-KIYG73MW.css.map */\n"] }]
59503
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [VideoPlayerState, ViewSettings], template: `<style>\r
59504
+ :host {\r
59505
+ flex-grow: 1;\r
59506
+ display: flex;\r
59507
+ }\r
59508
+ </style>\r
59509
+ \r
59510
+ @if (!isIniting()) {\r
59511
+ <div class="grow flex flex-row items-stretch">\r
59512
+ <!-- Left pane -->\r
59513
+ <div\r
59514
+ class="bg-base-200 w-60 xl:w-80 flex flex-col justify-between shadow-lg"\r
59515
+ >\r
59516
+ <div class="p-4">\r
59517
+ <app-sessions-panel></app-sessions-panel>\r
59518
+ </div>\r
59519
+ <app-loading-bar class="h-20 p-4"></app-loading-bar>\r
59520
+ </div>\r
59521
+ \r
59522
+ <!-- Center content -->\r
59523
+ <app-viewer-center-panel\r
59524
+ class="grow z-30"\r
59525
+ [viewSettings]="viewSettings"\r
59526
+ ></app-viewer-center-panel>\r
59527
+ \r
59528
+ <!-- Right pane -->\r
59529
+ <div class="shrink-0 w-40 xl:w-60 h-full">\r
59530
+ <div class="panel m-4">\r
59531
+ <div>\r
59532
+ <!-- panel header -->\r
59533
+ <h1 class="px-2 mb-1">Views</h1>\r
59534
+ </div>\r
59535
+ <div class="panel-content max-h-60 overflow-y-auto">\r
59536
+ <ul>\r
59537
+ @for (cam of allViews; track cam) {\r
59538
+ <li class="p-1 flex justify-between items-center">\r
59539
+ <span>{{ cam }}</span>\r
59540
+ <input\r
59541
+ type="checkbox"\r
59542
+ [checked]="viewSelectionModel.isSelected(cam)"\r
59543
+ class="checkbox checkbox-xs"\r
59544
+ (change)="onViewCheckboxChange($event, cam)"\r
59545
+ />\r
59546
+ </li>\r
59547
+ }\r
59548
+ </ul>\r
59549
+ </div>\r
59550
+ </div>\r
59551
+ \r
59552
+ <div class="panel m-4">\r
59553
+ <div>\r
59554
+ <!-- panel header -->\r
59555
+ <h1 class="px-2 mb-1">Keypoints</h1>\r
59556
+ </div>\r
59557
+ <div class="panel-content max-h-60 overflow-y-auto">\r
59558
+ <ul>\r
59559
+ @for (kp of projectInfoService.allKeypoints(); track kp) {\r
59560
+ <li class="p-1 flex justify-between items-center">\r
59561
+ <span>{{ kp }}</span>\r
59562
+ <input\r
59563
+ type="checkbox"\r
59564
+ [checked]="keypointSelectionModel.isSelected(kp)"\r
59565
+ class="checkbox checkbox-xs"\r
59566
+ (change)="onKeypointCheckboxChange($event, kp)"\r
59567
+ />\r
59568
+ </li>\r
59569
+ }\r
59570
+ </ul>\r
59571
+ </div>\r
59572
+ </div>\r
59573
+ \r
59574
+ <div class="panel m-4">\r
59575
+ <div>\r
59576
+ <!-- panel header -->\r
59577
+ <h1 class="px-2 mb-1">Models</h1>\r
59578
+ </div>\r
59579
+ <div class="panel-content max-h-60 overflow-y-visible">\r
59580
+ <ul>\r
59581
+ @let modelSelectors =\r
59582
+ viewSettings.modelsShown().length < 2\r
59583
+ ? viewSettings.modelsShown().concat([noneOption])\r
59584
+ : viewSettings.modelsShown();\r
59585
+ <!-- it's important to track index, not model.\r
59586
+ if we put model here, something weird happens when you clear all models and then set a model. -->\r
59587
+ @for (model of modelSelectors; track $index) {\r
59588
+ @let modelIndex = $index;\r
59589
+ <li class="p-1 w-full">\r
59590
+ <select\r
59591
+ class="select select-sm w-full flex-grow"\r
59592
+ [class.border-red-300]="modelIndex === 0"\r
59593
+ [class.border-green-300]="modelIndex === 1"\r
59594
+ (change)="onModelDropdownItemClick(modelIndex, $event)"\r
59595
+ >\r
59596
+ @let options =\r
59597
+ [noneOption].concat(projectInfoService.allModels());\r
59598
+ @for (dropdownItem of options; track dropdownItem) {\r
59599
+ <option [selected]="dropdownItem === model">\r
59600
+ {{ dropdownItem }}\r
59601
+ </option>\r
59602
+ }\r
59603
+ </select>\r
59604
+ </li>\r
59605
+ }\r
59606
+ </ul>\r
59607
+ </div>\r
59608
+ </div>\r
59609
+ </div>\r
59610
+ </div>\r
59611
+ }\r
59612
+ `, styles: ["/* angular:styles/component:css;1fa15f7a0ae1b0259233282b2d49fb361834bf7fd726c58584c186240f9d8f04;/home/ksikka/lightning-pose-app/web_ui/src/app/viewer/viewer-page/viewer-page.component.html */\n:host {\n flex-grow: 1;\n display: flex;\n}\n/*# sourceMappingURL=/static/viewer-page.component-MRTIUFL2.css.map */\n"] }]
59563
59613
  }], () => [], { sessionKey: [{
59564
59614
  type: Input
59565
59615
  }] });
59566
59616
  })();
59567
59617
  (() => {
59568
- (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(ViewerPageComponent, { className: "ViewerPageComponent", filePath: "src/app/viewer/viewer-page/viewer-page.component.ts", lineNumber: 37 });
59618
+ (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(ViewerPageComponent, { className: "ViewerPageComponent", filePath: "src/app/viewer/viewer-page/viewer-page.component.ts", lineNumber: 35 });
59569
59619
  })();
59570
59620
 
59571
59621
  // src/app/labeler/labeler-page.component.ts
@@ -66127,7 +66177,7 @@ view2
66127
66177
  \u0275\u0275advance();
66128
66178
  \u0275\u0275property("disabled", !ctx.projectInfoForm.dirty);
66129
66179
  }
66130
- }, dependencies: [ReactiveFormsModule, \u0275NgNoValidate, DefaultValueAccessor, NgControlStatus, NgControlStatusGroup, FormGroupDirective, FormControlName], styles: ["\n\n[_ngcontent-%COMP%]::placeholder {\n color: color-mix(in oklch, currentColor 50%, #0000) !important;\n}\n/*# sourceMappingURL=/static/project-settings.component-BXKZMYM3.css.map */"], changeDetection: 0 });
66180
+ }, dependencies: [ReactiveFormsModule, \u0275NgNoValidate, DefaultValueAccessor, NgControlStatus, NgControlStatusGroup, FormGroupDirective, FormControlName], styles: ["\n\n[_ngcontent-%COMP%]::placeholder {\n color: color-mix(in oklch, currentColor 50%, #0000) !important;\n}\n/*# sourceMappingURL=/static/project-settings.component-5IRK7U7U.css.map */"], changeDetection: 0 });
66131
66181
  };
66132
66182
  (() => {
66133
66183
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ProjectSettingsComponent, [{
@@ -66211,7 +66261,7 @@ view2
66211
66261
  </button>
66212
66262
  </div>
66213
66263
  </form>
66214
- `, styles: ["/* angular:styles/component:css;5c3484fa86afc1ad339d983c727d8801928706c064dd49a4001f42c8eac3d364;/home/ksikka/lightning-pose/app/web_ui/src/app/project-settings/project-settings.component.html */\n::placeholder {\n color: color-mix(in oklch, currentColor 50%, #0000) !important;\n}\n/*# sourceMappingURL=/static/project-settings.component-BXKZMYM3.css.map */\n"] }]
66264
+ `, styles: ["/* angular:styles/component:css;5c3484fa86afc1ad339d983c727d8801928706c064dd49a4001f42c8eac3d364;/home/ksikka/lightning-pose-app/web_ui/src/app/project-settings/project-settings.component.html */\n::placeholder {\n color: color-mix(in oklch, currentColor 50%, #0000) !important;\n}\n/*# sourceMappingURL=/static/project-settings.component-5IRK7U7U.css.map */\n"] }]
66215
66265
  }], () => [], null);
66216
66266
  })();
66217
66267
  (() => {
@@ -66336,7 +66386,7 @@ var AppComponent = class _AppComponent {
66336
66386
  RouterLink,
66337
66387
  RouterLinkActive,
66338
66388
  ProjectSettingsComponent
66339
- ], styles: ["\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100vh;\n}\n.navbar[_ngcontent-%COMP%] {\n min-height: 3rem;\n}\n/*# sourceMappingURL=/static/app.component-IZ5OUDH2.css.map */"], changeDetection: 0 });
66389
+ ], styles: ["\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100vh;\n}\n.navbar[_ngcontent-%COMP%] {\n min-height: 3rem;\n}\n/*# sourceMappingURL=/static/app.component-UHVEDPZR.css.map */"], changeDetection: 0 });
66340
66390
  };
66341
66391
  (() => {
66342
66392
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AppComponent, [{
@@ -66346,7 +66396,7 @@ var AppComponent = class _AppComponent {
66346
66396
  RouterLink,
66347
66397
  RouterLinkActive,
66348
66398
  ProjectSettingsComponent
66349
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: '<style>\n :host {\n display: flex;\n flex-direction: column;\n height: 100vh;\n }\n .navbar {\n min-height: 3rem; /* reduce from default of 4rem */\n }\n</style>\n<header>\n <nav class="navbar bg-base-200 shadow-lg">\n <div class="navbar-start">\n <span class="text-lg font-semibold">Lightning Pose</span>\n </div>\n\n <div class="navbar-center">\n <ul class="menu menu-horizontal p-0">\n <li>\n <a\n routerLink="/viewer"\n routerLinkActive="menu-active"\n ariaCurrentWhenActive="page"\n >Viewer</a\n >\n </li>\n <li>\n <a\n routerLink="/labeler"\n routerLinkActive="menu-active"\n ariaCurrentWhenActive="page"\n >Labeler</a\n >\n </li>\n </ul>\n </div>\n\n <div class="navbar-end">\n <button\n class="btn btn-ghost"\n tabindex="0"\n (click)="settingsDialogOpen.set(true)"\n (keydown.enter)="settingsDialogOpen.set(true)"\n >\n <span class="material-icons">settings</span>\n </button>\n </div>\n </nav>\n</header>\n\n<!-- Set min-height: 0 to allow it to shrink if its content is too large.\n Default min-height for flex items is auto. -->\n<main class="flex-grow flex min-h-0" [class.justify-center]="!hasBeenSetup()">\n @if (hasBeenSetup()) {\n <router-outlet />\n } @else {\n <app-project-settings\n [setupMode]="true"\n class="w-lg mt-8"\n ></app-project-settings>\n }\n</main>\n\n<!-- Settings dialog -->\n<dialog #settingsDialog class="modal">\n @if (settingsDialogOpen()) {\n <app-project-settings\n class="modal-box"\n (done)="settingsDialogOpen.set(false)"\n ></app-project-settings>\n\n <!-- Makes the dialog close when clicked from outside. -->\n <div class="modal-backdrop">\n <button (click)="settingsDialogOpen.set(false)">close</button>\n </div>\n }\n</dialog>\n', styles: ["/* angular:styles/component:css;22d8514f1dd5b50f33b3fb93fdb69668f78eeb349bd672e238e3ac9acfbbda19;/home/ksikka/lightning-pose/app/web_ui/src/app/app.component.html */\n:host {\n display: flex;\n flex-direction: column;\n height: 100vh;\n}\n.navbar {\n min-height: 3rem;\n}\n/*# sourceMappingURL=/static/app.component-IZ5OUDH2.css.map */\n"] }]
66399
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: '<style>\n :host {\n display: flex;\n flex-direction: column;\n height: 100vh;\n }\n .navbar {\n min-height: 3rem; /* reduce from default of 4rem */\n }\n</style>\n<header>\n <nav class="navbar bg-base-200 shadow-lg">\n <div class="navbar-start">\n <span class="text-lg font-semibold">Lightning Pose</span>\n </div>\n\n <div class="navbar-center">\n <ul class="menu menu-horizontal p-0">\n <li>\n <a\n routerLink="/viewer"\n routerLinkActive="menu-active"\n ariaCurrentWhenActive="page"\n >Viewer</a\n >\n </li>\n <li>\n <a\n routerLink="/labeler"\n routerLinkActive="menu-active"\n ariaCurrentWhenActive="page"\n >Labeler</a\n >\n </li>\n </ul>\n </div>\n\n <div class="navbar-end">\n <button\n class="btn btn-ghost"\n tabindex="0"\n (click)="settingsDialogOpen.set(true)"\n (keydown.enter)="settingsDialogOpen.set(true)"\n >\n <span class="material-icons">settings</span>\n </button>\n </div>\n </nav>\n</header>\n\n<!-- Set min-height: 0 to allow it to shrink if its content is too large.\n Default min-height for flex items is auto. -->\n<main class="flex-grow flex min-h-0" [class.justify-center]="!hasBeenSetup()">\n @if (hasBeenSetup()) {\n <router-outlet />\n } @else {\n <app-project-settings\n [setupMode]="true"\n class="w-lg mt-8"\n ></app-project-settings>\n }\n</main>\n\n<!-- Settings dialog -->\n<dialog #settingsDialog class="modal">\n @if (settingsDialogOpen()) {\n <app-project-settings\n class="modal-box"\n (done)="settingsDialogOpen.set(false)"\n ></app-project-settings>\n\n <!-- Makes the dialog close when clicked from outside. -->\n <div class="modal-backdrop">\n <button (click)="settingsDialogOpen.set(false)">close</button>\n </div>\n }\n</dialog>\n', styles: ["/* angular:styles/component:css;22d8514f1dd5b50f33b3fb93fdb69668f78eeb349bd672e238e3ac9acfbbda19;/home/ksikka/lightning-pose-app/web_ui/src/app/app.component.html */\n:host {\n display: flex;\n flex-direction: column;\n height: 100vh;\n}\n.navbar {\n min-height: 3rem;\n}\n/*# sourceMappingURL=/static/app.component-UHVEDPZR.css.map */\n"] }]
66350
66400
  }], () => [], null);
66351
66401
  })();
66352
66402
  (() => {
@@ -66355,4 +66405,4 @@ var AppComponent = class _AppComponent {
66355
66405
 
66356
66406
  // src/main.ts
66357
66407
  bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));
66358
- //# sourceMappingURL=main-WFYIUX2C.js.map
66408
+ //# sourceMappingURL=main-LJHMLKBL.js.map