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.
- {lightning_pose_app-1.8.1a2.dist-info → lightning_pose_app-1.8.1a3.dist-info}/METADATA +1 -1
- lightning_pose_app-1.8.1a3.dist-info/RECORD +21 -0
- litpose_app/main.py +300 -300
- litpose_app/ngdist/ng_app/index.html +2 -2
- litpose_app/ngdist/ng_app/{main-WFYIUX2C.js → main-LJHMLKBL.js} +199 -149
- litpose_app/ngdist/ng_app/main-LJHMLKBL.js.map +1 -0
- litpose_app/ngdist/ng_app/{styles-AJ6NQDUD.css → styles-4V6RXJMC.css} +27 -7
- litpose_app/ngdist/ng_app/{styles-AJ6NQDUD.css.map → styles-4V6RXJMC.css.map} +2 -2
- litpose_app/ngdist/ng_app/video-tile.component-XSYKMARQ.css.map +7 -0
- litpose_app/run_ffprobe.py +132 -132
- litpose_app/super_rglob.py +48 -48
- lightning_pose_app-1.8.1a2.dist-info/RECORD +0 -20
- litpose_app/ngdist/ng_app/main-WFYIUX2C.js.map +0 -1
- {lightning_pose_app-1.8.1a2.dist-info → lightning_pose_app-1.8.1a3.dist-info}/WHEEL +0 -0
- /litpose_app/ngdist/ng_app/{app.component-IZ5OUDH2.css.map → app.component-UHVEDPZR.css.map} +0 -0
- /litpose_app/ngdist/ng_app/{project-settings.component-BXKZMYM3.css.map → project-settings.component-5IRK7U7U.css.map} +0 -0
- /litpose_app/ngdist/ng_app/{viewer-page.component-KIYG73MW.css.map → viewer-page.component-MRTIUFL2.css.map} +0 -0
|
@@ -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
|
-
|
|
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(
|
|
54663
|
-
this.
|
|
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.
|
|
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", "",
|
|
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
|
-
},
|
|
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\
|
|
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\
|
|
58985
|
-
\u0275\
|
|
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
|
|
58990
|
-
\u0275\
|
|
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",
|
|
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, "
|
|
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,
|
|
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="
|
|
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",
|
|
59249
|
+
\u0275\u0275elementStart(0, "li", 9)(1, "span");
|
|
59209
59250
|
\u0275\u0275text(2);
|
|
59210
59251
|
\u0275\u0275elementEnd();
|
|
59211
|
-
\u0275\u0275elementStart(3, "input",
|
|
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",
|
|
59272
|
+
\u0275\u0275elementStart(0, "li", 9)(1, "span");
|
|
59232
59273
|
\u0275\u0275text(2);
|
|
59233
59274
|
\u0275\u0275elementEnd();
|
|
59234
|
-
\u0275\u0275elementStart(3, "input",
|
|
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",
|
|
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",
|
|
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",
|
|
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"
|
|
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",
|
|
59303
|
-
\u0275\u0275repeaterCreate(13, ViewerPageComponent_Conditional_0_For_14_Template, 4, 2, "li",
|
|
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"
|
|
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",
|
|
59309
|
-
\u0275\u0275repeaterCreate(21, ViewerPageComponent_Conditional_0_For_22_Template, 4, 2, "li",
|
|
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"
|
|
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",
|
|
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",
|
|
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, "
|
|
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-
|
|
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
|
|
59485
|
-
|
|
59486
|
-
|
|
59487
|
-
|
|
59488
|
-
|
|
59489
|
-
|
|
59490
|
-
|
|
59491
|
-
|
|
59492
|
-
<
|
|
59493
|
-
|
|
59494
|
-
|
|
59495
|
-
|
|
59496
|
-
|
|
59497
|
-
|
|
59498
|
-
|
|
59499
|
-
|
|
59500
|
-
|
|
59501
|
-
|
|
59502
|
-
|
|
59503
|
-
|
|
59504
|
-
|
|
59505
|
-
|
|
59506
|
-
|
|
59507
|
-
|
|
59508
|
-
|
|
59509
|
-
|
|
59510
|
-
|
|
59511
|
-
|
|
59512
|
-
|
|
59513
|
-
|
|
59514
|
-
|
|
59515
|
-
|
|
59516
|
-
|
|
59517
|
-
|
|
59518
|
-
|
|
59519
|
-
|
|
59520
|
-
|
|
59521
|
-
|
|
59522
|
-
|
|
59523
|
-
|
|
59524
|
-
|
|
59525
|
-
|
|
59526
|
-
|
|
59527
|
-
|
|
59528
|
-
|
|
59529
|
-
|
|
59530
|
-
<
|
|
59531
|
-
|
|
59532
|
-
|
|
59533
|
-
|
|
59534
|
-
|
|
59535
|
-
|
|
59536
|
-
|
|
59537
|
-
|
|
59538
|
-
|
|
59539
|
-
|
|
59540
|
-
|
|
59541
|
-
|
|
59542
|
-
|
|
59543
|
-
|
|
59544
|
-
|
|
59545
|
-
|
|
59546
|
-
|
|
59547
|
-
|
|
59548
|
-
|
|
59549
|
-
|
|
59550
|
-
|
|
59551
|
-
|
|
59552
|
-
|
|
59553
|
-
|
|
59554
|
-
|
|
59555
|
-
|
|
59556
|
-
|
|
59557
|
-
|
|
59558
|
-
|
|
59559
|
-
|
|
59560
|
-
|
|
59561
|
-
|
|
59562
|
-
|
|
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:
|
|
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-
|
|
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
|
|
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-
|
|
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
|
|
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-
|
|
66408
|
+
//# sourceMappingURL=main-LJHMLKBL.js.map
|