@octane-xplat/camera 0.15.0 → 0.16.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,6 +1,6 @@
1
1
  {
2
2
  "name": "@octane-xplat/camera",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "Live camera preview for Octane xplat — web getUserMedia + native capture (AVCapture / CameraX)",
5
5
  "keywords": [
6
6
  "android",
@@ -43,16 +43,16 @@
43
43
  "access": "public"
44
44
  },
45
45
  "dependencies": {
46
- "@octane-xplat/platform": "0.15.0",
46
+ "@octane-xplat/platform": "0.16.0",
47
47
  "mediabunny": "1.61.3"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@nativescript-community/octane": "0.2.5",
51
51
  "@nativescript/core": "9.1.3",
52
- "@octane-xplat/macos-renderer": "0.15.0",
52
+ "@octane-xplat/macos-renderer": "0.16.0",
53
53
  "@octanejs/vite-plugin": "0.1.61",
54
54
  "octane": "0.11.0",
55
- "tsrx-typegen": "0.3.0",
55
+ "tsrx-typegen": "0.3.1",
56
56
  "typescript": "5.9.3",
57
57
  "vite": "8.3.0",
58
58
  "vitest": "4.1.11"
@@ -130,21 +130,7 @@ export function CameraView(props: CameraViewProps) @{
130
130
 
131
131
  useEffect(() => observePreviewTap(host.current, props.onTap), [props.onTap])
132
132
 
133
- <gridlayout
134
- id={props.id}
135
- rows="*"
136
- columns="*"
137
- className={['vx-layers', 'vx-cameraview', props.className]}
138
- style={{ backgroundColor: '#000', ...props.style }}
139
- {...layoutChildProps(props)}
140
- accessible={props.accessible}
141
- accessibilityLabel={props.accessibilityLabel}
142
- accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any}
143
- accessibilityHint={props.accessibilityHint}
144
- accessibilityValue={props.accessibilityValue}
145
- accessibilityState={nativeAccessibilityState(props.accessibilityState) as any}
146
- accessibilityLiveRegion={props.accessibilityLiveRegion as any}
147
- >
148
- <camerapreview ref={bindHost} row={0} col={0} />
149
- </gridlayout>
133
+ <masonview id={props.id} className={['vx-layers', 'vx-cameraview', props.className]} {...layoutChildProps(props, {display: "grid", gridTemplateRows: "1fr", gridTemplateColumns: "1fr", ...({ backgroundColor: '#000', ...props.style })})} accessible={props.accessible} accessibilityLabel={props.accessibilityLabel} accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any} accessibilityHint={props.accessibilityHint} accessibilityValue={props.accessibilityValue} accessibilityState={nativeAccessibilityState(props.accessibilityState) as any} accessibilityLiveRegion={props.accessibilityLiveRegion as any}>
134
+ <camerapreview ref={bindHost} style={{gridRow: '1', gridColumn: '1'}} />
135
+ </masonview>
150
136
  }
@@ -83,20 +83,5 @@ export function CameraView(props: CameraViewProps) @{
83
83
 
84
84
  useEffect(() => observePreviewTap(host.current, props.onTap), [props.onTap])
85
85
 
86
- <gridlayout
87
- ref={bindHost}
88
- id={props.id}
89
- rows="*"
90
- columns="*"
91
- className={['vx-layers', 'vx-cameraview', props.className]}
92
- style={{ backgroundColor: '#000', ...props.style }}
93
- {...layoutChildProps(props)}
94
- accessible={props.accessible}
95
- accessibilityLabel={props.accessibilityLabel}
96
- accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any}
97
- accessibilityHint={props.accessibilityHint}
98
- accessibilityValue={props.accessibilityValue}
99
- accessibilityState={nativeAccessibilityState(props.accessibilityState) as any}
100
- accessibilityLiveRegion={props.accessibilityLiveRegion as any}
101
- />
86
+ <masonview ref={bindHost} id={props.id} className={['vx-layers', 'vx-cameraview', props.className]} {...layoutChildProps(props, {display: "grid", gridTemplateRows: "1fr", gridTemplateColumns: "1fr", ...({ backgroundColor: '#000', ...props.style })})} accessible={props.accessible} accessibilityLabel={props.accessibilityLabel} accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any} accessibilityHint={props.accessibilityHint} accessibilityValue={props.accessibilityValue} accessibilityState={nativeAccessibilityState(props.accessibilityState) as any} accessibilityLiveRegion={props.accessibilityLiveRegion as any}/>
102
87
  }
@@ -76,20 +76,5 @@ export function CameraView(props: CameraViewProps) @{
76
76
 
77
77
  useEffect(() => observePreviewTap(host.current, props.onTap), [props.onTap])
78
78
 
79
- <gridlayout
80
- ref={bindHost}
81
- id={props.id}
82
- rows="*"
83
- columns="*"
84
- className={['vx-layers', 'vx-cameraview', props.className]}
85
- style={{ backgroundColor: '#000000', ...props.style }}
86
- {...layoutChildProps(props)}
87
- accessible={props.accessible}
88
- accessibilityLabel={props.accessibilityLabel}
89
- accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any}
90
- accessibilityHint={props.accessibilityHint}
91
- accessibilityValue={props.accessibilityValue}
92
- accessibilityState={nativeAccessibilityState(props.accessibilityState) as any}
93
- accessibilityLiveRegion={props.accessibilityLiveRegion as any}
94
- />
79
+ <masonview ref={bindHost} id={props.id} className={['vx-layers', 'vx-cameraview', props.className]} {...layoutChildProps(props, {display: "grid", gridTemplateRows: "1fr", gridTemplateColumns: "1fr", ...({ backgroundColor: '#000000', ...props.style })})} accessible={props.accessible} accessibilityLabel={props.accessibilityLabel} accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any} accessibilityHint={props.accessibilityHint} accessibilityValue={props.accessibilityValue} accessibilityState={nativeAccessibilityState(props.accessibilityState) as any} accessibilityLiveRegion={props.accessibilityLiveRegion as any}/>
95
80
  }
