@selimssevgi/cube-design-angular 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +15 -2
- package/fesm2022/selimssevgi-cube-design-angular.mjs +1369 -10
- package/fesm2022/selimssevgi-cube-design-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/tokens/dark.css +22 -0
- package/tokens/light.css +22 -0
- package/types/selimssevgi-cube-design-angular.d.ts +564 -3
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import { ChangeDetectionStrategy, Component, DestroyRef, Directive, ElementRef, ErrorHandler, Injectable, InjectionToken, Injector, PLATFORM_ID, Renderer2, TemplateRef, afterNextRender, computed, contentChild, effect, inject, input, output, runInInjectionContext, signal, untracked, viewChild } from "@angular/core";
|
|
3
3
|
import { NgTemplateOutlet, isPlatformBrowser } from "@angular/common";
|
|
4
|
+
import { NavigationEnd, NavigationStart, Router } from "@angular/router";
|
|
5
|
+
import { Subject, catchError, map, of, tap } from "rxjs";
|
|
4
6
|
import { HttpClient, HttpErrorResponse } from "@angular/common/http";
|
|
5
|
-
import { catchError, map, of, tap } from "rxjs";
|
|
6
|
-
import { Router } from "@angular/router";
|
|
7
7
|
function sizeFor(count) {
|
|
8
8
|
let s = 1;
|
|
9
9
|
while (s * s * s < count && s < 7) s++;
|
|
@@ -938,13 +938,24 @@ const CUBE_WHEEL_QUIET_MS = 250;
|
|
|
938
938
|
function startsWheelGesture(lastAt, now, quietMs = 250) {
|
|
939
939
|
return now - lastAt >= quietMs;
|
|
940
940
|
}
|
|
941
|
+
const CUBE_WHEEL_STEP = 2;
|
|
942
|
+
function wheelWay(deltaY, sum, least = 2) {
|
|
943
|
+
const by = Math.abs(deltaY) >= least ? deltaY : Math.abs(sum) >= 3 * least ? sum : 0;
|
|
944
|
+
return by < 0 ? "in" : by > 0 ? "out" : null;
|
|
945
|
+
}
|
|
941
946
|
const stream = {
|
|
942
947
|
wheelAt: -Infinity,
|
|
943
948
|
gestureAt: -Infinity,
|
|
944
949
|
heard: null,
|
|
945
950
|
heardAfter: -Infinity,
|
|
946
|
-
ownedUntil: -Infinity
|
|
951
|
+
ownedUntil: -Infinity,
|
|
952
|
+
sum: 0,
|
|
953
|
+
decided: false
|
|
947
954
|
};
|
|
955
|
+
function begin() {
|
|
956
|
+
stream.sum = 0;
|
|
957
|
+
stream.decided = false;
|
|
958
|
+
}
|
|
948
959
|
let listening = false;
|
|
949
960
|
function listenToThePage(quietMs) {
|
|
950
961
|
const w = globalThis.window;
|
|
@@ -956,6 +967,7 @@ function listenToThePage(quietMs) {
|
|
|
956
967
|
stream.heard = e;
|
|
957
968
|
stream.heardAfter = stream.wheelAt;
|
|
958
969
|
stream.wheelAt = now;
|
|
970
|
+
if (now - stream.heardAfter >= quietMs) begin();
|
|
959
971
|
if (now - stream.heardAfter < quietMs && now < stream.ownedUntil + quietMs) {
|
|
960
972
|
stream.ownedUntil = now;
|
|
961
973
|
e.preventDefault();
|
|
@@ -1019,12 +1031,15 @@ var CubePinch = class CubePinch {
|
|
|
1019
1031
|
if (this.cubePinchDisabled() || !e.ctrlKey) return;
|
|
1020
1032
|
e.preventDefault();
|
|
1021
1033
|
const now = performance.now();
|
|
1022
|
-
|
|
1034
|
+
if (startsWheelGesture(stream.heard === e ? stream.heardAfter : stream.wheelAt, now, this.cubePinchQuietMs())) begin();
|
|
1023
1035
|
stream.wheelAt = now;
|
|
1024
1036
|
stream.ownedUntil = now;
|
|
1025
|
-
if (
|
|
1026
|
-
|
|
1027
|
-
|
|
1037
|
+
if (stream.decided) return;
|
|
1038
|
+
stream.sum += e.deltaY;
|
|
1039
|
+
const way = wheelWay(e.deltaY, stream.sum);
|
|
1040
|
+
if (!way) return;
|
|
1041
|
+
stream.decided = true;
|
|
1042
|
+
this.emit(way, pointAt(e.clientX, e.clientY), "wheel", e);
|
|
1028
1043
|
}
|
|
1029
1044
|
gestureStart(e) {
|
|
1030
1045
|
if (this.cubePinchDisabled()) return;
|
|
@@ -2449,6 +2464,20 @@ function squareLayout(view, count, room, opts = {}) {
|
|
|
2449
2464
|
open: cols * rows - n
|
|
2450
2465
|
};
|
|
2451
2466
|
}
|
|
2467
|
+
function squareCell(width, across) {
|
|
2468
|
+
const k = Math.max(1, Math.floor(across));
|
|
2469
|
+
return width > 0 ? (width - squareGap(k) * (k - 1)) / k : 0;
|
|
2470
|
+
}
|
|
2471
|
+
function squareSideAt(view, count, cell, opts = {}) {
|
|
2472
|
+
const l = squareLayout(view, count, {
|
|
2473
|
+
width: 1e6,
|
|
2474
|
+
tall: 1e6
|
|
2475
|
+
}, {
|
|
2476
|
+
least: opts.least ?? 0,
|
|
2477
|
+
maxSide: 1e6
|
|
2478
|
+
});
|
|
2479
|
+
return Math.floor(l.cols * cell + l.gap * (l.cols - 1));
|
|
2480
|
+
}
|
|
2452
2481
|
var CubeSquareTile = class CubeSquareTile {
|
|
2453
2482
|
template = inject(TemplateRef);
|
|
2454
2483
|
cubeSquareTile = input(...ngDevMode ? [void 0, { debugName: "cubeSquareTile" }] : /* istanbul ignore next */ []);
|
|
@@ -2535,6 +2564,7 @@ var CubeSquare = class CubeSquare {
|
|
|
2535
2564
|
tiles = input.required(...ngDevMode ? [{ debugName: "tiles" }] : /* istanbul ignore next */ []);
|
|
2536
2565
|
view = input("square", ...ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []);
|
|
2537
2566
|
maxSide = input(880, ...ngDevMode ? [{ debugName: "maxSide" }] : /* istanbul ignore next */ []);
|
|
2567
|
+
cell = input(null, ...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
|
|
2538
2568
|
align = input("center", ...ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []);
|
|
2539
2569
|
listRow = input(76, ...ngDevMode ? [{ debugName: "listRow" }] : /* istanbul ignore next */ []);
|
|
2540
2570
|
dashed = input(false, ...ngDevMode ? [{ debugName: "dashed" }] : /* istanbul ignore next */ []);
|
|
@@ -2566,10 +2596,12 @@ var CubeSquare = class CubeSquare {
|
|
|
2566
2596
|
};
|
|
2567
2597
|
const least = this.least();
|
|
2568
2598
|
const side = Math.min(width, room.tall, this.maxSide());
|
|
2599
|
+
const fewest = !this.dashed() ? 0 : least === "room" ? squareLeast(side) : least;
|
|
2600
|
+
const cell = this.cell();
|
|
2569
2601
|
const opts = {
|
|
2570
|
-
maxSide: this.maxSide(),
|
|
2602
|
+
maxSide: cell && cell > 0 ? Math.min(this.maxSide(), squareSideAt(this.view(), this.tiles().length, cell, { least: fewest })) : this.maxSide(),
|
|
2571
2603
|
listRow: this.listRow(),
|
|
2572
|
-
least:
|
|
2604
|
+
least: fewest
|
|
2573
2605
|
};
|
|
2574
2606
|
const front = this.front();
|
|
2575
2607
|
if (!front) return squareLayout(this.view(), this.tiles().length, room, opts);
|
|
@@ -2816,6 +2848,13 @@ var CubeSquare = class CubeSquare {
|
|
|
2816
2848
|
isRequired: false,
|
|
2817
2849
|
transformFunction: null
|
|
2818
2850
|
},
|
|
2851
|
+
cell: {
|
|
2852
|
+
classPropertyName: "cell",
|
|
2853
|
+
publicName: "cell",
|
|
2854
|
+
isSignal: true,
|
|
2855
|
+
isRequired: false,
|
|
2856
|
+
transformFunction: null
|
|
2857
|
+
},
|
|
2819
2858
|
align: {
|
|
2820
2859
|
classPropertyName: "align",
|
|
2821
2860
|
publicName: "align",
|
|
@@ -3177,6 +3216,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3177
3216
|
required: false
|
|
3178
3217
|
}]
|
|
3179
3218
|
}],
|
|
3219
|
+
cell: [{
|
|
3220
|
+
type: i0.Input,
|
|
3221
|
+
args: [{
|
|
3222
|
+
isSignal: true,
|
|
3223
|
+
alias: "cell",
|
|
3224
|
+
required: false
|
|
3225
|
+
}]
|
|
3226
|
+
}],
|
|
3180
3227
|
align: [{
|
|
3181
3228
|
type: i0.Input,
|
|
3182
3229
|
args: [{
|
|
@@ -3354,6 +3401,7 @@ var CubeContext = class CubeContext {
|
|
|
3354
3401
|
source = input(null, ...ngDevMode ? [{ debugName: "source" }] : /* istanbul ignore next */ []);
|
|
3355
3402
|
words = input(null, ...ngDevMode ? [{ debugName: "words" }] : /* istanbul ignore next */ []);
|
|
3356
3403
|
maxSide = input(880, ...ngDevMode ? [{ debugName: "maxSide" }] : /* istanbul ignore next */ []);
|
|
3404
|
+
cell = input(null, ...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
|
|
3357
3405
|
heldKey = input((held) => held, ...ngDevMode ? [{ debugName: "heldKey" }] : /* istanbul ignore next */ []);
|
|
3358
3406
|
enter = output();
|
|
3359
3407
|
out = output();
|
|
@@ -3476,6 +3524,13 @@ var CubeContext = class CubeContext {
|
|
|
3476
3524
|
isRequired: false,
|
|
3477
3525
|
transformFunction: null
|
|
3478
3526
|
},
|
|
3527
|
+
cell: {
|
|
3528
|
+
classPropertyName: "cell",
|
|
3529
|
+
publicName: "cell",
|
|
3530
|
+
isSignal: true,
|
|
3531
|
+
isRequired: false,
|
|
3532
|
+
transformFunction: null
|
|
3533
|
+
},
|
|
3479
3534
|
heldKey: {
|
|
3480
3535
|
classPropertyName: "heldKey",
|
|
3481
3536
|
publicName: "heldKey",
|
|
@@ -3496,6 +3551,7 @@ var CubeContext = class CubeContext {
|
|
|
3496
3551
|
[tiles]="tiles()"
|
|
3497
3552
|
[dashed]="adds()"
|
|
3498
3553
|
[maxSide]="maxSide()"
|
|
3554
|
+
[cell]="cell()"
|
|
3499
3555
|
[keyOf]="keyOf"
|
|
3500
3556
|
[class.cc-adds]="adds()"
|
|
3501
3557
|
>
|
|
@@ -3590,6 +3646,7 @@ var CubeContext = class CubeContext {
|
|
|
3590
3646
|
"tiles",
|
|
3591
3647
|
"view",
|
|
3592
3648
|
"maxSide",
|
|
3649
|
+
"cell",
|
|
3593
3650
|
"align",
|
|
3594
3651
|
"listRow",
|
|
3595
3652
|
"dashed",
|
|
@@ -3639,6 +3696,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3639
3696
|
[tiles]="tiles()"
|
|
3640
3697
|
[dashed]="adds()"
|
|
3641
3698
|
[maxSide]="maxSide()"
|
|
3699
|
+
[cell]="cell()"
|
|
3642
3700
|
[keyOf]="keyOf"
|
|
3643
3701
|
[class.cc-adds]="adds()"
|
|
3644
3702
|
>
|
|
@@ -3748,6 +3806,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3748
3806
|
required: false
|
|
3749
3807
|
}]
|
|
3750
3808
|
}],
|
|
3809
|
+
cell: [{
|
|
3810
|
+
type: i0.Input,
|
|
3811
|
+
args: [{
|
|
3812
|
+
isSignal: true,
|
|
3813
|
+
alias: "cell",
|
|
3814
|
+
required: false
|
|
3815
|
+
}]
|
|
3816
|
+
}],
|
|
3751
3817
|
heldKey: [{
|
|
3752
3818
|
type: i0.Input,
|
|
3753
3819
|
args: [{
|
|
@@ -3774,6 +3840,1298 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3774
3840
|
}]
|
|
3775
3841
|
}
|
|
3776
3842
|
});
|
|
3843
|
+
const CUBE_ROOM_NARROW = 640;
|
|
3844
|
+
var CubeRoom = class CubeRoom {
|
|
3845
|
+
width = signal(0, ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
|
|
3846
|
+
narrow = signal(CubeRoom.isNarrow(), ...ngDevMode ? [{ debugName: "narrow" }] : /* istanbul ignore next */ []);
|
|
3847
|
+
constructor() {
|
|
3848
|
+
if (typeof addEventListener !== "undefined") addEventListener("resize", () => this.narrow.set(CubeRoom.isNarrow()));
|
|
3849
|
+
}
|
|
3850
|
+
static isNarrow() {
|
|
3851
|
+
return typeof matchMedia !== "undefined" && matchMedia(`(max-width: 639px)`).matches;
|
|
3852
|
+
}
|
|
3853
|
+
across() {
|
|
3854
|
+
return this.narrow() ? 3 : 4;
|
|
3855
|
+
}
|
|
3856
|
+
cell() {
|
|
3857
|
+
return squareCell(this.width(), this.across());
|
|
3858
|
+
}
|
|
3859
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
3860
|
+
minVersion: "12.0.0",
|
|
3861
|
+
version: "22.2.4",
|
|
3862
|
+
ngImport: i0,
|
|
3863
|
+
type: CubeRoom,
|
|
3864
|
+
deps: [],
|
|
3865
|
+
target: i0.ɵɵFactoryTarget.Injectable
|
|
3866
|
+
});
|
|
3867
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({
|
|
3868
|
+
minVersion: "12.0.0",
|
|
3869
|
+
version: "22.2.4",
|
|
3870
|
+
ngImport: i0,
|
|
3871
|
+
type: CubeRoom,
|
|
3872
|
+
providedIn: "root"
|
|
3873
|
+
});
|
|
3874
|
+
};
|
|
3875
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
3876
|
+
minVersion: "12.0.0",
|
|
3877
|
+
version: "22.2.4",
|
|
3878
|
+
ngImport: i0,
|
|
3879
|
+
type: CubeRoom,
|
|
3880
|
+
decorators: [{
|
|
3881
|
+
type: Injectable,
|
|
3882
|
+
args: [{ providedIn: "root" }]
|
|
3883
|
+
}],
|
|
3884
|
+
ctorParameters: () => []
|
|
3885
|
+
});
|
|
3886
|
+
var CubeRoomMeasure = class CubeRoomMeasure {
|
|
3887
|
+
room = inject(CubeRoom);
|
|
3888
|
+
el = inject(ElementRef).nativeElement;
|
|
3889
|
+
seen = typeof ResizeObserver !== "undefined" ? new ResizeObserver(() => this.measure()) : null;
|
|
3890
|
+
constructor() {
|
|
3891
|
+
this.seen?.observe(this.el);
|
|
3892
|
+
queueMicrotask(() => this.measure());
|
|
3893
|
+
}
|
|
3894
|
+
measure() {
|
|
3895
|
+
const w = this.el.clientWidth;
|
|
3896
|
+
if (w > 0) this.room.width.set(Math.min(w, 880));
|
|
3897
|
+
}
|
|
3898
|
+
ngOnDestroy() {
|
|
3899
|
+
this.seen?.disconnect();
|
|
3900
|
+
}
|
|
3901
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
3902
|
+
minVersion: "12.0.0",
|
|
3903
|
+
version: "22.2.4",
|
|
3904
|
+
ngImport: i0,
|
|
3905
|
+
type: CubeRoomMeasure,
|
|
3906
|
+
deps: [],
|
|
3907
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
3908
|
+
});
|
|
3909
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
3910
|
+
minVersion: "14.0.0",
|
|
3911
|
+
version: "22.2.4",
|
|
3912
|
+
type: CubeRoomMeasure,
|
|
3913
|
+
isStandalone: true,
|
|
3914
|
+
selector: "[cubeRoom]",
|
|
3915
|
+
ngImport: i0
|
|
3916
|
+
});
|
|
3917
|
+
};
|
|
3918
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
3919
|
+
minVersion: "12.0.0",
|
|
3920
|
+
version: "22.2.4",
|
|
3921
|
+
ngImport: i0,
|
|
3922
|
+
type: CubeRoomMeasure,
|
|
3923
|
+
decorators: [{
|
|
3924
|
+
type: Directive,
|
|
3925
|
+
args: [{ selector: "[cubeRoom]" }]
|
|
3926
|
+
}],
|
|
3927
|
+
ctorParameters: () => []
|
|
3928
|
+
});
|
|
3929
|
+
const CUBE_ZOOM_OPTIONS = new InjectionToken("CUBE_ZOOM_OPTIONS", {
|
|
3930
|
+
providedIn: "root",
|
|
3931
|
+
factory: () => ({ keepScroll: true })
|
|
3932
|
+
});
|
|
3933
|
+
function provideCubeZoom(options) {
|
|
3934
|
+
return {
|
|
3935
|
+
provide: CUBE_ZOOM_OPTIONS,
|
|
3936
|
+
useValue: {
|
|
3937
|
+
keepScroll: true,
|
|
3938
|
+
...options
|
|
3939
|
+
}
|
|
3940
|
+
};
|
|
3941
|
+
}
|
|
3942
|
+
const pathOf = (url) => url.split(/[?#]/)[0];
|
|
3943
|
+
const RESTORE_FOR_MS = 1500;
|
|
3944
|
+
const STILL_FRAMES = 12;
|
|
3945
|
+
const SCROLL_KEYS = /* @__PURE__ */ new Set([
|
|
3946
|
+
"ArrowUp",
|
|
3947
|
+
"ArrowDown",
|
|
3948
|
+
"PageUp",
|
|
3949
|
+
"PageDown",
|
|
3950
|
+
"Home",
|
|
3951
|
+
"End",
|
|
3952
|
+
" "
|
|
3953
|
+
]);
|
|
3954
|
+
function cubeMovesThePage(e, since) {
|
|
3955
|
+
if (e.timeStamp < since) return false;
|
|
3956
|
+
if (e instanceof WheelEvent) return !e.ctrlKey;
|
|
3957
|
+
if (e instanceof KeyboardEvent) return SCROLL_KEYS.has(e.key);
|
|
3958
|
+
return true;
|
|
3959
|
+
}
|
|
3960
|
+
function cubeTrailHolds(trail, from, to) {
|
|
3961
|
+
if (!trail.length) return true;
|
|
3962
|
+
if (pathOf(trail.at(-1).url) === pathOf(from)) return true;
|
|
3963
|
+
return trail.some((entry) => pathOf(entry.url) === pathOf(to));
|
|
3964
|
+
}
|
|
3965
|
+
var CubeZoomService = class CubeZoomService {
|
|
3966
|
+
next = null;
|
|
3967
|
+
trail = [];
|
|
3968
|
+
scrolled = /* @__PURE__ */ new Map();
|
|
3969
|
+
restore = null;
|
|
3970
|
+
steppingOutTo = null;
|
|
3971
|
+
options = inject(CUBE_ZOOM_OPTIONS);
|
|
3972
|
+
router = inject(Router);
|
|
3973
|
+
leaving = new Subject();
|
|
3974
|
+
left = this.leaving.asObservable();
|
|
3975
|
+
constructor() {
|
|
3976
|
+
const router = this.router;
|
|
3977
|
+
router.events.subscribe((e) => {
|
|
3978
|
+
if (e instanceof NavigationStart) {
|
|
3979
|
+
this.restore = null;
|
|
3980
|
+
const out = this.steppingOutTo;
|
|
3981
|
+
this.steppingOutTo = null;
|
|
3982
|
+
if (e.navigationTrigger === "popstate") return;
|
|
3983
|
+
if (this.next?.kind === "out" && this.options.keepScroll) {
|
|
3984
|
+
const top = this.scrolled.get(e.url) ?? this.scrolled.get(pathOf(e.url));
|
|
3985
|
+
if (top) this.restore = {
|
|
3986
|
+
id: e.id,
|
|
3987
|
+
top
|
|
3988
|
+
};
|
|
3989
|
+
}
|
|
3990
|
+
if (router.currentNavigation()?.extras.replaceUrl) return;
|
|
3991
|
+
if (out !== null && pathOf(out) === pathOf(e.url)) return;
|
|
3992
|
+
if (!cubeTrailHolds(this.trail, router.url, e.url)) this.trail.length = 0;
|
|
3993
|
+
}
|
|
3994
|
+
if (e instanceof NavigationEnd && this.restore?.id === e.id) this.scrollBack(this.restore.top);
|
|
3995
|
+
});
|
|
3996
|
+
}
|
|
3997
|
+
leave(url, label) {
|
|
3998
|
+
this.trail.push({
|
|
3999
|
+
url,
|
|
4000
|
+
label
|
|
4001
|
+
});
|
|
4002
|
+
if (typeof window === "undefined") return;
|
|
4003
|
+
const top = Math.round(window.scrollY);
|
|
4004
|
+
this.scrolled.set(url, top);
|
|
4005
|
+
this.scrolled.set(pathOf(url), top);
|
|
4006
|
+
}
|
|
4007
|
+
scrollBack(top) {
|
|
4008
|
+
const restore = this.restore;
|
|
4009
|
+
const until = performance.now() + RESTORE_FOR_MS;
|
|
4010
|
+
let moved = false;
|
|
4011
|
+
let still = 0;
|
|
4012
|
+
let height = -1;
|
|
4013
|
+
const since = performance.now();
|
|
4014
|
+
const stop = (e) => {
|
|
4015
|
+
if (cubeMovesThePage(e, since)) moved = true;
|
|
4016
|
+
};
|
|
4017
|
+
const events = [
|
|
4018
|
+
"wheel",
|
|
4019
|
+
"touchstart",
|
|
4020
|
+
"keydown"
|
|
4021
|
+
];
|
|
4022
|
+
events.forEach((name) => window.addEventListener(name, stop, { passive: true }));
|
|
4023
|
+
const done = () => {
|
|
4024
|
+
events.forEach((name) => window.removeEventListener(name, stop));
|
|
4025
|
+
if (this.restore === restore) this.restore = null;
|
|
4026
|
+
};
|
|
4027
|
+
const step = () => {
|
|
4028
|
+
if (moved || this.restore !== restore || performance.now() > until) return done();
|
|
4029
|
+
if (Math.abs(window.scrollY - top) >= 2) window.scrollTo(0, top);
|
|
4030
|
+
const now = document.documentElement.scrollHeight;
|
|
4031
|
+
still = Math.abs(window.scrollY - top) < 2 && now === height ? still + 1 : 0;
|
|
4032
|
+
height = now;
|
|
4033
|
+
if (still >= STILL_FRAMES) return done();
|
|
4034
|
+
requestAnimationFrame(step);
|
|
4035
|
+
};
|
|
4036
|
+
step();
|
|
4037
|
+
}
|
|
4038
|
+
previous(url) {
|
|
4039
|
+
const at = this.trail.findIndex((entry) => entry.url === url);
|
|
4040
|
+
if (at >= 0) this.trail.splice(at);
|
|
4041
|
+
return this.trail.at(-1) ?? null;
|
|
4042
|
+
}
|
|
4043
|
+
stepBack(to) {
|
|
4044
|
+
const from = this.router.url;
|
|
4045
|
+
this.steppingOutTo = this.trail.pop()?.url ?? null;
|
|
4046
|
+
this.leaving.next({
|
|
4047
|
+
from,
|
|
4048
|
+
to: this.steppingOutTo ?? to ?? null,
|
|
4049
|
+
via: "step"
|
|
4050
|
+
});
|
|
4051
|
+
}
|
|
4052
|
+
leaveAll(inside) {
|
|
4053
|
+
while (this.trail.length && inside(this.trail.at(-1).url)) this.trail.pop();
|
|
4054
|
+
const from = this.router.url;
|
|
4055
|
+
const to = this.trail.pop() ?? null;
|
|
4056
|
+
this.steppingOutTo = to?.url ?? null;
|
|
4057
|
+
this.leaving.next({
|
|
4058
|
+
from,
|
|
4059
|
+
to: to?.url ?? null,
|
|
4060
|
+
via: "all"
|
|
4061
|
+
});
|
|
4062
|
+
return to;
|
|
4063
|
+
}
|
|
4064
|
+
into(element) {
|
|
4065
|
+
const box = element?.getBoundingClientRect();
|
|
4066
|
+
this.next = {
|
|
4067
|
+
kind: "in",
|
|
4068
|
+
origin: box ? `${box.left + box.width / 2}px ${box.top + box.height / 2}px` : null
|
|
4069
|
+
};
|
|
4070
|
+
}
|
|
4071
|
+
outOf() {
|
|
4072
|
+
this.next = {
|
|
4073
|
+
kind: "out",
|
|
4074
|
+
origin: null
|
|
4075
|
+
};
|
|
4076
|
+
}
|
|
4077
|
+
take() {
|
|
4078
|
+
const next = this.next;
|
|
4079
|
+
this.next = null;
|
|
4080
|
+
if (typeof matchMedia !== "undefined" && matchMedia("(prefers-reduced-motion: reduce)").matches) return null;
|
|
4081
|
+
return next;
|
|
4082
|
+
}
|
|
4083
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
4084
|
+
minVersion: "12.0.0",
|
|
4085
|
+
version: "22.2.4",
|
|
4086
|
+
ngImport: i0,
|
|
4087
|
+
type: CubeZoomService,
|
|
4088
|
+
deps: [],
|
|
4089
|
+
target: i0.ɵɵFactoryTarget.Injectable
|
|
4090
|
+
});
|
|
4091
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({
|
|
4092
|
+
minVersion: "12.0.0",
|
|
4093
|
+
version: "22.2.4",
|
|
4094
|
+
ngImport: i0,
|
|
4095
|
+
type: CubeZoomService,
|
|
4096
|
+
providedIn: "root"
|
|
4097
|
+
});
|
|
4098
|
+
};
|
|
4099
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4100
|
+
minVersion: "12.0.0",
|
|
4101
|
+
version: "22.2.4",
|
|
4102
|
+
ngImport: i0,
|
|
4103
|
+
type: CubeZoomService,
|
|
4104
|
+
decorators: [{
|
|
4105
|
+
type: Injectable,
|
|
4106
|
+
args: [{ providedIn: "root" }]
|
|
4107
|
+
}],
|
|
4108
|
+
ctorParameters: () => []
|
|
4109
|
+
});
|
|
4110
|
+
var CubeZoomPinch = class CubeZoomPinch {
|
|
4111
|
+
host = inject(ElementRef);
|
|
4112
|
+
cubeZoomOut = output();
|
|
4113
|
+
constructor() {
|
|
4114
|
+
inject(CubePinch).cubePinched.subscribe((pinch) => {
|
|
4115
|
+
if (pinch.way === "out") this.cubeZoomOut.emit();
|
|
4116
|
+
else this.zoomInto(pinch.at);
|
|
4117
|
+
});
|
|
4118
|
+
}
|
|
4119
|
+
zoomInto(at) {
|
|
4120
|
+
const piece = at?.closest("[data-zoom]");
|
|
4121
|
+
if (piece && this.host.nativeElement.contains(piece)) piece.click();
|
|
4122
|
+
}
|
|
4123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
4124
|
+
minVersion: "12.0.0",
|
|
4125
|
+
version: "22.2.4",
|
|
4126
|
+
ngImport: i0,
|
|
4127
|
+
type: CubeZoomPinch,
|
|
4128
|
+
deps: [],
|
|
4129
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
4130
|
+
});
|
|
4131
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
4132
|
+
minVersion: "14.0.0",
|
|
4133
|
+
version: "22.2.4",
|
|
4134
|
+
type: CubeZoomPinch,
|
|
4135
|
+
isStandalone: true,
|
|
4136
|
+
selector: "[cubeZoomPinch]",
|
|
4137
|
+
outputs: { cubeZoomOut: "cubeZoomOut" },
|
|
4138
|
+
hostDirectives: [{
|
|
4139
|
+
directive: CubePinch,
|
|
4140
|
+
inputs: [
|
|
4141
|
+
"cubePinchDisabled",
|
|
4142
|
+
"cubePinchDisabled",
|
|
4143
|
+
"cubePinchQuietMs",
|
|
4144
|
+
"cubePinchQuietMs"
|
|
4145
|
+
]
|
|
4146
|
+
}],
|
|
4147
|
+
ngImport: i0
|
|
4148
|
+
});
|
|
4149
|
+
};
|
|
4150
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4151
|
+
minVersion: "12.0.0",
|
|
4152
|
+
version: "22.2.4",
|
|
4153
|
+
ngImport: i0,
|
|
4154
|
+
type: CubeZoomPinch,
|
|
4155
|
+
decorators: [{
|
|
4156
|
+
type: Directive,
|
|
4157
|
+
args: [{
|
|
4158
|
+
selector: "[cubeZoomPinch]",
|
|
4159
|
+
hostDirectives: [{
|
|
4160
|
+
directive: CubePinch,
|
|
4161
|
+
inputs: ["cubePinchDisabled", "cubePinchQuietMs"]
|
|
4162
|
+
}]
|
|
4163
|
+
}]
|
|
4164
|
+
}],
|
|
4165
|
+
ctorParameters: () => [],
|
|
4166
|
+
propDecorators: { cubeZoomOut: [{
|
|
4167
|
+
type: i0.Output,
|
|
4168
|
+
args: ["cubeZoomOut"]
|
|
4169
|
+
}] }
|
|
4170
|
+
});
|
|
4171
|
+
const CUBE_HEAD_SWIPE = 30;
|
|
4172
|
+
var CubeHead = class CubeHead {
|
|
4173
|
+
count = input(1, ...ngDevMode ? [{ debugName: "count" }] : /* istanbul ignore next */ []);
|
|
4174
|
+
colours = input([], ...ngDevMode ? [{ debugName: "colours" }] : /* istanbul ignore next */ []);
|
|
4175
|
+
art = input("stickers", ...ngDevMode ? [{ debugName: "art" }] : /* istanbul ignore next */ []);
|
|
4176
|
+
whole = input(false, ...ngDevMode ? [{ debugName: "whole" }] : /* istanbul ignore next */ []);
|
|
4177
|
+
hint = input(false, ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
|
|
4178
|
+
width = input(100, ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
|
|
4179
|
+
title = input(null, ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
4180
|
+
line = input(null, ...ngDevMode ? [{ debugName: "line" }] : /* istanbul ignore next */ []);
|
|
4181
|
+
backLabel = input(null, ...ngDevMode ? [{ debugName: "backLabel" }] : /* istanbul ignore next */ []);
|
|
4182
|
+
backAria = input(null, ...ngDevMode ? [{ debugName: "backAria" }] : /* istanbul ignore next */ []);
|
|
4183
|
+
backDrop = input(null, ...ngDevMode ? [{ debugName: "backDrop" }] : /* istanbul ignore next */ []);
|
|
4184
|
+
carrying = input(false, ...ngDevMode ? [{ debugName: "carrying" }] : /* istanbul ignore next */ []);
|
|
4185
|
+
holds = input(false, ...ngDevMode ? [{ debugName: "holds" }] : /* istanbul ignore next */ []);
|
|
4186
|
+
holdMs = input(520, ...ngDevMode ? [{ debugName: "holdMs" }] : /* istanbul ignore next */ []);
|
|
4187
|
+
turns = input(false, ...ngDevMode ? [{ debugName: "turns" }] : /* istanbul ignore next */ []);
|
|
4188
|
+
regroups = input(false, ...ngDevMode ? [{ debugName: "regroups" }] : /* istanbul ignore next */ []);
|
|
4189
|
+
grew = input(false, ...ngDevMode ? [{ debugName: "grew" }] : /* istanbul ignore next */ []);
|
|
4190
|
+
back = output();
|
|
4191
|
+
held = output();
|
|
4192
|
+
turned = output();
|
|
4193
|
+
rot = signal(0, ...ngDevMode ? [{ debugName: "rot" }] : /* istanbul ignore next */ []);
|
|
4194
|
+
turning = signal(false, ...ngDevMode ? [{ debugName: "turning" }] : /* istanbul ignore next */ []);
|
|
4195
|
+
startX = null;
|
|
4196
|
+
timers = [];
|
|
4197
|
+
constructor() {
|
|
4198
|
+
inject(DestroyRef).onDestroy(() => this.timers.forEach(clearTimeout));
|
|
4199
|
+
}
|
|
4200
|
+
start(event) {
|
|
4201
|
+
this.startX = this.turns() && event.isPrimary ? event.clientX : null;
|
|
4202
|
+
}
|
|
4203
|
+
end(event) {
|
|
4204
|
+
if (this.startX === null) return;
|
|
4205
|
+
const moved = event.clientX - this.startX;
|
|
4206
|
+
this.startX = null;
|
|
4207
|
+
if (Math.abs(moved) >= 30) this.turn(moved < 0 ? 1 : -1);
|
|
4208
|
+
}
|
|
4209
|
+
key(event) {
|
|
4210
|
+
if (!this.turns() || event.defaultPrevented) return;
|
|
4211
|
+
if (event.target?.closest?.("input, textarea")) return;
|
|
4212
|
+
if (event.key === "ArrowRight") this.turn(1);
|
|
4213
|
+
if (event.key === "ArrowLeft") this.turn(-1);
|
|
4214
|
+
}
|
|
4215
|
+
turn(by) {
|
|
4216
|
+
if (this.count() < 2 || this.turning()) return;
|
|
4217
|
+
this.turning.set(true);
|
|
4218
|
+
this.timers.push(setTimeout(() => {
|
|
4219
|
+
if (this.regroups()) this.turned.emit(by);
|
|
4220
|
+
else this.rot.update((r) => r + (by === 1 ? 1 : Math.max(1, this.colours().length) - 1));
|
|
4221
|
+
}, 220));
|
|
4222
|
+
this.timers.push(setTimeout(() => this.turning.set(false), 440));
|
|
4223
|
+
}
|
|
4224
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
4225
|
+
minVersion: "12.0.0",
|
|
4226
|
+
version: "22.2.4",
|
|
4227
|
+
ngImport: i0,
|
|
4228
|
+
type: CubeHead,
|
|
4229
|
+
deps: [],
|
|
4230
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
4231
|
+
});
|
|
4232
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
4233
|
+
minVersion: "17.0.0",
|
|
4234
|
+
version: "22.2.4",
|
|
4235
|
+
type: CubeHead,
|
|
4236
|
+
isStandalone: true,
|
|
4237
|
+
selector: "cube-head",
|
|
4238
|
+
inputs: {
|
|
4239
|
+
count: {
|
|
4240
|
+
classPropertyName: "count",
|
|
4241
|
+
publicName: "count",
|
|
4242
|
+
isSignal: true,
|
|
4243
|
+
isRequired: false,
|
|
4244
|
+
transformFunction: null
|
|
4245
|
+
},
|
|
4246
|
+
colours: {
|
|
4247
|
+
classPropertyName: "colours",
|
|
4248
|
+
publicName: "colours",
|
|
4249
|
+
isSignal: true,
|
|
4250
|
+
isRequired: false,
|
|
4251
|
+
transformFunction: null
|
|
4252
|
+
},
|
|
4253
|
+
art: {
|
|
4254
|
+
classPropertyName: "art",
|
|
4255
|
+
publicName: "art",
|
|
4256
|
+
isSignal: true,
|
|
4257
|
+
isRequired: false,
|
|
4258
|
+
transformFunction: null
|
|
4259
|
+
},
|
|
4260
|
+
whole: {
|
|
4261
|
+
classPropertyName: "whole",
|
|
4262
|
+
publicName: "whole",
|
|
4263
|
+
isSignal: true,
|
|
4264
|
+
isRequired: false,
|
|
4265
|
+
transformFunction: null
|
|
4266
|
+
},
|
|
4267
|
+
hint: {
|
|
4268
|
+
classPropertyName: "hint",
|
|
4269
|
+
publicName: "hint",
|
|
4270
|
+
isSignal: true,
|
|
4271
|
+
isRequired: false,
|
|
4272
|
+
transformFunction: null
|
|
4273
|
+
},
|
|
4274
|
+
width: {
|
|
4275
|
+
classPropertyName: "width",
|
|
4276
|
+
publicName: "width",
|
|
4277
|
+
isSignal: true,
|
|
4278
|
+
isRequired: false,
|
|
4279
|
+
transformFunction: null
|
|
4280
|
+
},
|
|
4281
|
+
title: {
|
|
4282
|
+
classPropertyName: "title",
|
|
4283
|
+
publicName: "title",
|
|
4284
|
+
isSignal: true,
|
|
4285
|
+
isRequired: false,
|
|
4286
|
+
transformFunction: null
|
|
4287
|
+
},
|
|
4288
|
+
line: {
|
|
4289
|
+
classPropertyName: "line",
|
|
4290
|
+
publicName: "line",
|
|
4291
|
+
isSignal: true,
|
|
4292
|
+
isRequired: false,
|
|
4293
|
+
transformFunction: null
|
|
4294
|
+
},
|
|
4295
|
+
backLabel: {
|
|
4296
|
+
classPropertyName: "backLabel",
|
|
4297
|
+
publicName: "backLabel",
|
|
4298
|
+
isSignal: true,
|
|
4299
|
+
isRequired: false,
|
|
4300
|
+
transformFunction: null
|
|
4301
|
+
},
|
|
4302
|
+
backAria: {
|
|
4303
|
+
classPropertyName: "backAria",
|
|
4304
|
+
publicName: "backAria",
|
|
4305
|
+
isSignal: true,
|
|
4306
|
+
isRequired: false,
|
|
4307
|
+
transformFunction: null
|
|
4308
|
+
},
|
|
4309
|
+
backDrop: {
|
|
4310
|
+
classPropertyName: "backDrop",
|
|
4311
|
+
publicName: "backDrop",
|
|
4312
|
+
isSignal: true,
|
|
4313
|
+
isRequired: false,
|
|
4314
|
+
transformFunction: null
|
|
4315
|
+
},
|
|
4316
|
+
carrying: {
|
|
4317
|
+
classPropertyName: "carrying",
|
|
4318
|
+
publicName: "carrying",
|
|
4319
|
+
isSignal: true,
|
|
4320
|
+
isRequired: false,
|
|
4321
|
+
transformFunction: null
|
|
4322
|
+
},
|
|
4323
|
+
holds: {
|
|
4324
|
+
classPropertyName: "holds",
|
|
4325
|
+
publicName: "holds",
|
|
4326
|
+
isSignal: true,
|
|
4327
|
+
isRequired: false,
|
|
4328
|
+
transformFunction: null
|
|
4329
|
+
},
|
|
4330
|
+
holdMs: {
|
|
4331
|
+
classPropertyName: "holdMs",
|
|
4332
|
+
publicName: "holdMs",
|
|
4333
|
+
isSignal: true,
|
|
4334
|
+
isRequired: false,
|
|
4335
|
+
transformFunction: null
|
|
4336
|
+
},
|
|
4337
|
+
turns: {
|
|
4338
|
+
classPropertyName: "turns",
|
|
4339
|
+
publicName: "turns",
|
|
4340
|
+
isSignal: true,
|
|
4341
|
+
isRequired: false,
|
|
4342
|
+
transformFunction: null
|
|
4343
|
+
},
|
|
4344
|
+
regroups: {
|
|
4345
|
+
classPropertyName: "regroups",
|
|
4346
|
+
publicName: "regroups",
|
|
4347
|
+
isSignal: true,
|
|
4348
|
+
isRequired: false,
|
|
4349
|
+
transformFunction: null
|
|
4350
|
+
},
|
|
4351
|
+
grew: {
|
|
4352
|
+
classPropertyName: "grew",
|
|
4353
|
+
publicName: "grew",
|
|
4354
|
+
isSignal: true,
|
|
4355
|
+
isRequired: false,
|
|
4356
|
+
transformFunction: null
|
|
4357
|
+
}
|
|
4358
|
+
},
|
|
4359
|
+
outputs: {
|
|
4360
|
+
back: "back",
|
|
4361
|
+
held: "held",
|
|
4362
|
+
turned: "turned"
|
|
4363
|
+
},
|
|
4364
|
+
host: { listeners: { "document:keydown": "key($event)" } },
|
|
4365
|
+
ngImport: i0,
|
|
4366
|
+
template: `
|
|
4367
|
+
<div class="ch-back-row">
|
|
4368
|
+
@if (backLabel(); as b) {
|
|
4369
|
+
<button
|
|
4370
|
+
type="button"
|
|
4371
|
+
class="ch-back"
|
|
4372
|
+
[class.ch-drop]="!!backDrop() && carrying()"
|
|
4373
|
+
[attr.data-drop]="backDrop()"
|
|
4374
|
+
[attr.aria-label]="backAria() ?? b"
|
|
4375
|
+
(click)="back.emit()"
|
|
4376
|
+
>
|
|
4377
|
+
<span class="ch-arrow" aria-hidden="true">‹</span>
|
|
4378
|
+
<span class="ch-back-name">{{ b }}</span>
|
|
4379
|
+
</button>
|
|
4380
|
+
}
|
|
4381
|
+
</div>
|
|
4382
|
+
<div class="ch-cube-row">
|
|
4383
|
+
<div
|
|
4384
|
+
class="ch-circle"
|
|
4385
|
+
[class.ch-holds]="holds()"
|
|
4386
|
+
[class.ch-turns]="turns() && count() > 1"
|
|
4387
|
+
[class.ch-turning]="turning()"
|
|
4388
|
+
[class.ch-grew]="grew()"
|
|
4389
|
+
role="img"
|
|
4390
|
+
[attr.aria-label]="title() || null"
|
|
4391
|
+
[attr.tabindex]="holds() ? 0 : null"
|
|
4392
|
+
data-no-swipe
|
|
4393
|
+
cubeHold
|
|
4394
|
+
[cubeHoldDisabled]="!holds()"
|
|
4395
|
+
[cubeHoldMs]="holdMs()"
|
|
4396
|
+
(cubeHeld)="held.emit($event)"
|
|
4397
|
+
(pointerdown)="start($event)"
|
|
4398
|
+
(pointerup)="end($event)"
|
|
4399
|
+
(pointercancel)="startX = null"
|
|
4400
|
+
>
|
|
4401
|
+
<cube-picture
|
|
4402
|
+
[art]="art()"
|
|
4403
|
+
[count]="count()"
|
|
4404
|
+
[colours]="colours()"
|
|
4405
|
+
[width]="width()"
|
|
4406
|
+
[whole]="whole()"
|
|
4407
|
+
[hint]="hint()"
|
|
4408
|
+
[rot]="rot()"
|
|
4409
|
+
/>
|
|
4410
|
+
</div>
|
|
4411
|
+
</div>
|
|
4412
|
+
@if (title() || line()) {
|
|
4413
|
+
<div class="ch-text">
|
|
4414
|
+
@if (title()) {
|
|
4415
|
+
<h1 class="ch-title" [attr.title]="title()">{{ title() }}</h1>
|
|
4416
|
+
}
|
|
4417
|
+
<!-- the line's place is kept on a phone, said or not, so the head is one height on every level -->
|
|
4418
|
+
<p class="ch-line">{{ line() }}</p>
|
|
4419
|
+
</div>
|
|
4420
|
+
}
|
|
4421
|
+
<ng-content />
|
|
4422
|
+
`,
|
|
4423
|
+
isInline: true,
|
|
4424
|
+
styles: [":host{display:contents}.ch-back-row{display:flex;min-height:40px;align-items:flex-start}.ch-back{display:flex;max-width:100%;height:40px;align-items:center;gap:4px;margin-left:-8px;padding:0 8px;border:1px dashed transparent;border-radius:8px;background:none;color:var(--cube-head-quiet, #6b7280);font:inherit;font-size:var(--cube-head-back-size, 14px);cursor:pointer}.ch-back:hover{color:var(--cube-head-ink, #111827)}.ch-arrow{font-size:18px;line-height:1}.ch-back-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ch-back.ch-drop{border-color:var(--cube-head-drop, rgb(251 191 36 / .7));color:var(--cube-head-drop-ink, rgb(252 211 77))}:host-context(.cube-carrying) .ch-back.cube-carry-over{background:var(--cube-head-drop-over, rgb(251 191 36 / .16))}.ch-cube-row{display:flex;flex-direction:column;align-items:center}.ch-circle{display:flex;align-items:center;justify-content:center;width:var(--cube-head-circle-size, 156px);height:var(--cube-head-circle-size, 156px);border-radius:999px;background:var(--cube-head-circle, #f3f4f6);box-shadow:0 0 0 1px var(--cube-head-circle-ring, #e5e7eb);touch-action:pan-y}.ch-holds{cursor:pointer}.ch-turns{cursor:grab}.ch-circle:focus-visible{outline:2px solid var(--cube-head-focus, #5f9a80);outline-offset:3px}.ch-text{text-align:center}.ch-title{margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--cube-head-ink, #111827);font-size:var(--cube-head-title-size, 24px);font-weight:700;line-height:1.33}.ch-line{max-width:34ch;height:20px;margin:0 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--cube-head-quiet, #6b7280);font-size:var(--cube-head-line-size, 14px);line-height:20px}@media(min-width:900px){.ch-title{white-space:normal;overflow-wrap:anywhere}.ch-line{height:auto;min-height:20px;white-space:normal}}.ch-turning cube-picture{animation:ch-turn .44s ease-in-out}@keyframes ch-turn{0%{transform:perspective(600px) rotateY(0)}49%{transform:perspective(600px) rotateY(84deg)}51%{transform:perspective(600px) rotateY(-84deg)}to{transform:perspective(600px) rotateY(0)}}.ch-grew cube-picture{animation:ch-grew .9s ease-out}@keyframes ch-grew{0%{transform:scale(.7);opacity:.4}60%{transform:scale(1.06);opacity:1}to{transform:none}}@media(prefers-reduced-motion:reduce){.ch-turning cube-picture,.ch-grew cube-picture{animation:none}}\n"],
|
|
4425
|
+
dependencies: [{
|
|
4426
|
+
kind: "component",
|
|
4427
|
+
type: CubePicture,
|
|
4428
|
+
selector: "cube-picture",
|
|
4429
|
+
inputs: [
|
|
4430
|
+
"count",
|
|
4431
|
+
"colours",
|
|
4432
|
+
"width",
|
|
4433
|
+
"hint",
|
|
4434
|
+
"whole",
|
|
4435
|
+
"rot",
|
|
4436
|
+
"art"
|
|
4437
|
+
]
|
|
4438
|
+
}, {
|
|
4439
|
+
kind: "directive",
|
|
4440
|
+
type: CubeHold,
|
|
4441
|
+
selector: "[cubeHold]",
|
|
4442
|
+
inputs: [
|
|
4443
|
+
"cubeHoldDisabled",
|
|
4444
|
+
"cubeHoldMs",
|
|
4445
|
+
"cubeHoldSlop",
|
|
4446
|
+
"cubeHoldBuzz"
|
|
4447
|
+
],
|
|
4448
|
+
outputs: ["cubeHeld"]
|
|
4449
|
+
}],
|
|
4450
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
4451
|
+
});
|
|
4452
|
+
};
|
|
4453
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4454
|
+
minVersion: "12.0.0",
|
|
4455
|
+
version: "22.2.4",
|
|
4456
|
+
ngImport: i0,
|
|
4457
|
+
type: CubeHead,
|
|
4458
|
+
decorators: [{
|
|
4459
|
+
type: Component,
|
|
4460
|
+
args: [{
|
|
4461
|
+
selector: "cube-head",
|
|
4462
|
+
imports: [CubePicture, CubeHold],
|
|
4463
|
+
template: `
|
|
4464
|
+
<div class="ch-back-row">
|
|
4465
|
+
@if (backLabel(); as b) {
|
|
4466
|
+
<button
|
|
4467
|
+
type="button"
|
|
4468
|
+
class="ch-back"
|
|
4469
|
+
[class.ch-drop]="!!backDrop() && carrying()"
|
|
4470
|
+
[attr.data-drop]="backDrop()"
|
|
4471
|
+
[attr.aria-label]="backAria() ?? b"
|
|
4472
|
+
(click)="back.emit()"
|
|
4473
|
+
>
|
|
4474
|
+
<span class="ch-arrow" aria-hidden="true">‹</span>
|
|
4475
|
+
<span class="ch-back-name">{{ b }}</span>
|
|
4476
|
+
</button>
|
|
4477
|
+
}
|
|
4478
|
+
</div>
|
|
4479
|
+
<div class="ch-cube-row">
|
|
4480
|
+
<div
|
|
4481
|
+
class="ch-circle"
|
|
4482
|
+
[class.ch-holds]="holds()"
|
|
4483
|
+
[class.ch-turns]="turns() && count() > 1"
|
|
4484
|
+
[class.ch-turning]="turning()"
|
|
4485
|
+
[class.ch-grew]="grew()"
|
|
4486
|
+
role="img"
|
|
4487
|
+
[attr.aria-label]="title() || null"
|
|
4488
|
+
[attr.tabindex]="holds() ? 0 : null"
|
|
4489
|
+
data-no-swipe
|
|
4490
|
+
cubeHold
|
|
4491
|
+
[cubeHoldDisabled]="!holds()"
|
|
4492
|
+
[cubeHoldMs]="holdMs()"
|
|
4493
|
+
(cubeHeld)="held.emit($event)"
|
|
4494
|
+
(pointerdown)="start($event)"
|
|
4495
|
+
(pointerup)="end($event)"
|
|
4496
|
+
(pointercancel)="startX = null"
|
|
4497
|
+
>
|
|
4498
|
+
<cube-picture
|
|
4499
|
+
[art]="art()"
|
|
4500
|
+
[count]="count()"
|
|
4501
|
+
[colours]="colours()"
|
|
4502
|
+
[width]="width()"
|
|
4503
|
+
[whole]="whole()"
|
|
4504
|
+
[hint]="hint()"
|
|
4505
|
+
[rot]="rot()"
|
|
4506
|
+
/>
|
|
4507
|
+
</div>
|
|
4508
|
+
</div>
|
|
4509
|
+
@if (title() || line()) {
|
|
4510
|
+
<div class="ch-text">
|
|
4511
|
+
@if (title()) {
|
|
4512
|
+
<h1 class="ch-title" [attr.title]="title()">{{ title() }}</h1>
|
|
4513
|
+
}
|
|
4514
|
+
<!-- the line's place is kept on a phone, said or not, so the head is one height on every level -->
|
|
4515
|
+
<p class="ch-line">{{ line() }}</p>
|
|
4516
|
+
</div>
|
|
4517
|
+
}
|
|
4518
|
+
<ng-content />
|
|
4519
|
+
`,
|
|
4520
|
+
host: { "(document:keydown)": "key($event)" },
|
|
4521
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4522
|
+
styles: [":host{display:contents}.ch-back-row{display:flex;min-height:40px;align-items:flex-start}.ch-back{display:flex;max-width:100%;height:40px;align-items:center;gap:4px;margin-left:-8px;padding:0 8px;border:1px dashed transparent;border-radius:8px;background:none;color:var(--cube-head-quiet, #6b7280);font:inherit;font-size:var(--cube-head-back-size, 14px);cursor:pointer}.ch-back:hover{color:var(--cube-head-ink, #111827)}.ch-arrow{font-size:18px;line-height:1}.ch-back-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ch-back.ch-drop{border-color:var(--cube-head-drop, rgb(251 191 36 / .7));color:var(--cube-head-drop-ink, rgb(252 211 77))}:host-context(.cube-carrying) .ch-back.cube-carry-over{background:var(--cube-head-drop-over, rgb(251 191 36 / .16))}.ch-cube-row{display:flex;flex-direction:column;align-items:center}.ch-circle{display:flex;align-items:center;justify-content:center;width:var(--cube-head-circle-size, 156px);height:var(--cube-head-circle-size, 156px);border-radius:999px;background:var(--cube-head-circle, #f3f4f6);box-shadow:0 0 0 1px var(--cube-head-circle-ring, #e5e7eb);touch-action:pan-y}.ch-holds{cursor:pointer}.ch-turns{cursor:grab}.ch-circle:focus-visible{outline:2px solid var(--cube-head-focus, #5f9a80);outline-offset:3px}.ch-text{text-align:center}.ch-title{margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--cube-head-ink, #111827);font-size:var(--cube-head-title-size, 24px);font-weight:700;line-height:1.33}.ch-line{max-width:34ch;height:20px;margin:0 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--cube-head-quiet, #6b7280);font-size:var(--cube-head-line-size, 14px);line-height:20px}@media(min-width:900px){.ch-title{white-space:normal;overflow-wrap:anywhere}.ch-line{height:auto;min-height:20px;white-space:normal}}.ch-turning cube-picture{animation:ch-turn .44s ease-in-out}@keyframes ch-turn{0%{transform:perspective(600px) rotateY(0)}49%{transform:perspective(600px) rotateY(84deg)}51%{transform:perspective(600px) rotateY(-84deg)}to{transform:perspective(600px) rotateY(0)}}.ch-grew cube-picture{animation:ch-grew .9s ease-out}@keyframes ch-grew{0%{transform:scale(.7);opacity:.4}60%{transform:scale(1.06);opacity:1}to{transform:none}}@media(prefers-reduced-motion:reduce){.ch-turning cube-picture,.ch-grew cube-picture{animation:none}}\n"]
|
|
4523
|
+
}]
|
|
4524
|
+
}],
|
|
4525
|
+
ctorParameters: () => [],
|
|
4526
|
+
propDecorators: {
|
|
4527
|
+
count: [{
|
|
4528
|
+
type: i0.Input,
|
|
4529
|
+
args: [{
|
|
4530
|
+
isSignal: true,
|
|
4531
|
+
alias: "count",
|
|
4532
|
+
required: false
|
|
4533
|
+
}]
|
|
4534
|
+
}],
|
|
4535
|
+
colours: [{
|
|
4536
|
+
type: i0.Input,
|
|
4537
|
+
args: [{
|
|
4538
|
+
isSignal: true,
|
|
4539
|
+
alias: "colours",
|
|
4540
|
+
required: false
|
|
4541
|
+
}]
|
|
4542
|
+
}],
|
|
4543
|
+
art: [{
|
|
4544
|
+
type: i0.Input,
|
|
4545
|
+
args: [{
|
|
4546
|
+
isSignal: true,
|
|
4547
|
+
alias: "art",
|
|
4548
|
+
required: false
|
|
4549
|
+
}]
|
|
4550
|
+
}],
|
|
4551
|
+
whole: [{
|
|
4552
|
+
type: i0.Input,
|
|
4553
|
+
args: [{
|
|
4554
|
+
isSignal: true,
|
|
4555
|
+
alias: "whole",
|
|
4556
|
+
required: false
|
|
4557
|
+
}]
|
|
4558
|
+
}],
|
|
4559
|
+
hint: [{
|
|
4560
|
+
type: i0.Input,
|
|
4561
|
+
args: [{
|
|
4562
|
+
isSignal: true,
|
|
4563
|
+
alias: "hint",
|
|
4564
|
+
required: false
|
|
4565
|
+
}]
|
|
4566
|
+
}],
|
|
4567
|
+
width: [{
|
|
4568
|
+
type: i0.Input,
|
|
4569
|
+
args: [{
|
|
4570
|
+
isSignal: true,
|
|
4571
|
+
alias: "width",
|
|
4572
|
+
required: false
|
|
4573
|
+
}]
|
|
4574
|
+
}],
|
|
4575
|
+
title: [{
|
|
4576
|
+
type: i0.Input,
|
|
4577
|
+
args: [{
|
|
4578
|
+
isSignal: true,
|
|
4579
|
+
alias: "title",
|
|
4580
|
+
required: false
|
|
4581
|
+
}]
|
|
4582
|
+
}],
|
|
4583
|
+
line: [{
|
|
4584
|
+
type: i0.Input,
|
|
4585
|
+
args: [{
|
|
4586
|
+
isSignal: true,
|
|
4587
|
+
alias: "line",
|
|
4588
|
+
required: false
|
|
4589
|
+
}]
|
|
4590
|
+
}],
|
|
4591
|
+
backLabel: [{
|
|
4592
|
+
type: i0.Input,
|
|
4593
|
+
args: [{
|
|
4594
|
+
isSignal: true,
|
|
4595
|
+
alias: "backLabel",
|
|
4596
|
+
required: false
|
|
4597
|
+
}]
|
|
4598
|
+
}],
|
|
4599
|
+
backAria: [{
|
|
4600
|
+
type: i0.Input,
|
|
4601
|
+
args: [{
|
|
4602
|
+
isSignal: true,
|
|
4603
|
+
alias: "backAria",
|
|
4604
|
+
required: false
|
|
4605
|
+
}]
|
|
4606
|
+
}],
|
|
4607
|
+
backDrop: [{
|
|
4608
|
+
type: i0.Input,
|
|
4609
|
+
args: [{
|
|
4610
|
+
isSignal: true,
|
|
4611
|
+
alias: "backDrop",
|
|
4612
|
+
required: false
|
|
4613
|
+
}]
|
|
4614
|
+
}],
|
|
4615
|
+
carrying: [{
|
|
4616
|
+
type: i0.Input,
|
|
4617
|
+
args: [{
|
|
4618
|
+
isSignal: true,
|
|
4619
|
+
alias: "carrying",
|
|
4620
|
+
required: false
|
|
4621
|
+
}]
|
|
4622
|
+
}],
|
|
4623
|
+
holds: [{
|
|
4624
|
+
type: i0.Input,
|
|
4625
|
+
args: [{
|
|
4626
|
+
isSignal: true,
|
|
4627
|
+
alias: "holds",
|
|
4628
|
+
required: false
|
|
4629
|
+
}]
|
|
4630
|
+
}],
|
|
4631
|
+
holdMs: [{
|
|
4632
|
+
type: i0.Input,
|
|
4633
|
+
args: [{
|
|
4634
|
+
isSignal: true,
|
|
4635
|
+
alias: "holdMs",
|
|
4636
|
+
required: false
|
|
4637
|
+
}]
|
|
4638
|
+
}],
|
|
4639
|
+
turns: [{
|
|
4640
|
+
type: i0.Input,
|
|
4641
|
+
args: [{
|
|
4642
|
+
isSignal: true,
|
|
4643
|
+
alias: "turns",
|
|
4644
|
+
required: false
|
|
4645
|
+
}]
|
|
4646
|
+
}],
|
|
4647
|
+
regroups: [{
|
|
4648
|
+
type: i0.Input,
|
|
4649
|
+
args: [{
|
|
4650
|
+
isSignal: true,
|
|
4651
|
+
alias: "regroups",
|
|
4652
|
+
required: false
|
|
4653
|
+
}]
|
|
4654
|
+
}],
|
|
4655
|
+
grew: [{
|
|
4656
|
+
type: i0.Input,
|
|
4657
|
+
args: [{
|
|
4658
|
+
isSignal: true,
|
|
4659
|
+
alias: "grew",
|
|
4660
|
+
required: false
|
|
4661
|
+
}]
|
|
4662
|
+
}],
|
|
4663
|
+
back: [{
|
|
4664
|
+
type: i0.Output,
|
|
4665
|
+
args: ["back"]
|
|
4666
|
+
}],
|
|
4667
|
+
held: [{
|
|
4668
|
+
type: i0.Output,
|
|
4669
|
+
args: ["held"]
|
|
4670
|
+
}],
|
|
4671
|
+
turned: [{
|
|
4672
|
+
type: i0.Output,
|
|
4673
|
+
args: ["turned"]
|
|
4674
|
+
}]
|
|
4675
|
+
}
|
|
4676
|
+
});
|
|
4677
|
+
function cubeTilePicture(level, cell) {
|
|
4678
|
+
return Math.round(level < 2 ? Math.min(56, Math.max(28, cell * .28)) : level < 4 ? Math.max(20, cell * .24) : cell * .6);
|
|
4679
|
+
}
|
|
4680
|
+
var CubeTile = class CubeTile {
|
|
4681
|
+
name = input.required(...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
4682
|
+
line = input(null, ...ngDevMode ? [{ debugName: "line" }] : /* istanbul ignore next */ []);
|
|
4683
|
+
says = input(true, ...ngDevMode ? [{ debugName: "says" }] : /* istanbul ignore next */ []);
|
|
4684
|
+
level = input(1, ...ngDevMode ? [{ debugName: "level" }] : /* istanbul ignore next */ []);
|
|
4685
|
+
cell = input(150, ...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
|
|
4686
|
+
count = input(1, ...ngDevMode ? [{ debugName: "count" }] : /* istanbul ignore next */ []);
|
|
4687
|
+
colours = input([], ...ngDevMode ? [{ debugName: "colours" }] : /* istanbul ignore next */ []);
|
|
4688
|
+
art = input("stickers", ...ngDevMode ? [{ debugName: "art" }] : /* istanbul ignore next */ []);
|
|
4689
|
+
whole = input(null, ...ngDevMode ? [{ debugName: "whole" }] : /* istanbul ignore next */ []);
|
|
4690
|
+
look = input("piece", ...ngDevMode ? [{ debugName: "look" }] : /* istanbul ignore next */ []);
|
|
4691
|
+
ticked = input(false, ...ngDevMode ? [{ debugName: "ticked" }] : /* istanbul ignore next */ []);
|
|
4692
|
+
tick = input("✓", ...ngDevMode ? [{ debugName: "tick" }] : /* istanbul ignore next */ []);
|
|
4693
|
+
tickedWord = input(null, ...ngDevMode ? [{ debugName: "tickedWord" }] : /* istanbul ignore next */ []);
|
|
4694
|
+
marked = input(false, ...ngDevMode ? [{ debugName: "marked" }] : /* istanbul ignore next */ []);
|
|
4695
|
+
picture = computed(() => cubeTilePicture(this.level(), this.cell()), ...ngDevMode ? [{ debugName: "picture" }] : /* istanbul ignore next */ []);
|
|
4696
|
+
classes = computed(() => `ct-l${this.level()} ct-${this.look()}` + (this.ticked() ? " ct-ticked" : "") + (this.marked() ? " ct-marked" : ""), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
4697
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
4698
|
+
minVersion: "12.0.0",
|
|
4699
|
+
version: "22.2.4",
|
|
4700
|
+
ngImport: i0,
|
|
4701
|
+
type: CubeTile,
|
|
4702
|
+
deps: [],
|
|
4703
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
4704
|
+
});
|
|
4705
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
4706
|
+
minVersion: "17.0.0",
|
|
4707
|
+
version: "22.2.4",
|
|
4708
|
+
type: CubeTile,
|
|
4709
|
+
isStandalone: true,
|
|
4710
|
+
selector: "cube-tile",
|
|
4711
|
+
inputs: {
|
|
4712
|
+
name: {
|
|
4713
|
+
classPropertyName: "name",
|
|
4714
|
+
publicName: "name",
|
|
4715
|
+
isSignal: true,
|
|
4716
|
+
isRequired: true,
|
|
4717
|
+
transformFunction: null
|
|
4718
|
+
},
|
|
4719
|
+
line: {
|
|
4720
|
+
classPropertyName: "line",
|
|
4721
|
+
publicName: "line",
|
|
4722
|
+
isSignal: true,
|
|
4723
|
+
isRequired: false,
|
|
4724
|
+
transformFunction: null
|
|
4725
|
+
},
|
|
4726
|
+
says: {
|
|
4727
|
+
classPropertyName: "says",
|
|
4728
|
+
publicName: "says",
|
|
4729
|
+
isSignal: true,
|
|
4730
|
+
isRequired: false,
|
|
4731
|
+
transformFunction: null
|
|
4732
|
+
},
|
|
4733
|
+
level: {
|
|
4734
|
+
classPropertyName: "level",
|
|
4735
|
+
publicName: "level",
|
|
4736
|
+
isSignal: true,
|
|
4737
|
+
isRequired: false,
|
|
4738
|
+
transformFunction: null
|
|
4739
|
+
},
|
|
4740
|
+
cell: {
|
|
4741
|
+
classPropertyName: "cell",
|
|
4742
|
+
publicName: "cell",
|
|
4743
|
+
isSignal: true,
|
|
4744
|
+
isRequired: false,
|
|
4745
|
+
transformFunction: null
|
|
4746
|
+
},
|
|
4747
|
+
count: {
|
|
4748
|
+
classPropertyName: "count",
|
|
4749
|
+
publicName: "count",
|
|
4750
|
+
isSignal: true,
|
|
4751
|
+
isRequired: false,
|
|
4752
|
+
transformFunction: null
|
|
4753
|
+
},
|
|
4754
|
+
colours: {
|
|
4755
|
+
classPropertyName: "colours",
|
|
4756
|
+
publicName: "colours",
|
|
4757
|
+
isSignal: true,
|
|
4758
|
+
isRequired: false,
|
|
4759
|
+
transformFunction: null
|
|
4760
|
+
},
|
|
4761
|
+
art: {
|
|
4762
|
+
classPropertyName: "art",
|
|
4763
|
+
publicName: "art",
|
|
4764
|
+
isSignal: true,
|
|
4765
|
+
isRequired: false,
|
|
4766
|
+
transformFunction: null
|
|
4767
|
+
},
|
|
4768
|
+
whole: {
|
|
4769
|
+
classPropertyName: "whole",
|
|
4770
|
+
publicName: "whole",
|
|
4771
|
+
isSignal: true,
|
|
4772
|
+
isRequired: false,
|
|
4773
|
+
transformFunction: null
|
|
4774
|
+
},
|
|
4775
|
+
look: {
|
|
4776
|
+
classPropertyName: "look",
|
|
4777
|
+
publicName: "look",
|
|
4778
|
+
isSignal: true,
|
|
4779
|
+
isRequired: false,
|
|
4780
|
+
transformFunction: null
|
|
4781
|
+
},
|
|
4782
|
+
ticked: {
|
|
4783
|
+
classPropertyName: "ticked",
|
|
4784
|
+
publicName: "ticked",
|
|
4785
|
+
isSignal: true,
|
|
4786
|
+
isRequired: false,
|
|
4787
|
+
transformFunction: null
|
|
4788
|
+
},
|
|
4789
|
+
tick: {
|
|
4790
|
+
classPropertyName: "tick",
|
|
4791
|
+
publicName: "tick",
|
|
4792
|
+
isSignal: true,
|
|
4793
|
+
isRequired: false,
|
|
4794
|
+
transformFunction: null
|
|
4795
|
+
},
|
|
4796
|
+
tickedWord: {
|
|
4797
|
+
classPropertyName: "tickedWord",
|
|
4798
|
+
publicName: "tickedWord",
|
|
4799
|
+
isSignal: true,
|
|
4800
|
+
isRequired: false,
|
|
4801
|
+
transformFunction: null
|
|
4802
|
+
},
|
|
4803
|
+
marked: {
|
|
4804
|
+
classPropertyName: "marked",
|
|
4805
|
+
publicName: "marked",
|
|
4806
|
+
isSignal: true,
|
|
4807
|
+
isRequired: false,
|
|
4808
|
+
transformFunction: null
|
|
4809
|
+
}
|
|
4810
|
+
},
|
|
4811
|
+
host: { properties: {
|
|
4812
|
+
"class": "classes()",
|
|
4813
|
+
"attr.data-level": "level()"
|
|
4814
|
+
} },
|
|
4815
|
+
ngImport: i0,
|
|
4816
|
+
template: `
|
|
4817
|
+
@if (ticked() && level() < 4) {
|
|
4818
|
+
<span class="ct-tick" [attr.aria-label]="tickedWord() || null">{{ tick() }}</span>
|
|
4819
|
+
}
|
|
4820
|
+
@if (look() !== 'own') {
|
|
4821
|
+
<span class="ct-picture" [class.ct-push]="level() < 4">
|
|
4822
|
+
<cube-picture
|
|
4823
|
+
[art]="art()"
|
|
4824
|
+
[count]="count()"
|
|
4825
|
+
[colours]="colours()"
|
|
4826
|
+
[width]="picture()"
|
|
4827
|
+
[whole]="whole() ?? count() === 1"
|
|
4828
|
+
/>
|
|
4829
|
+
</span>
|
|
4830
|
+
}
|
|
4831
|
+
@if (level() < 4 || look() === 'own') {
|
|
4832
|
+
<span class="ct-name">{{ look() === 'own' ? '+ ' : '' }}{{ name() }}</span>
|
|
4833
|
+
}
|
|
4834
|
+
@if (line()) {
|
|
4835
|
+
<span class="ct-line" [class.ct-unseen]="!(says() && level() < 3)">{{ line() }}</span>
|
|
4836
|
+
}
|
|
4837
|
+
`,
|
|
4838
|
+
isInline: true,
|
|
4839
|
+
styles: [":host{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;border:1px solid var(--cube-tile-line, #e5e7eb);background:var(--cube-tile, #ffffff);color:var(--cube-tile-ink, #111827);text-align:left;user-select:none;-webkit-user-select:none;cursor:pointer;transition:transform .12s ease}:host(:active){transform:scale(.97)}:host(:focus-visible){outline:2px solid var(--cube-tile-accent, #5f9a80);outline-offset:2px}:host(.ct-l0){border-radius:28px;padding:24px;gap:10px}:host(.ct-l1){border-radius:20px;padding:14px;gap:6px}:host(.ct-l2){border-radius:16px;padding:8px 10px;gap:2px}:host(.ct-l3){border-radius:12px;padding:6px;gap:2px}:host(.ct-l4){border-radius:9px;padding:2px;align-items:center;justify-content:center}:host(.ct-own){align-items:center;justify-content:center;border-style:dashed;border-color:var(--cube-tile-own-line, color-mix(in srgb, #5f9a80 50%, transparent));background:transparent;color:var(--cube-tile-accent, #5f9a80)}:host(.ct-dashed){border-style:dashed;border-color:var(--cube-tile-own-line, color-mix(in srgb, #5f9a80 40%, transparent));background:transparent;color:var(--cube-tile-quiet-ink, #4b5563)}:host(.ct-pale){border-style:dashed;border-color:var(--cube-tile-pale-line, #d1d5db);background:transparent;color:var(--cube-tile-pale-ink, #9ca3af)}:host(.ct-marked){border-color:var(--cube-tile-marked, color-mix(in srgb, #5f9a80 35%, transparent))}:host(.ct-ticked){box-shadow:0 0 0 1px var(--cube-tile-accent, #5f9a80)}.ct-tick{position:absolute;top:8px;right:10px;color:var(--cube-tile-accent, #5f9a80);font-size:14px;font-weight:600}.ct-picture{flex:none}.ct-push{margin-bottom:auto}.ct-name{flex:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;font-weight:600;line-height:1.25}:host(.ct-own) .ct-name{font-weight:500}.ct-line{flex:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;color:var(--cube-tile-quiet, #6b7280);line-height:1.375}:host(.ct-pale) .ct-line{color:var(--cube-tile-pale-ink, #9ca3af)}.ct-unseen{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host(.ct-l0) .ct-name{font-size:26px}:host(.ct-l1) .ct-name{font-size:17px}:host(.ct-l2) .ct-name{font-size:14px}:host(.ct-l3) .ct-name{font-size:12px}:host(.ct-l0) .ct-line{font-size:16px}:host(.ct-l1) .ct-line{font-size:13px}:host(.ct-l2) .ct-line{font-size:12px}\n"],
|
|
4840
|
+
dependencies: [{
|
|
4841
|
+
kind: "component",
|
|
4842
|
+
type: CubePicture,
|
|
4843
|
+
selector: "cube-picture",
|
|
4844
|
+
inputs: [
|
|
4845
|
+
"count",
|
|
4846
|
+
"colours",
|
|
4847
|
+
"width",
|
|
4848
|
+
"hint",
|
|
4849
|
+
"whole",
|
|
4850
|
+
"rot",
|
|
4851
|
+
"art"
|
|
4852
|
+
]
|
|
4853
|
+
}],
|
|
4854
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
4855
|
+
});
|
|
4856
|
+
};
|
|
4857
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4858
|
+
minVersion: "12.0.0",
|
|
4859
|
+
version: "22.2.4",
|
|
4860
|
+
ngImport: i0,
|
|
4861
|
+
type: CubeTile,
|
|
4862
|
+
decorators: [{
|
|
4863
|
+
type: Component,
|
|
4864
|
+
args: [{
|
|
4865
|
+
selector: "cube-tile",
|
|
4866
|
+
imports: [CubePicture],
|
|
4867
|
+
template: `
|
|
4868
|
+
@if (ticked() && level() < 4) {
|
|
4869
|
+
<span class="ct-tick" [attr.aria-label]="tickedWord() || null">{{ tick() }}</span>
|
|
4870
|
+
}
|
|
4871
|
+
@if (look() !== 'own') {
|
|
4872
|
+
<span class="ct-picture" [class.ct-push]="level() < 4">
|
|
4873
|
+
<cube-picture
|
|
4874
|
+
[art]="art()"
|
|
4875
|
+
[count]="count()"
|
|
4876
|
+
[colours]="colours()"
|
|
4877
|
+
[width]="picture()"
|
|
4878
|
+
[whole]="whole() ?? count() === 1"
|
|
4879
|
+
/>
|
|
4880
|
+
</span>
|
|
4881
|
+
}
|
|
4882
|
+
@if (level() < 4 || look() === 'own') {
|
|
4883
|
+
<span class="ct-name">{{ look() === 'own' ? '+ ' : '' }}{{ name() }}</span>
|
|
4884
|
+
}
|
|
4885
|
+
@if (line()) {
|
|
4886
|
+
<span class="ct-line" [class.ct-unseen]="!(says() && level() < 3)">{{ line() }}</span>
|
|
4887
|
+
}
|
|
4888
|
+
`,
|
|
4889
|
+
host: {
|
|
4890
|
+
"[class]": "classes()",
|
|
4891
|
+
"[attr.data-level]": "level()"
|
|
4892
|
+
},
|
|
4893
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4894
|
+
styles: [":host{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;border:1px solid var(--cube-tile-line, #e5e7eb);background:var(--cube-tile, #ffffff);color:var(--cube-tile-ink, #111827);text-align:left;user-select:none;-webkit-user-select:none;cursor:pointer;transition:transform .12s ease}:host(:active){transform:scale(.97)}:host(:focus-visible){outline:2px solid var(--cube-tile-accent, #5f9a80);outline-offset:2px}:host(.ct-l0){border-radius:28px;padding:24px;gap:10px}:host(.ct-l1){border-radius:20px;padding:14px;gap:6px}:host(.ct-l2){border-radius:16px;padding:8px 10px;gap:2px}:host(.ct-l3){border-radius:12px;padding:6px;gap:2px}:host(.ct-l4){border-radius:9px;padding:2px;align-items:center;justify-content:center}:host(.ct-own){align-items:center;justify-content:center;border-style:dashed;border-color:var(--cube-tile-own-line, color-mix(in srgb, #5f9a80 50%, transparent));background:transparent;color:var(--cube-tile-accent, #5f9a80)}:host(.ct-dashed){border-style:dashed;border-color:var(--cube-tile-own-line, color-mix(in srgb, #5f9a80 40%, transparent));background:transparent;color:var(--cube-tile-quiet-ink, #4b5563)}:host(.ct-pale){border-style:dashed;border-color:var(--cube-tile-pale-line, #d1d5db);background:transparent;color:var(--cube-tile-pale-ink, #9ca3af)}:host(.ct-marked){border-color:var(--cube-tile-marked, color-mix(in srgb, #5f9a80 35%, transparent))}:host(.ct-ticked){box-shadow:0 0 0 1px var(--cube-tile-accent, #5f9a80)}.ct-tick{position:absolute;top:8px;right:10px;color:var(--cube-tile-accent, #5f9a80);font-size:14px;font-weight:600}.ct-picture{flex:none}.ct-push{margin-bottom:auto}.ct-name{flex:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;font-weight:600;line-height:1.25}:host(.ct-own) .ct-name{font-weight:500}.ct-line{flex:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;color:var(--cube-tile-quiet, #6b7280);line-height:1.375}:host(.ct-pale) .ct-line{color:var(--cube-tile-pale-ink, #9ca3af)}.ct-unseen{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host(.ct-l0) .ct-name{font-size:26px}:host(.ct-l1) .ct-name{font-size:17px}:host(.ct-l2) .ct-name{font-size:14px}:host(.ct-l3) .ct-name{font-size:12px}:host(.ct-l0) .ct-line{font-size:16px}:host(.ct-l1) .ct-line{font-size:13px}:host(.ct-l2) .ct-line{font-size:12px}\n"]
|
|
4895
|
+
}]
|
|
4896
|
+
}],
|
|
4897
|
+
propDecorators: {
|
|
4898
|
+
name: [{
|
|
4899
|
+
type: i0.Input,
|
|
4900
|
+
args: [{
|
|
4901
|
+
isSignal: true,
|
|
4902
|
+
alias: "name",
|
|
4903
|
+
required: true
|
|
4904
|
+
}]
|
|
4905
|
+
}],
|
|
4906
|
+
line: [{
|
|
4907
|
+
type: i0.Input,
|
|
4908
|
+
args: [{
|
|
4909
|
+
isSignal: true,
|
|
4910
|
+
alias: "line",
|
|
4911
|
+
required: false
|
|
4912
|
+
}]
|
|
4913
|
+
}],
|
|
4914
|
+
says: [{
|
|
4915
|
+
type: i0.Input,
|
|
4916
|
+
args: [{
|
|
4917
|
+
isSignal: true,
|
|
4918
|
+
alias: "says",
|
|
4919
|
+
required: false
|
|
4920
|
+
}]
|
|
4921
|
+
}],
|
|
4922
|
+
level: [{
|
|
4923
|
+
type: i0.Input,
|
|
4924
|
+
args: [{
|
|
4925
|
+
isSignal: true,
|
|
4926
|
+
alias: "level",
|
|
4927
|
+
required: false
|
|
4928
|
+
}]
|
|
4929
|
+
}],
|
|
4930
|
+
cell: [{
|
|
4931
|
+
type: i0.Input,
|
|
4932
|
+
args: [{
|
|
4933
|
+
isSignal: true,
|
|
4934
|
+
alias: "cell",
|
|
4935
|
+
required: false
|
|
4936
|
+
}]
|
|
4937
|
+
}],
|
|
4938
|
+
count: [{
|
|
4939
|
+
type: i0.Input,
|
|
4940
|
+
args: [{
|
|
4941
|
+
isSignal: true,
|
|
4942
|
+
alias: "count",
|
|
4943
|
+
required: false
|
|
4944
|
+
}]
|
|
4945
|
+
}],
|
|
4946
|
+
colours: [{
|
|
4947
|
+
type: i0.Input,
|
|
4948
|
+
args: [{
|
|
4949
|
+
isSignal: true,
|
|
4950
|
+
alias: "colours",
|
|
4951
|
+
required: false
|
|
4952
|
+
}]
|
|
4953
|
+
}],
|
|
4954
|
+
art: [{
|
|
4955
|
+
type: i0.Input,
|
|
4956
|
+
args: [{
|
|
4957
|
+
isSignal: true,
|
|
4958
|
+
alias: "art",
|
|
4959
|
+
required: false
|
|
4960
|
+
}]
|
|
4961
|
+
}],
|
|
4962
|
+
whole: [{
|
|
4963
|
+
type: i0.Input,
|
|
4964
|
+
args: [{
|
|
4965
|
+
isSignal: true,
|
|
4966
|
+
alias: "whole",
|
|
4967
|
+
required: false
|
|
4968
|
+
}]
|
|
4969
|
+
}],
|
|
4970
|
+
look: [{
|
|
4971
|
+
type: i0.Input,
|
|
4972
|
+
args: [{
|
|
4973
|
+
isSignal: true,
|
|
4974
|
+
alias: "look",
|
|
4975
|
+
required: false
|
|
4976
|
+
}]
|
|
4977
|
+
}],
|
|
4978
|
+
ticked: [{
|
|
4979
|
+
type: i0.Input,
|
|
4980
|
+
args: [{
|
|
4981
|
+
isSignal: true,
|
|
4982
|
+
alias: "ticked",
|
|
4983
|
+
required: false
|
|
4984
|
+
}]
|
|
4985
|
+
}],
|
|
4986
|
+
tick: [{
|
|
4987
|
+
type: i0.Input,
|
|
4988
|
+
args: [{
|
|
4989
|
+
isSignal: true,
|
|
4990
|
+
alias: "tick",
|
|
4991
|
+
required: false
|
|
4992
|
+
}]
|
|
4993
|
+
}],
|
|
4994
|
+
tickedWord: [{
|
|
4995
|
+
type: i0.Input,
|
|
4996
|
+
args: [{
|
|
4997
|
+
isSignal: true,
|
|
4998
|
+
alias: "tickedWord",
|
|
4999
|
+
required: false
|
|
5000
|
+
}]
|
|
5001
|
+
}],
|
|
5002
|
+
marked: [{
|
|
5003
|
+
type: i0.Input,
|
|
5004
|
+
args: [{
|
|
5005
|
+
isSignal: true,
|
|
5006
|
+
alias: "marked",
|
|
5007
|
+
required: false
|
|
5008
|
+
}]
|
|
5009
|
+
}]
|
|
5010
|
+
}
|
|
5011
|
+
});
|
|
5012
|
+
const levelOf = (url) => url.split(/[?#]/)[0];
|
|
5013
|
+
var CubeQuietLine = class {
|
|
5014
|
+
said = signal(null, ...ngDevMode ? [{ debugName: "said" }] : /* istanbul ignore next */ []);
|
|
5015
|
+
note = computed(() => this.said()?.note ?? null, ...ngDevMode ? [{ debugName: "note" }] : /* istanbul ignore next */ []);
|
|
5016
|
+
at = computed(() => this.said()?.at ?? null, ...ngDevMode ? [{ debugName: "at" }] : /* istanbul ignore next */ []);
|
|
5017
|
+
say(note, at) {
|
|
5018
|
+
this.said.set(note ? {
|
|
5019
|
+
note,
|
|
5020
|
+
at: levelOf(at)
|
|
5021
|
+
} : null);
|
|
5022
|
+
}
|
|
5023
|
+
move(at) {
|
|
5024
|
+
const s = this.said();
|
|
5025
|
+
if (s) this.said.set({
|
|
5026
|
+
...s,
|
|
5027
|
+
at: levelOf(at)
|
|
5028
|
+
});
|
|
5029
|
+
}
|
|
5030
|
+
clear() {
|
|
5031
|
+
this.said.set(null);
|
|
5032
|
+
}
|
|
5033
|
+
on(url) {
|
|
5034
|
+
const s = this.said();
|
|
5035
|
+
return s && s.at === levelOf(url) ? s.note : null;
|
|
5036
|
+
}
|
|
5037
|
+
};
|
|
5038
|
+
var CubeQuiet = class CubeQuiet {
|
|
5039
|
+
note = input(null, ...ngDevMode ? [{ debugName: "note" }] : /* istanbul ignore next */ []);
|
|
5040
|
+
undoWord = input(null, ...ngDevMode ? [{ debugName: "undoWord" }] : /* istanbul ignore next */ []);
|
|
5041
|
+
undo = output();
|
|
5042
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
5043
|
+
minVersion: "12.0.0",
|
|
5044
|
+
version: "22.2.4",
|
|
5045
|
+
ngImport: i0,
|
|
5046
|
+
type: CubeQuiet,
|
|
5047
|
+
deps: [],
|
|
5048
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
5049
|
+
});
|
|
5050
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5051
|
+
minVersion: "17.0.0",
|
|
5052
|
+
version: "22.2.4",
|
|
5053
|
+
type: CubeQuiet,
|
|
5054
|
+
isStandalone: true,
|
|
5055
|
+
selector: "cube-quiet",
|
|
5056
|
+
inputs: {
|
|
5057
|
+
note: {
|
|
5058
|
+
classPropertyName: "note",
|
|
5059
|
+
publicName: "note",
|
|
5060
|
+
isSignal: true,
|
|
5061
|
+
isRequired: false,
|
|
5062
|
+
transformFunction: null
|
|
5063
|
+
},
|
|
5064
|
+
undoWord: {
|
|
5065
|
+
classPropertyName: "undoWord",
|
|
5066
|
+
publicName: "undoWord",
|
|
5067
|
+
isSignal: true,
|
|
5068
|
+
isRequired: false,
|
|
5069
|
+
transformFunction: null
|
|
5070
|
+
}
|
|
5071
|
+
},
|
|
5072
|
+
outputs: { undo: "undo" },
|
|
5073
|
+
ngImport: i0,
|
|
5074
|
+
template: `
|
|
5075
|
+
@if (note(); as n) {
|
|
5076
|
+
<p class="cq-line" role="status">
|
|
5077
|
+
<span class="cq-says">{{ n.says }}</span>
|
|
5078
|
+
@if (n.undo != null && undoWord()) {
|
|
5079
|
+
<button type="button" class="cq-undo" (click)="undo.emit(n)">{{ undoWord() }}</button>
|
|
5080
|
+
}
|
|
5081
|
+
</p>
|
|
5082
|
+
}
|
|
5083
|
+
`,
|
|
5084
|
+
isInline: true,
|
|
5085
|
+
styles: [":host{display:block}.cq-line{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;column-gap:8px;max-width:40ch;margin:0 auto;color:var(--cube-quiet-ink, #6b7280);font-size:var(--cube-quiet-size, 14px);line-height:20px;text-align:center}.cq-says{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}@media(min-width:900px){.cq-says{-webkit-line-clamp:unset}}.cq-undo{min-height:24px;padding:0 4px;border:0;background:none;color:var(--cube-quiet-undo, #5f9a80);font:inherit;font-weight:600;cursor:pointer}\n"],
|
|
5086
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
5087
|
+
});
|
|
5088
|
+
};
|
|
5089
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
5090
|
+
minVersion: "12.0.0",
|
|
5091
|
+
version: "22.2.4",
|
|
5092
|
+
ngImport: i0,
|
|
5093
|
+
type: CubeQuiet,
|
|
5094
|
+
decorators: [{
|
|
5095
|
+
type: Component,
|
|
5096
|
+
args: [{
|
|
5097
|
+
selector: "cube-quiet",
|
|
5098
|
+
template: `
|
|
5099
|
+
@if (note(); as n) {
|
|
5100
|
+
<p class="cq-line" role="status">
|
|
5101
|
+
<span class="cq-says">{{ n.says }}</span>
|
|
5102
|
+
@if (n.undo != null && undoWord()) {
|
|
5103
|
+
<button type="button" class="cq-undo" (click)="undo.emit(n)">{{ undoWord() }}</button>
|
|
5104
|
+
}
|
|
5105
|
+
</p>
|
|
5106
|
+
}
|
|
5107
|
+
`,
|
|
5108
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5109
|
+
styles: [":host{display:block}.cq-line{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;column-gap:8px;max-width:40ch;margin:0 auto;color:var(--cube-quiet-ink, #6b7280);font-size:var(--cube-quiet-size, 14px);line-height:20px;text-align:center}.cq-says{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}@media(min-width:900px){.cq-says{-webkit-line-clamp:unset}}.cq-undo{min-height:24px;padding:0 4px;border:0;background:none;color:var(--cube-quiet-undo, #5f9a80);font:inherit;font-weight:600;cursor:pointer}\n"]
|
|
5110
|
+
}]
|
|
5111
|
+
}],
|
|
5112
|
+
propDecorators: {
|
|
5113
|
+
note: [{
|
|
5114
|
+
type: i0.Input,
|
|
5115
|
+
args: [{
|
|
5116
|
+
isSignal: true,
|
|
5117
|
+
alias: "note",
|
|
5118
|
+
required: false
|
|
5119
|
+
}]
|
|
5120
|
+
}],
|
|
5121
|
+
undoWord: [{
|
|
5122
|
+
type: i0.Input,
|
|
5123
|
+
args: [{
|
|
5124
|
+
isSignal: true,
|
|
5125
|
+
alias: "undoWord",
|
|
5126
|
+
required: false
|
|
5127
|
+
}]
|
|
5128
|
+
}],
|
|
5129
|
+
undo: [{
|
|
5130
|
+
type: i0.Output,
|
|
5131
|
+
args: ["undo"]
|
|
5132
|
+
}]
|
|
5133
|
+
}
|
|
5134
|
+
});
|
|
3777
5135
|
const CUBE_LOADING_WAYS = ["fill", "turn"];
|
|
3778
5136
|
const CUBE_LOADING_LEVELS = [
|
|
3779
5137
|
"page",
|
|
@@ -3947,6 +5305,7 @@ var CubeLoading = class CubeLoading {
|
|
|
3947
5305
|
"tiles",
|
|
3948
5306
|
"view",
|
|
3949
5307
|
"maxSide",
|
|
5308
|
+
"cell",
|
|
3950
5309
|
"align",
|
|
3951
5310
|
"listRow",
|
|
3952
5311
|
"dashed",
|
|
@@ -4317,6 +5676,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4317
5676
|
args: [{ providedIn: "root" }]
|
|
4318
5677
|
}]
|
|
4319
5678
|
});
|
|
4320
|
-
export { ART_CHOICES_KEY, CONTEXT_CUBE_SOURCE, CONTEXT_CUBE_WORDS, CONTEXT_LAST_PARTS, CONTEXT_PART_ORDER, CUBE_ARTS, CUBE_CARRY_CLASSES, CUBE_CARRY_MOVE, CUBE_DROP_OUT, CUBE_HOLD_MS, CUBE_HOLD_SLOP, CUBE_ICON_NAMES, CUBE_LOADING_COLOURS, CUBE_LOADING_LEVELS, CUBE_LOADING_STEP_MS, CUBE_LOADING_STICKERS, CUBE_LOADING_WAYS, CUBE_LOADING_WIDTH, CUBE_PINCH_APART, CUBE_PINCH_TOGETHER, CUBE_WHEEL_QUIET_MS, CubeArtChoices, CubeCarry, CubeContext, CubeHold, CubeIcon, CubeLoading, CubePicture, CubePinch, CubeSquare, CubeSquareTile, JUST_SAVED_MINUTES, MINE_SORT, PART_ICONS, REPORT_APP, REPORT_INCIDENTS_KEPT, REPORT_INCIDENTS_MS, REPORT_KINDS, ReportClient, ReportDiagnostics, ReportDraft, ReportErrorHandler, SQUARE_LEAST_CELL, SQUARE_LEAST_TALL, SQUARE_LIST_ROW, SQUARE_MAX_SIDE, SQUARE_ROOM_BELOW, TEXT_ORDERS, TURNING_BELOW, TURNING_NUDGE_UNTIL, TURNING_SIDES, VIEW_KEYS, addLevel, artFor, artLevel, bringLevel, bringOf, chooseArt, contextArtWidth, contextIcon, contextLevelFor, contextOf, contextSquare, cubeIconCells, directionWords, drawArt, drawCube, environmentOf, errorLine, findJustSaved, gridFor, hideLevel, insideOf, isArt, isView, loadingStickers, loadingWayFor, moveBefore, namesLevel, orderLevel, orderOf, orderParts, partsLevel, placesOf, provideReportDiagnostics, readArtChoices, refusalOf, reportContext, reportInterceptor, reportRefusal, reportRequest, routePattern, scrubbedPath, sizeFor, sortDirectionsLevel, sortItems, sortLevel, squareGap, squareLayout, squareLeast, squareLevelFor, squareTall, startsWheelGesture, stillStep, technicalLines, tellLevel, turningFront, turningRows, viewLevel, whereLevel, wouldLoop };
|
|
5679
|
+
export { ART_CHOICES_KEY, CONTEXT_CUBE_SOURCE, CONTEXT_CUBE_WORDS, CONTEXT_LAST_PARTS, CONTEXT_PART_ORDER, CUBE_ARTS, CUBE_CARRY_CLASSES, CUBE_CARRY_MOVE, CUBE_DROP_OUT, CUBE_HEAD_SWIPE, CUBE_HOLD_MS, CUBE_HOLD_SLOP, CUBE_ICON_NAMES, CUBE_LOADING_COLOURS, CUBE_LOADING_LEVELS, CUBE_LOADING_STEP_MS, CUBE_LOADING_STICKERS, CUBE_LOADING_WAYS, CUBE_LOADING_WIDTH, CUBE_PINCH_APART, CUBE_PINCH_TOGETHER, CUBE_ROOM_NARROW, CUBE_WHEEL_QUIET_MS, CUBE_WHEEL_STEP, CUBE_ZOOM_OPTIONS, CubeArtChoices, CubeCarry, CubeContext, CubeHead, CubeHold, CubeIcon, CubeLoading, CubePicture, CubePinch, CubeQuiet, CubeQuietLine, CubeRoom, CubeRoomMeasure, CubeSquare, CubeSquareTile, CubeTile, CubeZoomPinch, CubeZoomService, JUST_SAVED_MINUTES, MINE_SORT, PART_ICONS, REPORT_APP, REPORT_INCIDENTS_KEPT, REPORT_INCIDENTS_MS, REPORT_KINDS, ReportClient, ReportDiagnostics, ReportDraft, ReportErrorHandler, SQUARE_LEAST_CELL, SQUARE_LEAST_TALL, SQUARE_LIST_ROW, SQUARE_MAX_SIDE, SQUARE_ROOM_BELOW, TEXT_ORDERS, TURNING_BELOW, TURNING_NUDGE_UNTIL, TURNING_SIDES, VIEW_KEYS, addLevel, artFor, artLevel, bringLevel, bringOf, chooseArt, contextArtWidth, contextIcon, contextLevelFor, contextOf, contextSquare, cubeIconCells, cubeMovesThePage, cubeTilePicture, cubeTrailHolds, directionWords, drawArt, drawCube, environmentOf, errorLine, findJustSaved, gridFor, hideLevel, insideOf, isArt, isView, loadingStickers, loadingWayFor, moveBefore, namesLevel, orderLevel, orderOf, orderParts, partsLevel, placesOf, provideCubeZoom, provideReportDiagnostics, readArtChoices, refusalOf, reportContext, reportInterceptor, reportRefusal, reportRequest, routePattern, scrubbedPath, sizeFor, sortDirectionsLevel, sortItems, sortLevel, squareCell, squareGap, squareLayout, squareLeast, squareLevelFor, squareSideAt, squareTall, startsWheelGesture, stillStep, technicalLines, tellLevel, turningFront, turningRows, viewLevel, wheelWay, whereLevel, wouldLoop };
|
|
4321
5680
|
|
|
4322
5681
|
//# sourceMappingURL=selimssevgi-cube-design-angular.mjs.map
|