@react-native-ohos/react-native-safe-area-context 5.1.1-rc.1

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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.OpenSource +11 -0
  3. package/README.md +10 -0
  4. package/harmony/safe_area/LICENSE +21 -0
  5. package/harmony/safe_area/NOTICE +33 -0
  6. package/harmony/safe_area/README.md +270 -0
  7. package/harmony/safe_area/build-profile.json5 +9 -0
  8. package/harmony/safe_area/hvigorfile.ts +6 -0
  9. package/harmony/safe_area/index.ets +26 -0
  10. package/harmony/safe_area/oh-package.json5 +22 -0
  11. package/harmony/safe_area/src/main/cpp/CMakeLists.txt +9 -0
  12. package/harmony/safe_area/src/main/cpp/SafeAreaBeanData.h +56 -0
  13. package/harmony/safe_area/src/main/cpp/SafeAreaColumnNode.cpp +45 -0
  14. package/harmony/safe_area/src/main/cpp/SafeAreaColumnNode.h +38 -0
  15. package/harmony/safe_area/src/main/cpp/SafeAreaManagerMap.cpp +66 -0
  16. package/harmony/safe_area/src/main/cpp/SafeAreaManagerMap.h +57 -0
  17. package/harmony/safe_area/src/main/cpp/SafeAreaProviderComponentInstance.cpp +75 -0
  18. package/harmony/safe_area/src/main/cpp/SafeAreaProviderComponentInstance.h +49 -0
  19. package/harmony/safe_area/src/main/cpp/SafeAreaStackNode.cpp +94 -0
  20. package/harmony/safe_area/src/main/cpp/SafeAreaStackNode.h +53 -0
  21. package/harmony/safe_area/src/main/cpp/SafeAreaViewComponentInstance.cpp +94 -0
  22. package/harmony/safe_area/src/main/cpp/SafeAreaViewComponentInstance.h +64 -0
  23. package/harmony/safe_area/src/main/cpp/SafeAreaViewPackage.h +60 -0
  24. package/harmony/safe_area/src/main/cpp/TurboModuleRequest.cpp +63 -0
  25. package/harmony/safe_area/src/main/cpp/TurboModuleRequest.h +33 -0
  26. package/harmony/safe_area/src/main/cpp/generated/RNOH/generated/BaseReactNativeSafeAreaContextPackage.h +72 -0
  27. package/harmony/safe_area/src/main/cpp/generated/RNOH/generated/components/BaseRNCSafeAreaProviderComponentInstance.h +18 -0
  28. package/harmony/safe_area/src/main/cpp/generated/RNOH/generated/components/BaseRNCSafeAreaViewComponentInstance.h +18 -0
  29. package/harmony/safe_area/src/main/cpp/generated/RNOH/generated/components/RNCSafeAreaProviderJSIBinder.h +27 -0
  30. package/harmony/safe_area/src/main/cpp/generated/RNOH/generated/components/RNCSafeAreaViewJSIBinder.h +30 -0
  31. package/harmony/safe_area/src/main/cpp/generated/RNOH/generated/turbo_modules/RNCSafeAreaContext.cpp +16 -0
  32. package/harmony/safe_area/src/main/cpp/generated/RNOH/generated/turbo_modules/RNCSafeAreaContext.h +16 -0
  33. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/ComponentDescriptors.h +25 -0
  34. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/EventEmitters.cpp +56 -0
  35. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/EventEmitters.h +59 -0
  36. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/Props.cpp +36 -0
  37. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/Props.h +88 -0
  38. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/ShadowNodes.cpp +20 -0
  39. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/ShadowNodes.h +39 -0
  40. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/States.cpp +18 -0
  41. package/harmony/safe_area/src/main/cpp/generated/react/renderer/components/react_native_safe_area_context/States.h +23 -0
  42. package/harmony/safe_area/src/main/ets/Logger.ts +64 -0
  43. package/harmony/safe_area/src/main/ets/SafeAreaProvider.ets +128 -0
  44. package/harmony/safe_area/src/main/ets/SafeAreaProviderModifier.ets +121 -0
  45. package/harmony/safe_area/src/main/ets/SafeAreaView.ets +242 -0
  46. package/harmony/safe_area/src/main/ets/SafeAreaViewModifier.ets +140 -0
  47. package/harmony/safe_area/src/main/ets/SafeAreaViewPackage.ts +46 -0
  48. package/harmony/safe_area/src/main/ets/SafeViewTurboModule.ts +131 -0
  49. package/harmony/safe_area/src/main/ets/common/SafeAreaType.ts +70 -0
  50. package/harmony/safe_area/src/main/module.json5 +7 -0
  51. package/harmony/safe_area/src/main/resources/base/element/string.json +8 -0
  52. package/harmony/safe_area/src/main/resources/en_US/element/string.json +8 -0
  53. package/harmony/safe_area/src/main/resources/zh_CN/element/string.json +8 -0
  54. package/harmony/safe_area/ts.ts +26 -0
  55. package/harmony/safe_area.har +0 -0
  56. package/lib/commonjs/SafeArea.types.js +6 -0
  57. package/lib/commonjs/SafeArea.types.js.map +1 -0
  58. package/lib/commonjs/SafeAreaView.js +184 -0
  59. package/lib/commonjs/SafeAreaView.js.map +1 -0
  60. package/lib/commonjs/index.js +51 -0
  61. package/lib/commonjs/index.js.map +1 -0
  62. package/lib/commonjs/specs/NativeSafeAreaContext.js +9 -0
  63. package/lib/commonjs/specs/NativeSafeAreaContext.js.map +1 -0
  64. package/lib/commonjs/specs/NativeSafeAreaProvider.js +10 -0
  65. package/lib/commonjs/specs/NativeSafeAreaProvider.js.map +1 -0
  66. package/lib/commonjs/specs/NativeSafeAreaView.js +12 -0
  67. package/lib/commonjs/specs/NativeSafeAreaView.js.map +1 -0
  68. package/lib/module/SafeArea.types.js +2 -0
  69. package/lib/module/SafeArea.types.js.map +1 -0
  70. package/lib/module/SafeAreaView.js +176 -0
  71. package/lib/module/SafeAreaView.js.map +1 -0
  72. package/lib/module/index.js +7 -0
  73. package/lib/module/index.js.map +1 -0
  74. package/lib/module/specs/NativeSafeAreaContext.js +3 -0
  75. package/lib/module/specs/NativeSafeAreaContext.js.map +1 -0
  76. package/lib/module/specs/NativeSafeAreaProvider.js +3 -0
  77. package/lib/module/specs/NativeSafeAreaProvider.js.map +1 -0
  78. package/lib/module/specs/NativeSafeAreaView.js +5 -0
  79. package/lib/module/specs/NativeSafeAreaView.js.map +1 -0
  80. package/lib/typescript/SafeArea.types.d.ts +36 -0
  81. package/lib/typescript/SafeArea.types.d.ts.map +1 -0
  82. package/lib/typescript/SafeAreaView.d.ts +6 -0
  83. package/lib/typescript/SafeAreaView.d.ts.map +1 -0
  84. package/lib/typescript/index.d.ts +5 -0
  85. package/lib/typescript/index.d.ts.map +1 -0
  86. package/lib/typescript/specs/NativeSafeAreaContext.d.ts +23 -0
  87. package/lib/typescript/specs/NativeSafeAreaContext.d.ts.map +1 -0
  88. package/lib/typescript/specs/NativeSafeAreaProvider.d.ts +22 -0
  89. package/lib/typescript/specs/NativeSafeAreaProvider.d.ts.map +1 -0
  90. package/lib/typescript/specs/NativeSafeAreaView.d.ts +24 -0
  91. package/lib/typescript/specs/NativeSafeAreaView.d.ts.map +1 -0
  92. package/package.json +139 -0
  93. package/src/SafeArea.types.ts +47 -0
  94. package/src/SafeAreaView.tsx +201 -0
  95. package/src/index.tsx +6 -0
  96. package/src/specs/NativeSafeAreaContext.ts +23 -0
  97. package/src/specs/NativeSafeAreaProvider.ts +29 -0
  98. package/src/specs/NativeSafeAreaView.ts +28 -0
