@wavemaker-ai/app-rn-runtime 12.0.2-rc.647771 → 12.1.0-rc.347

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 (71) hide show
  1. package/components/advanced/webview/webview.component.js +1 -1
  2. package/components/advanced/webview/webview.component.js.map +1 -1
  3. package/components/basic/bottomsheet/bottomsheet.component.js +1 -1
  4. package/components/basic/bottomsheet/bottomsheet.component.js.map +1 -1
  5. package/components/basic/label/label.component.js +2 -2
  6. package/components/basic/label/label.component.js.map +1 -1
  7. package/components/chart/bubble-chart/bubble-chart.component.js.map +1 -1
  8. package/components/container/tabs/tabheader/tabheader.component.js +10 -3
  9. package/components/container/tabs/tabheader/tabheader.component.js.map +1 -1
  10. package/components/data/form/form-field/form-field.component.js +5 -0
  11. package/components/data/form/form-field/form-field.component.js.map +1 -1
  12. package/components/data/form/form.component.js +12 -8
  13. package/components/data/form/form.component.js.map +1 -1
  14. package/components/data/list/list.component.js +5 -2
  15. package/components/data/list/list.component.js.map +1 -1
  16. package/components/dialogs/dialog/dialog.component.js +1 -1
  17. package/components/dialogs/dialog/dialog.component.js.map +1 -1
  18. package/components/input/chips/chips.component.js +1 -1
  19. package/components/input/chips/chips.component.js.map +1 -1
  20. package/components/input/chips/chips.props.js +1 -0
  21. package/components/input/chips/chips.props.js.map +1 -1
  22. package/components/input/textarea/textarea.component.js +1 -1
  23. package/components/input/textarea/textarea.component.js.map +1 -1
  24. package/components/page/page-content/page-content.component.js +152 -17
  25. package/components/page/page-content/page-content.component.js.map +1 -1
  26. package/components/page/page-content/page-content.props.js +5 -0
  27. package/components/page/page-content/page-content.props.js.map +1 -1
  28. package/components/page/page-content/pull-to-refresh.component.js +288 -0
  29. package/components/page/page-content/pull-to-refresh.component.js.map +1 -0
  30. package/core/AppConfig.js.map +1 -1
  31. package/core/base.component.js +14 -0
  32. package/core/base.component.js.map +1 -1
  33. package/core/sticky-wrapper.js +37 -34
  34. package/core/sticky-wrapper.js.map +1 -1
  35. package/gestures/carousel-swipe.animation.js +1 -0
  36. package/gestures/carousel-swipe.animation.js.map +1 -1
  37. package/npm-shrinkwrap.json +1285 -570
  38. package/package-lock.json +1285 -570
  39. package/package.json +3 -3
  40. package/runtime/App.js +52 -36
  41. package/runtime/App.js.map +1 -1
  42. package/runtime/App.navigator.js +4 -1
  43. package/runtime/App.navigator.js.map +1 -1
  44. package/runtime/base-fragment.component.js +1 -0
  45. package/runtime/base-fragment.component.js.map +1 -1
  46. package/runtime/services/app-security.service.js +40 -19
  47. package/runtime/services/app-security.service.js.map +1 -1
  48. package/runtime/services/browser.constants.js +3 -0
  49. package/runtime/services/browser.constants.js.map +1 -0
  50. package/runtime/services/browser.service.js +321 -0
  51. package/runtime/services/browser.service.js.map +1 -0
  52. package/runtime/services/external-auth-callback.service.js +44 -0
  53. package/runtime/services/external-auth-callback.service.js.map +1 -0
  54. package/runtime/services/webprocess.service.js +8 -3
  55. package/runtime/services/webprocess.service.js.map +1 -1
  56. package/styles/background.component.js +61 -2
  57. package/styles/background.component.js.map +1 -1
  58. package/styles/style-prop.validator.js +4 -0
  59. package/styles/style-prop.validator.js.map +1 -1
  60. package/styles/style-props.js +2 -0
  61. package/styles/style-props.js.map +1 -1
  62. package/styles/theme.js +52 -11
  63. package/styles/theme.js.map +1 -1
  64. package/components-prism/basic/search/search.component.js +0 -208
  65. package/components-prism/basic/search/search.component.js.map +0 -1
  66. package/components-prism/basic/search/search.props.js +0 -16
  67. package/components-prism/basic/search/search.props.js.map +0 -1
  68. package/components-prism/basic/search/search.styles.js +0 -127
  69. package/components-prism/basic/search/search.styles.js.map +0 -1
  70. package/core/outside-press-handler.js +0 -65
  71. package/core/outside-press-handler.js.map +0 -1