@@ -106,21 +106,7 @@ export function CameraView(props: CameraViewProps) @{
106
106
 
107
107
  useEffect(() => observePreviewTap(host.current, props.onTap), [props.onTap])
108
108
 
109
- <gridlayout
110
- id={props.id}
111
- rows="*"
112
- columns="*"
113
- className={['vx-layers', 'vx-cameraview', props.className]}
114
- style={{ backgroundColor: '#000', ...props.style }}
115
- {...layoutChildProps(props)}
116
- accessible={props.accessible}
117
- accessibilityLabel={props.accessibilityLabel}
118
- accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any}
119
- accessibilityHint={props.accessibilityHint}
120
- accessibilityValue={props.accessibilityValue}
121
- accessibilityState={nativeAccessibilityState(props.accessibilityState) as any}
122
- accessibilityLiveRegion={props.accessibilityLiveRegion as any}
123
- >
124
- <camerapreview ref={bindHost} row={0} col={0} />
125
- </gridlayout>
109
+ <masonview id={props.id} className={['vx-layers', 'vx-cameraview', props.className]} {...layoutChildProps(props, {display: "grid", gridTemplateRows: "1fr", gridTemplateColumns: "1fr", ...({ backgroundColor: '#000', ...props.style })})} accessible={props.accessible} accessibilityLabel={props.accessibilityLabel} accessibilityRole={nativeAccessibilityRole(props.accessibilityRole) as any} accessibilityHint={props.accessibilityHint} accessibilityValue={props.accessibilityValue} accessibilityState={nativeAccessibilityState(props.accessibilityState) as any} accessibilityLiveRegion={props.accessibilityLiveRegion as any}>
110
+ <camerapreview ref={bindHost} style={{gridRow: '1', gridColumn: '1'}} />
111
+ </masonview>
126
112
  }
@@ -2,27 +2,48 @@ import type { CameraViewProps } from './props'
2
2
  import { isIOS } from '@nativescript/core'
3
3
 
4
4
  /** NativeScript reads layout fields from a child view during parent layout. */
5
- export function layoutChildProps(props: CameraViewProps): Record<string, any> {
6
- const result: Record<string, any> = {}
7
- for (const key of [
8
- 'row',
9
- 'col',
10
- 'rowSpan',
11
- 'colSpan',
12
- 'dock',
13
- 'left',
14
- 'top',
15
- 'flexGrow',
16
- 'flexShrink',
17
- 'alignSelf',
18
- 'order',
19
- ] as const) {
5
+ export function layoutChildProps(
6
+ props: CameraViewProps,
7
+ baseStyle = props.style,
8
+ ): { style: Record<string, any> } {
9
+ const style: Record<string, any> = { ...(typeof baseStyle === 'object' ? baseStyle : {}) }
10
+ if (props.row !== undefined) {
11
+ style.gridRow = `${props.row + 1} / span ${props.rowSpan ?? 1}`
12
+ } else if (props.rowSpan !== undefined) {
13
+ style.gridRow = `span ${props.rowSpan}`
14
+ }
15
+ if (props.col !== undefined) {
16
+ style.gridColumn = `${props.col + 1} / span ${props.colSpan ?? 1}`
17
+ } else if (props.colSpan !== undefined) {
18
+ style.gridColumn = `span ${props.colSpan}`
19
+ }
20
+ if (props.dock !== undefined) {
21
+ style.position = style.position ?? 'absolute'
22
+ if (props.dock === 'left' || props.dock === 'top' || props.dock === 'bottom') {
23
+ style.left = style.left ?? 0
24
+ }
25
+
26
+ if (props.dock === 'right' || props.dock === 'top' || props.dock === 'bottom') {
27
+ style.right = style.right ?? 0
28
+ }
29
+
30
+ if (props.dock === 'top' || props.dock === 'left' || props.dock === 'right') {
31
+ style.top = style.top ?? 0
32
+ }
33
+
34
+ if (props.dock === 'bottom' || props.dock === 'left' || props.dock === 'right') {
35
+ style.bottom = style.bottom ?? 0
36
+ }
37
+ }
38
+ for (const key of ['left', 'top', 'flexGrow', 'flexShrink', 'alignSelf', 'order'] as const) {
20
39
  if (props[key] !== undefined) {
21
- result[key] = props[key]
40
+ style[key] = props[key]
22
41
  }
23
42
  }
24
-
25
- return result
43
+ if ((props.left !== undefined || props.top !== undefined) && props.dock === undefined) {
44
+ style.position = style.position ?? 'absolute'
45
+ }
46
+ return { style }
26
47
  }
27
48
 
28
49
  export function applyEscapeProps(view: any, props: { ios?: any; android?: any }): void {
@@ -5,8 +5,11 @@ import type { CameraViewProps } from './props'
5
5
  * branch. Pure helpers are re-declared here to keep divergence at the file
6
6
  * boundary. */
7
7
 
8
- export function layoutChildProps(props: CameraViewProps): Record<string, any> {
9
- const result: Record<string, any> = {}
8
+ export function layoutChildProps(
9
+ props: CameraViewProps,
10
+ baseStyle = props.style,
11
+ ): Record<string, any> {
12
+ const result: Record<string, any> = { style: baseStyle }
10
13
  for (const key of [
11
14
  'row',
12
15
  'col',