@@ -0,0 +1,176 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import * as React from 'react';
3
+ import NativeSafeAreaView from './specs/NativeSafeAreaView';
4
+ import { useMemo, useState } from 'react';
5
+ const defaultEdges = {
6
+ top: 'additive',
7
+ left: 'additive',
8
+ bottom: 'additive',
9
+ right: 'additive'
10
+ };
11
+ let isOnChange = false;
12
+ let realTop = 0;
13
+ let realLeft = 0;
14
+ let realBottom = 0;
15
+ let realRight = 0;
16
+ let safeAreaTop = 0;
17
+ let safeAreaLeft = 0;
18
+ let safeAreaBottom = 0;
19
+ let safeAreaRight = 0;
20
+ function getEdgeValue(edgeMode, insetValue, edgeValue) {
21
+ if (edgeMode === 'off') {
22
+ return edgeValue;
23
+ } else if (edgeMode === 'maximum') {
24
+ return Math.max(insetValue, edgeValue);
25
+ } else {
26
+ return insetValue + edgeValue;
27
+ }
28
+ }
29
+ export const SafeAreaView = /*#__PURE__*/React.forwardRef(({
30
+ edges,
31
+ ...props
32
+ }, ref) => {
33
+ const nativeEdges = useMemo(() => {
34
+ if (edges == null) {
35
+ return defaultEdges;
36
+ }
37
+ const edgesObj = Array.isArray(edges) ? edges.reduce((acc, edge) => {
38
+ acc[edge] = 'additive';
39
+ return acc;
40
+ }, {}) :
41
+ // ts has trouble with refining readonly arrays.
42
+ edges;
43
+
44
+ // make sure that we always pass all edges, required for fabric
45
+ const requiredEdges = {
46
+ top: edgesObj.top ?? 'off',
47
+ right: edgesObj.right ?? 'off',
48
+ bottom: edgesObj.bottom ?? 'off',
49
+ left: edgesObj.left ?? 'off'
50
+ };
51
+ return requiredEdges;
52
+ }, [edges]);
53
+ const [isFirstRefresh, setIsFirstRefresh] = useState(false);
54
+ let safeAreaStyle = [props.style];
55
+ let rawPadding = 0;
56
+ let rawMargin = 0;
57
+ let rawPaddingTop = undefined;
58
+ let rawPaddingLeft = undefined;
59
+ let rawPaddingBottom = undefined;
60
+ let rawPaddingRight = undefined;
61
+ let rawMarginTop = undefined;
62
+ let rawMarginLeft = undefined;
63
+ let rawMarginBottom = undefined;
64
+ let rawMarginRight = undefined;
65
+ const safeAreaChange = e => {
66
+ if (e.nativeEvent.safeAreaViewInsetsValue?.top) {
67
+ safeAreaTop = e.nativeEvent.safeAreaViewInsetsValue?.top;
68
+ }
69
+ if (e.nativeEvent.safeAreaViewInsetsValue?.right) {
70
+ safeAreaRight = e.nativeEvent.safeAreaViewInsetsValue?.right;
71
+ }
72
+ if (e.nativeEvent.safeAreaViewInsetsValue?.bottom) {
73
+ safeAreaBottom = e.nativeEvent.safeAreaViewInsetsValue?.bottom;
74
+ }
75
+ if (e.nativeEvent.safeAreaViewInsetsValue?.left) {
76
+ safeAreaLeft = e.nativeEvent.safeAreaViewInsetsValue?.left;
77
+ }
78
+ if (!isOnChange) {
79
+ setIsFirstRefresh(true);
80
+ }
81
+ isOnChange = true;
82
+ };
83
+ let rawProp = props.style;
84
+ let i;
85
+ if (rawProp && rawProp.length > 0) {
86
+ for (i = 0; i < rawProp.length; i++) {
87
+ if (rawProp[i]?.padding) {
88
+ rawPadding = rawProp[i]?.padding;
89
+ }
90
+ if (rawProp[i]?.margin) {
91
+ rawMargin = rawProp[i]?.margin;
92
+ }
93
+ if (rawProp[i]?.paddingTop) {
94
+ rawPaddingTop = rawProp[i]?.paddingTop;
95
+ }
96
+ if (rawProp[i]?.paddingLeft) {
97
+ rawPaddingLeft = rawProp[i]?.paddingLeft;
98
+ }
99
+ if (rawProp[i]?.paddingRight) {
100
+ rawPaddingRight = rawProp[i]?.paddingRight;
101
+ }
102
+ if (rawProp[i]?.paddingBottom) {
103
+ rawPaddingBottom = rawProp[i]?.paddingBottom;
104
+ }
105
+ if (rawProp[i]?.marginTop) {
106
+ rawMarginTop = rawProp[i]?.marginTop;
107
+ }
108
+ if (rawProp[i]?.marginLeft) {
109
+ rawMarginLeft = rawProp[i]?.marginLeft;
110
+ }
111
+ if (rawProp[i]?.marginRight) {
112
+ rawMarginRight = rawProp[i]?.marginRight;
113
+ }
114
+ if (rawProp[i]?.marginBottom) {
115
+ rawMarginBottom = rawProp[i]?.marginBottom;
116
+ }
117
+ }
118
+ }
119
+ if (!rawPaddingTop) {
120
+ rawPaddingTop = rawPadding;
121
+ }
122
+ if (!rawPaddingLeft) {
123
+ rawPaddingLeft = rawPadding;
124
+ }
125
+ if (!rawPaddingRight) {
126
+ rawPaddingRight = rawPadding;
127
+ }
128
+ if (!rawPaddingBottom) {
129
+ rawPaddingBottom = rawPadding;
130
+ }
131
+ if (!rawMarginTop) {
132
+ rawMarginTop = rawMargin;
133
+ }
134
+ if (!rawMarginLeft) {
135
+ rawMarginLeft = rawMargin;
136
+ }
137
+ if (!rawMarginRight) {
138
+ rawMarginRight = rawMargin;
139
+ }
140
+ if (!rawMarginBottom) {
141
+ rawMarginBottom = rawMargin;
142
+ }
143
+ if (isOnChange) {
144
+ if (props.mode === 'margin') {
145
+ realTop = getEdgeValue(nativeEdges.top, safeAreaTop, rawMarginTop);
146
+ realLeft = getEdgeValue(nativeEdges.left, safeAreaLeft, rawMarginLeft);
147
+ realBottom = getEdgeValue(nativeEdges.bottom, safeAreaBottom, rawMarginBottom);
148
+ realRight = getEdgeValue(nativeEdges.right, safeAreaRight, rawMarginRight);
149
+ safeAreaStyle = [props.style, {
150
+ marginTop: realTop,
151
+ marginLeft: realLeft,
152
+ marginBottom: realBottom,
153
+ marginRight: realRight
154
+ }];
155
+ } else {
156
+ realTop = getEdgeValue(nativeEdges.top, safeAreaTop, rawPaddingTop);
157
+ realLeft = getEdgeValue(nativeEdges.left, safeAreaLeft, rawPaddingLeft);
158
+ realBottom = getEdgeValue(nativeEdges.bottom, safeAreaBottom, rawPaddingBottom);
159
+ realRight = getEdgeValue(nativeEdges.right, safeAreaRight, rawPaddingRight);
160
+ safeAreaStyle = [props.style, {
161
+ paddingTop: realTop,
162
+ paddingLeft: realLeft,
163
+ paddingBottom: realBottom,
164
+ paddingRight: realRight
165
+ }];
166
+ }
167
+ }
168
+ return /*#__PURE__*/React.createElement(NativeSafeAreaView, _extends({}, props, {
169
+ style: safeAreaStyle,
170
+ edges: nativeEdges,
171
+ isFirstRefresh: isFirstRefresh,
172
+ onSafeAreaValueChange: safeAreaChange,
173
+ ref: ref
174
+ }));
175
+ });
176
+ //# sourceMappingURL=SafeAreaView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","NativeSafeAreaView","useMemo","useState","defaultEdges","top","left","bottom","right","isOnChange","realTop","realLeft","realBottom","realRight","safeAreaTop","safeAreaLeft","safeAreaBottom","safeAreaRight","getEdgeValue","edgeMode","insetValue","edgeValue","Math","max","SafeAreaView","forwardRef","edges","props","ref","nativeEdges","edgesObj","Array","isArray","reduce","acc","edge","requiredEdges","isFirstRefresh","setIsFirstRefresh","safeAreaStyle","style","rawPadding","rawMargin","rawPaddingTop","undefined","rawPaddingLeft","rawPaddingBottom","rawPaddingRight","rawMarginTop","rawMarginLeft","rawMarginBottom","rawMarginRight","safeAreaChange","e","nativeEvent","safeAreaViewInsetsValue","rawProp","i","length","padding","margin","paddingTop","paddingLeft","paddingRight","paddingBottom","marginTop","marginLeft","marginRight","marginBottom","mode","createElement","_extends","onSafeAreaValueChange"],"sourceRoot":"..\\..\\src","sources":["SafeAreaView.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+
3
+ export * from 'react-native-safe-area-context/src/SafeAreaContext';
4
+ export * from './SafeAreaView';
5
+ export * from 'react-native-safe-area-context/src//InitialWindow';
6
+ export * from 'react-native-safe-area-context/src//SafeArea.types';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":"AAAA,YAAY;;AAEZ,cAAc,oDAAoD;AAClE,cAAc,gBAAgB;AAC9B,cAAc,mDAAmD;AACjE,cAAc,oDAAoD","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { TurboModuleRegistry } from 'react-native';
2
+ export default TurboModuleRegistry.get('RNCSafeAreaContext');
3
+ //# sourceMappingURL=NativeSafeAreaContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"..\\..\\..\\src","sources":["specs/NativeSafeAreaContext.ts"],"mappings":"AAAA,SAAsBA,mBAAmB,QAAQ,cAAc;AAsB/D,eAAeA,mBAAmB,CAACC,GAAG,CAAO,oBAAoB,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
2
+ export default codegenNativeComponent('RNCSafeAreaProvider');
3
+ //# sourceMappingURL=NativeSafeAreaProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"..\\..\\..\\src","sources":["specs/NativeSafeAreaProvider.ts"],"mappings":"AAIA,OAAOA,sBAAsB,MAAM,yDAAyD;AAsB5F,eAAeA,sBAAsB,CACnC,qBACF,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
2
+ export default codegenNativeComponent('RNCSafeAreaView', {
3
+ interfaceOnly: true
4
+ });
5
+ //# sourceMappingURL=NativeSafeAreaView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent","interfaceOnly"],"sourceRoot":"..\\..\\..\\src","sources":["specs/NativeSafeAreaView.ts"],"mappings":"AAAA,OAAOA,sBAAsB,MAAM,yDAAyD;AAyB5F,eAAeA,sBAAsB,CAAc,iBAAiB,EAAE;EACpEC,aAAa,EAAE;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ import type * as React from 'react';
2
+ import type { NativeSyntheticEvent, ViewProps } from 'react-native';
3
+ import NativeSafeAreaView from './specs/NativeSafeAreaView';
4
+ export type Edge = 'top' | 'right' | 'bottom' | 'left';
5
+ export type EdgeMode = 'off' | 'additive' | 'maximum';
6
+ export type EdgeRecord = Partial<Record<Edge, EdgeMode>>;
7
+ export type Edges = readonly Edge[] | Readonly<EdgeRecord>;
8
+ export interface EdgeInsets {
9
+ top: number;
10
+ right: number;
11
+ bottom: number;
12
+ left: number;
13
+ }
14
+ export interface Rect {
15
+ x: number;
16
+ y: number;
17
+ width: number;
18
+ height: number;
19
+ }
20
+ export interface Metrics {
21
+ insets: EdgeInsets;
22
+ frame: Rect;
23
+ }
24
+ export type InsetChangedEvent = NativeSyntheticEvent<Metrics>;
25
+ export type InsetChangeNativeCallback = (event: InsetChangedEvent) => void;
26
+ export interface NativeSafeAreaProviderProps extends ViewProps {
27
+ children?: React.ReactNode;
28
+ onInsetsChange: InsetChangeNativeCallback;
29
+ }
30
+ export interface NativeSafeAreaViewProps extends ViewProps {
31
+ children?: React.ReactNode;
32
+ mode?: 'padding' | 'margin';
33
+ edges?: Edges;
34
+ }
35
+ export type NativeSafeAreaViewInstance = InstanceType<typeof NativeSafeAreaView>;
36
+ //# sourceMappingURL=SafeArea.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeArea.types.d.ts","sourceRoot":"","sources":["../../src/SafeArea.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAE5D,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzD,MAAM,MAAM,KAAK,GAAG,SAAS,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAE3E,MAAM,WAAW,2BAA4B,SAAQ,SAAS;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,cAAc,EAAE,yBAAyB,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAwB,SAAQ,SAAS;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,0BAA0B,GAAG,YAAY,CACnD,OAAO,kBAAkB,CAC1B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import type { NativeSafeAreaViewProps } from './SafeArea.types';
3
+ import type * as ReactNative from "react-native";
4
+ export type SafeAreaViewProps = NativeSafeAreaViewProps;
5
+ export declare const SafeAreaView: React.ForwardRefExoticComponent<NativeSafeAreaViewProps & React.RefAttributes<React.Component<import("./specs/NativeSafeAreaView").NativeProps, {}, any> & ReactNative.NativeMethods>>;
6
+ //# sourceMappingURL=SafeAreaView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeAreaView.d.ts","sourceRoot":"","sources":["../../src/SafeAreaView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAKV,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,WAAW,MAAM,cAAc,CAAC;AAUjD,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAsBxD,eAAO,MAAM,YAAY,wLA+JvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from 'react-native-safe-area-context/src/SafeAreaContext';
2
+ export * from './SafeAreaView';
3
+ export * from 'react-native-safe-area-context/src//InitialWindow';
4
+ export * from 'react-native-safe-area-context/src//SafeArea.types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAEA,cAAc,oDAAoD,CAAC;AACnE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { TurboModule } from 'react-native';
2
+ import type { Double } from 'react-native/Libraries/Types/CodegenTypes';
3
+ export interface Spec extends TurboModule {
4
+ getConstants: () => {
5
+ initialWindowMetrics?: {
6
+ insets: {
7
+ top: Double;
8
+ right: Double;
9
+ bottom: Double;
10
+ left: Double;
11
+ };
12
+ frame: {
13
+ x: Double;
14
+ y: Double;
15
+ width: Double;
16
+ height: Double;
17
+ };
18
+ };
19
+ };
20
+ }
21
+ declare const _default: Spec | null;
22
+ export default _default;
23
+ //# sourceMappingURL=NativeSafeAreaContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeSafeAreaContext.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeSafeAreaContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,YAAY,EAAE,MAAM;QAClB,oBAAoB,CAAC,EAAE;YACrB,MAAM,EAAE;gBACN,GAAG,EAAE,MAAM,CAAC;gBACZ,KAAK,EAAE,MAAM,CAAC;gBACd,MAAM,EAAE,MAAM,CAAC;gBACf,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;YACF,KAAK,EAAE;gBACL,CAAC,EAAE,MAAM,CAAC;gBACV,CAAC,EAAE,MAAM,CAAC;gBACV,KAAK,EAAE,MAAM,CAAC;gBACd,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;CACH;;AAED,wBAAmE"}
@@ -0,0 +1,22 @@
1
+ import type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes';
2
+ import type { ViewProps, HostComponent } from 'react-native';
3
+ export type Event = Readonly<{
4
+ insets: Readonly<{
5
+ top: Double;
6
+ right: Double;
7
+ bottom: Double;
8
+ left: Double;
9
+ }>;
10
+ frame: Readonly<{
11
+ x: Double;
12
+ y: Double;
13
+ width: Double;
14
+ height: Double;
15
+ }>;
16
+ }>;
17
+ export interface NativeProps extends ViewProps {
18
+ onInsetsChange?: DirectEventHandler<Event>;
19
+ }
20
+ declare const _default: HostComponent<NativeProps>;
21
+ export default _default;
22
+ //# sourceMappingURL=NativeSafeAreaProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeSafeAreaProvider.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeSafeAreaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EACP,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B,MAAM,EAAE,QAAQ,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,KAAK,EAAE,QAAQ,CAAC;QACd,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,cAAc,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;CAC5C;wBAII,aAAa,CAAC,WAAW,CAAC;AAF/B,wBAEgC"}
@@ -0,0 +1,24 @@
1
+ import type { WithDefault, Float, DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';
2
+ import type { ViewProps, HostComponent } from 'react-native';
3
+ export type onSafeAreaValueChangeEvent = Readonly<{
4
+ safeAreaViewInsetsValue?: {
5
+ top?: Float;
6
+ left?: Float;
7
+ bottom?: Float;
8
+ right?: Float;
9
+ };
10
+ }>;
11
+ export interface NativeProps extends ViewProps {
12
+ mode?: WithDefault<'padding' | 'margin', 'padding'>;
13
+ edges?: Readonly<{
14
+ top: string;
15
+ right: string;
16
+ bottom: string;
17
+ left: string;
18
+ }>;
19
+ isFirstRefresh: boolean;
20
+ onSafeAreaValueChange: DirectEventHandler<onSafeAreaValueChangeEvent>;
21
+ }
22
+ declare const _default: HostComponent<NativeProps>;
23
+ export default _default;
24
+ //# sourceMappingURL=NativeSafeAreaView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeSafeAreaView.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeSafeAreaView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACxG,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,uBAAuB,CAAC,EAAE;QACxB,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAA;QACd,KAAK,CAAC,EAAE,KAAK,CAAA;KACd,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpD,KAAK,CAAC,EAAE,QAAQ,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;CACvE;wBAIK,aAAa,CAAC,WAAW,CAAC;AAFhC,wBAEiC"}
package/package.json ADDED
@@ -0,0 +1,139 @@
1
+ {
2
+ "name": "@react-native-ohos/react-native-safe-area-context",
3
+ "version": "5.1.1-rc.1",
4
+ "description": "A flexible way to handle safe area, also works on Android and web.",
5
+ "main": "lib/commonjs/index.js",
6
+ "module": "lib/module/index.js",
7
+ "react-native": "src/index.tsx",
8
+ "types": "lib/typescript/index.d.ts",
9
+ "harmony": {
10
+ "alias": "react-native-safe-area-context"
11
+ },
12
+ "publishConfig": {
13
+ "registry": "https://registry.npmjs.org/",
14
+ "access": "public"
15
+ },
16
+ "source": "src/index.tsx",
17
+ "sideEffects": false,
18
+ "files": [
19
+ "src",
20
+ "lib",
21
+ "jest",
22
+ "*.podspec",
23
+ "react-native.config.js",
24
+ "!**/__tests__",
25
+ "!example",
26
+ "harmony"
27
+ ],
28
+ "author": "Janic Duplessis <janicduplessis@gmail.com>",
29
+ "contributors": [
30
+ "Evan Bacon <bacon@expo.io> (https://github.com/evanbacon)"
31
+ ],
32
+ "homepage": "https://github.com/th3rdwave/react-native-safe-area-context#readme",
33
+ "license": "MIT",
34
+ "scripts": {
35
+ "start": "react-native start",
36
+ "test": "yarn format:check && yarn validate:eslint && yarn validate:typescript && yarn validate:jest",
37
+ "validate:eslint": "eslint \"src/**/*.{js,ts,tsx}\" \"example/**/*.{js,ts,tsx}\"",
38
+ "validate:typescript": "tsc --project ./ --noEmit",
39
+ "validate:jest": "jest",
40
+ "format:prettier:check": "prettier \"src/**/*.{js,ts,tsx}\" \"example/**/*.{js,ts,tsx}\" --check",
41
+ "format:prettier:write": "yarn format:prettier:check --write",
42
+ "format:clang:check": "clang-format --dry-run --Werror --glob='{ios,android/src,common}/**/*.{h,cpp,m,mm}'",
43
+ "format:clang:write": "clang-format -i --glob='{ios,android/src,common}/**/*.{h,hpp,cpp,m,mm}'",
44
+ "format:spotless:check": "cd android && ./gradlew spotlessCheck",
45
+ "format:spotless:write": "cd android && ./gradlew spotlessApply",
46
+ "format:check": "yarn format:prettier:check && yarn format:clang:check && yarn format:spotless:check",
47
+ "format:write": "yarn format:prettier:write && yarn format:clang:write && yarn format:spotless:write",
48
+ "release": "release-it",
49
+ "prepare": "bob build"
50
+ },
51
+ "keywords": [
52
+ "react-native",
53
+ "react native",
54
+ "react-native-web",
55
+ "expo-web",
56
+ "safe area",
57
+ "view"
58
+ ],
59
+ "peerDependencies": {
60
+ "react": "*",
61
+ "react-native": "*"
62
+ },
63
+ "devDependencies": {
64
+ "@commitlint/config-conventional": "^19.2.2",
65
+ "@jest/globals": "^29.7.0",
66
+ "@react-native/babel-preset": "^0.74.84",
67
+ "@react-native/eslint-config": "^0.74.84",
68
+ "@react-native/eslint-plugin-specs": "^0.74.84",
69
+ "@release-it/conventional-changelog": "^8.0.1",
70
+ "@types/react": "^18.3.3",
71
+ "@types/react-dom": "^18.3.0",
72
+ "@types/react-test-renderer": "^18.3.0",
73
+ "@typescript-eslint/eslint-plugin": "^7.14.1",
74
+ "@typescript-eslint/parser": "^7.14.1",
75
+ "babel-plugin-module-resolver": "^5.0.2",
76
+ "clang-format": "^1.8.0",
77
+ "commitlint": "^19.3.0",
78
+ "eslint": "^8.57.0",
79
+ "eslint-plugin-jest": "^28.6.0",
80
+ "eslint-config-prettier": "^9.1.0",
81
+ "eslint-plugin-prettier": "^5.1.3",
82
+ "husky": "^9.0.11",
83
+ "jest": "^29.7.0",
84
+ "prettier": "^3.3.2",
85
+ "react": "^18.3.1",
86
+ "react-dom": "^18.3.1",
87
+ "react-native": "^0.77.1",
88
+ "react-native-builder-bob": "^0.23.2",
89
+ "react-test-renderer": "^18.3.1",
90
+ "release-it": "^17.4.0",
91
+ "typescript": "^5.5.2"
92
+ },
93
+ "dependencies": {
94
+ "react-native-safe-area-context": "5.1.0"
95
+ },
96
+ "repository": {
97
+ "type": "git",
98
+ "url": "https://github.com/react-native-oh-library/react-native-safe-area-context.git"
99
+ },
100
+ "jest": {
101
+ "preset": "react-native",
102
+ "testEnvironment": "node",
103
+ "clearMocks": true,
104
+ "modulePathIgnorePatterns": [
105
+ "<rootDir>/lib/"
106
+ ]
107
+ },
108
+ "commitlint": {
109
+ "extends": [
110
+ "@commitlint/config-conventional"
111
+ ]
112
+ },
113
+ "release-it": {
114
+ "git": {
115
+ "commitMessage": "chore: release ${version}",
116
+ "tagName": "v${version}"
117
+ },
118
+ "npm": {
119
+ "publish": true
120
+ },
121
+ "github": {
122
+ "release": true
123
+ },
124
+ "plugins": {
125
+ "@release-it/conventional-changelog": {
126
+ "preset": "angular"
127
+ }
128
+ }
129
+ },
130
+ "react-native-builder-bob": {
131
+ "source": "src",
132
+ "output": "lib",
133
+ "targets": [
134
+ "commonjs",
135
+ "module",
136
+ "typescript"
137
+ ]
138
+ }
139
+ }
@@ -0,0 +1,47 @@
1
+ import type * as React from 'react';
2
+ import type { NativeSyntheticEvent, ViewProps } from 'react-native';
3
+ import NativeSafeAreaView from './specs/NativeSafeAreaView';
4
+
5
+ export type Edge = 'top' | 'right' | 'bottom' | 'left';
6
+ export type EdgeMode = 'off' | 'additive' | 'maximum';
7
+
8
+ export type EdgeRecord = Partial<Record<Edge, EdgeMode>>;
9
+ export type Edges = readonly Edge[] | Readonly<EdgeRecord>;
10
+
11
+ export interface EdgeInsets {
12
+ top: number;
13
+ right: number;
14
+ bottom: number;
15
+ left: number;
16
+ }
17
+
18
+ export interface Rect {
19
+ x: number;
20
+ y: number;
21
+ width: number;
22
+ height: number;
23
+ }
24
+
25
+ export interface Metrics {
26
+ insets: EdgeInsets;
27
+ frame: Rect;
28
+ }
29
+
30
+ export type InsetChangedEvent = NativeSyntheticEvent<Metrics>;
31
+
32
+ export type InsetChangeNativeCallback = (event: InsetChangedEvent) => void;
33
+
34
+ export interface NativeSafeAreaProviderProps extends ViewProps {
35
+ children?: React.ReactNode;
36
+ onInsetsChange: InsetChangeNativeCallback;
37
+ }
38
+
39
+ export interface NativeSafeAreaViewProps extends ViewProps {
40
+ children?: React.ReactNode;
41
+ mode?: 'padding' | 'margin';
42
+ edges?: Edges;
43
+ }
44
+
45
+ export type NativeSafeAreaViewInstance = InstanceType<
46
+ typeof NativeSafeAreaView
47
+ >;