@@ -0,0 +1,288 @@
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
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
5
+ import axios from 'axios';
6
+ import { requireNativeViewManager, requireOptionalNativeModule } from 'expo-modules-core';
7
+ import * as React from 'react';
8
+ import { Platform, StyleSheet, View } from 'react-native';
9
+ import Animated, { runOnJS, useAnimatedScrollHandler, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
10
+
11
+ // Native side lives in the expo-pull-to-refresh plugin: Android ports the drag gesture, iOS attaches a hidden UIRefreshControl.
12
+
13
+ const spinnerAspectRatioCache = new Map();
14
+ export function getSpinnerAspectRatio(loadAsset, source) {
15
+ if (!loadAsset || !source) {
16
+ return Promise.resolve(undefined);
17
+ }
18
+ if (!spinnerAspectRatioCache.has(source)) {
19
+ const asset = loadAsset(source);
20
+ const animationData = typeof asset === 'string' ? axios.get(asset).then(({
21
+ data
22
+ }) => data) : Promise.resolve(asset);
23
+ spinnerAspectRatioCache.set(source, animationData.then(data => data !== null && data !== void 0 && data.w && data !== null && data !== void 0 && data.h ? data.w / data.h : undefined).catch(() => {
24
+ spinnerAspectRatioCache.delete(source);
25
+ return undefined;
26
+ }));
27
+ }
28
+ return spinnerAspectRatioCache.get(source);
29
+ }
30
+ function getSpinnerBoxSize(spinnerAspectRatio) {
31
+ const ratio = spinnerAspectRatio || SPINNER_BOX_WIDTH / SPINNER_BOX_HEIGHT;
32
+ return {
33
+ width: SPINNER_BOX_HEIGHT * ratio,
34
+ height: SPINNER_BOX_HEIGHT
35
+ };
36
+ }
37
+ const SPINNER_SIZE = 64;
38
+ const SPINNER_BOX_WIDTH = 140;
39
+ const SPINNER_BOX_HEIGHT = 70;
40
+ const SPINNER_RESTING_TOP = 16;
41
+ const isAndroidPluginAvailable = Platform.OS === 'android' && !!requireOptionalNativeModule('ExpoPullToRefresh');
42
+ const NativeExpoPullToRefreshView = isAndroidPluginAvailable ? requireNativeViewManager('ExpoPullToRefresh') : null;
43
+ const NativePullToRefreshControl = Platform.OS === 'ios' && requireOptionalNativeModule('ExpoPullToRefreshControl') ? requireNativeViewManager('ExpoPullToRefreshControl') : null;
44
+ export class WmPullToRefreshView extends React.Component {
45
+ constructor(...args) {
46
+ super(...args);
47
+ _defineProperty(this, "state", {
48
+ progress: 0
49
+ });
50
+ _defineProperty(this, "handlePullProgress", event => {
51
+ var _ref, _event$nativeEvent$pr, _event$nativeEvent;
52
+ const value = (_ref = (_event$nativeEvent$pr = event === null || event === void 0 || (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.progress) !== null && _event$nativeEvent$pr !== void 0 ? _event$nativeEvent$pr : event === null || event === void 0 ? void 0 : event.progress) !== null && _ref !== void 0 ? _ref : 0;
53
+ this.setState({
54
+ progress: value
55
+ });
56
+ });
57
+ _defineProperty(this, "handleRefresh", () => {
58
+ var _this$props$onRefresh, _this$props;
59
+ this.setState({
60
+ progress: 1
61
+ });
62
+ (_this$props$onRefresh = (_this$props = this.props).onRefresh) === null || _this$props$onRefresh === void 0 || _this$props$onRefresh.call(_this$props);
63
+ });
64
+ }
65
+ componentDidUpdate(prevProps) {
66
+ if (prevProps.refreshing && !this.props.refreshing) {
67
+ this.setState({
68
+ progress: 0
69
+ });
70
+ }
71
+ }
72
+ render() {
73
+ const {
74
+ spinner,
75
+ children,
76
+ onRefresh,
77
+ refreshing,
78
+ topOffset = 0,
79
+ spinnerAspectRatio,
80
+ style,
81
+ ...rest
82
+ } = this.props;
83
+ if (!NativeExpoPullToRefreshView) {
84
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children);
85
+ }
86
+ const raw = refreshing ? 1 : this.state.progress;
87
+ const clamped = Math.min(1, Math.max(0, raw));
88
+ return /*#__PURE__*/React.createElement(NativeExpoPullToRefreshView, _extends({}, rest, {
89
+ refreshing: refreshing,
90
+ style: [styles.native, style],
91
+ onPullProgress: this.handlePullProgress,
92
+ onRefresh: this.handleRefresh
93
+ }), /*#__PURE__*/React.createElement(View, {
94
+ style: styles.wrapper,
95
+ collapsable: false
96
+ }, children, /*#__PURE__*/React.createElement(View, {
97
+ style: [styles.spinnerOverlay, {
98
+ top: topOffset,
99
+ opacity: clamped,
100
+ transform: [{
101
+ translateY: -SPINNER_SIZE + clamped * (SPINNER_SIZE + SPINNER_RESTING_TOP)
102
+ }, {
103
+ scale: 0.4 + clamped * 0.6
104
+ }]
105
+ }],
106
+ pointerEvents: "none"
107
+ }, /*#__PURE__*/React.createElement(View, {
108
+ style: getSpinnerBoxSize(spinnerAspectRatio)
109
+ }, clamped > 0 ? spinner : null))));
110
+ }
111
+ }
112
+ const PULL_TO_REFRESH_THRESHOLD = SPINNER_SIZE;
113
+ const IOS_REFRESH_GAP = 60;
114
+ const IOS_SPINNER_FULL_SIZE_GAP = IOS_REFRESH_GAP - 5;
115
+ const PullToRefreshSpinnerLayer = ({
116
+ spinner,
117
+ pullDistance,
118
+ pulled,
119
+ refreshing,
120
+ mounted,
121
+ topOffset,
122
+ spinnerAspectRatio,
123
+ threshold = PULL_TO_REFRESH_THRESHOLD
124
+ }) => {
125
+ const animatedStyle = useAnimatedStyle(() => {
126
+ const gapScale = Math.min(1, Math.max(0, pullDistance.value / IOS_SPINNER_FULL_SIZE_GAP));
127
+ if (refreshing) {
128
+ return {
129
+ opacity: 1,
130
+ transform: [{
131
+ scale: gapScale
132
+ }]
133
+ };
134
+ }
135
+ const progress = pulled.value ? Math.min(1, Math.max(0, pullDistance.value / threshold)) : 0;
136
+ return {
137
+ opacity: progress,
138
+ transform: [{
139
+ scale: gapScale
140
+ }]
141
+ };
142
+ }, [refreshing, threshold]);
143
+ return /*#__PURE__*/React.createElement(Animated.View, {
144
+ pointerEvents: "none",
145
+ style: [styles.iosSpinnerLayer, {
146
+ top: topOffset + (IOS_REFRESH_GAP - SPINNER_BOX_HEIGHT) / 2
147
+ }, animatedStyle]
148
+ }, /*#__PURE__*/React.createElement(View, {
149
+ style: getSpinnerBoxSize(spinnerAspectRatio)
150
+ }, mounted ? spinner : null));
151
+ };
152
+ export const WmPullToRefreshScrollView = /*#__PURE__*/React.forwardRef(({
153
+ scrollViewProps,
154
+ spinner,
155
+ refreshing,
156
+ onRefresh,
157
+ stickyOnScrollWorklet,
158
+ topOffset = 0,
159
+ spinnerAspectRatio,
160
+ children
161
+ }, ref) => {
162
+ const pullDistance = useSharedValue(0);
163
+ const isDragging = useSharedValue(false);
164
+ const [spinnerMounted, setSpinnerMounted] = React.useState(false);
165
+ const mountRequested = useSharedValue(false);
166
+ const unmountSpinner = React.useCallback(() => {
167
+ mountRequested.value = false;
168
+ setSpinnerMounted(false);
169
+ }, [mountRequested]);
170
+ const nativeRefreshing = React.useRef(false);
171
+ const [closing, setClosing] = React.useState(false);
172
+ const handleNativeRefresh = React.useCallback(() => {
173
+ nativeRefreshing.current = true;
174
+ mountRequested.value = true;
175
+ setSpinnerMounted(true);
176
+ onRefresh === null || onRefresh === void 0 || onRefresh();
177
+ }, [onRefresh, mountRequested]);
178
+ React.useEffect(() => {
179
+ if (refreshing || !nativeRefreshing.current) {
180
+ return;
181
+ }
182
+ nativeRefreshing.current = false;
183
+ setClosing(true);
184
+ const timer = setTimeout(() => {
185
+ setClosing(false);
186
+ if (!isDragging.value) {
187
+ unmountSpinner();
188
+ }
189
+ }, 350);
190
+ return () => clearTimeout(timer);
191
+ }, [refreshing, isDragging, unmountSpinner]);
192
+ const scrollHandler = useAnimatedScrollHandler({
193
+ onScroll: event => {
194
+ const offsetY = event.contentOffset.y;
195
+ pullDistance.value = Math.max(0, -offsetY);
196
+ if (offsetY < 0 && isDragging.value && !mountRequested.value) {
197
+ mountRequested.value = true;
198
+ runOnJS(setSpinnerMounted)(true);
199
+ } else if (offsetY >= 0 && !isDragging.value && mountRequested.value) {
200
+ mountRequested.value = false;
201
+ runOnJS(setSpinnerMounted)(false);
202
+ }
203
+ if (stickyOnScrollWorklet && offsetY >= 0) {
204
+ stickyOnScrollWorklet(event);
205
+ }
206
+ }
207
+ });
208
+ const handleScrollBeginDrag = React.useCallback(event => {
209
+ var _scrollViewProps$onSc;
210
+ isDragging.value = true;
211
+ scrollViewProps === null || scrollViewProps === void 0 || (_scrollViewProps$onSc = scrollViewProps.onScrollBeginDrag) === null || _scrollViewProps$onSc === void 0 || _scrollViewProps$onSc.call(scrollViewProps, event);
212
+ }, [scrollViewProps, isDragging]);
213
+ const handleScrollEndDrag = React.useCallback(event => {
214
+ var _event$nativeEvent$co, _event$nativeEvent2, _scrollViewProps$onSc2;
215
+ isDragging.value = false;
216
+ const offsetY = (_event$nativeEvent$co = event === null || event === void 0 || (_event$nativeEvent2 = event.nativeEvent) === null || _event$nativeEvent2 === void 0 || (_event$nativeEvent2 = _event$nativeEvent2.contentOffset) === null || _event$nativeEvent2 === void 0 ? void 0 : _event$nativeEvent2.y) !== null && _event$nativeEvent$co !== void 0 ? _event$nativeEvent$co : 0;
217
+ if (!NativePullToRefreshControl && !refreshing && -offsetY >= PULL_TO_REFRESH_THRESHOLD) {
218
+ handleNativeRefresh();
219
+ }
220
+ if (!refreshing && !nativeRefreshing.current && pullDistance.value <= 0) {
221
+ unmountSpinner();
222
+ }
223
+ scrollViewProps === null || scrollViewProps === void 0 || (_scrollViewProps$onSc2 = scrollViewProps.onScrollEndDrag) === null || _scrollViewProps$onSc2 === void 0 || _scrollViewProps$onSc2.call(scrollViewProps, event);
224
+ }, [refreshing, scrollViewProps, isDragging, pullDistance, unmountSpinner, handleNativeRefresh]);
225
+ return /*#__PURE__*/React.createElement(View, {
226
+ style: styles.iosHost,
227
+ collapsable: false
228
+ }, /*#__PURE__*/React.createElement(PullToRefreshSpinnerLayer, {
229
+ pullDistance: pullDistance,
230
+ pulled: mountRequested,
231
+ refreshing: refreshing || closing,
232
+ mounted: spinnerMounted,
233
+ topOffset: topOffset,
234
+ spinner: spinner,
235
+ spinnerAspectRatio: spinnerAspectRatio
236
+ }), /*#__PURE__*/React.createElement(Animated.ScrollView, _extends({
237
+ ref: ref
238
+ }, scrollViewProps, {
239
+ onScroll: scrollHandler,
240
+ scrollEventThrottle: 16,
241
+ onScrollBeginDrag: handleScrollBeginDrag,
242
+ onScrollEndDrag: handleScrollEndDrag,
243
+ contentInset: !NativePullToRefreshControl && refreshing ? {
244
+ top: PULL_TO_REFRESH_THRESHOLD
245
+ } : undefined
246
+ }), children), NativePullToRefreshControl ? /*#__PURE__*/React.createElement(NativePullToRefreshControl, {
247
+ style: styles.iosRefreshControl,
248
+ refreshing: refreshing,
249
+ onRefresh: handleNativeRefresh
250
+ }) : null);
251
+ });
252
+ WmPullToRefreshScrollView.displayName = 'WmPullToRefreshScrollView';
253
+ const styles = StyleSheet.create({
254
+ native: {
255
+ flex: 1
256
+ },
257
+ wrapper: {
258
+ flex: 1
259
+ },
260
+ spinnerOverlay: {
261
+ position: 'absolute',
262
+ left: 0,
263
+ right: 0,
264
+ alignItems: 'center',
265
+ justifyContent: 'center',
266
+ zIndex: 10,
267
+ elevation: 10
268
+ },
269
+ iosHost: {
270
+ flex: 1,
271
+ width: '100%'
272
+ },
273
+ iosRefreshControl: {
274
+ position: 'absolute',
275
+ width: 0,
276
+ height: 0
277
+ },
278
+ iosSpinnerLayer: {
279
+ position: 'absolute',
280
+ transformOrigin: 'top',
281
+ left: 0,
282
+ right: 0,
283
+ height: SPINNER_BOX_HEIGHT,
284
+ alignItems: 'center',
285
+ justifyContent: 'center'
286
+ }
287
+ });
288
+ //# sourceMappingURL=pull-to-refresh.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["axios","requireNativeViewManager","requireOptionalNativeModule","React","Platform","StyleSheet","View","Animated","runOnJS","useAnimatedScrollHandler","useAnimatedStyle","useSharedValue","spinnerAspectRatioCache","Map","getSpinnerAspectRatio","loadAsset","source","Promise","resolve","undefined","has","asset","animationData","get","then","data","set","w","h","catch","delete","getSpinnerBoxSize","spinnerAspectRatio","ratio","SPINNER_BOX_WIDTH","SPINNER_BOX_HEIGHT","width","height","SPINNER_SIZE","SPINNER_RESTING_TOP","isAndroidPluginAvailable","OS","NativeExpoPullToRefreshView","NativePullToRefreshControl","WmPullToRefreshView","Component","constructor","args","_defineProperty","progress","event","_ref","_event$nativeEvent$pr","_event$nativeEvent","value","nativeEvent","setState","_this$props$onRefresh","_this$props","props","onRefresh","call","componentDidUpdate","prevProps","refreshing","render","spinner","children","topOffset","style","rest","createElement","Fragment","raw","state","clamped","Math","min","max","_extends","styles","native","onPullProgress","handlePullProgress","handleRefresh","wrapper","collapsable","spinnerOverlay","top","opacity","transform","translateY","scale","pointerEvents","PULL_TO_REFRESH_THRESHOLD","IOS_REFRESH_GAP","IOS_SPINNER_FULL_SIZE_GAP","PullToRefreshSpinnerLayer","pullDistance","pulled","mounted","threshold","animatedStyle","gapScale","iosSpinnerLayer","WmPullToRefreshScrollView","forwardRef","scrollViewProps","stickyOnScrollWorklet","ref","isDragging","spinnerMounted","setSpinnerMounted","useState","mountRequested","unmountSpinner","useCallback","nativeRefreshing","useRef","closing","setClosing","handleNativeRefresh","current","useEffect","timer","setTimeout","clearTimeout","scrollHandler","onScroll","offsetY","contentOffset","y","handleScrollBeginDrag","_scrollViewProps$onSc","onScrollBeginDrag","handleScrollEndDrag","_event$nativeEvent$co","_event$nativeEvent2","_scrollViewProps$onSc2","onScrollEndDrag","iosHost","ScrollView","scrollEventThrottle","contentInset","iosRefreshControl","displayName","create","flex","position","left","right","alignItems","justifyContent","zIndex","elevation","transformOrigin"],"sources":["pull-to-refresh.component.tsx"],"sourcesContent":["import axios from 'axios';\nimport { requireNativeViewManager, requireOptionalNativeModule } from 'expo-modules-core';\nimport * as React from 'react';\nimport { Platform, StyleSheet, View, ViewProps } from 'react-native';\nimport Animated, { runOnJS, SharedValue, useAnimatedScrollHandler, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';\n\n// Native side lives in the expo-pull-to-refresh plugin: Android ports the drag gesture, iOS attaches a hidden UIRefreshControl.\n\nexport interface WmPullToRefreshViewProps extends ViewProps {\n spinner: React.ReactElement;\n refreshing: boolean;\n onRefresh?: () => void;\n topOffset?: number;\n spinnerAspectRatio?: number;\n children?: React.ReactNode;\n}\n\nconst spinnerAspectRatioCache = new Map<string, Promise<number | undefined>>();\n\nexport function getSpinnerAspectRatio(\n loadAsset: ((path: string) => number | string) | undefined,\n source: string | undefined\n): Promise<number | undefined> {\n if (!loadAsset || !source) {\n return Promise.resolve(undefined);\n }\n if (!spinnerAspectRatioCache.has(source)) {\n const asset: any = loadAsset(source);\n const animationData = typeof asset === 'string' ? axios.get(asset).then(({ data }) => data) : Promise.resolve(asset);\n spinnerAspectRatioCache.set(source, animationData\n .then((data) => (data?.w && data?.h) ? data.w / data.h : undefined)\n .catch(() => {\n spinnerAspectRatioCache.delete(source);\n return undefined;\n }));\n }\n return spinnerAspectRatioCache.get(source)!;\n}\n\nfunction getSpinnerBoxSize(spinnerAspectRatio?: number) {\n const ratio = spinnerAspectRatio || SPINNER_BOX_WIDTH / SPINNER_BOX_HEIGHT;\n return { width: SPINNER_BOX_HEIGHT * ratio, height: SPINNER_BOX_HEIGHT };\n}\n\ninterface WmPullToRefreshState {\n progress: number;\n}\n\nconst SPINNER_SIZE = 64;\nconst SPINNER_BOX_WIDTH = 140;\nconst SPINNER_BOX_HEIGHT = 70;\nconst SPINNER_RESTING_TOP = 16;\n\nconst isAndroidPluginAvailable =\n Platform.OS === 'android' && !!requireOptionalNativeModule('ExpoPullToRefresh');\n\nconst NativeExpoPullToRefreshView: any =\n isAndroidPluginAvailable ? requireNativeViewManager('ExpoPullToRefresh') : null;\n\nconst NativePullToRefreshControl: any =\n Platform.OS === 'ios' && requireOptionalNativeModule('ExpoPullToRefreshControl')\n ? requireNativeViewManager('ExpoPullToRefreshControl')\n : null;\n\nexport class WmPullToRefreshView extends React.Component<\n WmPullToRefreshViewProps,\n WmPullToRefreshState\n> {\n state: WmPullToRefreshState = { progress: 0 };\n\n componentDidUpdate(prevProps: WmPullToRefreshViewProps) {\n if (prevProps.refreshing && !this.props.refreshing) {\n this.setState({ progress: 0 });\n }\n }\n\n private handlePullProgress = (event: any) => {\n const value = event?.nativeEvent?.progress ?? event?.progress ?? 0;\n this.setState({ progress: value });\n };\n\n private handleRefresh = () => {\n this.setState({ progress: 1 });\n this.props.onRefresh?.();\n };\n\n render() {\n const {\n spinner,\n children,\n onRefresh,\n refreshing,\n topOffset = 0,\n spinnerAspectRatio,\n style,\n ...rest\n } = this.props;\n\n if (!NativeExpoPullToRefreshView) {\n return <>{children}</>;\n }\n\n const raw = refreshing ? 1 : this.state.progress;\n const clamped = Math.min(1, Math.max(0, raw));\n\n return (\n <NativeExpoPullToRefreshView\n {...rest}\n refreshing={refreshing}\n style={[styles.native, style]}\n onPullProgress={this.handlePullProgress}\n onRefresh={this.handleRefresh}\n >\n <View style={styles.wrapper} collapsable={false}>\n {children}\n <View\n style={[\n styles.spinnerOverlay,\n {\n top: topOffset,\n opacity: clamped,\n transform: [\n { translateY: -SPINNER_SIZE + clamped * (SPINNER_SIZE + SPINNER_RESTING_TOP) },\n { scale: 0.4 + clamped * 0.6 },\n ],\n },\n ]}\n pointerEvents=\"none\"\n >\n <View style={getSpinnerBoxSize(spinnerAspectRatio)}>{clamped > 0 ? spinner : null}</View>\n </View>\n </View>\n </NativeExpoPullToRefreshView>\n );\n }\n}\n\nconst PULL_TO_REFRESH_THRESHOLD = SPINNER_SIZE;\n\nconst IOS_REFRESH_GAP = 60;\n\nconst IOS_SPINNER_FULL_SIZE_GAP = IOS_REFRESH_GAP - 5;\n\nconst PullToRefreshSpinnerLayer: React.FC<{\n spinner: React.ReactElement;\n pullDistance: SharedValue<number>;\n pulled: SharedValue<boolean>;\n refreshing: boolean;\n mounted: boolean;\n topOffset: number;\n spinnerAspectRatio?: number;\n threshold?: number;\n}> = ({ spinner, pullDistance, pulled, refreshing, mounted, topOffset, spinnerAspectRatio, threshold = PULL_TO_REFRESH_THRESHOLD }) => {\n const animatedStyle = useAnimatedStyle(() => {\n const gapScale = Math.min(1, Math.max(0, pullDistance.value / IOS_SPINNER_FULL_SIZE_GAP));\n if (refreshing) {\n return { opacity: 1, transform: [{ scale: gapScale }] };\n }\n const progress = pulled.value ? Math.min(1, Math.max(0, pullDistance.value / threshold)) : 0;\n return {\n opacity: progress,\n transform: [{ scale: gapScale }],\n };\n }, [refreshing, threshold]);\n\n return (\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.iosSpinnerLayer,\n { top: topOffset + (IOS_REFRESH_GAP - SPINNER_BOX_HEIGHT) / 2 },\n animatedStyle,\n ]}\n >\n <View style={getSpinnerBoxSize(spinnerAspectRatio)}>{mounted ? spinner : null}</View>\n </Animated.View>\n );\n};\n\nexport interface WmPullToRefreshScrollViewProps {\n scrollViewProps: any;\n spinner: React.ReactElement;\n refreshing: boolean;\n onRefresh?: () => void;\n stickyOnScrollWorklet?: (event: any) => void;\n topOffset?: number;\n spinnerAspectRatio?: number;\n children?: React.ReactNode;\n}\n\nexport const WmPullToRefreshScrollView = React.forwardRef<any, WmPullToRefreshScrollViewProps>(\n ({ scrollViewProps, spinner, refreshing, onRefresh, stickyOnScrollWorklet, topOffset = 0, spinnerAspectRatio, children }, ref) => {\n const pullDistance = useSharedValue(0);\n const isDragging = useSharedValue(false);\n\n const [spinnerMounted, setSpinnerMounted] = React.useState(false);\n const mountRequested = useSharedValue(false);\n\n const unmountSpinner = React.useCallback(() => {\n mountRequested.value = false;\n setSpinnerMounted(false);\n }, [mountRequested]);\n\n const nativeRefreshing = React.useRef(false);\n const [closing, setClosing] = React.useState(false);\n\n const handleNativeRefresh = React.useCallback(() => {\n nativeRefreshing.current = true;\n mountRequested.value = true;\n setSpinnerMounted(true);\n onRefresh?.();\n }, [onRefresh, mountRequested]);\n\n React.useEffect(() => {\n if (refreshing || !nativeRefreshing.current) {\n return;\n }\n nativeRefreshing.current = false;\n setClosing(true);\n const timer = setTimeout(() => {\n setClosing(false);\n if (!isDragging.value) {\n unmountSpinner();\n }\n }, 350);\n return () => clearTimeout(timer);\n }, [refreshing, isDragging, unmountSpinner]);\n\n const scrollHandler = useAnimatedScrollHandler({\n onScroll: (event: any) => {\n const offsetY = event.contentOffset.y;\n pullDistance.value = Math.max(0, -offsetY);\n if (offsetY < 0 && isDragging.value && !mountRequested.value) {\n mountRequested.value = true;\n runOnJS(setSpinnerMounted)(true);\n } else if (offsetY >= 0 && !isDragging.value && mountRequested.value) {\n mountRequested.value = false;\n runOnJS(setSpinnerMounted)(false);\n }\n if (stickyOnScrollWorklet && offsetY >= 0) {\n stickyOnScrollWorklet(event);\n }\n },\n });\n\n const handleScrollBeginDrag = React.useCallback(\n (event: any) => {\n isDragging.value = true;\n scrollViewProps?.onScrollBeginDrag?.(event);\n },\n [scrollViewProps, isDragging]\n );\n\n const handleScrollEndDrag = React.useCallback(\n (event: any) => {\n isDragging.value = false;\n const offsetY = event?.nativeEvent?.contentOffset?.y ?? 0;\n if (!NativePullToRefreshControl && !refreshing && -offsetY >= PULL_TO_REFRESH_THRESHOLD) {\n handleNativeRefresh();\n }\n if (!refreshing && !nativeRefreshing.current && pullDistance.value <= 0) {\n unmountSpinner();\n }\n scrollViewProps?.onScrollEndDrag?.(event);\n },\n [refreshing, scrollViewProps, isDragging, pullDistance, unmountSpinner, handleNativeRefresh]\n );\n\n return (\n <View style={styles.iosHost} collapsable={false}>\n <PullToRefreshSpinnerLayer\n pullDistance={pullDistance}\n pulled={mountRequested}\n refreshing={refreshing || closing}\n mounted={spinnerMounted}\n topOffset={topOffset}\n spinner={spinner}\n spinnerAspectRatio={spinnerAspectRatio}\n />\n <Animated.ScrollView\n ref={ref}\n {...scrollViewProps}\n onScroll={scrollHandler}\n scrollEventThrottle={16}\n onScrollBeginDrag={handleScrollBeginDrag}\n onScrollEndDrag={handleScrollEndDrag}\n contentInset={!NativePullToRefreshControl && refreshing ? { top: PULL_TO_REFRESH_THRESHOLD } : undefined}\n >\n {children}\n </Animated.ScrollView>\n {NativePullToRefreshControl ? (\n <NativePullToRefreshControl\n style={styles.iosRefreshControl}\n refreshing={refreshing}\n onRefresh={handleNativeRefresh}\n />\n ) : null}\n </View>\n );\n }\n);\nWmPullToRefreshScrollView.displayName = 'WmPullToRefreshScrollView';\n\nconst styles = StyleSheet.create({\n native: {\n flex: 1,\n },\n wrapper: {\n flex: 1,\n },\n spinnerOverlay: {\n position: 'absolute',\n left: 0,\n right: 0,\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10,\n elevation: 10,\n },\n iosHost: {\n flex: 1,\n width: '100%',\n },\n iosRefreshControl: {\n position: 'absolute',\n width: 0,\n height: 0,\n },\n iosSpinnerLayer: {\n position: 'absolute',\n transformOrigin: 'top',\n left: 0,\n right: 0,\n height: SPINNER_BOX_HEIGHT,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AppConfig.ts"],"sourcesContent":["export interface Drawer {\n setContent: (c: React.ReactNode) => void;\n getContent: () => React.ReactNode;\n setAnimation: (animation: string) => void;\n getAnimation: () => string;\n}\n\nexport default interface AppConfig {\n appId: string;\n assets: any;\n appProperties: any;\n appLocale: any;\n url: string;\n leftNavWidth: any;\n loadApp: boolean;\n refresh: (complete?: boolean) => void,\n currentPage?: any;\n pages?: any[];\n landingPage: string;\n partials?: any[];\n drawer: Drawer;\n app: any;\n spinner: any;\n setDrawerContent: any;\n theme: any;\n drawerType: any;\n /**\n * Application preferences that can include:\n * - enableGlobalErrorHandler (boolean): Master switch for all error handling. Default: false (disabled)\n * - enableRenderErrors (boolean): Enable React ErrorBoundary for component errors. Default: true\n * - enableJsSyncErrors (boolean): Enable synchronous JavaScript error handling. Default: true\n * - enableJsAsyncErrors (boolean): Enable asynchronous/promise rejection error handling. Default: true\n * - showDefaultErrorFallback (boolean): Show default error fallback UI when errors occur. Default: true\n * - Other app-specific preferences...\n */\n preferences:any;\n getServiceDefinitions: any;\n loggedInUser: any;\n selectedLocale: string;\n revertLayoutToExpo50: boolean,\n diagnostics: {\n appStartTime: number,\n appReadyTime: number,\n pageStartTime: number,\n pageReadyTime: number\n }, \n edgeToEdgeConfig:any;\n prefabs?: {\n partials?: any[]\n },\n screenCaptureProtection: {\n enabled: boolean\n },\n disableNavigationAnimation:boolean,\n pageTransitionAnimation?: string,\n detachInactiveScreens:boolean,\n isLegacyTappable: boolean,\n enablePageCache:boolean,\n}"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AppConfig.ts"],"sourcesContent":["export interface Drawer {\n setContent: (c: React.ReactNode) => void;\n getContent: () => React.ReactNode;\n setAnimation: (animation: string) => void;\n getAnimation: () => string;\n}\n\nexport default interface AppConfig {\n appId: string;\n assets: any;\n appProperties: any;\n appLocale: any;\n url: string;\n leftNavWidth: any;\n loadApp: boolean;\n refresh: (complete?: boolean) => void,\n currentPage?: any;\n pages?: any[];\n landingPage: string;\n partials?: any[];\n drawer: Drawer;\n app: any;\n spinner: any;\n setDrawerContent: any;\n theme: any;\n drawerType: any;\n /**\n * Application preferences that can include:\n * - enableGlobalErrorHandler (boolean): Master switch for all error handling. Default: false (disabled)\n * - enableRenderErrors (boolean): Enable React ErrorBoundary for component errors. Default: true\n * - enableJsSyncErrors (boolean): Enable synchronous JavaScript error handling. Default: true\n * - enableJsAsyncErrors (boolean): Enable asynchronous/promise rejection error handling. Default: true\n * - showDefaultErrorFallback (boolean): Show default error fallback UI when errors occur. Default: true\n * - Other app-specific preferences...\n */\n preferences:any;\n getServiceDefinitions: any;\n loggedInUser: any;\n selectedLocale: string;\n revertLayoutToExpo50: boolean,\n diagnostics: {\n appStartTime: number,\n appReadyTime: number,\n pageStartTime: number,\n pageReadyTime: number\n }, \n edgeToEdgeConfig:any;\n pulltorefreshsource: string;\n pulltorefreshclass?: string;\n /**\n * How native SSO login and http(s) links open. Defaults: incognito in-app WebView\n * for SSO, Custom Tabs for anchors. `auth_session` only works once the WM server\n * completion step redirects to `{appId}://services/webprocess/{process}?process_output=...`.\n */\n browserConfig?: {\n defaultLinkMode?: 'custom_tabs' | 'external' | 'in_app_webview';\n authMode?: 'in_app_webview_private' | 'in_app_webview_persistent' | 'auth_session';\n shareAuthSessionWithLinks?: boolean;\n /** Keys are friendly names for the widget's Target property: newWindow (_blank), sameWindow (_self), topWindow (_top), parentWindow (_parent). */\n targetMapping?: Partial<Record<'newWindow' | 'sameWindow' | 'topWindow' | 'parentWindow', 'custom_tabs' | 'external' | 'in_app_webview'>>;\n /** How long the external-browser auth_session flow waits for its callback before giving up. Defaults to 120000 (2 minutes). */\n authTimeoutMs?: number;\n };\n prefabs?: {\n partials?: any[]\n },\n screenCaptureProtection: {\n enabled: boolean\n },\n disableNavigationAnimation:boolean,\n pageTransitionAnimation?: string,\n detachInactiveScreens:boolean,\n isLegacyTappable: boolean,\n enablePageCache:boolean,\n}"],"mappings":"","ignoreList":[]}
@@ -503,13 +503,27 @@ export class BaseComponent extends React.Component {
503
503
  }, this.state.animatableProps), n);
