@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.
@@ -29,17 +29,23 @@ export type UICanvasConfig = {
29
29
  padding: Padding;
30
30
  size: Size;
31
31
  useAppSize: boolean;
32
- useSafeArea: boolean;
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?: boolean;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"UICanvas.d.ts","sourceRoot":"","sources":["../../src/ui/UICanvas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UICanvas.d.ts","sourceRoot":"","sources":["../../src/ui/UICanvas.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caperjs/core",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "title": "Caper",
5
5
  "description": "An opinionated HTML game framework built on PixiJS v8",
6
6
  "bin": {
@@ -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;
@@ -73,11 +73,18 @@ export type UICanvasConfig = {
73
73
  padding: Padding;
74
74
  size: Size;
75
75
  useAppSize: boolean;
76
- useSafeArea: boolean;
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?: boolean;
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.config.useSafeArea ? this.app.safeArea : zeroPadding,
471
+ resolveSafeArea(this.app.safeArea, this.config.useSafeArea),
453
472
  );
454
473
  this.layout = {
455
474
  paddingLeft: padding.left,
package/src/version.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated during the build process.
2
- export const version: string = '0.7.2';
2
+ export const version: string = '0.7.3';
3
3
  export const pixiVersion: string = '8.22.0';