@mintplayer/ng-bootstrap 21.25.0 → 21.27.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mintplayer/ng-bootstrap",
3
3
  "private": false,
4
- "version": "21.25.0",
4
+ "version": "21.27.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/MintPlayer/mintplayer-ng-bootstrap",
@@ -3,6 +3,50 @@ import { ElementRef } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
  import * as i1 from '@mintplayer/ng-swiper/observe-size';
5
5
 
6
+ interface HslColor {
7
+ hue: number;
8
+ saturation: number;
9
+ luminosity: number;
10
+ }
11
+
12
+ interface HsvColor {
13
+ hue: number;
14
+ saturation: number;
15
+ value: number;
16
+ }
17
+
18
+ interface RgbColor {
19
+ r: number;
20
+ g: number;
21
+ b: number;
22
+ }
23
+
24
+ declare function hex2rgb(hex: string): RgbColor;
25
+ declare function rgb2hex(rgb: RgbColor): string;
26
+ declare function rgb2hsv(rgb: RgbColor): HsvColor;
27
+ declare function hsv2rgb(hsv: HsvColor): RgbColor;
28
+ declare function rgb2hsl(rgb: RgbColor): HslColor;
29
+ declare function hsl2rgb(hsl: HslColor): RgbColor;
30
+ declare function hsv2hsl(hsv: HsvColor): HslColor;
31
+ declare function hsl2hsv(hsl: HslColor): HsvColor;
32
+ declare function hex2hsv(hex: string): HsvColor;
33
+ declare function hsv2hex(hsv: HsvColor): string;
34
+ /** Polar position (cx, cy) on a disc of radius R → HSV (hue, saturation). */
35
+ declare function polar2hs(dx: number, dy: number, radius: number): {
36
+ hue: number;
37
+ saturation: number;
38
+ };
39
+ /** Inverse of polar2hs. Hue in degrees, saturation in [0, 1] → (dx, dy) on a disc of given radius. */
40
+ declare function hs2polar(hue: number, saturation: number, radius: number): {
41
+ dx: number;
42
+ dy: number;
43
+ };
44
+
45
+ /**
46
+ * Hue + Saturation pair shared between the wheel and the strips.
47
+ * Saturation is HSV-saturation (0..1) — at S=0 the color is white at V=1
48
+ * and gray at V<1. (Not HSL-saturation; HSL would put gray at S=0 regardless of L.)
49
+ */
6
50
  interface HS {
7
51
  hue: number;
8
52
  saturation: number;
@@ -12,7 +56,7 @@ declare class BsAlphaStripComponent {
12
56
  readonly canvas: _angular_core.Signal<ElementRef<HTMLCanvasElement>>;
13
57
  disabled: _angular_core.InputSignal<boolean>;
14
58
  hs: _angular_core.ModelSignal<HS>;
15
- luminosity: _angular_core.ModelSignal<number>;
59
+ brightness: _angular_core.ModelSignal<number>;
16
60
  alpha: _angular_core.ModelSignal<number>;
17
61
  alphaChange: _angular_core.OutputEmitterRef<number>;
18
62
  private canvasContext;
@@ -20,75 +64,60 @@ declare class BsAlphaStripComponent {
20
64
  constructor();
21
65
  ngAfterViewInit(): void;
22
66
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsAlphaStripComponent, never>;
23
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsAlphaStripComponent, "bs-alpha-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "luminosity": { "alias": "luminosity"; "required": false; "isSignal": true; }; "alpha": { "alias": "alpha"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "luminosity": "luminosityChange"; "alpha": "alphaChange"; "alphaChange": "alphaChange"; }, never, never, true, never>;
67
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsAlphaStripComponent, "bs-alpha-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "brightness": { "alias": "brightness"; "required": false; "isSignal": true; }; "alpha": { "alias": "alpha"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "brightness": "brightnessChange"; "alpha": "alphaChange"; "alphaChange": "alphaChange"; }, never, never, true, never>;
24
68
  }
25
69
 
26
- declare class BsColorWheelComponent {
27
- private element;
70
+ declare class BsBrightnessStripComponent {
28
71
  readonly canvas: _angular_core.Signal<ElementRef<HTMLCanvasElement>>;
72
+ disabled: _angular_core.InputSignal<boolean>;
73
+ hs: _angular_core.ModelSignal<HS>;
74
+ brightness: _angular_core.ModelSignal<number>;
75
+ brightnessChange: _angular_core.OutputEmitterRef<number>;
76
+ private canvasContext;
77
+ resultBackground: _angular_core.Signal<string>;
78
+ constructor();
79
+ ngAfterViewInit(): void;
80
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsBrightnessStripComponent, never>;
81
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsBrightnessStripComponent, "bs-brightness-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "brightness": { "alias": "brightness"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "brightness": "brightnessChange"; "brightnessChange": "brightnessChange"; }, never, never, true, never>;
82
+ }
83
+
84
+ declare class BsColorWheelComponent {
85
+ readonly surface: _angular_core.Signal<ElementRef<HTMLDivElement>>;
29
86
  width: _angular_core.ModelSignal<number>;
30
87
  height: _angular_core.ModelSignal<number>;
31
- diameterRatio: _angular_core.ModelSignal<number>;
32
- luminosity: _angular_core.ModelSignal<number>;
88
+ brightness: _angular_core.ModelSignal<number>;
33
89
  hs: _angular_core.ModelSignal<HS>;
34
90
  hsChange: _angular_core.OutputEmitterRef<HS>;
35
91
  disabled: _angular_core.InputSignal<boolean>;
36
- viewInited: _angular_core.WritableSignal<boolean>;
37
92
  private readonly isPointerDown;
38
- private canvasContext;
39
- squareSize: _angular_core.Signal<number | null>;
40
- shiftX: _angular_core.Signal<number | null>;
41
- shiftY: _angular_core.Signal<number | null>;
42
- innerRadius: _angular_core.Signal<number>;
93
+ squareSize: _angular_core.Signal<number>;
94
+ shiftX: _angular_core.Signal<number>;
95
+ shiftY: _angular_core.Signal<number>;
43
96
  outerRadius: _angular_core.Signal<number>;
97
+ overlayOpacity: _angular_core.Signal<number>;
44
98
  markerPosition: _angular_core.Signal<{
45
99
  x: number;
46
100
  y: number;
47
101
  }>;
48
102
  constructor();
49
- ngAfterViewInit(): void;
50
103
  onPointerDown(ev: MouseEvent | TouchEvent): void;
51
104
  onPointerMove(ev: MouseEvent | TouchEvent): void;
52
- onMouseMove(ev: MouseEvent): void;
53
- onPointerUp(ev: MouseEvent | TouchEvent): void;
105
+ onPointerUp(_ev: MouseEvent | TouchEvent): void;
54
106
  private updateColor;
55
- private isInsideCircle;
56
- private position2color;
57
- private color2position;
58
- private rgb2Hsl;
59
- /**
60
- * Divide 1 to n, handling floating point errors.
61
- * Ensures that the value is in between 0 and 1.
62
- **/
63
- private bound01;
64
107
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsColorWheelComponent, never>;
65
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsColorWheelComponent, "bs-color-wheel", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "diameterRatio": { "alias": "diameterRatio"; "required": false; "isSignal": true; }; "luminosity": { "alias": "luminosity"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "width": "widthChange"; "height": "heightChange"; "diameterRatio": "diameterRatioChange"; "luminosity": "luminosityChange"; "hs": "hsChange"; "hsChange": "hsChange"; }, never, never, true, never>;
66
- }
67
-
68
- interface RgbColor {
69
- r: number;
70
- g: number;
71
- b: number;
108
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsColorWheelComponent, "bs-color-wheel", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "brightness": { "alias": "brightness"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "width": "widthChange"; "height": "heightChange"; "brightness": "brightnessChange"; "hs": "hsChange"; "hsChange": "hsChange"; }, never, never, true, never>;
72
109
  }
73
110
 
74
111
  declare class BsColorPickerValueAccessor implements ControlValueAccessor {
75
112
  private host;
76
113
  onValueChange?: (value: string) => void;
77
114
  onTouched?: () => void;
115
+ private lastHex;
78
116
  constructor();
79
- hsl2rgb(h: number, s: number, l: number): RgbColor;
80
117
  registerOnChange(fn: (_: any) => void): void;
81
118
  registerOnTouched(fn: () => void): void;
82
119
  writeValue(value: string | null): void;
83
120
  setDisabledState(isDisabled: boolean): void;
84
- private rgb2hex;
85
- private hex2rgb;
86
- /**
87
- * Divide 1 to n, handling floating point errors.
88
- * Ensures that the value is in between 0 and 1.
89
- **/
90
- private bound01;
91
- private rgb2Hsl;
92
121
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsColorPickerValueAccessor, never>;
93
122
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BsColorPickerValueAccessor, "bs-color-picker", ["bsColorPicker"], {}, {}, never, never, true, never>;
94
123
  }
@@ -99,7 +128,7 @@ declare class BsColorPickerComponent {
99
128
  disabled: _angular_core.WritableSignal<boolean>;
100
129
  allowAlpha: _angular_core.InputSignal<boolean>;
101
130
  hs: _angular_core.WritableSignal<HS>;
102
- luminosity: _angular_core.WritableSignal<number>;
131
+ brightness: _angular_core.WritableSignal<number>;
103
132
  alpha: _angular_core.ModelSignal<number>;
104
133
  alphaChange: _angular_core.OutputEmitterRef<number>;
105
134
  constructor();
@@ -107,20 +136,6 @@ declare class BsColorPickerComponent {
107
136
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsColorPickerComponent, "bs-color-picker", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "allowAlpha": { "alias": "allowAlpha"; "required": false; "isSignal": true; }; "alpha": { "alias": "alpha"; "required": false; "isSignal": true; }; }, { "alpha": "alphaChange"; "alphaChange": "alphaChange"; }, never, never, true, [{ directive: typeof BsColorPickerValueAccessor; inputs: {}; outputs: {}; }]>;
108
137
  }
109
138
 
110
- declare class BsLuminosityStripComponent {
111
- readonly canvas: _angular_core.Signal<ElementRef<HTMLCanvasElement>>;
112
- disabled: _angular_core.InputSignal<boolean>;
113
- hs: _angular_core.ModelSignal<HS>;
114
- luminosity: _angular_core.ModelSignal<number>;
115
- luminosityChange: _angular_core.OutputEmitterRef<number>;
116
- private canvasContext;
117
- resultBackground: _angular_core.Signal<string>;
118
- constructor();
119
- ngAfterViewInit(): void;
120
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsLuminosityStripComponent, never>;
121
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsLuminosityStripComponent, "bs-luminosity-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "luminosity": { "alias": "luminosity"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "luminosity": "luminosityChange"; "luminosityChange": "luminosityChange"; }, never, never, true, never>;
122
- }
123
-
124
139
  declare class BsSliderComponent {
125
140
  private observeSize;
126
141
  readonly track: _angular_core.Signal<ElementRef<HTMLDivElement>>;
@@ -148,13 +163,7 @@ declare class BsTrackDirective {
148
163
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BsTrackDirective, "[bsTrack]", never, {}, {}, never, never, true, never>;
149
164
  }
150
165
 
151
- interface HslColor {
152
- hue: number;
153
- saturation: number;
154
- luminosity: number;
155
- }
156
-
157
166
  type HtmlColor = `#${string}`;
158
167
 
159
- export { BsAlphaStripComponent, BsColorPickerComponent, BsColorPickerValueAccessor, BsColorWheelComponent, BsLuminosityStripComponent, BsSliderComponent, BsThumbDirective, BsTrackDirective };
160
- export type { HS, HslColor, HtmlColor, RgbColor };
168
+ export { BsAlphaStripComponent, BsBrightnessStripComponent, BsColorPickerComponent, BsColorPickerValueAccessor, BsColorWheelComponent, BsSliderComponent, BsThumbDirective, BsTrackDirective, hex2hsv, hex2rgb, hs2polar, hsl2hsv, hsl2rgb, hsv2hex, hsv2hsl, hsv2rgb, polar2hs, rgb2hex, rgb2hsl, rgb2hsv };
169
+ export type { HS, HslColor, HsvColor, HtmlColor, RgbColor };
@@ -114,6 +114,7 @@ declare class MintDockManagerElement extends LitElement {
114
114
  private cornerSnapXTargets;
115
115
  private cornerSnapYTargets;
116
116
  private showSnapMarkers;
117
+ debugLayoutIntegrity: boolean;
117
118
  private renderSnapMarkersForCorner;
118
119
  private clearSnapMarkers;
119
120
  private pendingDragEndTimeout;
@@ -275,8 +276,6 @@ declare class MintDockManagerElement extends LitElement {
275
276
  private getNodeAtPath;
276
277
  private resolveSplitNode;
277
278
  private replaceNodeInTree;
278
- private cleanupEmptyStackInTree;
279
- private cleanupSplitIfNecessary;
280
279
  private dockNodeBeside;
281
280
  private forEachStack;
282
281
  private findStackContainingPane;
@@ -294,12 +293,42 @@ declare class MintDockManagerElement extends LitElement {
294
293
  private removePaneFromLocation;
295
294
  private addPaneToLocation;
296
295
  private setActivePaneForLocation;
297
- private cleanupLocation;
298
296
  private reorderPaneInLocation;
299
297
  private removeFloatingAt;
300
298
  private removePaneFromFloating;
301
299
  private normalizeSizesArray;
302
300
  private normalizeSplitNode;
301
+ /**
302
+ * Bottom-up layout sanitizer. Returns a normalized version of `node` where:
303
+ * - Empty stacks (panes.length === 0) are dropped (returned as null).
304
+ * - A stack's `activePane` is repaired if it no longer references one of `panes`.
305
+ * - Splits whose direction matches a child split are flattened, with sizes
306
+ * combined multiplicatively so the resulting on-screen pixel layout is
307
+ * identical to the pre-merge one.
308
+ * - Splits with 0 children become null. Splits with 1 child are unwrapped.
309
+ *
310
+ * Idempotent: passing the result back through this method yields the same
311
+ * structure. Mutates the input tree in place but only returns nodes that
312
+ * remain part of the layout.
313
+ */
314
+ private normalizeLayoutNode;
315
+ /**
316
+ * Apply `normalizeLayoutNode` to `rootLayout` and every floating window's
317
+ * root, drop floating windows whose root collapses to null, and repair
318
+ * stale `activePane` references on each floating window. Run this at the
319
+ * end of every public mutation entry point (drop handlers, layout setter,
320
+ * pane removal) so the tree the renderer sees is always in canonical form.
321
+ */
322
+ private normalizeAllLayouts;
323
+ /**
324
+ * Dev-mode integrity guard: walks every pane referenced by the current
325
+ * layout and asserts that the rendered shadow DOM contains a matching
326
+ * `<slot name="${pane}">`. A missing slot means the layout tree got into
327
+ * a state the renderer can't display — typically a missed normalize() call
328
+ * or a render bug. Opt in via the `debug-layout-integrity` attribute or
329
+ * the `debugLayoutIntegrity` property; off by default.
330
+ */
331
+ private verifyProjectionSlots;
303
332
  private dispatchLayoutChanged;
304
333
  private cloneLayoutNode;
305
334
  private cloneFloatingArray;
@@ -307,6 +336,14 @@ declare class MintDockManagerElement extends LitElement {
307
336
 
308
337
  declare class BsDockManagerComponent implements AfterViewInit {
309
338
  readonly layout: _angular_core.InputSignal<DockLayoutNode | DockLayout | null>;
339
+ /**
340
+ * Dev-mode integrity guard. When `true`, the inner web component throws
341
+ * after each render if any registered pane has no projection slot in the
342
+ * shadow DOM — a signal that the layout tree got corrupted. Off by default;
343
+ * enable in development to catch layout-logic bugs loudly.
344
+ */
345
+ readonly debugLayoutIntegrity: _angular_core.InputSignal<boolean>;
346
+ protected readonly debugLayoutIntegrityAttr: _angular_core.Signal<"" | null>;
310
347
  get layoutSnapshot(): DockLayoutSnapshot | null;
311
348
  readonly layoutChange: _angular_core.OutputEmitterRef<DockLayoutSnapshot | null>;
312
349
  readonly layoutSnapshotChange: _angular_core.OutputEmitterRef<DockLayoutSnapshot>;
@@ -324,7 +361,7 @@ declare class BsDockManagerComponent implements AfterViewInit {
324
361
  private stringifyLayout;
325
362
  private cloneLayout;
326
363
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsDockManagerComponent, never>;
327
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsDockManagerComponent, "bs-dock-manager", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, { "layoutChange": "layoutChange"; "layoutSnapshotChange": "layoutSnapshotChange"; }, ["panes"], never, true, never>;
364
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsDockManagerComponent, "bs-dock-manager", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "debugLayoutIntegrity": { "alias": "debugLayoutIntegrity"; "required": false; "isSignal": true; }; }, { "layoutChange": "layoutChange"; "layoutSnapshotChange": "layoutSnapshotChange"; }, ["panes"], never, true, never>;
328
365
  }
329
366
 
330
367
  export { BsDockManagerComponent, BsDockPaneComponent, MintDockManagerElement };