504
504
  }
505
505
  setBackground() {
506
+ var _this$styles$root;
506
507
  const bgStyle = this.styles.root;
508
+ const blurValue = (_this$styles$root = this.styles.root) === null || _this$styles$root === void 0 ? void 0 : _this$styles$root.backdropFilter;
509
+ delete this.styles.root['backdropFilter'];
510
+ // Parse backdrop-filter CSS value to extract blur intensity
511
+ let blur = 0;
512
+ if (blurValue && typeof blurValue === 'string') {
513
+ const blurMatch = blurValue.match(/blur\((\d+)px\)/);
514
+ if (blurMatch && blurMatch[1]) {
515
+ const parsedValue = parseInt(blurMatch[1], 10);
516
+ // Clamp blur between 0 and 100
517
+ blur = Math.min(100, Math.max(0, parsedValue));
518
+ }
519
+ }
507
520
  this._background = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BackgroundComponent, {
508
521
  image: bgStyle.backgroundImage,
509
522
  position: bgStyle.backgroundPosition,
510
523
  size: bgStyle.backgroundSize,
511
524
  repeat: bgStyle.backgroundRepeat,
512
525
  resizeMode: bgStyle.backgroundResizeMode,
526
+ blur: blur,
513
527
  style: {
514
528
  borderRadius: this.styles.root.borderRadius
515
529
  }