@caperjs/core 0.7.2 → 0.7.3
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/cli/native.mjs +21 -4
- package/cli/native.test.mjs +35 -3
- package/extras/llms.txt +10 -1
- package/lib/caper.mjs +86 -86
- package/lib/caper.mjs.map +1 -1
- package/lib/{const-Cj14a5U2.js → const-BClauBNo.js} +103 -95
- package/lib/{const-Cj14a5U2.js.map → const-BClauBNo.js.map} +1 -1
- package/lib/ui/UICanvas.d.ts +10 -2
- package/lib/ui/UICanvas.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ui/UICanvas.test.ts +23 -1
- package/src/ui/UICanvas.ts +22 -3
- package/src/version.ts +1 -1
package/lib/ui/UICanvas.d.ts
CHANGED
|
@@ -29,17 +29,23 @@ export type UICanvasConfig = {
|
|
|
29
29
|
padding: Padding;
|
|
30
30
|
size: Size;
|
|
31
31
|
useAppSize: boolean;
|
|
32
|
-
useSafeArea:
|
|
32
|
+
useSafeArea: UICanvasSafeArea;
|
|
33
33
|
layout?: Omit<LayoutOptions, 'target'> | null | boolean;
|
|
34
34
|
autoLayoutChildren?: boolean;
|
|
35
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* Which device safe-area insets the canvas pads by: `true` (all four, the default), `false`
|
|
38
|
+
* (none), or per edge, where an edge left out stays on. `{ top: false }` lets top-row UI sit
|
|
39
|
+
* in the camera strip of a punch-hole phone while the bottom still clears the gesture bar.
|
|
40
|
+
*/
|
|
41
|
+
export type UICanvasSafeArea = boolean | Partial<Record<keyof Padding, boolean>>;
|
|
36
42
|
export declare const UICanvasConfigKeys: (keyof UICanvasConfig)[];
|
|
37
43
|
export type UICanvasProps = {
|
|
38
44
|
debug: boolean;
|
|
39
45
|
padding: Partial<Padding> | PointLike;
|
|
40
46
|
size?: SizeLike;
|
|
41
47
|
useAppSize?: boolean;
|
|
42
|
-
useSafeArea?:
|
|
48
|
+
useSafeArea?: UICanvasSafeArea;
|
|
43
49
|
layout?: Omit<LayoutOptions, 'target'> | null | boolean;
|
|
44
50
|
autoLayoutChildren?: boolean;
|
|
45
51
|
};
|
|
@@ -49,6 +55,8 @@ export type UICanvasProps = {
|
|
|
49
55
|
* re-derived on every resize without compounding.
|
|
50
56
|
*/
|
|
51
57
|
export declare function computeEffectivePadding(padding: Padding, safeArea: Padding): Padding;
|
|
58
|
+
/** The safe-area insets `useSafeArea` keeps: all, none, or the edges not set to `false`. */
|
|
59
|
+
export declare function resolveSafeArea(safeArea: Padding, useSafeArea: UICanvasSafeArea): Padding;
|
|
52
60
|
declare const _UICanvas: (new () => import('..').IFactory<{
|
|
53
61
|
existing: <TEntity>(entity: TEntity, props?: Partial<import('..').ExistingProps>) => TEntity;
|
|
54
62
|
container: (props?: Partial<import('..').ContainerProps> | undefined) => Container;
|
package/lib/ui/UICanvas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UICanvas.d.ts","sourceRoot":"","sources":["../../src/ui/UICanvas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,IAAI,aAAa,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAarF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,UAAU,GACV,YAAY,GACZ,KAAK,GACL,cAAc,GACd,aAAa,GACb,eAAe,GACf,QAAQ,GACR,UAAU,GACV,aAAa,GACb,aAAa,GACb,MAAM,GACN,WAAW,GACX,cAAc,GACd,cAAc,GACd,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;sCAEsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;kEACkE;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAQpF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"UICanvas.d.ts","sourceRoot":"","sources":["../../src/ui/UICanvas.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/ui/UICanvas.test.ts
CHANGED
|
@@ -23,7 +23,7 @@ vi.mock('../core/Application', async () => {
|
|
|
23
23
|
// constructed. See importOrder.containerFirst.test.ts.
|
|
24
24
|
import '../mixins/factory/const';
|
|
25
25
|
import { Signal } from '../signals';
|
|
26
|
-
import { computeEffectivePadding, UICanvas } from './UICanvas';
|
|
26
|
+
import { computeEffectivePadding, resolveSafeArea, UICanvas } from './UICanvas';
|
|
27
27
|
|
|
28
28
|
const zero = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
29
29
|
|
|
@@ -51,6 +51,28 @@ describe('computeEffectivePadding', () => {
|
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
+
describe('resolveSafeArea', () => {
|
|
55
|
+
const insets = { top: 51, right: 4, bottom: 34, left: 4 };
|
|
56
|
+
|
|
57
|
+
it('keeps every inset when useSafeArea is true', () => {
|
|
58
|
+
expect(resolveSafeArea(insets, true)).toEqual(insets);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('drops every inset when useSafeArea is false', () => {
|
|
62
|
+
expect(resolveSafeArea(insets, false)).toEqual(zero);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('drops only the edges set to false, keeping the ones left out', () => {
|
|
66
|
+
expect(resolveSafeArea(insets, { top: false })).toEqual({ top: 0, right: 4, bottom: 34, left: 4 });
|
|
67
|
+
expect(resolveSafeArea(insets, { top: false, bottom: true, left: false })).toEqual({
|
|
68
|
+
top: 0,
|
|
69
|
+
right: 4,
|
|
70
|
+
bottom: 34,
|
|
71
|
+
left: 0,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
|
|
54
76
|
describe('UICanvas element reordering', () => {
|
|
55
77
|
let app: any;
|
|
56
78
|
let originalAppDescriptor: PropertyDescriptor | undefined;
|
package/src/ui/UICanvas.ts
CHANGED
|
@@ -73,11 +73,18 @@ export type UICanvasConfig = {
|
|
|
73
73
|
padding: Padding;
|
|
74
74
|
size: Size;
|
|
75
75
|
useAppSize: boolean;
|
|
76
|
-
useSafeArea:
|
|
76
|
+
useSafeArea: UICanvasSafeArea;
|
|
77
77
|
layout?: Omit<LayoutOptions, 'target'> | null | boolean;
|
|
78
78
|
autoLayoutChildren?: boolean;
|
|
79
79
|
};
|
|
80
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Which device safe-area insets the canvas pads by: `true` (all four, the default), `false`
|
|
83
|
+
* (none), or per edge, where an edge left out stays on. `{ top: false }` lets top-row UI sit
|
|
84
|
+
* in the camera strip of a punch-hole phone while the bottom still clears the gesture bar.
|
|
85
|
+
*/
|
|
86
|
+
export type UICanvasSafeArea = boolean | Partial<Record<keyof Padding, boolean>>;
|
|
87
|
+
|
|
81
88
|
export const UICanvasConfigKeys: (keyof UICanvasConfig)[] = [
|
|
82
89
|
'debug',
|
|
83
90
|
'padding',
|
|
@@ -92,7 +99,7 @@ export type UICanvasProps = {
|
|
|
92
99
|
padding: Partial<Padding> | PointLike;
|
|
93
100
|
size?: SizeLike;
|
|
94
101
|
useAppSize?: boolean;
|
|
95
|
-
useSafeArea?:
|
|
102
|
+
useSafeArea?: UICanvasSafeArea;
|
|
96
103
|
layout?: Omit<LayoutOptions, 'target'> | null | boolean;
|
|
97
104
|
autoLayoutChildren?: boolean;
|
|
98
105
|
};
|
|
@@ -113,6 +120,18 @@ export function computeEffectivePadding(padding: Padding, safeArea: Padding): Pa
|
|
|
113
120
|
};
|
|
114
121
|
}
|
|
115
122
|
|
|
123
|
+
/** The safe-area insets `useSafeArea` keeps: all, none, or the edges not set to `false`. */
|
|
124
|
+
export function resolveSafeArea(safeArea: Padding, useSafeArea: UICanvasSafeArea): Padding {
|
|
125
|
+
if (useSafeArea === true) return { ...safeArea };
|
|
126
|
+
if (useSafeArea === false) return { ...zeroPadding };
|
|
127
|
+
return {
|
|
128
|
+
top: useSafeArea.top === false ? 0 : safeArea.top,
|
|
129
|
+
right: useSafeArea.right === false ? 0 : safeArea.right,
|
|
130
|
+
bottom: useSafeArea.bottom === false ? 0 : safeArea.bottom,
|
|
131
|
+
left: useSafeArea.left === false ? 0 : safeArea.left,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
116
135
|
const defaultLayout = {
|
|
117
136
|
flexGrow: 0,
|
|
118
137
|
flexShrink: 0,
|
|
@@ -449,7 +468,7 @@ export class UICanvas extends _UICanvas {
|
|
|
449
468
|
private _applyPadding() {
|
|
450
469
|
const padding = computeEffectivePadding(
|
|
451
470
|
this.config.padding,
|
|
452
|
-
this.
|
|
471
|
+
resolveSafeArea(this.app.safeArea, this.config.useSafeArea),
|
|
453
472
|
);
|
|
454
473
|
this.layout = {
|
|
455
474
|
paddingLeft: padding.left,
|
package/src/version.ts
CHANGED