@wavemaker-ai/app-rn-runtime 1.0.0-rc.322 → 1.0.0-rc.324
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/components/basic/button/button.component.js +4 -2
- package/components/basic/button/button.component.js.map +1 -1
- package/components/basic/message/message.component.js +1 -0
- package/components/basic/message/message.component.js.map +1 -1
- package/components/basic/search/search.styles.js +8 -3
- package/components/basic/search/search.styles.js.map +1 -1
- package/components/chart/bar-chart/bar-chart.component.js.map +1 -1
- package/components/chart/basechart.component.js +0 -1
- package/components/chart/basechart.component.js.map +1 -1
- package/components/chart/basechart.props.js +1 -0
- package/components/chart/basechart.props.js.map +1 -1
- package/components/chart/bubble-chart/bubble-chart.component.js.map +1 -1
- package/components/chart/line-chart/line-chart.component.js.map +1 -1
- package/components/data/form/form-field/form-field.component.js +1 -0
- package/components/data/form/form-field/form-field.component.js.map +1 -1
- package/components/data/form/form-field/form-field.props.js +1 -0
- package/components/data/form/form-field/form-field.props.js.map +1 -1
- package/components/data/form/form.component.js +4 -1
- package/components/data/form/form.component.js.map +1 -1
- package/components/data/list/list.styles.js +1 -0
- package/components/data/list/list.styles.js.map +1 -1
- package/components/dialogs/dialogcontent/dialogcontent.component.js +2 -1
- package/components/dialogs/dialogcontent/dialogcontent.component.js.map +1 -1
- package/components/input/baseinput/baseinput.component.js +21 -3
- package/components/input/baseinput/baseinput.component.js.map +1 -1
- package/components/input/baseinput/baseinput.props.js +1 -0
- package/components/input/baseinput/baseinput.props.js.map +1 -1
- package/components/input/basenumber/basenumber.component.js +18 -3
- package/components/input/basenumber/basenumber.component.js.map +1 -1
- package/components/input/basenumber/basenumber.props.js +1 -0
- package/components/input/basenumber/basenumber.props.js.map +1 -1
- package/components/input/checkboxset/checkboxset.component.js +3 -3
- package/components/input/checkboxset/checkboxset.component.js.map +1 -1
- package/components/input/checkboxset/checkboxset.props.js +1 -0
- package/components/input/checkboxset/checkboxset.props.js.map +1 -1
- package/components/input/checkboxset/checkboxset.styles.js +6 -0
- package/components/input/checkboxset/checkboxset.styles.js.map +1 -1
- package/components/input/chips/chips.component.js +4 -3
- package/components/input/chips/chips.component.js.map +1 -1
- package/components/input/chips/chips.styles.js +2 -1
- package/components/input/chips/chips.styles.js.map +1 -1
- package/components/input/currency/currency.component.js.map +1 -1
- package/components/input/currency/currency.styles.js +4 -0
- package/components/input/currency/currency.styles.js.map +1 -1
- package/components/input/number/number.component.js.map +1 -1
- package/components/input/number/number.styles.js +4 -0
- package/components/input/number/number.styles.js.map +1 -1
- package/components/input/radioset/radioset.component.js +5 -3
- package/components/input/radioset/radioset.component.js.map +1 -1
- package/components/input/radioset/radioset.props.js +1 -0
- package/components/input/radioset/radioset.props.js.map +1 -1
- package/components/input/radioset/radioset.styles.js +6 -0
- package/components/input/radioset/radioset.styles.js.map +1 -1
- package/components/input/switch/switch.component.js +16 -2
- package/components/input/switch/switch.component.js.map +1 -1
- package/components/input/switch/switch.props.js +1 -0
- package/components/input/switch/switch.props.js.map +1 -1
- package/components/input/switch/switch.styles.js +19 -0
- package/components/input/switch/switch.styles.js.map +1 -1
- package/components/input/text/text.component.js.map +1 -1
- package/components/input/textarea/textarea.component.js.map +1 -1
- package/components/input/textarea/textarea.styles.js +4 -0
- package/components/input/textarea/textarea.styles.js.map +1 -1
- package/components/page/tabbar/tabbar.component.js +3 -2
- package/components/page/tabbar/tabbar.component.js.map +1 -1
- package/components-prism/basic/search/search.component.js +106 -67
- package/components-prism/basic/search/search.component.js.map +1 -1
- package/components-prism/basic/search/search.props.js +1 -0
- package/components-prism/basic/search/search.props.js.map +1 -1
- package/components-prism/basic/search/search.styles.js +18 -41
- package/components-prism/basic/search/search.styles.js.map +1 -1
- package/core/AppConfig.js.map +1 -1
- package/core/advanced-promise-rejection-tracker.js +1 -2
- package/core/advanced-promise-rejection-tracker.js.map +1 -1
- package/core/components/textinput.component.js +20 -3
- package/core/components/textinput.component.js.map +1 -1
- package/core/outside-press-handler.js +65 -0
- package/core/outside-press-handler.js.map +1 -0
- package/core/viewport.js +13 -8
- package/core/viewport.js.map +1 -1
- package/gestures/carousel-swipe.animation.js +0 -1
- package/gestures/carousel-swipe.animation.js.map +1 -1
- package/npm-shrinkwrap.json +333 -227
- package/package-lock.json +333 -227
- package/package.json +3 -3
- package/styles/theme.js +7 -0
- package/styles/theme.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BASE_THEME","defineStyles","DEFAULT_CLASS","registerStyle","themeVariables","addStyle","prismSearchOverrides","
|
|
1
|
+
{"version":3,"names":["BASE_THEME","defineStyles","DEFAULT_CLASS","registerStyle","themeVariables","addStyle","prismSearchOverrides","rootWrapper","position","rootWrapperDropdownOpen","zIndex","searchWrapper","root","inputWeb","outline","boxShadow","leadingIcon","width","height","justifyContent","alignItems","backgroundColor","color","defaultColor4","icon","fontSize","text","trailingIcon","inputWithLeadingIcon","paddingLeft","inputWithTrailingIcon","paddingRight","iconWrapper","top","bottom","pointerEvents","dropdownContainer","left","elevation","skeleton","borderRadius","opacity","flexDirection","searchItem"],"sources":["search.styles.ts"],"sourcesContent":["import '@wavemaker-ai/app-rn-runtime/components/basic/search/search.styles';\n\nimport { DimensionValue, TextStyle } from 'react-native';\nimport BASE_THEME, {\n AllStyle,\n} from '@wavemaker-ai/app-rn-runtime/styles/theme';\nimport { defineStyles } from '@wavemaker-ai/app-rn-runtime/core/base.component';\nimport { WmIconStyles } from '@wavemaker-ai/app-rn-runtime/components/basic/icon/icon.styles';\nimport { WmSearchStyles } from '@wavemaker-ai/app-rn-runtime/components/basic/search/search.styles';\n\nexport type WmSearchPrismStyles = WmSearchStyles & {\n input: AllStyle;\n inputWeb: AllStyle;\n leadingIcon: WmIconStyles;\n trailingIcon: WmIconStyles;\n dropdownScrollView: AllStyle;\n iconWrapper: AllStyle; \n inputWithLeadingIcon: AllStyle; \n inputWithTrailingIcon: AllStyle;\n dropdownContainer: AllStyle;\n searchWrapper: AllStyle;\n rootWrapperDropdownOpen: AllStyle;\n searchItemImage: AllStyle;\n rootWrapper: AllStyle;\n};\n\nexport const DEFAULT_CLASS = 'app-search';\n\nBASE_THEME.registerStyle((themeVariables, addStyle) => {\n const prismSearchOverrides = defineStyles({\n rootWrapper: {\n position: 'relative',\n },\n rootWrapperDropdownOpen: {\n zIndex: 10\n },\n searchWrapper: {\n position: 'relative',\n },\n root: {\n position: 'relative'\n },\n inputWeb: {\n outline: 'none',\n boxShadow: 'none',\n },\n leadingIcon: {\n root: {\n width: 48,\n height: 48,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'transparent',\n color: themeVariables.defaultColor4,\n },\n icon: { fontSize: 24 },\n text: {},\n } as WmIconStyles,\n trailingIcon: {\n root: {\n width: 48,\n height: 48,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'transparent',\n color: themeVariables.defaultColor4,\n },\n icon: { fontSize: 24 },\n text: {},\n } as WmIconStyles,\n inputWithLeadingIcon: {\n paddingLeft: 52,\n },\n inputWithTrailingIcon: {\n paddingRight: 52,\n },\n iconWrapper: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n justifyContent: 'center',\n pointerEvents: 'box-none',\n },\n dropdownContainer: {\n position: 'absolute',\n left: 0,\n zIndex: 999,\n elevation: 8,\n width: '100%',\n },\n skeleton: {\n root: {\n borderRadius: 28,\n },\n } as any\n }) as any;\n\n addStyle(DEFAULT_CLASS, '', prismSearchOverrides);\n\n addStyle(DEFAULT_CLASS + '-disabled', '', {\n root: {\n opacity: 0.5,\n },\n });\n\n addStyle(DEFAULT_CLASS + '-rtl', '', {\n root: {\n flexDirection: 'row-reverse',\n },\n searchItem: {\n flexDirection: 'row-reverse',\n },\n });\n});\n"],"mappings":"AAAA,OAAO,oEAAoE;AAG3E,OAAOA,UAAU,MAEV,2CAA2C;AAClD,SAASC,YAAY,QAAQ,kDAAkD;AAoB/E,OAAO,MAAMC,aAAa,GAAG,YAAY;AAEzCF,UAAU,CAACG,aAAa,CAAC,CAACC,cAAc,EAAEC,QAAQ,KAAK;EACrD,MAAMC,oBAAoB,GAAGL,YAAY,CAAC;IACxCM,WAAW,EAAE;MACXC,QAAQ,EAAE;IACZ,CAAC;IACDC,uBAAuB,EAAE;MACvBC,MAAM,EAAE;IACV,CAAC;IACDC,aAAa,EAAE;MACbH,QAAQ,EAAE;IACZ,CAAC;IACDI,IAAI,EAAE;MACJJ,QAAQ,EAAE;IACZ,CAAC;IACDK,QAAQ,EAAE;MACRC,OAAO,EAAE,MAAM;MACfC,SAAS,EAAE;IACb,CAAC;IACDC,WAAW,EAAE;MACXJ,IAAI,EAAE;QACJK,KAAK,EAAE,EAAE;QACTC,MAAM,EAAE,EAAE;QACVC,cAAc,EAAE,QAAQ;QACxBC,UAAU,EAAE,QAAQ;QACpBC,eAAe,EAAE,aAAa;QAC9BC,KAAK,EAAElB,cAAc,CAACmB;MACxB,CAAC;MACDC,IAAI,EAAE;QAAEC,QAAQ,EAAE;MAAG,CAAC;MACtBC,IAAI,EAAE,CAAC;IACT,CAAiB;IACjBC,YAAY,EAAE;MACZf,IAAI,EAAE;QACJK,KAAK,EAAE,EAAE;QACTC,MAAM,EAAE,EAAE;QACVC,cAAc,EAAE,QAAQ;QACxBC,UAAU,EAAE,QAAQ;QACpBC,eAAe,EAAE,aAAa;QAC9BC,KAAK,EAAElB,cAAc,CAACmB;MACxB,CAAC;MACDC,IAAI,EAAE;QAAEC,QAAQ,EAAE;MAAG,CAAC;MACtBC,IAAI,EAAE,CAAC;IACT,CAAiB;IACjBE,oBAAoB,EAAE;MACpBC,WAAW,EAAE;IACf,CAAC;IACDC,qBAAqB,EAAE;MACrBC,YAAY,EAAE;IAChB,CAAC;IACDC,WAAW,EAAE;MACXxB,QAAQ,EAAE,UAAU;MACpByB,GAAG,EAAE,CAAC;MACNC,MAAM,EAAE,CAAC;MACTf,cAAc,EAAE,QAAQ;MACxBgB,aAAa,EAAE;IACjB,CAAC;IACDC,iBAAiB,EAAE;MACjB5B,QAAQ,EAAE,UAAU;MACpB6B,IAAI,EAAE,CAAC;MACP3B,MAAM,EAAE,GAAG;MACX4B,SAAS,EAAE,CAAC;MACZrB,KAAK,EAAE;IACT,CAAC;IACDsB,QAAQ,EAAE;MACR3B,IAAI,EAAE;QACJ4B,YAAY,EAAE;MAChB;IACF;EACF,CAAC,CAAQ;EAETnC,QAAQ,CAACH,aAAa,EAAE,EAAE,EAAEI,oBAAoB,CAAC;EAEjDD,QAAQ,CAACH,aAAa,GAAG,WAAW,EAAE,EAAE,EAAE;IACxCU,IAAI,EAAE;MACJ6B,OAAO,EAAE;IACX;EACF,CAAC,CAAC;EAEFpC,QAAQ,CAACH,aAAa,GAAG,MAAM,EAAE,EAAE,EAAE;IACnCU,IAAI,EAAE;MACJ8B,aAAa,EAAE;IACjB,CAAC;IACDC,UAAU,EAAE;MACVD,aAAa,EAAE;IACjB;EACF,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
package/core/AppConfig.js.map
CHANGED
|
@@ -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 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 }
|
|
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}"],"mappings":"","ignoreList":[]}
|
|
@@ -79,8 +79,7 @@ export class AdvancedPromiseRejectionTracker {
|
|
|
79
79
|
}
|
|
80
80
|
const handler = event => {
|
|
81
81
|
event.preventDefault(); // Prevent browser's default handling
|
|
82
|
-
|
|
83
|
-
this.onRejectionHandler(error);
|
|
82
|
+
this.onRejectionHandler(event.reason);
|
|
84
83
|
};
|
|
85
84
|
window.addEventListener('unhandledrejection', handler);
|
|
86
85
|
this.cleanupFunctions.push(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","AdvancedPromiseRejectionTracker","constructor","onRejection","_defineProperty","onRejectionHandler","setup","OS","setupWebTracking","setupHermesTracking","setupReactNativeTracking","window","addEventListener","handler","event","preventDefault","error","reason","Error","String","cleanupFunctions","push","removeEventListener","hermesInternal","global","HermesInternal","enablePromiseRejectionTracker","allRejections","onUnhandled","id","onHandled","tracking","require","enable","disable","cleanup","forEach","detectJavaScriptEngine","setupAdvancedPromiseRejectionTracking","tracker"],"sources":["advanced-promise-rejection-tracker.ts"],"sourcesContent":["/**\n * Advanced Promise Rejection Tracker\n *\n * Provides comprehensive promise rejection tracking across different JavaScript engines.\n * This module addresses the critical gap where API call failures and async function errors\n * are not caught by React Error Boundaries, ensuring all promise rejections are handled.\n *\n * Engine Support:\n * - Web: Uses browser's 'unhandledrejection' event\n * - Hermes: Uses HermesInternal.enablePromiseRejectionTracker\n * - JSC: Uses React Native's 'promise/setimmediate/rejection-tracking' module\n *\n * Coverage Includes:\n * - API call failures (fetch, axios, any HTTP library)\n * - Async function errors (unhandled throws in async/await)\n * - Manual Promise.reject() calls\n * - Third-party library promise rejections\n *\n * Research Notes:\n * This implementation was developed through extensive research into React Native's\n * promise handling across different engines. Each engine has its own optimal approach:\n * - Hermes provides a native tracking API that hooks into the engine's internals\n * - JSC can use React Native's internal promise tracking module\n * - Web browsers have standardized unhandledrejection events\n *\n * The approach automatically detects the best available method and falls back\n * gracefully when native tracking is unavailable.\n */\n\nimport { Platform } from 'react-native';\n\n// TypeScript declarations for global objects\ndeclare global {\n interface Global {\n HermesInternal?: {\n enablePromiseRejectionTracker?: (options: {\n allRejections: boolean;\n onUnhandled: (id: number, error: any) => void;\n onHandled: (id: number) => void;\n }) => void;\n };\n }\n}\n\nexport interface PromiseRejectionHandler {\n (error: any): void;\n}\n\n/**\n * Multi-engine promise rejection tracking implementation\n */\nexport class AdvancedPromiseRejectionTracker {\n private onRejectionHandler: PromiseRejectionHandler;\n private cleanupFunctions: (() => void)[] = [];\n\n constructor(onRejection: PromiseRejectionHandler) {\n this.onRejectionHandler = onRejection;\n }\n\n /**\n * Setup promise rejection tracking based on available APIs\n * Returns true if native tracking was enabled, false if fallback used\n */\n public setup(): boolean {\n // Automatically detect and setup the best available promise rejection tracking method\n\n if (Platform.OS === 'web') {\n return this.setupWebTracking();\n }\n\n // For mobile platforms, try native tracking methods in order of preference\n if (this.setupHermesTracking()) {\n return true;\n }\n\n // Fallback to React Native internal tracking for JSC\n if (this.setupReactNativeTracking()) {\n return true;\n }\n\n // No native tracking available - this should rarely happen in modern RN versions\n return false;\n }\n\n /**\n * Method 1: Web Environment - Use unhandledrejection event\n */\n private setupWebTracking(): boolean {\n try {\n if (typeof window === 'undefined' || !window.addEventListener) {\n return false;\n }\n\n const handler = (event: PromiseRejectionEvent) => {\n event.preventDefault(); // Prevent browser's default handling\n const error =\n event.reason instanceof Error\n ? event.reason\n : new Error(String(event.reason));\n this.onRejectionHandler(error);\n };\n\n window.addEventListener('unhandledrejection', handler);\n this.cleanupFunctions.push(() => {\n window.removeEventListener('unhandledrejection', handler);\n });\n\n return true;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Method 2: Hermes Engine - Use HermesInternal API\n */\n private setupHermesTracking(): boolean {\n try {\n // Check if Hermes engine is available\n const hermesInternal = (global as any).HermesInternal;\n if (\n hermesInternal &&\n typeof hermesInternal.enablePromiseRejectionTracker === 'function'\n ) {\n hermesInternal.enablePromiseRejectionTracker({\n allRejections: true, // Track both handled and unhandled rejections\n onUnhandled: (id: number, error: any) => {\n this.onRejectionHandler(error);\n },\n onHandled: (id: number) => {\n // Promise was handled later - could be used for analytics in the future\n },\n });\n\n // Cleanup function (if available)\n this.cleanupFunctions.push(() => {\n // Hermes doesn't provide a disable method, but we can set a no-op handler\n if (hermesInternal?.enablePromiseRejectionTracker) {\n hermesInternal.enablePromiseRejectionTracker({\n allRejections: false,\n onUnhandled: () => {},\n onHandled: () => {},\n });\n }\n });\n\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Method 3: React Native Internal - Use promise/setimmediate/rejection-tracking for JSC\n */\n private setupReactNativeTracking(): boolean {\n try {\n // Try to access React Native's internal promise tracking module\n const tracking = require('promise/setimmediate/rejection-tracking');\n\n if (tracking && typeof tracking.enable === 'function') {\n tracking.enable({\n allRejections: true,\n onUnhandled: (id: number, error: any) => {\n this.onRejectionHandler(error);\n },\n onHandled: (id: number) => {\n // Promise was handled later - tracking for potential analytics\n },\n });\n\n this.cleanupFunctions.push(() => {\n // Try to disable tracking if possible\n if (tracking.disable && typeof tracking.disable === 'function') {\n tracking.disable();\n }\n });\n\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Clean up all tracking mechanisms\n */\n public cleanup(): void {\n // Clean up all tracking mechanisms and restore original state\n this.cleanupFunctions.forEach((cleanup) => {\n try {\n cleanup();\n } catch (error) {\n // Silently handle cleanup errors to avoid disrupting app shutdown\n }\n });\n this.cleanupFunctions = [];\n }\n}\n\n/**\n * Helper function to detect JavaScript engine (simplified for Web/Hermes/JSC)\n */\nexport function detectJavaScriptEngine(): 'web' | 'hermes' | 'jsc' {\n if (Platform.OS === 'web') {\n return 'web';\n }\n\n if (typeof (global as any).HermesInternal !== 'undefined') {\n return 'hermes';\n }\n\n // For non-Hermes engines on mobile, assume JSC (most common)\n return 'jsc';\n}\n\n/**\n * Public API for easy integration\n */\n/**\n * Sets up advanced promise rejection tracking with automatic engine detection\n * @param onRejection Callback function to handle unhandled promise rejections\n * @returns AdvancedPromiseRejectionTracker instance for cleanup and testing\n */\nexport function setupAdvancedPromiseRejectionTracking(\n onRejection: PromiseRejectionHandler\n): AdvancedPromiseRejectionTracker {\n const tracker = new AdvancedPromiseRejectionTracker(onRejection);\n tracker.setup();\n return tracker;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Platform","AdvancedPromiseRejectionTracker","constructor","onRejection","_defineProperty","onRejectionHandler","setup","OS","setupWebTracking","setupHermesTracking","setupReactNativeTracking","window","addEventListener","handler","event","preventDefault","reason","cleanupFunctions","push","removeEventListener","error","hermesInternal","global","HermesInternal","enablePromiseRejectionTracker","allRejections","onUnhandled","id","onHandled","tracking","require","enable","disable","cleanup","forEach","detectJavaScriptEngine","setupAdvancedPromiseRejectionTracking","tracker"],"sources":["advanced-promise-rejection-tracker.ts"],"sourcesContent":["/**\n * Advanced Promise Rejection Tracker\n *\n * Provides comprehensive promise rejection tracking across different JavaScript engines.\n * This module addresses the critical gap where API call failures and async function errors\n * are not caught by React Error Boundaries, ensuring all promise rejections are handled.\n *\n * Engine Support:\n * - Web: Uses browser's 'unhandledrejection' event\n * - Hermes: Uses HermesInternal.enablePromiseRejectionTracker\n * - JSC: Uses React Native's 'promise/setimmediate/rejection-tracking' module\n *\n * Coverage Includes:\n * - API call failures (fetch, axios, any HTTP library)\n * - Async function errors (unhandled throws in async/await)\n * - Manual Promise.reject() calls\n * - Third-party library promise rejections\n *\n * Research Notes:\n * This implementation was developed through extensive research into React Native's\n * promise handling across different engines. Each engine has its own optimal approach:\n * - Hermes provides a native tracking API that hooks into the engine's internals\n * - JSC can use React Native's internal promise tracking module\n * - Web browsers have standardized unhandledrejection events\n *\n * The approach automatically detects the best available method and falls back\n * gracefully when native tracking is unavailable.\n */\n\nimport { Platform } from 'react-native';\n\n// TypeScript declarations for global objects\ndeclare global {\n interface Global {\n HermesInternal?: {\n enablePromiseRejectionTracker?: (options: {\n allRejections: boolean;\n onUnhandled: (id: number, error: any) => void;\n onHandled: (id: number) => void;\n }) => void;\n };\n }\n}\n\nexport interface PromiseRejectionHandler {\n (error: any): void;\n}\n\n/**\n * Multi-engine promise rejection tracking implementation\n */\nexport class AdvancedPromiseRejectionTracker {\n private onRejectionHandler: PromiseRejectionHandler;\n private cleanupFunctions: (() => void)[] = [];\n\n constructor(onRejection: PromiseRejectionHandler) {\n this.onRejectionHandler = onRejection;\n }\n\n /**\n * Setup promise rejection tracking based on available APIs\n * Returns true if native tracking was enabled, false if fallback used\n */\n public setup(): boolean {\n // Automatically detect and setup the best available promise rejection tracking method\n\n if (Platform.OS === 'web') {\n return this.setupWebTracking();\n }\n\n // For mobile platforms, try native tracking methods in order of preference\n if (this.setupHermesTracking()) {\n return true;\n }\n\n // Fallback to React Native internal tracking for JSC\n if (this.setupReactNativeTracking()) {\n return true;\n }\n\n // No native tracking available - this should rarely happen in modern RN versions\n return false;\n }\n\n /**\n * Method 1: Web Environment - Use unhandledrejection event\n */\n private setupWebTracking(): boolean {\n try {\n if (typeof window === 'undefined' || !window.addEventListener) {\n return false;\n }\n\n const handler = (event: PromiseRejectionEvent) => {\n event.preventDefault(); // Prevent browser's default handling\n this.onRejectionHandler(event.reason);\n };\n\n window.addEventListener('unhandledrejection', handler);\n this.cleanupFunctions.push(() => {\n window.removeEventListener('unhandledrejection', handler);\n });\n\n return true;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Method 2: Hermes Engine - Use HermesInternal API\n */\n private setupHermesTracking(): boolean {\n try {\n // Check if Hermes engine is available\n const hermesInternal = (global as any).HermesInternal;\n if (\n hermesInternal &&\n typeof hermesInternal.enablePromiseRejectionTracker === 'function'\n ) {\n hermesInternal.enablePromiseRejectionTracker({\n allRejections: true, // Track both handled and unhandled rejections\n onUnhandled: (id: number, error: any) => {\n this.onRejectionHandler(error);\n },\n onHandled: (id: number) => {\n // Promise was handled later - could be used for analytics in the future\n },\n });\n\n // Cleanup function (if available)\n this.cleanupFunctions.push(() => {\n // Hermes doesn't provide a disable method, but we can set a no-op handler\n if (hermesInternal?.enablePromiseRejectionTracker) {\n hermesInternal.enablePromiseRejectionTracker({\n allRejections: false,\n onUnhandled: () => {},\n onHandled: () => {},\n });\n }\n });\n\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Method 3: React Native Internal - Use promise/setimmediate/rejection-tracking for JSC\n */\n private setupReactNativeTracking(): boolean {\n try {\n // Try to access React Native's internal promise tracking module\n const tracking = require('promise/setimmediate/rejection-tracking');\n\n if (tracking && typeof tracking.enable === 'function') {\n tracking.enable({\n allRejections: true,\n onUnhandled: (id: number, error: any) => {\n this.onRejectionHandler(error);\n },\n onHandled: (id: number) => {\n // Promise was handled later - tracking for potential analytics\n },\n });\n\n this.cleanupFunctions.push(() => {\n // Try to disable tracking if possible\n if (tracking.disable && typeof tracking.disable === 'function') {\n tracking.disable();\n }\n });\n\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Clean up all tracking mechanisms\n */\n public cleanup(): void {\n // Clean up all tracking mechanisms and restore original state\n this.cleanupFunctions.forEach((cleanup) => {\n try {\n cleanup();\n } catch (error) {\n // Silently handle cleanup errors to avoid disrupting app shutdown\n }\n });\n this.cleanupFunctions = [];\n }\n}\n\n/**\n * Helper function to detect JavaScript engine (simplified for Web/Hermes/JSC)\n */\nexport function detectJavaScriptEngine(): 'web' | 'hermes' | 'jsc' {\n if (Platform.OS === 'web') {\n return 'web';\n }\n\n if (typeof (global as any).HermesInternal !== 'undefined') {\n return 'hermes';\n }\n\n // For non-Hermes engines on mobile, assume JSC (most common)\n return 'jsc';\n}\n\n/**\n * Public API for easy integration\n */\n/**\n * Sets up advanced promise rejection tracking with automatic engine detection\n * @param onRejection Callback function to handle unhandled promise rejections\n * @returns AdvancedPromiseRejectionTracker instance for cleanup and testing\n */\nexport function setupAdvancedPromiseRejectionTracking(\n onRejection: PromiseRejectionHandler\n): AdvancedPromiseRejectionTracker {\n const tracker = new AdvancedPromiseRejectionTracker(onRejection);\n tracker.setup();\n return tracker;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -33,6 +33,23 @@ const WmCursor = /*#__PURE__*/React.memo(props => {
|
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
|
+
|
|
37
|
+
// TODO: Monika WMS-31071 - Consider these improvements:
|
|
38
|
+
// 1. 'words' mode: Use full Title Case regex: text.replace(/\b\w+/g, word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
39
|
+
// 2. 'sentences' mode: Add newline handling with regex: /(^|\.\s+|\!\s+|\?\s+|\n\s*)(\w)/g
|
|
40
|
+
// 3. Add TypeScript type for mode: type AutoCapitalizeMode = 'none' | 'sentences' | 'words' | 'characters'
|
|
41
|
+
const applyAutoCapitalize = (text, mode) => {
|
|
42
|
+
switch (mode) {
|
|
43
|
+
case 'characters':
|
|
44
|
+
return text.toUpperCase();
|
|
45
|
+
case 'words':
|
|
46
|
+
return text.replace(/\b\w/g, c => c.toUpperCase());
|
|
47
|
+
case 'sentences':
|
|
48
|
+
return text.replace(/(^\w|[.!?]\s+\w)/g, c => c.toUpperCase());
|
|
49
|
+
default:
|
|
50
|
+
return text;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
36
53
|
export const WMTextInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
37
54
|
var _props$customDisplayV, _props$floatingLabel;
|
|
38
55
|
const [selectRange, setSelectRange] = useState(null);
|
|
@@ -134,7 +151,7 @@ export const WMTextInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
134
151
|
leadingiconclass: props.leadingiconclass,
|
|
135
152
|
style: {
|
|
136
153
|
...(props.floatingLabelStyle || []),
|
|
137
|
-
...(props.isInputFocused ? props.activeFloatingLabelStyle || {} : {})
|
|
154
|
+
...(props.isInputFocused ? props.activeFloatingLabelStyle || {} : value.current || displayValue ? props.inactiveFloatingLabelStyle || {} : {})
|
|
138
155
|
}
|
|
139
156
|
}) : null, Platform.OS === 'android' && !props.editable ? /*#__PURE__*/React.createElement(Text, _extends({
|
|
140
157
|
style: [props.style, hideInput ? {
|
|
@@ -184,8 +201,8 @@ export const WMTextInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
184
201
|
onSelectionChange: onSelectionChange,
|
|
185
202
|
caretHidden: !!(selectRange !== null && selectRange !== void 0 && selectRange.end),
|
|
186
203
|
onChangeText: text => {
|
|
187
|
-
if (props.autoCapitalize && props.autoCapitalize
|
|
188
|
-
onChangeText(text.
|
|
204
|
+
if (Platform.OS === 'web' && props.autoCapitalize && props.autoCapitalize !== 'none') {
|
|
205
|
+
onChangeText(applyAutoCapitalize(text, props.autoCapitalize));
|
|
189
206
|
return;
|
|
190
207
|
}
|
|
191
208
|
onChangeText(text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useRef","useState","Animated","Platform","Text","TextInput","View","isArray","IMask","FloatingLabel","WmCursor","memo","props","opacityAnimation","Value","current","runAnimation","timing","toValue","duration","useNativeDriver","start","createElement","testID","style","backgroundColor","color","width","marginHorizontal","height","opacity","WMTextInput","forwardRef","ref","_props$customDisplayV","_props$floatingLabel","selectRange","setSelectRange","iMask","setIMask","displayCursor","setDisplayCursor","value","x","forceUpdate","displayValue","setDisplayValue","element","displayformat","MaskedPattern","mask","skipInvalid","lazy","definitions","typedValue","defaultValue","onChangeText","setTimeout","OS","maskchar","_element$current","setSelectionRange","length","onSelectionChange","e","_e$nativeEvent","selection","nativeEvent","allowContentSelection","end","text","_value","substring","slice","formattedValue","replace","valueExpr","opts","customDisplayValue","textStyle","Object","assign","hideInput","Fragment","background","floatingLabel","moveUp","isInputFocused","label","placeholder","variant","labelBackground","leadingiconclass","floatingLabelStyle","activeFloatingLabelStyle","editable","_extends","borderColor","zIndex","autoCapitalize","textTransform","placeholderTextColor","selectable","disabled","multiline","numberOfLines","maxLength","undefined","onFocus","_props$onFocus","call","target","onBlur","_props$onBlur","caretHidden","toUpperCase","selectionColor","cursorColor","onChange","contextMenuHidden","onLayout","handleLayout","display","flexDirection","alignItems","marginTop","minHeight","padding","fontFamily","fontSize","fontWeight"],"sources":["textinput.component.tsx"],"sourcesContent":["import React, { ForwardedRef, useCallback, useEffect, useRef, useState } from 'react';\nimport { Animated, Platform, Text, TextInput, TextInputProps, TextStyle, View, ViewStyle } from 'react-native';\nimport { isArray } from 'lodash';\nimport IMask from 'imask';\nimport { FloatingLabel } from './floatinglabel.component';\n\ninterface SelectRange {\n start: number,\n end: number\n}\n\nconst WmCursor = React.memo((props: {\n color: string,\n height: number\n}) => {\n const opacityAnimation = useRef(new Animated.Value(0.5)).current;\n const runAnimation = useCallback(() => {\n Animated.timing(opacityAnimation, {\n toValue: 0.2,\n duration: 500,\n useNativeDriver: true\n }).start(() => {\n Animated.timing(opacityAnimation, {\n toValue: 0.6,\n duration: 500,\n useNativeDriver: true\n }).start(runAnimation);\n });\n }, []);\n useEffect(() => {\n runAnimation();\n }, []);\n return (\n <Animated.View \n testID=\"wm-custom-cursor\"\n style={{\n backgroundColor: props.color,\n width: 2,\n marginHorizontal: 1,\n height: props.height,\n opacity: opacityAnimation\n }}></Animated.View>\n );\n});\n\nexport const WMTextInput = React.forwardRef((props: (TextInputProps & \n {allowContentSelection: boolean,\n displayformat: string,\n maskchar: string,\n floatingLabel: string\n floatingLabelStyle: TextStyle & ViewStyle,\n activeFloatingLabelStyle: TextStyle & ViewStyle,\n customDisplayValue?: string,\n isInputFocused: boolean,\n autoCapitalize?: string,\n background?: React.ReactNode,\n handleLayout?: any,\n style?: ViewStyle,\n variant?: 'filled' | 'outlined',\n labelBackground?: string,\n leadingiconclass?: string\n }), \n ref: ForwardedRef<TextInput>) => {\n const [selectRange, setSelectRange] = useState<SelectRange>(null as any);\n const [iMask, setIMask] = useState(null as any);\n const [displayCursor, setDisplayCursor] = useState(false);\n const value = useRef(props.value || '');\n const [x, forceUpdate] = useState(1);\n const [displayValue, setDisplayValue] = useState('');\n const element = useRef(null as any);\n // iMask initialization\n useEffect(() => {\n const iMask: any = props.displayformat ? new IMask.MaskedPattern({\n mask: props.displayformat,\n skipInvalid: true,\n lazy: false,\n definitions: {\n '9': /\\d/,\n 'A': /[a-zA-Z]/,\n 'a': /[a-z]/,\n '*': /\\w/\n }\n }) : null;\n if (iMask) {\n iMask.typedValue = value;\n setDisplayValue(iMask.displayValue)\n setIMask(iMask);\n }\n },[props.displayformat]);\n // set default value\n useEffect(() => {\n const defaultValue = props.defaultValue || props.value || '';\n if (defaultValue && !value.current) {\n value.current = defaultValue;\n onChangeText(defaultValue);\n }\n },[props.defaultValue, props.value]);\n // set cursor position in windows\n useEffect(() => {\n setTimeout(() => {\n if (Platform.OS === 'web' && (props.displayformat || props.maskchar)) {\n element?.current?.setSelectionRange(value.current.length, value.current.length);\n }\n }, 100);\n }, [value.current, props]);\n const onSelectionChange = useCallback((e: any) => {\n if (Platform.OS !== 'android') {\n return;\n }\n const selection = e?.nativeEvent?.selection;\n if (!props.allowContentSelection\n && selection\n && selection.end - selection.start > 0) {\n setSelectRange({\n start: value.current.length + 2,\n end: value.current.length + 2\n });\n } else if (selectRange && selectRange.end > 0){\n setSelectRange(null as any);\n }\n }, [props.allowContentSelection, value]);\n // when text changes\n const onChangeText = useCallback((text: string) => {\n if (!(iMask || props.maskchar)) {\n value.current = text;\n props.onChangeText && props.onChangeText(text);\n return;\n }\n let _value = value.current || '';\n if (value.current.length - text.length > 0) {\n _value = _value.substring(0, _value.length - (value.current.length - text.length));\n } else if (text.length - value.current.length > 0) {\n _value += text.slice(-1 * (text.length - value.current.length));\n }\n let formattedValue = _value;\n if(props.maskchar) {\n formattedValue = (_value.replace(/./g, props.maskchar));\n }\n if (iMask) {\n iMask.typedValue = _value;\n formattedValue = iMask.displayValue;\n }\n if (formattedValue !== displayValue) {\n value.current = _value;\n props.onChangeText && props.onChangeText(_value);\n }\n forceUpdate(x+ 1);\n setDisplayValue(formattedValue);\n }, [iMask, value, displayValue, props.onChangeText]);\n const valueExpr = Platform.OS === 'web' ? 'value' : 'defaultValue';\n const opts = {} as any;\n opts[valueExpr] = props.customDisplayValue ?? value.current;\n const textStyle = Object.assign({}, ...isArray(props.style) ? props.style: [props.style]);\n const hideInput = props.displayformat || props.maskchar;\n return (\n <>\n {props.background}\n {props.floatingLabel ? (\n <FloatingLabel\n moveUp={!!(value.current || props.isInputFocused || displayValue)}\n label={props.floatingLabel ?? props.placeholder} \n variant={props.variant}\n labelBackground={props.labelBackground}\n leadingiconclass={props.leadingiconclass}\n style={{\n ...(props.floatingLabelStyle || []),\n ...(props.isInputFocused ? (props.activeFloatingLabelStyle || {}) : {})\n }}/>\n ) : null}\n {(Platform.OS === 'android' && !props.editable) ? (\n <Text \n style={[\n props.style, hideInput ? {\n color: 'transparent', \n backgroundColor: 'transparent',\n borderColor: 'transparent',\n zIndex: 1\n } : {},\n props.autoCapitalize ? {textTransform: 'capitalize'} : {},\n (!props.defaultValue && props.placeholder) ? (props.floatingLabel ? (props.isInputFocused ? {color: props.placeholderTextColor} : {color: 'transparent'}) : {color: props.placeholderTextColor}) : {}\n ]}\n selectable={false}\n disabled={true}\n {...(props.multiline) ? {numberOfLines: props.numberOfLines} : {}}\n >{props.defaultValue || props.placeholder}</Text>\n ) :\n (<TextInput\n {...props}\n {...hideInput || props.customDisplayValue ? opts: {}}\n {...((props.maxLength !== null) ? { maxLength: props.maxLength } : { maxLength: undefined })}\n placeholder={displayValue ? '' : props.placeholder }\n placeholderTextColor={props.floatingLabel ? (props.isInputFocused ? props.placeholderTextColor : 'transparent') : props.placeholderTextColor }\n style={[props.style, hideInput ? {\n color: 'transparent', \n backgroundColor: 'transparent',\n borderColor: 'transparent',\n zIndex: 1\n } : {}]}\n onFocus={(e) => {\n props.onFocus?.(e);\n setDisplayCursor(true);\n element.current = e.target;\n }}\n onBlur={(e) => {\n props?.onBlur?.(e);\n setDisplayCursor(false);\n }}\n ref={ref}\n selection={selectRange}\n onSelectionChange={onSelectionChange}\n caretHidden={!!selectRange?.end}\n onChangeText={(text) => {\n if(props.autoCapitalize && props.autoCapitalize === 'characters') {\n onChangeText(text.toUpperCase());\n return;\n }\n onChangeText(text);\n }}\n {...hideInput ? {\n selectionColor: 'transparent',\n cursorColor: 'transparent',\n onChange : () => {}\n }: {}}\n contextMenuHidden={!props.allowContentSelection}\n autoCapitalize={props.autoCapitalize}\n onLayout={props.handleLayout}\n numberOfLines={1}\n >\n </TextInput>)\n }\n {\n hideInput ? (\n <View style={[props.style, {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: -1 * (textStyle.height || textStyle.minHeight || 0)\n + (textStyle.marginTop || 0)}]}>\n <Text style={{ \n width: undefined,\n backgroundColor: 'transparent', \n borderColor: 'transparent',\n padding: 0,\n display: 'flex',\n color: textStyle.color,\n fontFamily: textStyle.fontFamily,\n fontSize: textStyle.fontSize,\n fontWeight: textStyle.fontWeight\n }}>\n {displayValue}\n </Text>\n {\n (displayCursor && !props.displayformat) ? React.createElement(WmCursor, {\n color: textStyle.color || '#000000',\n height: textStyle.fontSize || 14\n }) : null\n }\n </View>\n ) : null\n }\n </>\n );\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useRef","useState","Animated","Platform","Text","TextInput","View","isArray","IMask","FloatingLabel","WmCursor","memo","props","opacityAnimation","Value","current","runAnimation","timing","toValue","duration","useNativeDriver","start","createElement","testID","style","backgroundColor","color","width","marginHorizontal","height","opacity","applyAutoCapitalize","text","mode","toUpperCase","replace","c","WMTextInput","forwardRef","ref","_props$customDisplayV","_props$floatingLabel","selectRange","setSelectRange","iMask","setIMask","displayCursor","setDisplayCursor","value","x","forceUpdate","displayValue","setDisplayValue","element","displayformat","MaskedPattern","mask","skipInvalid","lazy","definitions","typedValue","defaultValue","onChangeText","setTimeout","OS","maskchar","_element$current","setSelectionRange","length","onSelectionChange","e","_e$nativeEvent","selection","nativeEvent","allowContentSelection","end","_value","substring","slice","formattedValue","valueExpr","opts","customDisplayValue","textStyle","Object","assign","hideInput","Fragment","background","floatingLabel","moveUp","isInputFocused","label","placeholder","variant","labelBackground","leadingiconclass","floatingLabelStyle","activeFloatingLabelStyle","inactiveFloatingLabelStyle","editable","_extends","borderColor","zIndex","autoCapitalize","textTransform","placeholderTextColor","selectable","disabled","multiline","numberOfLines","maxLength","undefined","onFocus","_props$onFocus","call","target","onBlur","_props$onBlur","caretHidden","selectionColor","cursorColor","onChange","contextMenuHidden","onLayout","handleLayout","display","flexDirection","alignItems","marginTop","minHeight","padding","fontFamily","fontSize","fontWeight"],"sources":["textinput.component.tsx"],"sourcesContent":["import React, { ForwardedRef, useCallback, useEffect, useRef, useState } from 'react';\nimport { Animated, Platform, Text, TextInput, TextInputProps, TextStyle, View, ViewStyle } from 'react-native';\nimport { isArray } from 'lodash';\nimport IMask from 'imask';\nimport { FloatingLabel } from './floatinglabel.component';\n\ninterface SelectRange {\n start: number,\n end: number\n}\n\nconst WmCursor = React.memo((props: {\n color: string,\n height: number\n}) => {\n const opacityAnimation = useRef(new Animated.Value(0.5)).current;\n const runAnimation = useCallback(() => {\n Animated.timing(opacityAnimation, {\n toValue: 0.2,\n duration: 500,\n useNativeDriver: true\n }).start(() => {\n Animated.timing(opacityAnimation, {\n toValue: 0.6,\n duration: 500,\n useNativeDriver: true\n }).start(runAnimation);\n });\n }, []);\n useEffect(() => {\n runAnimation();\n }, []);\n return (\n <Animated.View \n testID=\"wm-custom-cursor\"\n style={{\n backgroundColor: props.color,\n width: 2,\n marginHorizontal: 1,\n height: props.height,\n opacity: opacityAnimation\n }}></Animated.View>\n );\n});\n\n// TODO: Monika WMS-31071 - Consider these improvements:\n// 1. 'words' mode: Use full Title Case regex: text.replace(/\\b\\w+/g, word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n// 2. 'sentences' mode: Add newline handling with regex: /(^|\\.\\s+|\\!\\s+|\\?\\s+|\\n\\s*)(\\w)/g\n// 3. Add TypeScript type for mode: type AutoCapitalizeMode = 'none' | 'sentences' | 'words' | 'characters'\nconst applyAutoCapitalize = (text: string, mode: string): string => {\n switch (mode) {\n case 'characters':\n return text.toUpperCase();\n case 'words':\n return text.replace(/\\b\\w/g, c => c.toUpperCase());\n case 'sentences':\n return text.replace(/(^\\w|[.!?]\\s+\\w)/g, c => c.toUpperCase());\n default:\n return text;\n }\n};\n\nexport const WMTextInput = React.forwardRef((props: (TextInputProps & \n {allowContentSelection: boolean,\n displayformat: string,\n maskchar: string,\n floatingLabel: string\n floatingLabelStyle: TextStyle & ViewStyle,\n activeFloatingLabelStyle: TextStyle & ViewStyle,\n inactiveFloatingLabelStyle?: TextStyle & ViewStyle,\n customDisplayValue?: string,\n isInputFocused: boolean,\n autoCapitalize?: string,\n background?: React.ReactNode,\n handleLayout?: any,\n style?: ViewStyle,\n variant?: 'filled' | 'outlined',\n labelBackground?: string,\n leadingiconclass?: string\n }), \n ref: ForwardedRef<TextInput>) => {\n const [selectRange, setSelectRange] = useState<SelectRange>(null as any);\n const [iMask, setIMask] = useState(null as any);\n const [displayCursor, setDisplayCursor] = useState(false);\n const value = useRef(props.value || '');\n const [x, forceUpdate] = useState(1);\n const [displayValue, setDisplayValue] = useState('');\n const element = useRef(null as any);\n // iMask initialization\n useEffect(() => {\n const iMask: any = props.displayformat ? new IMask.MaskedPattern({\n mask: props.displayformat,\n skipInvalid: true,\n lazy: false,\n definitions: {\n '9': /\\d/,\n 'A': /[a-zA-Z]/,\n 'a': /[a-z]/,\n '*': /\\w/\n }\n }) : null;\n if (iMask) {\n iMask.typedValue = value;\n setDisplayValue(iMask.displayValue)\n setIMask(iMask);\n }\n },[props.displayformat]);\n // set default value\n useEffect(() => {\n const defaultValue = props.defaultValue || props.value || '';\n if (defaultValue && !value.current) {\n value.current = defaultValue;\n onChangeText(defaultValue);\n }\n },[props.defaultValue, props.value]);\n // set cursor position in windows\n useEffect(() => {\n setTimeout(() => {\n if (Platform.OS === 'web' && (props.displayformat || props.maskchar)) {\n element?.current?.setSelectionRange(value.current.length, value.current.length);\n }\n }, 100);\n }, [value.current, props]);\n const onSelectionChange = useCallback((e: any) => {\n if (Platform.OS !== 'android') {\n return;\n }\n const selection = e?.nativeEvent?.selection;\n if (!props.allowContentSelection\n && selection\n && selection.end - selection.start > 0) {\n setSelectRange({\n start: value.current.length + 2,\n end: value.current.length + 2\n });\n } else if (selectRange && selectRange.end > 0){\n setSelectRange(null as any);\n }\n }, [props.allowContentSelection, value]);\n // when text changes\n const onChangeText = useCallback((text: string) => {\n if (!(iMask || props.maskchar)) {\n value.current = text;\n props.onChangeText && props.onChangeText(text);\n return;\n }\n let _value = value.current || '';\n if (value.current.length - text.length > 0) {\n _value = _value.substring(0, _value.length - (value.current.length - text.length));\n } else if (text.length - value.current.length > 0) {\n _value += text.slice(-1 * (text.length - value.current.length));\n }\n let formattedValue = _value;\n if(props.maskchar) {\n formattedValue = (_value.replace(/./g, props.maskchar));\n }\n if (iMask) {\n iMask.typedValue = _value;\n formattedValue = iMask.displayValue;\n }\n if (formattedValue !== displayValue) {\n value.current = _value;\n props.onChangeText && props.onChangeText(_value);\n }\n forceUpdate(x+ 1);\n setDisplayValue(formattedValue);\n }, [iMask, value, displayValue, props.onChangeText]);\n const valueExpr = Platform.OS === 'web' ? 'value' : 'defaultValue';\n const opts = {} as any;\n opts[valueExpr] = props.customDisplayValue ?? value.current;\n const textStyle = Object.assign({}, ...isArray(props.style) ? props.style: [props.style]);\n const hideInput = props.displayformat || props.maskchar;\n return (\n <>\n {props.background}\n {props.floatingLabel ? (\n <FloatingLabel\n moveUp={!!(value.current || props.isInputFocused || displayValue)}\n label={props.floatingLabel ?? props.placeholder} \n variant={props.variant}\n labelBackground={props.labelBackground}\n leadingiconclass={props.leadingiconclass}\n style={{\n ...(props.floatingLabelStyle || []),\n ...(props.isInputFocused \n ? (props.activeFloatingLabelStyle || {}) \n : (value.current || displayValue) \n ? (props.inactiveFloatingLabelStyle || {}) \n : {}\n )\n }}/>\n ) : null}\n {(Platform.OS === 'android' && !props.editable) ? (\n <Text \n style={[\n props.style, hideInput ? {\n color: 'transparent', \n backgroundColor: 'transparent',\n borderColor: 'transparent',\n zIndex: 1\n } : {},\n props.autoCapitalize ? {textTransform: 'capitalize'} : {},\n (!props.defaultValue && props.placeholder) ? (props.floatingLabel ? (props.isInputFocused ? {color: props.placeholderTextColor} : {color: 'transparent'}) : {color: props.placeholderTextColor}) : {}\n ]}\n selectable={false}\n disabled={true}\n {...(props.multiline) ? {numberOfLines: props.numberOfLines} : {}}\n >{props.defaultValue || props.placeholder}</Text>\n ) :\n (<TextInput\n {...props}\n {...hideInput || props.customDisplayValue ? opts: {}}\n {...((props.maxLength !== null) ? { maxLength: props.maxLength } : { maxLength: undefined })}\n placeholder={displayValue ? '' : props.placeholder }\n placeholderTextColor={props.floatingLabel ? (props.isInputFocused ? props.placeholderTextColor : 'transparent') : props.placeholderTextColor }\n style={[props.style, hideInput ? {\n color: 'transparent', \n backgroundColor: 'transparent',\n borderColor: 'transparent',\n zIndex: 1\n } : {}]}\n onFocus={(e) => {\n props.onFocus?.(e);\n setDisplayCursor(true);\n element.current = e.target;\n }}\n onBlur={(e) => {\n props?.onBlur?.(e);\n setDisplayCursor(false);\n }}\n ref={ref}\n selection={selectRange}\n onSelectionChange={onSelectionChange}\n caretHidden={!!selectRange?.end}\n onChangeText={(text) => {\n if(Platform.OS === 'web' && props.autoCapitalize && props.autoCapitalize !== 'none') {\n onChangeText(applyAutoCapitalize(text, props.autoCapitalize));\n return;\n }\n onChangeText(text);\n }}\n {...hideInput ? {\n selectionColor: 'transparent',\n cursorColor: 'transparent',\n onChange : () => {}\n }: {}}\n contextMenuHidden={!props.allowContentSelection}\n autoCapitalize={props.autoCapitalize}\n onLayout={props.handleLayout}\n numberOfLines={1}\n >\n </TextInput>)\n }\n {\n hideInput ? (\n <View style={[props.style, {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: -1 * (textStyle.height || textStyle.minHeight || 0)\n + (textStyle.marginTop || 0)}]}>\n <Text style={{ \n width: undefined,\n backgroundColor: 'transparent', \n borderColor: 'transparent',\n padding: 0,\n display: 'flex',\n color: textStyle.color,\n fontFamily: textStyle.fontFamily,\n fontSize: textStyle.fontSize,\n fontWeight: textStyle.fontWeight\n }}>\n {displayValue}\n </Text>\n {\n (displayCursor && !props.displayformat) ? React.createElement(WmCursor, {\n color: textStyle.color || '#000000',\n height: textStyle.fontSize || 14\n }) : null\n }\n </View>\n ) : null\n }\n </>\n );\n});\n"],"mappings":";AAAA,OAAOA,KAAK,IAAkBC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACrF,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,SAAS,EAA6BC,IAAI,QAAmB,cAAc;AAC9G,SAASC,OAAO,QAAQ,QAAQ;AAChC,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,aAAa,QAAQ,2BAA2B;AAOzD,MAAMC,QAAQ,gBAAGb,KAAK,CAACc,IAAI,CAAEC,KAG5B,IAAK;EACJ,MAAMC,gBAAgB,GAAGb,MAAM,CAAC,IAAIE,QAAQ,CAACY,KAAK,CAAC,GAAG,CAAC,CAAC,CAACC,OAAO;EAChE,MAAMC,YAAY,GAAGlB,WAAW,CAAC,MAAM;IACrCI,QAAQ,CAACe,MAAM,CAACJ,gBAAgB,EAAE;MAChCK,OAAO,EAAE,GAAG;MACZC,QAAQ,EAAE,GAAG;MACbC,eAAe,EAAE;IACnB,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM;MACbnB,QAAQ,CAACe,MAAM,CAACJ,gBAAgB,EAAE;QAChCK,OAAO,EAAE,GAAG;QACZC,QAAQ,EAAE,GAAG;QACbC,eAAe,EAAE;MACnB,CAAC,CAAC,CAACC,KAAK,CAACL,YAAY,CAAC;IACxB,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EACNjB,SAAS,CAAC,MAAM;IACdiB,YAAY,CAAC,CAAC;EAChB,CAAC,EAAE,EAAE,CAAC;EACN,oBACEnB,KAAA,CAAAyB,aAAA,CAACpB,QAAQ,CAACI,IAAI;IACdiB,MAAM,EAAC,kBAAkB;IACzBC,KAAK,EAAE;MACLC,eAAe,EAAEb,KAAK,CAACc,KAAK;MAC5BC,KAAK,EAAE,CAAC;MACRC,gBAAgB,EAAE,CAAC;MACnBC,MAAM,EAAEjB,KAAK,CAACiB,MAAM;MACpBC,OAAO,EAAEjB;IACX;EAAE,CAAgB,CAAC;AAEvB,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,MAAMkB,mBAAmB,GAAGA,CAACC,IAAY,EAAEC,IAAY,KAAa;EAClE,QAAQA,IAAI;IACV,KAAK,YAAY;MACf,OAAOD,IAAI,CAACE,WAAW,CAAC,CAAC;IAC3B,KAAK,OAAO;MACV,OAAOF,IAAI,CAACG,OAAO,CAAC,OAAO,EAAEC,CAAC,IAAIA,CAAC,CAACF,WAAW,CAAC,CAAC,CAAC;IACpD,KAAK,WAAW;MACd,OAAOF,IAAI,CAACG,OAAO,CAAC,mBAAmB,EAAEC,CAAC,IAAIA,CAAC,CAACF,WAAW,CAAC,CAAC,CAAC;IAChE;MACE,OAAOF,IAAI;EACf;AACF,CAAC;AAED,OAAO,MAAMK,WAAW,gBAAGxC,KAAK,CAACyC,UAAU,CAAC,CAAC1B,KAiBzC,EACA2B,GAA4B,KAAK;EAAA,IAAAC,qBAAA,EAAAC,oBAAA;EACjC,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG1C,QAAQ,CAAc,IAAW,CAAC;EACxE,MAAM,CAAC2C,KAAK,EAAEC,QAAQ,CAAC,GAAG5C,QAAQ,CAAC,IAAW,CAAC;EAC/C,MAAM,CAAC6C,aAAa,EAAEC,gBAAgB,CAAC,GAAG9C,QAAQ,CAAC,KAAK,CAAC;EACzD,MAAM+C,KAAK,GAAGhD,MAAM,CAACY,KAAK,CAACoC,KAAK,IAAI,EAAE,CAAC;EACvC,MAAM,CAACC,CAAC,EAAEC,WAAW,CAAC,GAAGjD,QAAQ,CAAC,CAAC,CAAC;EACpC,MAAM,CAACkD,YAAY,EAAEC,eAAe,CAAC,GAAGnD,QAAQ,CAAC,EAAE,CAAC;EACpD,MAAMoD,OAAO,GAAGrD,MAAM,CAAC,IAAW,CAAC;EACnC;EACAD,SAAS,CAAC,MAAM;IACd,MAAM6C,KAAU,GAAGhC,KAAK,CAAC0C,aAAa,GAAG,IAAI9C,KAAK,CAAC+C,aAAa,CAAC;MAC/DC,IAAI,EAAE5C,KAAK,CAAC0C,aAAa;MACzBG,WAAW,EAAE,IAAI;MACjBC,IAAI,EAAE,KAAK;MACXC,WAAW,EAAE;QACT,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE;MACT;IACF,CAAC,CAAC,GAAG,IAAI;IACT,IAAIf,KAAK,EAAE;MACTA,KAAK,CAACgB,UAAU,GAAGZ,KAAK;MACxBI,eAAe,CAACR,KAAK,CAACO,YAAY,CAAC;MACnCN,QAAQ,CAACD,KAAK,CAAC;IACjB;EACF,CAAC,EAAC,CAAChC,KAAK,CAAC0C,aAAa,CAAC,CAAC;EACxB;EACAvD,SAAS,CAAC,MAAM;IACd,MAAM8D,YAAY,GAAGjD,KAAK,CAACiD,YAAY,IAAIjD,KAAK,CAACoC,KAAK,IAAI,EAAE;IAC5D,IAAIa,YAAY,IAAI,CAACb,KAAK,CAACjC,OAAO,EAAE;MAClCiC,KAAK,CAACjC,OAAO,GAAG8C,YAAY;MAC5BC,YAAY,CAACD,YAAY,CAAC;IAC5B;EACF,CAAC,EAAC,CAACjD,KAAK,CAACiD,YAAY,EAAEjD,KAAK,CAACoC,KAAK,CAAC,CAAC;EACpC;EACAjD,SAAS,CAAC,MAAM;IACdgE,UAAU,CAAC,MAAM;MACf,IAAI5D,QAAQ,CAAC6D,EAAE,KAAK,KAAK,KAAKpD,KAAK,CAAC0C,aAAa,IAAI1C,KAAK,CAACqD,QAAQ,CAAC,EAAE;QAAA,IAAAC,gBAAA;QACpEb,OAAO,aAAPA,OAAO,gBAAAa,gBAAA,GAAPb,OAAO,CAAEtC,OAAO,cAAAmD,gBAAA,eAAhBA,gBAAA,CAAkBC,iBAAiB,CAACnB,KAAK,CAACjC,OAAO,CAACqD,MAAM,EAAEpB,KAAK,CAACjC,OAAO,CAACqD,MAAM,CAAC;MACjF;IACF,CAAC,EAAE,GAAG,CAAC;EACT,CAAC,EAAE,CAACpB,KAAK,CAACjC,OAAO,EAAEH,KAAK,CAAC,CAAC;EAC1B,MAAMyD,iBAAiB,GAAGvE,WAAW,CAAEwE,CAAM,IAAK;IAAA,IAAAC,cAAA;IAC9C,IAAIpE,QAAQ,CAAC6D,EAAE,KAAK,SAAS,EAAE;MAC3B;IACJ;IACA,MAAMQ,SAAS,GAAGF,CAAC,aAADA,CAAC,gBAAAC,cAAA,GAADD,CAAC,CAAEG,WAAW,cAAAF,cAAA,uBAAdA,cAAA,CAAgBC,SAAS;IAC3C,IAAI,CAAC5D,KAAK,CAAC8D,qBAAqB,IACzBF,SAAS,IACTA,SAAS,CAACG,GAAG,GAAGH,SAAS,CAACnD,KAAK,GAAG,CAAC,EAAE;MACxCsB,cAAc,CAAC;QACXtB,KAAK,EAAE2B,KAAK,CAACjC,OAAO,CAACqD,MAAM,GAAG,CAAC;QAC/BO,GAAG,EAAE3B,KAAK,CAACjC,OAAO,CAACqD,MAAM,GAAG;MAChC,CAAC,CAAC;IACN,CAAC,MAAM,IAAI1B,WAAW,IAAIA,WAAW,CAACiC,GAAG,GAAG,CAAC,EAAC;MAC1ChC,cAAc,CAAC,IAAW,CAAC;IAC/B;EACJ,CAAC,EAAE,CAAC/B,KAAK,CAAC8D,qBAAqB,EAAE1B,KAAK,CAAC,CAAC;EACxC;EACA,MAAMc,YAAY,GAAGhE,WAAW,CAAEkC,IAAY,IAAK;IACjD,IAAI,EAAEY,KAAK,IAAIhC,KAAK,CAACqD,QAAQ,CAAC,EAAE;MAC9BjB,KAAK,CAACjC,OAAO,GAAGiB,IAAI;MACpBpB,KAAK,CAACkD,YAAY,IAAIlD,KAAK,CAACkD,YAAY,CAAC9B,IAAI,CAAC;MAC9C;IACF;IACA,IAAI4C,MAAM,GAAG5B,KAAK,CAACjC,OAAO,IAAI,EAAE;IAChC,IAAIiC,KAAK,CAACjC,OAAO,CAACqD,MAAM,GAAGpC,IAAI,CAACoC,MAAM,GAAG,CAAC,EAAE;MAC1CQ,MAAM,GAAGA,MAAM,CAACC,SAAS,CAAC,CAAC,EAAED,MAAM,CAACR,MAAM,IAAIpB,KAAK,CAACjC,OAAO,CAACqD,MAAM,GAAGpC,IAAI,CAACoC,MAAM,CAAC,CAAC;IACpF,CAAC,MAAM,IAAIpC,IAAI,CAACoC,MAAM,GAAGpB,KAAK,CAACjC,OAAO,CAACqD,MAAM,GAAG,CAAC,EAAE;MACjDQ,MAAM,IAAI5C,IAAI,CAAC8C,KAAK,CAAC,CAAC,CAAC,IAAI9C,IAAI,CAACoC,MAAM,GAAGpB,KAAK,CAACjC,OAAO,CAACqD,MAAM,CAAC,CAAC;IACjE;IACA,IAAIW,cAAc,GAAGH,MAAM;IAC3B,IAAGhE,KAAK,CAACqD,QAAQ,EAAE;MACjBc,cAAc,GAAIH,MAAM,CAACzC,OAAO,CAAC,IAAI,EAAEvB,KAAK,CAACqD,QAAQ,CAAE;IACzD;IACA,IAAIrB,KAAK,EAAE;MACTA,KAAK,CAACgB,UAAU,GAAGgB,MAAM;MACzBG,cAAc,GAAGnC,KAAK,CAACO,YAAY;IACrC;IACA,IAAI4B,cAAc,KAAK5B,YAAY,EAAE;MACnCH,KAAK,CAACjC,OAAO,GAAG6D,MAAM;MACtBhE,KAAK,CAACkD,YAAY,IAAIlD,KAAK,CAACkD,YAAY,CAACc,MAAM,CAAC;IAClD;IACA1B,WAAW,CAACD,CAAC,GAAE,CAAC,CAAC;IACjBG,eAAe,CAAC2B,cAAc,CAAC;EACjC,CAAC,EAAE,CAACnC,KAAK,EAAEI,KAAK,EAAEG,YAAY,EAAEvC,KAAK,CAACkD,YAAY,CAAC,CAAC;EACpD,MAAMkB,SAAS,GAAG7E,QAAQ,CAAC6D,EAAE,KAAK,KAAK,GAAG,OAAO,GAAG,cAAc;EAClE,MAAMiB,IAAI,GAAG,CAAC,CAAQ;EACtBA,IAAI,CAACD,SAAS,CAAC,IAAAxC,qBAAA,GAAG5B,KAAK,CAACsE,kBAAkB,cAAA1C,qBAAA,cAAAA,qBAAA,GAAIQ,KAAK,CAACjC,OAAO;EAC3D,MAAMoE,SAAS,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAG9E,OAAO,CAACK,KAAK,CAACY,KAAK,CAAC,GAAGZ,KAAK,CAACY,KAAK,GAAE,CAACZ,KAAK,CAACY,KAAK,CAAC,EAAC;EACzF,MAAM8D,SAAS,GAAG1E,KAAK,CAAC0C,aAAa,IAAI1C,KAAK,CAACqD,QAAQ;EACvD,oBACEpE,KAAA,CAAAyB,aAAA,CAAAzB,KAAA,CAAA0F,QAAA,QACG3E,KAAK,CAAC4E,UAAU,EAChB5E,KAAK,CAAC6E,aAAa,gBAClB5F,KAAA,CAAAyB,aAAA,CAACb,aAAa;IACZiF,MAAM,EAAE,CAAC,EAAE1C,KAAK,CAACjC,OAAO,IAAIH,KAAK,CAAC+E,cAAc,IAAIxC,YAAY,CAAE;IAClEyC,KAAK,GAAAnD,oBAAA,GAAE7B,KAAK,CAAC6E,aAAa,cAAAhD,oBAAA,cAAAA,oBAAA,GAAI7B,KAAK,CAACiF,WAAY;IAChDC,OAAO,EAAElF,KAAK,CAACkF,OAAQ;IACvBC,eAAe,EAAEnF,KAAK,CAACmF,eAAgB;IACvCC,gBAAgB,EAAEpF,KAAK,CAACoF,gBAAiB;IACzCxE,KAAK,EAAE;MACL,IAAIZ,KAAK,CAACqF,kBAAkB,IAAI,EAAE,CAAC;MACnC,IAAIrF,KAAK,CAAC+E,cAAc,GACnB/E,KAAK,CAACsF,wBAAwB,IAAI,CAAC,CAAC,GACpClD,KAAK,CAACjC,OAAO,IAAIoC,YAAY,GAC3BvC,KAAK,CAACuF,0BAA0B,IAAI,CAAC,CAAC,GACvC,CAAC,CAAC;IAEV;EAAE,CAAC,CAAC,GACJ,IAAI,EACNhG,QAAQ,CAAC6D,EAAE,KAAK,SAAS,IAAI,CAACpD,KAAK,CAACwF,QAAQ,gBAC1CvG,KAAA,CAAAyB,aAAA,CAAClB,IAAI,EAAAiG,QAAA;IACH7E,KAAK,EAAE,CACLZ,KAAK,CAACY,KAAK,EAAE8D,SAAS,GAAG;MACvB5D,KAAK,EAAE,aAAa;MACpBD,eAAe,EAAE,aAAa;MAC9B6E,WAAW,EAAE,aAAa;MAC1BC,MAAM,EAAE;IACV,CAAC,GAAG,CAAC,CAAC,EACN3F,KAAK,CAAC4F,cAAc,GAAG;MAACC,aAAa,EAAE;IAAY,CAAC,GAAG,CAAC,CAAC,EACxD,CAAC7F,KAAK,CAACiD,YAAY,IAAIjD,KAAK,CAACiF,WAAW,GAAKjF,KAAK,CAAC6E,aAAa,GAAI7E,KAAK,CAAC+E,cAAc,GAAG;MAACjE,KAAK,EAAEd,KAAK,CAAC8F;IAAoB,CAAC,GAAG;MAAChF,KAAK,EAAE;IAAa,CAAC,GAAI;MAACA,KAAK,EAAEd,KAAK,CAAC8F;IAAoB,CAAC,GAAI,CAAC,CAAC,CACrM;IACFC,UAAU,EAAE,KAAM;IAClBC,QAAQ,EAAE;EAAK,GACVhG,KAAK,CAACiG,SAAS,GAAI;IAACC,aAAa,EAAElG,KAAK,CAACkG;EAAa,CAAC,GAAG,CAAC,CAAC,GACjElG,KAAK,CAACiD,YAAY,IAAIjD,KAAK,CAACiF,WAAkB,CAAC,gBAEjDhG,KAAA,CAAAyB,aAAA,CAACjB,SAAS,EAAAgG,QAAA,KACJzF,KAAK,EACL0E,SAAS,IAAI1E,KAAK,CAACsE,kBAAkB,GAAGD,IAAI,GAAE,CAAC,CAAC,EAC9CrE,KAAK,CAACmG,SAAS,KAAK,IAAI,GAAI;IAAEA,SAAS,EAAEnG,KAAK,CAACmG;EAAU,CAAC,GAAG;IAAEA,SAAS,EAAEC;EAAU,CAAC;IAC3FnB,WAAW,EAAE1C,YAAY,GAAG,EAAE,GAAGvC,KAAK,CAACiF,WAAa;IACpDa,oBAAoB,EAAE9F,KAAK,CAAC6E,aAAa,GAAI7E,KAAK,CAAC+E,cAAc,GAAG/E,KAAK,CAAC8F,oBAAoB,GAAG,aAAa,GAAI9F,KAAK,CAAC8F,oBAAsB;IAC9IlF,KAAK,EAAE,CAACZ,KAAK,CAACY,KAAK,EAAE8D,SAAS,GAAG;MAC/B5D,KAAK,EAAE,aAAa;MACpBD,eAAe,EAAE,aAAa;MAC9B6E,WAAW,EAAE,aAAa;MAC1BC,MAAM,EAAE;IACV,CAAC,GAAG,CAAC,CAAC,CAAE;IACRU,OAAO,EAAG3C,CAAC,IAAK;MAAA,IAAA4C,cAAA;MACd,CAAAA,cAAA,GAAAtG,KAAK,CAACqG,OAAO,cAAAC,cAAA,eAAbA,cAAA,CAAAC,IAAA,CAAAvG,KAAK,EAAW0D,CAAC,CAAC;MAClBvB,gBAAgB,CAAC,IAAI,CAAC;MACtBM,OAAO,CAACtC,OAAO,GAAGuD,CAAC,CAAC8C,MAAM;IAC5B,CAAE;IACFC,MAAM,EAAG/C,CAAC,IAAK;MAAA,IAAAgD,aAAA;MACb1G,KAAK,aAALA,KAAK,gBAAA0G,aAAA,GAAL1G,KAAK,CAAEyG,MAAM,cAAAC,aAAA,eAAbA,aAAA,CAAAH,IAAA,CAAAvG,KAAK,EAAW0D,CAAC,CAAC;MAClBvB,gBAAgB,CAAC,KAAK,CAAC;IACzB,CAAE;IACFR,GAAG,EAAEA,GAAI;IACTiC,SAAS,EAAE9B,WAAY;IACvB2B,iBAAiB,EAAEA,iBAAkB;IACrCkD,WAAW,EAAE,CAAC,EAAC7E,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEiC,GAAG,CAAC;IAChCb,YAAY,EAAG9B,IAAI,IAAK;MACtB,IAAG7B,QAAQ,CAAC6D,EAAE,KAAK,KAAK,IAAIpD,KAAK,CAAC4F,cAAc,IAAI5F,KAAK,CAAC4F,cAAc,KAAK,MAAM,EAAE;QACnF1C,YAAY,CAAC/B,mBAAmB,CAACC,IAAI,EAAEpB,KAAK,CAAC4F,cAAc,CAAC,CAAC;QAC7D;MACF;MACA1C,YAAY,CAAC9B,IAAI,CAAC;IACpB;EAAE,GACEsD,SAAS,GAAG;IACdkC,cAAc,EAAE,aAAa;IAC7BC,WAAW,EAAE,aAAa;IAC1BC,QAAQ,EAAGA,CAAA,KAAM,CAAC;EACpB,CAAC,GAAE,CAAC,CAAC;IACLC,iBAAiB,EAAE,CAAC/G,KAAK,CAAC8D,qBAAsB;IAChD8B,cAAc,EAAE5F,KAAK,CAAC4F,cAAe;IACrCoB,QAAQ,EAAEhH,KAAK,CAACiH,YAAa;IAC7Bf,aAAa,EAAE;EAAE,EAER,CAAE,EAGfxB,SAAS,gBACPzF,KAAA,CAAAyB,aAAA,CAAChB,IAAI;IAACkB,KAAK,EAAE,CAACZ,KAAK,CAACY,KAAK,EAAE;MACzBsG,OAAO,EAAE,MAAM;MACfC,aAAa,EAAE,KAAK;MACpBC,UAAU,EAAE,QAAQ;MACpBC,SAAS,EAAE,CAAC,CAAC,IAAI9C,SAAS,CAACtD,MAAM,IAAIsD,SAAS,CAAC+C,SAAS,IAAI,CAAC,CAAC,IACzD/C,SAAS,CAAC8C,SAAS,IAAI,CAAC;IAAC,CAAC;EAAE,gBACjCpI,KAAA,CAAAyB,aAAA,CAAClB,IAAI;IAACoB,KAAK,EAAE;MACXG,KAAK,EAAEqF,SAAS;MAChBvF,eAAe,EAAE,aAAa;MAC9B6E,WAAW,EAAE,aAAa;MAC1B6B,OAAO,EAAE,CAAC;MACVL,OAAO,EAAE,MAAM;MACfpG,KAAK,EAAEyD,SAAS,CAACzD,KAAK;MACtB0G,UAAU,EAAEjD,SAAS,CAACiD,UAAU;MAChCC,QAAQ,EAAElD,SAAS,CAACkD,QAAQ;MAC5BC,UAAU,EAAEnD,SAAS,CAACmD;IACtB;EAAE,GACDnF,YACG,CAAC,EAEJL,aAAa,IAAI,CAAClC,KAAK,CAAC0C,aAAa,gBAAIzD,KAAK,CAACyB,aAAa,CAACZ,QAAQ,EAAE;IACtEgB,KAAK,EAAEyD,SAAS,CAACzD,KAAK,IAAI,SAAS;IACnCG,MAAM,EAAEsD,SAAS,CAACkD,QAAQ,IAAI;EAChC,CAAC,CAAC,GAAG,IAEH,CAAC,GACL,IAEN,CAAC;AAET,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { Dimensions, Platform, StyleSheet, View } from 'react-native';
|
|
3
|
+
const WebOutsidePressHandler = ({
|
|
4
|
+
onOutsidePress,
|
|
5
|
+
children,
|
|
6
|
+
disabled = false,
|
|
7
|
+
style
|
|
8
|
+
}) => {
|
|
9
|
+
const containerRef = useRef(null);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (disabled) return;
|
|
12
|
+
const doc = globalThis.document;
|
|
13
|
+
if (!doc) return;
|
|
14
|
+
const handlePress = event => {
|
|
15
|
+
var _containerRef$current;
|
|
16
|
+
if (!((_containerRef$current = containerRef.current) !== null && _containerRef$current !== void 0 && _containerRef$current.contains(event.target))) {
|
|
17
|
+
onOutsidePress();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
doc.addEventListener('mousedown', handlePress);
|
|
21
|
+
return () => doc.removeEventListener('mousedown', handlePress);
|
|
22
|
+
}, [onOutsidePress, disabled]);
|
|
23
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
24
|
+
ref: containerRef,
|
|
25
|
+
style: style
|
|
26
|
+
}, children);
|
|
27
|
+
};
|
|
28
|
+
const NativeOutsidePressHandler = ({
|
|
29
|
+
onOutsidePress,
|
|
30
|
+
children,
|
|
31
|
+
disabled = false,
|
|
32
|
+
style
|
|
33
|
+
}) => {
|
|
34
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
35
|
+
style: [styles.container, style]
|
|
36
|
+
}, !disabled && /*#__PURE__*/React.createElement(View, {
|
|
37
|
+
style: styles.backdrop,
|
|
38
|
+
onStartShouldSetResponder: () => true,
|
|
39
|
+
onResponderEnd: () => onOutsidePress()
|
|
40
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
41
|
+
style: styles.content
|
|
42
|
+
}, children));
|
|
43
|
+
};
|
|
44
|
+
const {
|
|
45
|
+
width: SCREEN_W,
|
|
46
|
+
height: SCREEN_H
|
|
47
|
+
} = Dimensions.get('screen');
|
|
48
|
+
const styles = StyleSheet.create({
|
|
49
|
+
container: {
|
|
50
|
+
overflow: 'visible'
|
|
51
|
+
},
|
|
52
|
+
backdrop: {
|
|
53
|
+
position: 'absolute',
|
|
54
|
+
top: -SCREEN_H * 3,
|
|
55
|
+
left: -SCREEN_W * 3,
|
|
56
|
+
width: SCREEN_W * 7,
|
|
57
|
+
height: SCREEN_H * 7
|
|
58
|
+
},
|
|
59
|
+
content: {
|
|
60
|
+
zIndex: 1
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const OutsidePressHandler = Platform.OS === 'web' ? WebOutsidePressHandler : NativeOutsidePressHandler;
|
|
64
|
+
export default OutsidePressHandler;
|
|
65
|
+
//# sourceMappingURL=outside-press-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","Dimensions","Platform","StyleSheet","View","WebOutsidePressHandler","onOutsidePress","children","disabled","style","containerRef","doc","globalThis","document","handlePress","event","_containerRef$current","current","contains","target","addEventListener","removeEventListener","createElement","ref","NativeOutsidePressHandler","styles","container","backdrop","onStartShouldSetResponder","onResponderEnd","content","width","SCREEN_W","height","SCREEN_H","get","create","overflow","position","top","left","zIndex","OutsidePressHandler","OS"],"sources":["outside-press-handler.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Dimensions, Platform, StyleSheet, View } from 'react-native';\n\ntype OutsidePressHandlerProps = {\n onOutsidePress: () => void;\n children: React.ReactNode;\n disabled?: boolean;\n style?: any;\n};\n\nconst WebOutsidePressHandler = ({\n onOutsidePress,\n children,\n disabled = false,\n style,\n}: OutsidePressHandlerProps) => {\n const containerRef = useRef<View>(null);\n\n useEffect(() => {\n if (disabled) return;\n\n const doc = (globalThis as any).document;\n if (!doc) return;\n\n const handlePress = (event: any) => {\n if (!(containerRef.current as any)?.contains(event.target)) {\n onOutsidePress();\n }\n };\n\n doc.addEventListener('mousedown', handlePress);\n return () => doc.removeEventListener('mousedown', handlePress);\n }, [onOutsidePress, disabled]);\n\n return (\n <View ref={containerRef} style={style}>\n {children}\n </View>\n );\n};\n\nconst NativeOutsidePressHandler = ({\n onOutsidePress,\n children,\n disabled = false,\n style,\n}: OutsidePressHandlerProps) => {\n return (\n <View style={[styles.container, style]}>\n {!disabled && (\n <View\n style={styles.backdrop}\n onStartShouldSetResponder={() => true}\n onResponderEnd={() => onOutsidePress()}\n />\n )}\n <View style={styles.content}>\n {children}\n </View>\n </View>\n );\n};\n\nconst { width: SCREEN_W, height: SCREEN_H } = Dimensions.get('screen');\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'visible',\n } as any,\n backdrop: {\n position: 'absolute',\n top: -SCREEN_H * 3,\n left: -SCREEN_W * 3,\n width: SCREEN_W * 7,\n height: SCREEN_H * 7,\n },\n content: {\n zIndex: 1,\n },\n});\n\nconst OutsidePressHandler: React.FC<OutsidePressHandlerProps> =\n Platform.OS === 'web' ? WebOutsidePressHandler : NativeOutsidePressHandler;\n\nexport default OutsidePressHandler;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,UAAU,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AASrE,MAAMC,sBAAsB,GAAGA,CAAC;EAC9BC,cAAc;EACdC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC;AACwB,CAAC,KAAK;EAC9B,MAAMC,YAAY,GAAGV,MAAM,CAAO,IAAI,CAAC;EAEvCD,SAAS,CAAC,MAAM;IACd,IAAIS,QAAQ,EAAE;IAEd,MAAMG,GAAG,GAAIC,UAAU,CAASC,QAAQ;IACxC,IAAI,CAACF,GAAG,EAAE;IAEV,MAAMG,WAAW,GAAIC,KAAU,IAAK;MAAA,IAAAC,qBAAA;MAClC,IAAI,GAAAA,qBAAA,GAAEN,YAAY,CAACO,OAAO,cAAAD,qBAAA,eAArBA,qBAAA,CAA+BE,QAAQ,CAACH,KAAK,CAACI,MAAM,CAAC,GAAE;QAC1Db,cAAc,CAAC,CAAC;MAClB;IACF,CAAC;IAEDK,GAAG,CAACS,gBAAgB,CAAC,WAAW,EAAEN,WAAW,CAAC;IAC9C,OAAO,MAAMH,GAAG,CAACU,mBAAmB,CAAC,WAAW,EAAEP,WAAW,CAAC;EAChE,CAAC,EAAE,CAACR,cAAc,EAAEE,QAAQ,CAAC,CAAC;EAE9B,oBACEV,KAAA,CAAAwB,aAAA,CAAClB,IAAI;IAACmB,GAAG,EAAEb,YAAa;IAACD,KAAK,EAAEA;EAAM,GACnCF,QACG,CAAC;AAEX,CAAC;AAED,MAAMiB,yBAAyB,GAAGA,CAAC;EACjClB,cAAc;EACdC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC;AACwB,CAAC,KAAK;EAC9B,oBACEX,KAAA,CAAAwB,aAAA,CAAClB,IAAI;IAACK,KAAK,EAAE,CAACgB,MAAM,CAACC,SAAS,EAAEjB,KAAK;EAAE,GACpC,CAACD,QAAQ,iBACRV,KAAA,CAAAwB,aAAA,CAAClB,IAAI;IACHK,KAAK,EAAEgB,MAAM,CAACE,QAAS;IACvBC,yBAAyB,EAAEA,CAAA,KAAM,IAAK;IACtCC,cAAc,EAAEA,CAAA,KAAMvB,cAAc,CAAC;EAAE,CACxC,CACF,eACDR,KAAA,CAAAwB,aAAA,CAAClB,IAAI;IAACK,KAAK,EAAEgB,MAAM,CAACK;EAAQ,GACzBvB,QACG,CACF,CAAC;AAEX,CAAC;AAED,MAAM;EAAEwB,KAAK,EAAEC,QAAQ;EAAEC,MAAM,EAAEC;AAAS,CAAC,GAAGjC,UAAU,CAACkC,GAAG,CAAC,QAAQ,CAAC;AAEtE,MAAMV,MAAM,GAAGtB,UAAU,CAACiC,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,QAAQ,EAAE;EACZ,CAAQ;EACRV,QAAQ,EAAE;IACRW,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAACL,QAAQ,GAAG,CAAC;IAClBM,IAAI,EAAE,CAACR,QAAQ,GAAG,CAAC;IACnBD,KAAK,EAAEC,QAAQ,GAAG,CAAC;IACnBC,MAAM,EAAEC,QAAQ,GAAG;EACrB,CAAC;EACDJ,OAAO,EAAE;IACPW,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,MAAMC,mBAAuD,GAC3DxC,QAAQ,CAACyC,EAAE,KAAK,KAAK,GAAGtC,sBAAsB,GAAGmB,yBAAyB;AAE5E,eAAekB,mBAAmB","ignoreList":[]}
|
package/core/viewport.js
CHANGED
|
@@ -25,18 +25,23 @@ export class ViewPort extends EventNotifier {
|
|
|
25
25
|
Dimensions.addEventListener('change', () => {
|
|
26
26
|
const dim = Dimensions.get('window');
|
|
27
27
|
const orientation = dim.width > dim.height ? SCREEN_ORIENTATION.LANDSCAPE : SCREEN_ORIENTATION.PORTRAIT;
|
|
28
|
+
const oldWidth = this.width;
|
|
29
|
+
const oldHeight = this.height;
|
|
30
|
+
const oldOrientation = this.orientation;
|
|
31
|
+
|
|
32
|
+
// Update dimensions BEFORE notifying subscribers so they get the correct values
|
|
33
|
+
this.width = dim.width;
|
|
34
|
+
this.height = dim.height;
|
|
35
|
+
this.orientation = orientation;
|
|
28
36
|
this.notify(EVENTS.SIZE_CHANGE, [{
|
|
29
|
-
width: dim.width,
|
|
30
|
-
height: dim.height
|
|
31
|
-
}, {
|
|
32
37
|
width: this.width,
|
|
33
38
|
height: this.height
|
|
39
|
+
}, {
|
|
40
|
+
width: oldWidth,
|
|
41
|
+
height: oldHeight
|
|
34
42
|
}]);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (this.orientation != orientation) {
|
|
38
|
-
this.notify(EVENTS.ORIENTATION_CHANGE, [orientation, this.orientation]);
|
|
39
|
-
this.orientation = orientation;
|
|
43
|
+
if (oldOrientation !== orientation) {
|
|
44
|
+
this.notify(EVENTS.ORIENTATION_CHANGE, [orientation, oldOrientation]);
|
|
40
45
|
}
|
|
41
46
|
});
|
|
42
47
|
}
|
package/core/viewport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Dimensions","EventNotifier","SCREEN_ORIENTATION","LANDSCAPE","PORTRAIT","EVENTS","ORIENTATION_CHANGE","SIZE_CHANGE","ViewPort","constructor","_defineProperty","dim","get","width","height","orientation","addEventListener","notify"],"sources":["viewport.ts"],"sourcesContent":["import { Dimensions } from \"react-native\";\nimport EventNotifier from \"./event-notifier\";\n\n\nexport const SCREEN_ORIENTATION = {\n LANDSCAPE: 'LANDSCAPE',\n PORTRAIT: 'PORTRAIT'\n};\n\nexport const EVENTS = {\n ORIENTATION_CHANGE: 'orientationChange',\n SIZE_CHANGE: 'sizeChange'\n};\n\nexport class ViewPort extends EventNotifier {\n public width: number;\n public height: number;\n public orientation: string;\n public isMobileType = true;\n\n constructor() {\n super();\n const dim = Dimensions.get('window');\n this.width = dim.width;\n this.height = dim.height;\n this.orientation = this.width > this.height ? SCREEN_ORIENTATION.LANDSCAPE: SCREEN_ORIENTATION.PORTRAIT;\n Dimensions.addEventListener('change', () => {\n const dim = Dimensions.get('window');\n const orientation = dim.width > dim.height ? SCREEN_ORIENTATION.LANDSCAPE: SCREEN_ORIENTATION.PORTRAIT;\n this.notify(EVENTS.SIZE_CHANGE, [\n {width:
|
|
1
|
+
{"version":3,"names":["Dimensions","EventNotifier","SCREEN_ORIENTATION","LANDSCAPE","PORTRAIT","EVENTS","ORIENTATION_CHANGE","SIZE_CHANGE","ViewPort","constructor","_defineProperty","dim","get","width","height","orientation","addEventListener","oldWidth","oldHeight","oldOrientation","notify"],"sources":["viewport.ts"],"sourcesContent":["import { Dimensions } from \"react-native\";\nimport EventNotifier from \"./event-notifier\";\n\n\nexport const SCREEN_ORIENTATION = {\n LANDSCAPE: 'LANDSCAPE',\n PORTRAIT: 'PORTRAIT'\n};\n\nexport const EVENTS = {\n ORIENTATION_CHANGE: 'orientationChange',\n SIZE_CHANGE: 'sizeChange'\n};\n\nexport class ViewPort extends EventNotifier {\n public width: number;\n public height: number;\n public orientation: string;\n public isMobileType = true;\n\n constructor() {\n super();\n const dim = Dimensions.get('window');\n this.width = dim.width;\n this.height = dim.height;\n this.orientation = this.width > this.height ? SCREEN_ORIENTATION.LANDSCAPE: SCREEN_ORIENTATION.PORTRAIT;\n Dimensions.addEventListener('change', () => {\n const dim = Dimensions.get('window');\n const orientation = dim.width > dim.height ? SCREEN_ORIENTATION.LANDSCAPE: SCREEN_ORIENTATION.PORTRAIT;\n const oldWidth = this.width;\n const oldHeight = this.height;\n const oldOrientation = this.orientation;\n \n // Update dimensions BEFORE notifying subscribers so they get the correct values\n this.width = dim.width;\n this.height = dim.height;\n this.orientation = orientation;\n \n this.notify(EVENTS.SIZE_CHANGE, [\n {width: this.width, height: this.height}, \n {width: oldWidth, height: oldHeight}\n ]);\n \n if (oldOrientation !== orientation) {\n this.notify(EVENTS.ORIENTATION_CHANGE, [orientation, oldOrientation]);\n }\n });\n }\n}\n\nexport default new ViewPort();"],"mappings":";;;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAOC,aAAa,MAAM,kBAAkB;AAG5C,OAAO,MAAMC,kBAAkB,GAAG;EAC9BC,SAAS,EAAE,WAAW;EACtBC,QAAQ,EAAE;AACd,CAAC;AAED,OAAO,MAAMC,MAAM,GAAG;EAClBC,kBAAkB,EAAE,mBAAmB;EACvCC,WAAW,EAAE;AACjB,CAAC;AAED,OAAO,MAAMC,QAAQ,SAASP,aAAa,CAAC;EAMxCQ,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,uBAHU,IAAI;IAItB,MAAMC,GAAG,GAAGX,UAAU,CAACY,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,CAACC,KAAK,GAAGF,GAAG,CAACE,KAAK;IACtB,IAAI,CAACC,MAAM,GAAGH,GAAG,CAACG,MAAM;IACxB,IAAI,CAACC,WAAW,GAAG,IAAI,CAACF,KAAK,GAAG,IAAI,CAACC,MAAM,GAAGZ,kBAAkB,CAACC,SAAS,GAAED,kBAAkB,CAACE,QAAQ;IACvGJ,UAAU,CAACgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACxC,MAAML,GAAG,GAAGX,UAAU,CAACY,GAAG,CAAC,QAAQ,CAAC;MACpC,MAAMG,WAAW,GAAGJ,GAAG,CAACE,KAAK,GAAGF,GAAG,CAACG,MAAM,GAAGZ,kBAAkB,CAACC,SAAS,GAAED,kBAAkB,CAACE,QAAQ;MACtG,MAAMa,QAAQ,GAAG,IAAI,CAACJ,KAAK;MAC3B,MAAMK,SAAS,GAAG,IAAI,CAACJ,MAAM;MAC7B,MAAMK,cAAc,GAAG,IAAI,CAACJ,WAAW;;MAEvC;MACA,IAAI,CAACF,KAAK,GAAGF,GAAG,CAACE,KAAK;MACtB,IAAI,CAACC,MAAM,GAAGH,GAAG,CAACG,MAAM;MACxB,IAAI,CAACC,WAAW,GAAGA,WAAW;MAE9B,IAAI,CAACK,MAAM,CAACf,MAAM,CAACE,WAAW,EAAE,CAC5B;QAACM,KAAK,EAAE,IAAI,CAACA,KAAK;QAAEC,MAAM,EAAE,IAAI,CAACA;MAAM,CAAC,EACxC;QAACD,KAAK,EAAEI,QAAQ;QAAEH,MAAM,EAAEI;MAAS,CAAC,CACvC,CAAC;MAEF,IAAIC,cAAc,KAAKJ,WAAW,EAAE;QAChC,IAAI,CAACK,MAAM,CAACf,MAAM,CAACC,kBAAkB,EAAE,CAACS,WAAW,EAAEI,cAAc,CAAC,CAAC;MACzE;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,eAAe,IAAIX,QAAQ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -149,7 +149,6 @@ export class View extends React.Component {
|
|
|
149
149
|
goToLower(e) {
|
|
150
150
|
var _this$props$handlers7, _this$props$handlers8;
|
|
151
151
|
const bounds = ((_this$props$handlers7 = this.props.handlers) === null || _this$props$handlers7 === void 0 ? void 0 : _this$props$handlers7.bounds) && ((_this$props$handlers8 = this.props.handlers) === null || _this$props$handlers8 === void 0 ? void 0 : _this$props$handlers8.bounds(e)) || {};
|
|
152
|
-
console.log("🚀 ~ View ~ goToLower ~ bounds:", bounds);
|
|
153
152
|
this.setPosition(bounds.lower).then(() => {
|
|
154
153
|
if (!isNil(bounds.lower) && bounds.center !== bounds.lower) {
|
|
155
154
|
var _this$props$handlers9, _this$props$handlers0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isNil","React","Animated","Easing","View","RNView","PanResponder","injector","Handlers","constructor","_defineProperty","Props","undefined","State","Number","MAX_VALUE","Component","props","Value","I18nService","get","dx","dy","gestureEnableThreshold","shouldEnable","direction","Math","abs","enableGestures","e","_this$props$handlers","_this$props$handlers2","bounds","handlers","d","state","isHorizontal","phase","computePhase","center","lower","upper","animationPhase","setValue","position","isRTL","_this$props$handlers3","_this$props$handlers4","onAnimation","goToLower","goToUpper","threshold","touchStart","x","y","active","panResponder","create","onStartShouldSetPanResponder","evt","gestureState","shouldEnablePanResponder","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderMove","onChange","onPanResponderRelease","onEnd","activeIndex","setPosition","slidesLayout","computeMaxScroll","_this$viewLayout2","max","childrenWidth","childrenLayout","reduce","s","v","width","childrenHeight","height","_this$viewLayout","viewLayout","setState","maxPosition","setChildrenLayout","event","index","nativeEvent","layout","setViewLayout","value","_this$props$handlers5","_this$props$handlers6","i18nService","isRTLLocale","_this$props$handlers7","_this$props$handlers8","console","log","then","_this$props$handlers9","_this$props$handlers0","onLower","_this$props$handlers1","_this$props$handlers10","_this$props$handlers11","_this$props$handlers12","onUpper","Promise","reject","isNaN","resolve","parallel","timing","useNativeDriver","toValue","duration","easing","out","linear","start","render","createElement","_extends","style","flexDirection","flexWrap","alignItems","onLayout","bind","panHandlers","children","map","c","i","_this$props$style","key","slideMinWidth","minWidth","slideWidth","transform","translateX","translateY"],"sources":["carousel-swipe.animation.tsx"],"sourcesContent":["import { isNil } from 'lodash-es';\nimport React from 'react';\nimport { Animated, Easing, View as RNView, ViewStyle, LayoutChangeEvent, LayoutRectangle, DimensionValue, PanResponder } from 'react-native';\nimport { Gesture, GestureDetector, GestureUpdateEvent } from 'react-native-gesture-handler';\nimport { isWebPreviewMode } from '@wavemaker-ai/app-rn-runtime/core/utils';\nimport injector from '@wavemaker-ai/app-rn-runtime/core/injector';\n\nexport class Handlers {\n bounds?: (g: GestureUpdateEvent<any>) => Bounds = null as any;\n onAnimation?: (g: GestureUpdateEvent<any>) => any = () => { };\n onLower?: (g: GestureUpdateEvent<any>) => any = () => { };\n onUpper?: (g: GestureUpdateEvent<any>) => any = () => { };\n computePhase?: (value: number) => number = null as any;\n}\n\nexport interface Bounds {\n upper?: number;\n center?: number;\n lower?: number;\n}\n\nexport class Props {\n threshold?: number = 5;\n direction?: 'horizontal' | 'vertical' = 'horizontal';\n handlers?: Handlers = {} as any;\n style?: ViewStyle = {} as any;\n children: any;\n enableGestures: any;\n slideWidth?: DimensionValue = '100%';\n slideMinWidth?: DimensionValue = undefined;\n slidesLayout?: any = [];\n activeIndex?: number | null = null;\n}\n\nexport class State {\n threshold = 5;\n isHorizontal = false;\n bounds: Bounds = {} as any;\n maxPosition = Number.MAX_VALUE;\n}\n\nexport class View extends React.Component<Props, State> {\n\n static defaultProps = new Props();\n private position = new Animated.Value(0);\n public animationPhase = new Animated.Value(0);\n private i18nService = injector.I18nService.get();\n private childrenLayout: LayoutRectangle[] = [];\n private viewLayout: LayoutRectangle = null as any;\n private panResponder: any = null;\n\n constructor(props: Props) {\n super(props);\n this.state = {\n isHorizontal: props.direction === 'horizontal',\n threshold: props.threshold || 49,\n bounds: {} as any\n } as State;\n var touchStart = {\n x: 0,\n y: 0,\n active: false\n };\n\n this.panResponder = PanResponder.create({\n onStartShouldSetPanResponder: (evt, gestureState) => {\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onStartShouldSetPanResponderCapture: (evt, gestureState) => {\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onMoveShouldSetPanResponder: (evt, gestureState) => {\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onMoveShouldSetPanResponderCapture: (evt, gestureState) =>{\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onPanResponderMove: (evt, gestureState) => {\n this.onChange(gestureState)\n },\n onPanResponderRelease: (evt, gestureState) => {\n if (\n this.props.direction === 'horizontal' &&\n (gestureState.dx > this.state.threshold || gestureState.dx < -this.state.threshold)\n ) {\n this.onEnd(gestureState);\n }\n if (\n this.props.direction === 'vertical' &&\n (gestureState.dy > this.state.threshold || gestureState.dy < -this.state.threshold)\n ) {\n this.onEnd(gestureState);\n }\n\n if (\n !(gestureState.dy > this.state.threshold || gestureState.dy < -this.state.threshold) &&\n !(gestureState.dx > this.state.threshold || gestureState.dx < -this.state.threshold)\n ) {\n if (this.props.activeIndex) {\n this.setPosition(this.props.slidesLayout[this.props.activeIndex])\n }\n }\n }\n });\n\n }\n\n\n shouldEnablePanResponder = (dx: number, dy: number) => {\n const gestureEnableThreshold = 30;\n\n const shouldEnable = (this.props.direction === 'horizontal' ? Math.abs(dx) > Math.abs(dy) : Math.abs(dx) < Math.abs(dy)) &&\n (this.props.direction === 'horizontal' ? Math.abs(dx) > gestureEnableThreshold : Math.abs(dy) > gestureEnableThreshold)\n\n return this.props.enableGestures && shouldEnable;\n }\n\n onChange = (e: any) => {\n const bounds = (this.props.handlers?.bounds && this.props.handlers?.bounds(e)) || {};\n const d = (this.state.isHorizontal ? e.dx : e.dy);\n let phase = this.computePhase(bounds?.center || 0);\n if (d && d < 0 && !isNil(bounds.center) && !isNil(bounds.lower)\n && bounds.center !== bounds.lower) {\n phase += (d / (bounds.center - bounds.lower)) || 0;\n } else if (d && d > 0 && !isNil(bounds.center) && !isNil(bounds.upper)\n && bounds.center !== bounds.upper) {\n phase += (d / (bounds.upper - bounds.center)) || 0;\n }\n this.animationPhase.setValue(phase);\n this.position.setValue(\n (this.isRTL() ? -bounds?.center! : bounds?.center || 0) + d);\n }\n\n onEnd = (e: any) => {\n this.props.handlers?.onAnimation &&\n this.props.handlers?.onAnimation(e);\n if (e.dx < 0) {\n this.isRTL() ? this.goToLower(e) : this.goToUpper(e);\n } else if (e.dx > 0) {\n this.isRTL() ? this.goToUpper(e) : this.goToLower(e);\n }\n }\n\n computeMaxScroll() {\n let max = Number.MAX_VALUE;\n const childrenWidth = this.childrenLayout.reduce((s, v) => s + v.width, 0);\n const childrenHeight = this.childrenLayout.reduce((s, v) => s + v.height, 0);\n if (this.props.direction === 'horizontal') {\n if (childrenWidth && this.viewLayout?.width) {\n max = childrenWidth - this.viewLayout.width;\n }\n } else if (childrenHeight && this.viewLayout?.height) {\n max = childrenHeight - this.viewLayout.height;\n }\n this.setState({ maxPosition: -1 * max });\n }\n\n setChildrenLayout(event: LayoutChangeEvent, index: number) {\n this.childrenLayout[index] = event.nativeEvent.layout;\n this.computeMaxScroll();\n }\n\n setViewLayout(event: LayoutChangeEvent) {\n this.viewLayout = event.nativeEvent.layout;\n this.computeMaxScroll();\n }\n\n computePhase(value: number) {\n return (this.props.handlers?.computePhase &&\n this.props.handlers?.computePhase(value)) || 0;\n }\n\n isRTL() {\n return this.i18nService.isRTLLocale();\n }\n\n goToLower(e?: any) {\n const bounds = (this.props.handlers?.bounds && this.props.handlers?.bounds(e)) || {};\n console.log(\"🚀 ~ View ~ goToLower ~ bounds:\", bounds)\n this.setPosition(bounds.lower)\n .then(() => {\n if (!isNil(bounds.lower) && bounds.center !== bounds.lower) {\n this.props.handlers?.onLower &&\n this.props.handlers?.onLower(e);\n }\n });\n }\n\n goToUpper(e?: any) {\n const bounds = (this.props.handlers?.bounds && this.props.handlers?.bounds(e)) || {};\n this.setPosition(bounds.upper)\n .then(() => {\n if (!isNil(bounds.upper) && bounds.center !== bounds.upper) {\n this.props.handlers?.onUpper &&\n this.props.handlers?.onUpper(e);\n }\n });\n }\n\n setPosition(value: number | undefined) {\n if (isNil(value)) {\n return Promise.reject();\n }\n let position = isNaN(this.state.maxPosition) ? value : Math.max(this.state.maxPosition, value);\n return new Promise((resolve) => {\n Animated.parallel([\n Animated.timing(this.animationPhase, {\n useNativeDriver: true,\n toValue: this.computePhase(value),\n duration: 200,\n easing: Easing.out(Easing.linear)\n }),\n Animated.timing(this.position, {\n useNativeDriver: true,\n toValue: (this.isRTL() ? -1 : 1) * position,\n duration: 200,\n easing: Easing.out(Easing.linear)\n })\n ]).start(resolve);\n });\n }\n\n public render() {\n const isHorizontal = this.props.direction === 'horizontal';\n return (\n //@ts-ignore\n <RNView style={[\n isHorizontal ? {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n alignItems: 'center',\n } : null,\n this.props.style]}\n onLayout={this.setViewLayout.bind(this)}\n {...this.panResponder.panHandlers}\n >\n {this.props.children.map((c: any, i: number) => {\n return (<Animated.View onLayout={(e) => this.setChildrenLayout(e, i)} key={c.key}\n style={[this.props.slideMinWidth ? {\n minWidth: this.props.slideMinWidth\n } : {\n width: this.props.slideWidth\n },\n this.props.style?.height === '100%' ? {\n height: '100%'\n } : null,\n {\n transform: this.state.isHorizontal ? [{\n translateX: this.position\n }] : [{\n translateY: this.position\n }]\n }\n ]}>\n {c}\n </Animated.View>);\n })}\n </RNView>\n );\n }\n\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["isNil","React","Animated","Easing","View","RNView","PanResponder","injector","Handlers","constructor","_defineProperty","Props","undefined","State","Number","MAX_VALUE","Component","props","Value","I18nService","get","dx","dy","gestureEnableThreshold","shouldEnable","direction","Math","abs","enableGestures","e","_this$props$handlers","_this$props$handlers2","bounds","handlers","d","state","isHorizontal","phase","computePhase","center","lower","upper","animationPhase","setValue","position","isRTL","_this$props$handlers3","_this$props$handlers4","onAnimation","goToLower","goToUpper","threshold","touchStart","x","y","active","panResponder","create","onStartShouldSetPanResponder","evt","gestureState","shouldEnablePanResponder","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderMove","onChange","onPanResponderRelease","onEnd","activeIndex","setPosition","slidesLayout","computeMaxScroll","_this$viewLayout2","max","childrenWidth","childrenLayout","reduce","s","v","width","childrenHeight","height","_this$viewLayout","viewLayout","setState","maxPosition","setChildrenLayout","event","index","nativeEvent","layout","setViewLayout","value","_this$props$handlers5","_this$props$handlers6","i18nService","isRTLLocale","_this$props$handlers7","_this$props$handlers8","then","_this$props$handlers9","_this$props$handlers0","onLower","_this$props$handlers1","_this$props$handlers10","_this$props$handlers11","_this$props$handlers12","onUpper","Promise","reject","isNaN","resolve","parallel","timing","useNativeDriver","toValue","duration","easing","out","linear","start","render","createElement","_extends","style","flexDirection","flexWrap","alignItems","onLayout","bind","panHandlers","children","map","c","i","_this$props$style","key","slideMinWidth","minWidth","slideWidth","transform","translateX","translateY"],"sources":["carousel-swipe.animation.tsx"],"sourcesContent":["import { isNil } from 'lodash-es';\nimport React from 'react';\nimport { Animated, Easing, View as RNView, ViewStyle, LayoutChangeEvent, LayoutRectangle, DimensionValue, PanResponder } from 'react-native';\nimport { Gesture, GestureDetector, GestureUpdateEvent } from 'react-native-gesture-handler';\nimport { isWebPreviewMode } from '@wavemaker-ai/app-rn-runtime/core/utils';\nimport injector from '@wavemaker-ai/app-rn-runtime/core/injector';\n\nexport class Handlers {\n bounds?: (g: GestureUpdateEvent<any>) => Bounds = null as any;\n onAnimation?: (g: GestureUpdateEvent<any>) => any = () => { };\n onLower?: (g: GestureUpdateEvent<any>) => any = () => { };\n onUpper?: (g: GestureUpdateEvent<any>) => any = () => { };\n computePhase?: (value: number) => number = null as any;\n}\n\nexport interface Bounds {\n upper?: number;\n center?: number;\n lower?: number;\n}\n\nexport class Props {\n threshold?: number = 5;\n direction?: 'horizontal' | 'vertical' = 'horizontal';\n handlers?: Handlers = {} as any;\n style?: ViewStyle = {} as any;\n children: any;\n enableGestures: any;\n slideWidth?: DimensionValue = '100%';\n slideMinWidth?: DimensionValue = undefined;\n slidesLayout?: any = [];\n activeIndex?: number | null = null;\n}\n\nexport class State {\n threshold = 5;\n isHorizontal = false;\n bounds: Bounds = {} as any;\n maxPosition = Number.MAX_VALUE;\n}\n\nexport class View extends React.Component<Props, State> {\n\n static defaultProps = new Props();\n private position = new Animated.Value(0);\n public animationPhase = new Animated.Value(0);\n private i18nService = injector.I18nService.get();\n private childrenLayout: LayoutRectangle[] = [];\n private viewLayout: LayoutRectangle = null as any;\n private panResponder: any = null;\n\n constructor(props: Props) {\n super(props);\n this.state = {\n isHorizontal: props.direction === 'horizontal',\n threshold: props.threshold || 49,\n bounds: {} as any\n } as State;\n var touchStart = {\n x: 0,\n y: 0,\n active: false\n };\n\n this.panResponder = PanResponder.create({\n onStartShouldSetPanResponder: (evt, gestureState) => {\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onStartShouldSetPanResponderCapture: (evt, gestureState) => {\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onMoveShouldSetPanResponder: (evt, gestureState) => {\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onMoveShouldSetPanResponderCapture: (evt, gestureState) =>{\n return this.shouldEnablePanResponder(gestureState.dx, gestureState.dy);\n },\n onPanResponderMove: (evt, gestureState) => {\n this.onChange(gestureState)\n },\n onPanResponderRelease: (evt, gestureState) => {\n if (\n this.props.direction === 'horizontal' &&\n (gestureState.dx > this.state.threshold || gestureState.dx < -this.state.threshold)\n ) {\n this.onEnd(gestureState);\n }\n if (\n this.props.direction === 'vertical' &&\n (gestureState.dy > this.state.threshold || gestureState.dy < -this.state.threshold)\n ) {\n this.onEnd(gestureState);\n }\n\n if (\n !(gestureState.dy > this.state.threshold || gestureState.dy < -this.state.threshold) &&\n !(gestureState.dx > this.state.threshold || gestureState.dx < -this.state.threshold)\n ) {\n if (this.props.activeIndex) {\n this.setPosition(this.props.slidesLayout[this.props.activeIndex])\n }\n }\n }\n });\n\n }\n\n\n shouldEnablePanResponder = (dx: number, dy: number) => {\n const gestureEnableThreshold = 30;\n\n const shouldEnable = (this.props.direction === 'horizontal' ? Math.abs(dx) > Math.abs(dy) : Math.abs(dx) < Math.abs(dy)) &&\n (this.props.direction === 'horizontal' ? Math.abs(dx) > gestureEnableThreshold : Math.abs(dy) > gestureEnableThreshold)\n\n return this.props.enableGestures && shouldEnable;\n }\n\n onChange = (e: any) => {\n const bounds = (this.props.handlers?.bounds && this.props.handlers?.bounds(e)) || {};\n const d = (this.state.isHorizontal ? e.dx : e.dy);\n let phase = this.computePhase(bounds?.center || 0);\n if (d && d < 0 && !isNil(bounds.center) && !isNil(bounds.lower)\n && bounds.center !== bounds.lower) {\n phase += (d / (bounds.center - bounds.lower)) || 0;\n } else if (d && d > 0 && !isNil(bounds.center) && !isNil(bounds.upper)\n && bounds.center !== bounds.upper) {\n phase += (d / (bounds.upper - bounds.center)) || 0;\n }\n this.animationPhase.setValue(phase);\n this.position.setValue(\n (this.isRTL() ? -bounds?.center! : bounds?.center || 0) + d);\n }\n\n onEnd = (e: any) => {\n this.props.handlers?.onAnimation &&\n this.props.handlers?.onAnimation(e);\n if (e.dx < 0) {\n this.isRTL() ? this.goToLower(e) : this.goToUpper(e);\n } else if (e.dx > 0) {\n this.isRTL() ? this.goToUpper(e) : this.goToLower(e);\n }\n }\n\n computeMaxScroll() {\n let max = Number.MAX_VALUE;\n const childrenWidth = this.childrenLayout.reduce((s, v) => s + v.width, 0);\n const childrenHeight = this.childrenLayout.reduce((s, v) => s + v.height, 0);\n if (this.props.direction === 'horizontal') {\n if (childrenWidth && this.viewLayout?.width) {\n max = childrenWidth - this.viewLayout.width;\n }\n } else if (childrenHeight && this.viewLayout?.height) {\n max = childrenHeight - this.viewLayout.height;\n }\n this.setState({ maxPosition: -1 * max });\n }\n\n setChildrenLayout(event: LayoutChangeEvent, index: number) {\n this.childrenLayout[index] = event.nativeEvent.layout;\n this.computeMaxScroll();\n }\n\n setViewLayout(event: LayoutChangeEvent) {\n this.viewLayout = event.nativeEvent.layout;\n this.computeMaxScroll();\n }\n\n computePhase(value: number) {\n return (this.props.handlers?.computePhase &&\n this.props.handlers?.computePhase(value)) || 0;\n }\n\n isRTL() {\n return this.i18nService.isRTLLocale();\n }\n\n goToLower(e?: any) {\n const bounds = (this.props.handlers?.bounds && this.props.handlers?.bounds(e)) || {};\n this.setPosition(bounds.lower)\n .then(() => {\n if (!isNil(bounds.lower) && bounds.center !== bounds.lower) {\n this.props.handlers?.onLower &&\n this.props.handlers?.onLower(e);\n }\n });\n }\n\n goToUpper(e?: any) {\n const bounds = (this.props.handlers?.bounds && this.props.handlers?.bounds(e)) || {};\n this.setPosition(bounds.upper)\n .then(() => {\n if (!isNil(bounds.upper) && bounds.center !== bounds.upper) {\n this.props.handlers?.onUpper &&\n this.props.handlers?.onUpper(e);\n }\n });\n }\n\n setPosition(value: number | undefined) {\n if (isNil(value)) {\n return Promise.reject();\n }\n let position = isNaN(this.state.maxPosition) ? value : Math.max(this.state.maxPosition, value);\n return new Promise((resolve) => {\n Animated.parallel([\n Animated.timing(this.animationPhase, {\n useNativeDriver: true,\n toValue: this.computePhase(value),\n duration: 200,\n easing: Easing.out(Easing.linear)\n }),\n Animated.timing(this.position, {\n useNativeDriver: true,\n toValue: (this.isRTL() ? -1 : 1) * position,\n duration: 200,\n easing: Easing.out(Easing.linear)\n })\n ]).start(resolve);\n });\n }\n\n public render() {\n const isHorizontal = this.props.direction === 'horizontal';\n return (\n //@ts-ignore\n <RNView style={[\n isHorizontal ? {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n alignItems: 'center',\n } : null,\n this.props.style]}\n onLayout={this.setViewLayout.bind(this)}\n {...this.panResponder.panHandlers}\n >\n {this.props.children.map((c: any, i: number) => {\n return (<Animated.View onLayout={(e) => this.setChildrenLayout(e, i)} key={c.key}\n style={[this.props.slideMinWidth ? {\n minWidth: this.props.slideMinWidth\n } : {\n width: this.props.slideWidth\n },\n this.props.style?.height === '100%' ? {\n height: '100%'\n } : null,\n {\n transform: this.state.isHorizontal ? [{\n translateX: this.position\n }] : [{\n translateY: this.position\n }]\n }\n ]}>\n {c}\n </Animated.View>);\n })}\n </RNView>\n );\n }\n\n}\n"],"mappings":"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","ignoreList":[]}
|