@wavemaker/app-rn-runtime 11.11.6-rc.6191 → 11.11.7-rc.6211
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 +0 -5
- package/components/basic/button/button.component.js.map +1 -1
- package/components/basic/icon/icon.component.js +5 -5
- package/components/basic/icon/icon.component.js.map +1 -1
- package/components/basic/icon/icon.props.js +1 -0
- package/components/basic/icon/icon.props.js.map +1 -1
- package/components/basic/picture/picture.component.js +5 -2
- package/components/basic/picture/picture.component.js.map +1 -1
- package/components/basic/picture/picture.props.js +1 -0
- package/components/basic/picture/picture.props.js.map +1 -1
- package/components/chart/basechart.component.js +11 -15
- package/components/chart/basechart.component.js.map +1 -1
- package/components/data/list/list.component.js +22 -4
- package/components/data/list/list.component.js.map +1 -1
- package/components/data/list/list.props.js +2 -0
- package/components/data/list/list.props.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/input/slider/slider.component.js +43 -6
- package/components/input/slider/slider.component.js.map +1 -1
- package/components/input/switch/switch.component.js +1 -1
- package/components/input/switch/switch.component.js.map +1 -1
- package/components/input/switch/switch.styles.js +14 -10
- package/components/input/switch/switch.styles.js.map +1 -1
- package/components/page/partial-container/partial-container.component.js +5 -1
- package/components/page/partial-container/partial-container.component.js.map +1 -1
- package/components/page/partial-container/partial-container.props.js +1 -0
- package/components/page/partial-container/partial-container.props.js.map +1 -1
- package/core/AppConfig.js.map +1 -1
- package/core/accessibility.js +15 -1
- package/core/accessibility.js.map +1 -1
- package/core/partial.service.js.map +1 -1
- package/core/responsive.utils.js +48 -0
- package/core/responsive.utils.js.map +1 -0
- package/core/tappable.component.js +2 -2
- package/core/tappable.component.js.map +1 -1
- package/core/utils.js +13 -0
- package/core/utils.js.map +1 -1
- package/npm-shrinkwrap.json +56 -55
- package/package-lock.json +56 -55
- package/package.json +2 -2
- package/runtime/services/partial.service.js +12 -1
- package/runtime/services/partial.service.js.map +1 -1
- package/styles/theme.js +27 -8
- package/styles/theme.js.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["AccessibilityInfo","isAndroid","isWebPreviewMode","removeUndefinedKeys","_isScreenReaderEnabled","addEventListener","flag","isScreenReaderEnabled","getScreenReaderStatus","AccessibilityWidgetType","getAccessibilityProps","widgetType","accessibilityProps","props","accessible","BUTTON","TEXT","NUMBER","TEXTAREA","SELECT","CURRENCY","TOGGLE","DATE","LABEL","ANCHOR","MESSAGE","SEARCH","PICTURE","ICON","NAV","POVOVER","BOTTOMSHEET","WEBVIEW","LINECHART","SLIDER","VIDEO","_accessibilityProps$c","accessibilityLabel","accessibilitylabel","caption","toString","accessibilityHint","hint","accessibilityRole","accessibilityrole","accessibilityState","disabled","accessibilityLabelledBy","accessibilitylabelledby","accessibilityValue","min","minvalue","max","maxvalue","expanded","selected","CHIPS","_accessibilityProps$c2","RADIOSET","readonly","CHECKBOX","_accessibilityProps$c3","checked","SWITCH","_accessibilityProps$c4","PROGRESSBAR","PROGRESSCIRCLE","_accessibilityProps$c5","finalProps"],"sources":["accessibility.ts"],"sourcesContent":["import { AccessibilityInfo } from 'react-native';\nimport { isAndroid, isWebPreviewMode, removeUndefinedKeys } from './utils';\n\nlet _isScreenReaderEnabled = false;\n\nAccessibilityInfo.addEventListener(\n 'screenReaderChanged',\n flag => {\n _isScreenReaderEnabled = flag;\n },\n);\n\nexport const isScreenReaderEnabled = () => _isScreenReaderEnabled;\n\nasync function getScreenReaderStatus() {\n _isScreenReaderEnabled = (!isWebPreviewMode() && await AccessibilityInfo.isScreenReaderEnabled());\n}\n\ngetScreenReaderStatus();\n\nexport enum AccessibilityWidgetType {\n BUTTON = 'button',\n PICTURE = 'picture',\n TEXT = 'text',\n NUMBER = 'number',\n TEXTAREA = 'textarea',\n SELECT = 'select',\n CHIPS = 'chips',\n CURRENCY = 'currency',\n RADIOSET = 'radioset',\n CHECKBOX = 'checkbox',\n TOGGLE = 'toggle',\n SWITCH = 'switch',\n DATE = 'date',\n VIDEO = 'video',\n PROGRESSBAR = 'progressbar',\n PROGRESSCIRCLE = 'progresscircle',\n LABEL = 'label',\n ANCHOR = 'anchor',\n MESSAGE = 'message',\n SEARCH = 'search',\n ICON = 'icon',\n NAV = 'nav',\n POVOVER = 'popover',\n WEBVIEW = 'webview',\n LINECHART = 'linechart',\n SLIDER = 'slider',\n BOTTOMSHEET='bottomsheet'\n};\n\n \nexport type AccessibilityPropsType = {\n accessible?: boolean;\n accessibilityLabel?: string;\n accessibilityLabelledBy?: string;\n accessibilityHint?: string;\n accessibilityRole?: 'button' | 'link' | 'header' | 'search' | 'image' | 'imagebutton' | 'none' | 'summary' | 'text' | 'progressbar' | 'grid' | 'alert';\n accessibilityState?: {\n disabled?: boolean;\n selected?: boolean;\n checked?: boolean;\n expanded?: boolean;\n };\n accessibilityValue?: {\n min?: number;\n max?: number;\n now?: number;\n text?: string;\n };\n accessibilityActions?: Array<{\n name: string;\n label?: string;\n }>;\n accessibilityLiveRegion?: 'none' | 'polite' | 'assertive';\n accessibilityLanguage?: any;\n accessibilityElementsHidden?: boolean;\n accessibilityViewIsModal?: boolean;\n};\n \n\nexport const getAccessibilityProps = (widgetType: AccessibilityWidgetType, accessibilityProps: AccessibilityPropsType | any) => {\n let props: AccessibilityPropsType = {accessible: true};\n if (!_isScreenReaderEnabled || isWebPreviewMode()) {\n return {};\n }\n switch (widgetType) {\n case AccessibilityWidgetType.BUTTON:\n case AccessibilityWidgetType.TEXT:\n case AccessibilityWidgetType.NUMBER:\n case AccessibilityWidgetType.TEXTAREA:\n case AccessibilityWidgetType.SELECT:\n case AccessibilityWidgetType.CURRENCY:\n case AccessibilityWidgetType.TOGGLE:\n case AccessibilityWidgetType.DATE:\n case AccessibilityWidgetType.LABEL:\n case AccessibilityWidgetType.ANCHOR:\n case AccessibilityWidgetType.MESSAGE: \n case AccessibilityWidgetType.SEARCH: \n case AccessibilityWidgetType.PICTURE: \n case AccessibilityWidgetType.ICON:\n case AccessibilityWidgetType.NAV:\n case AccessibilityWidgetType.POVOVER:\n case AccessibilityWidgetType.BOTTOMSHEET:\n case AccessibilityWidgetType.WEBVIEW:\n case AccessibilityWidgetType.LINECHART:\n case AccessibilityWidgetType.SLIDER:\n case AccessibilityWidgetType.VIDEO: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityRole = accessibilityProps.accessibilityrole;\n\n if (\n widgetType === AccessibilityWidgetType.BUTTON ||\n widgetType === AccessibilityWidgetType.TEXT ||\n widgetType === AccessibilityWidgetType.NUMBER ||\n widgetType === AccessibilityWidgetType.TEXTAREA ||\n widgetType === AccessibilityWidgetType.SELECT ||\n widgetType === AccessibilityWidgetType.TOGGLE ||\n widgetType === AccessibilityWidgetType.DATE\n ) {\n props.accessibilityState = { disabled: accessibilityProps.disabled };\n }\n if (\n (widgetType === AccessibilityWidgetType.TEXT ||\n widgetType === AccessibilityWidgetType.NUMBER ||\n widgetType === AccessibilityWidgetType.TEXTAREA ||\n widgetType === AccessibilityWidgetType.SELECT ||\n widgetType === AccessibilityWidgetType.CURRENCY ||\n widgetType === AccessibilityWidgetType.TOGGLE) &&\n isAndroid()\n ) {\n props.accessibilityLabelledBy =\n accessibilityProps.accessibilitylabelledby;\n }\n if (\n widgetType === AccessibilityWidgetType.NUMBER ||\n widgetType === AccessibilityWidgetType.CURRENCY\n ) {\n props.accessibilityValue = {\n min: accessibilityProps.minvalue,\n max: accessibilityProps.maxvalue,\n };\n }\n if (widgetType === AccessibilityWidgetType.SELECT) {\n props.accessibilityState = {\n ...props.accessibilityState,\n expanded: accessibilityProps.expanded,\n };\n }\n if (widgetType === AccessibilityWidgetType.TOGGLE) {\n props.accessibilityState = {\n ...props.accessibilityState,\n selected: accessibilityProps.selected,\n };\n }\n break;\n }\n\n case AccessibilityWidgetType.CHIPS: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityState = {\n disabled: accessibilityProps.disabled,\n selected: accessibilityProps.selected,\n };\n break;\n }\n\n case AccessibilityWidgetType.RADIOSET: {\n props.accessibilityState = {\n disabled: accessibilityProps.readonly || accessibilityProps.disabled,\n selected: accessibilityProps.selected,\n };\n break;\n }\n\n case AccessibilityWidgetType.CHECKBOX: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityState = {\n disabled: accessibilityProps.readonly || accessibilityProps.disabled,\n checked: accessibilityProps.checked,\n };\n break;\n }\n\n case AccessibilityWidgetType.SWITCH: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityState = {\n disabled: accessibilityProps.disabled,\n selected: accessibilityProps.selected,\n };\n break;\n }\n case AccessibilityWidgetType.PROGRESSBAR:\n case AccessibilityWidgetType.PROGRESSCIRCLE: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityRole = accessibilityProps.accessibilityrole;\n break;\n }\n default:\n break;\n }\n\n const finalProps = removeUndefinedKeys(props);\n // console.log('finalProps', finalProps)\n\n return finalProps;\n}"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["AccessibilityInfo","isAndroid","isWebPreviewMode","removeUndefinedKeys","_isScreenReaderEnabled","addEventListener","flag","isScreenReaderEnabled","getScreenReaderStatus","AccessibilityWidgetType","getAccessibilityProps","widgetType","accessibilityProps","props","accessible","BUTTON","TEXT","NUMBER","TEXTAREA","SELECT","CURRENCY","TOGGLE","DATE","LABEL","ANCHOR","MESSAGE","SEARCH","ICON","NAV","POVOVER","BOTTOMSHEET","WEBVIEW","LINECHART","SLIDER","VIDEO","TABS","_accessibilityProps$c","accessibilityLabel","accessibilitylabel","caption","toString","accessibilityHint","hint","accessibilityRole","accessibilityrole","accessibilityState","disabled","accessibilityLabelledBy","accessibilitylabelledby","accessibilityValue","min","minvalue","max","maxvalue","expanded","checked","selected","CHIPS","_accessibilityProps$c2","RADIOSET","readonly","CHECKBOX","_accessibilityProps$c3","SWITCH","_accessibilityProps$c4","PROGRESSBAR","PROGRESSCIRCLE","_accessibilityProps$c5","PICTURE","alttext","finalProps"],"sources":["accessibility.ts"],"sourcesContent":["import { AccessibilityInfo } from 'react-native';\nimport { isAndroid, isWebPreviewMode, removeUndefinedKeys } from './utils';\n\nlet _isScreenReaderEnabled = false;\n\nAccessibilityInfo.addEventListener(\n 'screenReaderChanged',\n flag => {\n _isScreenReaderEnabled = flag;\n },\n);\n\nexport const isScreenReaderEnabled = () => _isScreenReaderEnabled;\n\nasync function getScreenReaderStatus() {\n _isScreenReaderEnabled = (!isWebPreviewMode() && await AccessibilityInfo.isScreenReaderEnabled());\n}\n\ngetScreenReaderStatus();\n\nexport enum AccessibilityWidgetType {\n BUTTON = 'button',\n PICTURE = 'picture',\n TEXT = 'text',\n NUMBER = 'number',\n TEXTAREA = 'textarea',\n SELECT = 'select',\n CHIPS = 'chips',\n CURRENCY = 'currency',\n RADIOSET = 'radioset',\n CHECKBOX = 'checkbox',\n TOGGLE = 'toggle',\n SWITCH = 'switch',\n DATE = 'date',\n VIDEO = 'video',\n PROGRESSBAR = 'progressbar',\n PROGRESSCIRCLE = 'progresscircle',\n LABEL = 'label',\n ANCHOR = 'anchor',\n MESSAGE = 'message',\n SEARCH = 'search',\n ICON = 'icon',\n NAV = 'nav',\n POVOVER = 'popover',\n WEBVIEW = 'webview',\n LINECHART = 'linechart',\n SLIDER = 'slider',\n BOTTOMSHEET='bottomsheet',\n TABS = 'tab'\n};\n\n \nexport type AccessibilityPropsType = {\n accessible?: boolean;\n accessibilityLabel?: string;\n accessibilityLabelledBy?: string;\n accessibilityHint?: string;\n accessibilityRole?: 'button' | 'link' | 'header' | 'search' | 'image' | 'imagebutton' | 'none' | 'summary' | 'text' | 'progressbar' | 'grid' | 'alert' | 'tab';\n accessibilityState?: {\n disabled?: boolean;\n selected?: boolean;\n checked?: boolean;\n expanded?: boolean;\n };\n accessibilityValue?: {\n min?: number;\n max?: number;\n now?: number;\n text?: string;\n };\n accessibilityActions?: Array<{\n name: string;\n label?: string;\n }>;\n accessibilityLiveRegion?: 'none' | 'polite' | 'assertive';\n accessibilityLanguage?: any;\n accessibilityElementsHidden?: boolean;\n accessibilityViewIsModal?: boolean;\n};\n \n\nexport const getAccessibilityProps = (widgetType: AccessibilityWidgetType, accessibilityProps: AccessibilityPropsType | any) => {\n let props: AccessibilityPropsType = {accessible: true};\n if (!_isScreenReaderEnabled || isWebPreviewMode()) {\n return {};\n }\n switch (widgetType) {\n case AccessibilityWidgetType.BUTTON:\n case AccessibilityWidgetType.TEXT:\n case AccessibilityWidgetType.NUMBER:\n case AccessibilityWidgetType.TEXTAREA:\n case AccessibilityWidgetType.SELECT:\n case AccessibilityWidgetType.CURRENCY:\n case AccessibilityWidgetType.TOGGLE:\n case AccessibilityWidgetType.DATE:\n case AccessibilityWidgetType.LABEL:\n case AccessibilityWidgetType.ANCHOR:\n case AccessibilityWidgetType.MESSAGE: \n case AccessibilityWidgetType.SEARCH: \n case AccessibilityWidgetType.ICON:\n case AccessibilityWidgetType.NAV:\n case AccessibilityWidgetType.POVOVER:\n case AccessibilityWidgetType.BOTTOMSHEET:\n case AccessibilityWidgetType.WEBVIEW:\n case AccessibilityWidgetType.LINECHART:\n case AccessibilityWidgetType.SLIDER:\n case AccessibilityWidgetType.VIDEO: \n case AccessibilityWidgetType.TABS: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityRole = accessibilityProps.accessibilityrole;\n\n if (\n widgetType === AccessibilityWidgetType.BUTTON ||\n widgetType === AccessibilityWidgetType.TEXT ||\n widgetType === AccessibilityWidgetType.NUMBER ||\n widgetType === AccessibilityWidgetType.TEXTAREA ||\n widgetType === AccessibilityWidgetType.SELECT ||\n widgetType === AccessibilityWidgetType.TOGGLE ||\n widgetType === AccessibilityWidgetType.DATE\n ) {\n props.accessibilityState = { disabled: accessibilityProps.disabled };\n }\n if (\n (widgetType === AccessibilityWidgetType.TEXT ||\n widgetType === AccessibilityWidgetType.NUMBER ||\n widgetType === AccessibilityWidgetType.TEXTAREA ||\n widgetType === AccessibilityWidgetType.SELECT ||\n widgetType === AccessibilityWidgetType.CURRENCY ||\n widgetType === AccessibilityWidgetType.TOGGLE) &&\n isAndroid()\n ) {\n props.accessibilityLabelledBy =\n accessibilityProps.accessibilitylabelledby;\n }\n if (\n widgetType === AccessibilityWidgetType.NUMBER ||\n widgetType === AccessibilityWidgetType.CURRENCY\n ) {\n props.accessibilityValue = {\n min: accessibilityProps.minvalue,\n max: accessibilityProps.maxvalue,\n };\n }\n if (widgetType === AccessibilityWidgetType.SELECT) {\n props.accessibilityState = {\n ...props.accessibilityState,\n expanded: accessibilityProps.expanded,\n };\n }\n if (widgetType === AccessibilityWidgetType.TOGGLE) {\n props.accessibilityState = {\n ...props.accessibilityState,\n checked: accessibilityProps.selected,\n };\n }\n if (widgetType === AccessibilityWidgetType.TABS) {\n props.accessibilityState = {\n ...props.accessibilityState,\n selected: accessibilityProps.selected,\n };\n }\n break;\n }\n\n case AccessibilityWidgetType.CHIPS: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityState = {\n disabled: accessibilityProps.disabled,\n selected: accessibilityProps.selected,\n };\n break;\n }\n\n case AccessibilityWidgetType.RADIOSET: {\n props.accessibilityState = {\n disabled: accessibilityProps.readonly || accessibilityProps.disabled,\n selected: accessibilityProps.selected,\n };\n break;\n }\n\n case AccessibilityWidgetType.CHECKBOX: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityState = {\n disabled: accessibilityProps.readonly || accessibilityProps.disabled,\n checked: accessibilityProps.checked,\n };\n break;\n }\n\n case AccessibilityWidgetType.SWITCH: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityState = {\n disabled: accessibilityProps.disabled,\n selected: accessibilityProps.selected,\n };\n break;\n }\n case AccessibilityWidgetType.PROGRESSBAR:\n case AccessibilityWidgetType.PROGRESSCIRCLE: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.caption?.toString();\n props.accessibilityRole = accessibilityProps.accessibilityrole;\n break;\n }\n case AccessibilityWidgetType.PICTURE: {\n props.accessibilityLabel = accessibilityProps.accessibilitylabel || accessibilityProps.alttext || 'Image';\n props.accessibilityHint = accessibilityProps.hint;\n props.accessibilityRole = accessibilityProps.accessibilityrole;\n break;\n }\n default:\n break;\n }\n\n const finalProps = removeUndefinedKeys(props);\n // console.log('finalProps', finalProps)\n\n return finalProps;\n}"],"mappings":"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","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","PartialContext","createContext","PartialProvider","Provider","PartialConsumer","Consumer"],"sources":["partial.service.ts"],"sourcesContent":["import React from 'react';\n\nexport default interface PartialService {\n get: (partialName: string) => any;\n}\n\nconst PartialContext = React.createContext<PartialService>(null as any);\n\nexport const PartialProvider = PartialContext.Provider;\nexport const PartialConsumer = PartialContext.Consumer;"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAMzB,MAAMC,cAAc,gBAAGD,KAAK,CAACE,aAAa,CAAiB,IAAW,CAAC;AAEvE,OAAO,MAAMC,eAAe,GAAGF,cAAc,CAACG,QAAQ;AACtD,OAAO,MAAMC,eAAe,GAAGJ,cAAc,CAACK,QAAQ","ignoreList":[]}
|
1
|
+
{"version":3,"names":["React","PartialContext","createContext","PartialProvider","Provider","PartialConsumer","Consumer"],"sources":["partial.service.ts"],"sourcesContent":["import React from 'react';\n\nexport default interface PartialService {\n get: (partialName: string, params?: {isPrefab: boolean, name: string}) => any;\n}\n\nconst PartialContext = React.createContext<PartialService>(null as any);\n\nexport const PartialProvider = PartialContext.Provider;\nexport const PartialConsumer = PartialContext.Consumer;"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAMzB,MAAMC,cAAc,gBAAGD,KAAK,CAACE,aAAa,CAAiB,IAAW,CAAC;AAEvE,OAAO,MAAMC,eAAe,GAAGF,cAAc,CAACG,QAAQ;AACtD,OAAO,MAAMC,eAAe,GAAGJ,cAAc,CAACK,QAAQ","ignoreList":[]}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import _viewPort from './viewport';
|
2
|
+
import { DEVICE_BREAK_POINTS, DEVICE_BREAK_POINTS_NATIVE_MOBILE } from '../styles/theme';
|
3
|
+
import { Platform } from 'react-native';
|
4
|
+
/**
|
5
|
+
* Determines the current responsive breakpoint based on viewport width and pixel ratio
|
6
|
+
* @returns The current breakpoint ('xs' | 'sm' | 'md' | 'lg')
|
7
|
+
*
|
8
|
+
*/
|
9
|
+
export const getCurrentBreakpoint = () => {
|
10
|
+
const width = _viewPort.width;
|
11
|
+
if (width >= (Platform.OS === 'web' ? parseInt(DEVICE_BREAK_POINTS.MIN_LARGE_DEVICE) : parseInt(DEVICE_BREAK_POINTS_NATIVE_MOBILE.MIN_LARGE_DEVICE))) {
|
12
|
+
return 'lg';
|
13
|
+
} else if (width >= (Platform.OS === 'web' ? parseInt(DEVICE_BREAK_POINTS.MIN_MEDIUM_DEVICE) : parseInt(DEVICE_BREAK_POINTS_NATIVE_MOBILE.MIN_MEDIUM_DEVICE))) {
|
14
|
+
return 'md';
|
15
|
+
} else if (width >= (Platform.OS === 'web' ? parseInt(DEVICE_BREAK_POINTS.MIN_SMALL_DEVICE) : parseInt(DEVICE_BREAK_POINTS_NATIVE_MOBILE.MIN_SMALL_DEVICE))) {
|
16
|
+
return 'sm';
|
17
|
+
} else {
|
18
|
+
return 'xs';
|
19
|
+
}
|
20
|
+
};
|
21
|
+
|
22
|
+
/**
|
23
|
+
* Gets responsive value for current breakpoint with safe mobile-first fallback
|
24
|
+
* The fallback order is: current breakpoint -> smaller breakpoints -> xs (ultimate fallback)
|
25
|
+
*
|
26
|
+
* @param responsiveConfig Object containing values for each breakpoint (xs, sm, md, lg)
|
27
|
+
* @param currentBreakpoint Current breakpoint (optional, will be auto-detected if not provided)
|
28
|
+
* @returns The value for current breakpoint or fallback value
|
29
|
+
*
|
30
|
+
*/
|
31
|
+
export const getNumberOfColumnsFromResponsiveConfig = (responsiveConfig, currentBreakpoint, fallback = false) => {
|
32
|
+
var _ref, _value;
|
33
|
+
const breakpoint = currentBreakpoint || getCurrentBreakpoint();
|
34
|
+
let value = responsiveConfig[breakpoint];
|
35
|
+
if (!value && fallback) {
|
36
|
+
const fallbackOrder = ['lg', 'md', 'sm', 'xs'];
|
37
|
+
const currentIndex = fallbackOrder.indexOf(breakpoint);
|
38
|
+
for (let i = currentIndex - 1; i >= 0; i--) {
|
39
|
+
const fallbackBreakpoint = fallbackOrder[i];
|
40
|
+
if (responsiveConfig[fallbackBreakpoint]) {
|
41
|
+
value = responsiveConfig[fallbackBreakpoint];
|
42
|
+
break;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
return (_ref = (_value = value) !== null && _value !== void 0 ? _value : responsiveConfig.xs) !== null && _ref !== void 0 ? _ref : 1;
|
47
|
+
};
|
48
|
+
//# sourceMappingURL=responsive.utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_viewPort","DEVICE_BREAK_POINTS","DEVICE_BREAK_POINTS_NATIVE_MOBILE","Platform","getCurrentBreakpoint","width","OS","parseInt","MIN_LARGE_DEVICE","MIN_MEDIUM_DEVICE","MIN_SMALL_DEVICE","getNumberOfColumnsFromResponsiveConfig","responsiveConfig","currentBreakpoint","fallback","_ref","_value","breakpoint","value","fallbackOrder","currentIndex","indexOf","i","fallbackBreakpoint","xs"],"sources":["responsive.utils.ts"],"sourcesContent":["import _viewPort from './viewport';\nimport { DEVICE_BREAK_POINTS, DEVICE_BREAK_POINTS_NATIVE_MOBILE } from '../styles/theme';\nimport { Platform } from 'react-native';\n\nexport type ResponsiveBreakpoint = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type ResponsiveConfig<T> = {\n xs?: T;\n sm?: T;\n md?: T;\n lg?: T;\n};\n\n/**\n * Determines the current responsive breakpoint based on viewport width and pixel ratio\n * @returns The current breakpoint ('xs' | 'sm' | 'md' | 'lg')\n * \n */\nexport const getCurrentBreakpoint = (): ResponsiveBreakpoint => {\n const width = _viewPort.width;\n \n if (width >= (Platform.OS === 'web' ? parseInt(DEVICE_BREAK_POINTS.MIN_LARGE_DEVICE) : parseInt(DEVICE_BREAK_POINTS_NATIVE_MOBILE.MIN_LARGE_DEVICE))) {\n return 'lg';\n } else if (width >= (Platform.OS === 'web' ? parseInt(DEVICE_BREAK_POINTS.MIN_MEDIUM_DEVICE) : parseInt(DEVICE_BREAK_POINTS_NATIVE_MOBILE.MIN_MEDIUM_DEVICE))) {\n return 'md';\n } else if (width >= (Platform.OS === 'web' ? parseInt(DEVICE_BREAK_POINTS.MIN_SMALL_DEVICE) : parseInt(DEVICE_BREAK_POINTS_NATIVE_MOBILE.MIN_SMALL_DEVICE))) {\n return 'sm';\n } else {\n return 'xs';\n }\n};\n\n/**\n * Gets responsive value for current breakpoint with safe mobile-first fallback\n * The fallback order is: current breakpoint -> smaller breakpoints -> xs (ultimate fallback)\n * \n * @param responsiveConfig Object containing values for each breakpoint (xs, sm, md, lg)\n * @param currentBreakpoint Current breakpoint (optional, will be auto-detected if not provided)\n * @returns The value for current breakpoint or fallback value\n * \n */\nexport const getNumberOfColumnsFromResponsiveConfig = (\n responsiveConfig: ResponsiveConfig<number>,\n currentBreakpoint?: ResponsiveBreakpoint,\n fallback: boolean = false\n): number => {\n const breakpoint = currentBreakpoint || getCurrentBreakpoint();\n \n let value = responsiveConfig[breakpoint];\n \n if (!value && fallback) {\n const fallbackOrder = ['lg', 'md', 'sm', 'xs'];\n const currentIndex = fallbackOrder.indexOf(breakpoint);\n \n for (let i = currentIndex - 1; i >= 0; i--) {\n const fallbackBreakpoint = fallbackOrder[i] as keyof typeof responsiveConfig;\n if (responsiveConfig[fallbackBreakpoint]) {\n value = responsiveConfig[fallbackBreakpoint];\n break;\n }\n }\n }\n \n return value ?? responsiveConfig.xs ?? 1;\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAClC,SAASC,mBAAmB,EAAEC,iCAAiC,QAAQ,iBAAiB;AACxF,SAASC,QAAQ,QAAQ,cAAc;AAWvC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAA4B;EAC9D,MAAMC,KAAK,GAAGL,SAAS,CAACK,KAAK;EAE7B,IAAIA,KAAK,KAAKF,QAAQ,CAACG,EAAE,KAAK,KAAK,GAAGC,QAAQ,CAACN,mBAAmB,CAACO,gBAAgB,CAAC,GAAGD,QAAQ,CAACL,iCAAiC,CAACM,gBAAgB,CAAC,CAAC,EAAE;IACpJ,OAAO,IAAI;EACb,CAAC,MAAM,IAAIH,KAAK,KAAKF,QAAQ,CAACG,EAAE,KAAK,KAAK,GAAGC,QAAQ,CAACN,mBAAmB,CAACQ,iBAAiB,CAAC,GAAGF,QAAQ,CAACL,iCAAiC,CAACO,iBAAiB,CAAC,CAAC,EAAE;IAC7J,OAAO,IAAI;EACb,CAAC,MAAM,IAAIJ,KAAK,KAAKF,QAAQ,CAACG,EAAE,KAAK,KAAK,GAAGC,QAAQ,CAACN,mBAAmB,CAACS,gBAAgB,CAAC,GAAGH,QAAQ,CAACL,iCAAiC,CAACQ,gBAAgB,CAAC,CAAC,EAAE;IAC3J,OAAO,IAAI;EACb,CAAC,MAAM;IACL,OAAO,IAAI;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sCAAsC,GAAGA,CACpDC,gBAA0C,EAC1CC,iBAAwC,EACxCC,QAAiB,GAAG,KAAK,KACd;EAAA,IAAAC,IAAA,EAAAC,MAAA;EACX,MAAMC,UAAU,GAAGJ,iBAAiB,IAAIT,oBAAoB,CAAC,CAAC;EAE9D,IAAIc,KAAK,GAAGN,gBAAgB,CAACK,UAAU,CAAC;EAExC,IAAI,CAACC,KAAK,IAAIJ,QAAQ,EAAE;IACtB,MAAMK,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9C,MAAMC,YAAY,GAAGD,aAAa,CAACE,OAAO,CAACJ,UAAU,CAAC;IAEtD,KAAK,IAAIK,CAAC,GAAGF,YAAY,GAAG,CAAC,EAAEE,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC1C,MAAMC,kBAAkB,GAAGJ,aAAa,CAACG,CAAC,CAAkC;MAC5E,IAAIV,gBAAgB,CAACW,kBAAkB,CAAC,EAAE;QACxCL,KAAK,GAAGN,gBAAgB,CAACW,kBAAkB,CAAC;QAC5C;MACF;IACF;EACF;EAEA,QAAAR,IAAA,IAAAC,MAAA,GAAOE,KAAK,cAAAF,MAAA,cAAAA,MAAA,GAAIJ,gBAAgB,CAACY,EAAE,cAAAT,IAAA,cAAAA,IAAA,GAAI,CAAC;AAC1C,CAAC","ignoreList":[]}
|
@@ -151,10 +151,10 @@ export class Tappable extends React.Component {
|
|
151
151
|
}, commonProps), /*#__PURE__*/React.createElement(React.Fragment, null, this.props.children));
|
152
152
|
});
|
153
153
|
}
|
154
|
-
return /*#__PURE__*/React.createElement(View, {
|
154
|
+
return /*#__PURE__*/React.createElement(View, _extends({
|
155
155
|
style: this.props.styles,
|
156
156
|
onLayout: this.props.onLayout
|
157
|
-
}, this.props.children);
|
157
|
+
}, this.props.accessibilityProps), this.props.children);
|
158
158
|
}
|
159
159
|
}
|
160
160
|
//# sourceMappingURL=tappable.component.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Platform","View","TouchableOpacity","get","injector","TouchableRipple","TappableContext","createContext","UIPreferencesConsumer","ParentTappableContext","SyntheticEvent","constructor","_defineProperty","stopPropagation","propagationEnabled","Tappable","Component","props","triggerTap","e","_this$parent","target","onTap","invokeEventCallback","parent","onPress","_this$props$target","lastPress","Date","now","onTouchStart","currentTime","tapDelta","lastTap","isLongTap","_injector$FOCUSED_ELE","FOCUSED_ELEMENT","blur","lastDoubleTap","onDoubleTap","setTimeout","_this$parent2","onLongTap","_this$props$target2","_this$parent3","onPressOut","onTouchEnd","_this$props$target3","_this$parent4","setParent","render","commonProps","OS","accessibilityLabel","testID","accessibilityProps","disabled","proxy","style","styles","_e$target","tagName","onLongPress","onLongtap","onDoubletap","createElement","preferences","enableRipple","Consumer","Provider","value","_extends","rippleColor","disableTouchEffect","borderless","onLayout","Fragment","children","activeOpacity"],"sources":["tappable.component.tsx"],"sourcesContent":["import { BaseComponent } from \"@wavemaker/app-rn-runtime/core/base.component\";\nimport React from \"react\";\nimport { GestureResponderEvent, Platform, View, TouchableOpacity } from \"react-native\";\nimport { get } from \"lodash\";\nimport injector from \"./injector\";\nimport { TouchableRipple } from \"react-native-paper\";\nimport ThemeVariables from \"../styles/theme.variables\";\nimport { isDefined } from \"./utils\";\n\nexport const TappableContext = React.createContext<Tappable>(null as any);\nimport { UIPreferencesConsumer, UI_PREFERENCES } from \"./ui-preferences.context\";\n\nexport const ParentTappableContext = React.createContext<Tappable>(null as any);\ninterface TappableProps {\n testID?: string;\n children?: any\n styles?: any;\n target?: BaseComponent<any, any, any>;\n onTap?: (e: any) => void;\n onLongTap?: (e: any) => void; \n onDoubleTap?: (e: any) => void;\n onTouchStart? : (e: any) => void;\n onTouchEnd? : (e: any) => void;\n rippleColor?: string;\n accessibilityProps?: any;\n disableTouchEffect?:boolean;\n onLayout?: any;\n}\n\nexport class SyntheticEvent {\n // as the event is being used in onPress, onPressOut and onLongTap the TapEvent is renamed to SyntheticEvent\n propagationEnabled = true;\n \n constructor() {\n\n }\n\n stopPropagation() {\n this.propagationEnabled = false;\n }\n}\n\nexport class Tappable extends React.Component<TappableProps, any> {\n private lastPress = 0;\n private lastTap = 0;\n private lastDoubleTap = 0;\n private isLongTap = false;\n private parent:Tappable = null as any;\n \n constructor(props: any) {\n super(props);\n }\n\n async triggerTap(e = new SyntheticEvent()) {\n if (!e.propagationEnabled) {\n return;\n }\n const target = this.props.target;\n if (this.props.onTap) {\n await this.props.onTap(e);\n } else {\n await target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.triggerTap(e);\n }\n\n onPress(e: SyntheticEvent): void { \n this.lastPress = Date.now();\n const target = this.props.target;\n this.props.onTouchStart && this.props.onTouchStart(e);\n this.props.target?.invokeEventCallback('onTouchstart', [e, this.props.target]);\n const currentTime = Date.now();\n const tapDelta = currentTime - this.lastTap;\n if (this.isLongTap) {\n this.isLongTap = false;\n return;\n }\n if (e.propagationEnabled) {\n injector.FOCUSED_ELEMENT.get()?.blur();\n if(this.lastDoubleTap !== this.lastTap \n && tapDelta < 500) {\n this.props.onDoubleTap && this.props.onDoubleTap(e);\n setTimeout(() => {\n target?.invokeEventCallback('onDoubletap', [e, target]);\n }, 200);\n this.lastDoubleTap = currentTime;\n }\n setTimeout(() => {\n if (!e.propagationEnabled) {\n return;\n }\n if (this.props.onTap) {\n this.props.onTap(e);\n } else {\n target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.onPress(e);\n }, 200);\n this.lastTap = currentTime;\n }\n }\n\n onLongTap(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n }\n this.props.onLongTap && this.props.onLongTap(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onLongtap', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = true;\n }\n \n onPressOut(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n } \n this.props.onTouchEnd && this.props.onTouchEnd(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onTouchend', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = false;\n }\n private setParent(parent: Tappable) {\n if (parent && this.parent !== parent) {\n this.parent = parent;\n }\n }\n\n render() {\n const target = this.props.target;\n const commonProps = {\n ...(Platform.OS === 'android' || Platform.OS === 'web') ? {\n accessibilityLabel: this.props.testID,\n testID: this.props.testID\n }: {\n // accessible: false,\n testID: this.props.testID\n },\n ...this.props.accessibilityProps,\n disabled:get(target?.proxy, 'disabled'),\n style:this.props.styles,\n onPress:(e?: GestureResponderEvent) => {\n if ((e?.target as any)?.tagName === 'INPUT') {\n return;\n }\n this.onPress(new SyntheticEvent())\n },\n onLongPress:(e?: GestureResponderEvent) => this.onLongTap(new SyntheticEvent()),\n onPressOut:(e?: GestureResponderEvent) => this.onPressOut(new SyntheticEvent())\n };\n if (target?.props.onTap \n || target?.props.onLongtap \n || target?.props.onDoubletap \n || this.props.onTap \n || this.props.onLongTap \n || this.props.onDoubleTap) {\n return (\n <UIPreferencesConsumer>\n {(preferences: UI_PREFERENCES) => {\n return preferences.enableRipple != false ? (\n <ParentTappableContext.Consumer>{(parent) => {\n this.setParent(parent);\n return(\n <ParentTappableContext.Provider value={this}>\n <TouchableRipple \n rippleColor={this.props.disableTouchEffect ? \"transparent\" : this.props.rippleColor} \n borderless={true} \n {...commonProps}\n onLayout={this.props.onLayout}\n >\n <>{this.props.children}</>\n </TouchableRipple>\n </ParentTappableContext.Provider>\n )\n }}</ParentTappableContext.Consumer>): (\n //default value is 0.2\n <TouchableOpacity \n activeOpacity={this.props.disableTouchEffect ? 1 : 0.2} \n onLayout={this.props.onLayout}\n {...commonProps}\n >\n <>{this.props.children}</>\n </TouchableOpacity>);\n }}\n </UIPreferencesConsumer>\n );\n }\n return (\n <View \n style={this.props.styles}\n onLayout={this.props.onLayout}\n >\n {this.props.children}\n </View>);\n }\n}\n"],"mappings":";;;;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAgCC,QAAQ,EAAEC,IAAI,EAAEC,gBAAgB,QAAQ,cAAc;AACtF,SAASC,GAAG,QAAQ,QAAQ;AAC5B,OAAOC,QAAQ,MAAM,YAAY;AACjC,SAASC,eAAe,QAAQ,oBAAoB;AAIpD,OAAO,MAAMC,eAAe,gBAAGP,KAAK,CAACQ,aAAa,CAAW,IAAW,CAAC;AACzE,SAASC,qBAAqB,QAAwB,0BAA0B;AAEhF,OAAO,MAAMC,qBAAqB,gBAAGV,KAAK,CAACQ,aAAa,CAAW,IAAW,CAAC;AAiB/E,OAAO,MAAMG,cAAc,CAAC;EAIxBC,WAAWA,CAAA,EAAG;IAHd;IAAAC,eAAA,6BACqB,IAAI;EAIzB;EAEAC,eAAeA,CAAA,EAAG;IACd,IAAI,CAACC,kBAAkB,GAAG,KAAK;EACnC;AACJ;AAEA,OAAO,MAAMC,QAAQ,SAAShB,KAAK,CAACiB,SAAS,CAAqB;EAO9DL,WAAWA,CAACM,KAAU,EAAE;IACpB,KAAK,CAACA,KAAK,CAAC;IAACL,eAAA,oBAPG,CAAC;IAAAA,eAAA,kBACH,CAAC;IAAAA,eAAA,wBACK,CAAC;IAAAA,eAAA,oBACL,KAAK;IAAAA,eAAA,iBACC,IAAI;EAI9B;EAEA,MAAMM,UAAUA,CAACC,CAAC,GAAG,IAAIT,cAAc,CAAC,CAAC,EAAE;IAAA,IAAAU,YAAA;IACvC,IAAI,CAACD,CAAC,CAACL,kBAAkB,EAAE;MACvB;IACJ;IACA,MAAMO,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACI,MAAM;IAChC,IAAI,IAAI,CAACJ,KAAK,CAACK,KAAK,EAAE;MAClB,MAAM,IAAI,CAACL,KAAK,CAACK,KAAK,CAACH,CAAC,CAAC;IAC7B,CAAC,MAAM;MACH,OAAME,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,mBAAmB,CAAC,OAAO,EAAE,CAACJ,CAAC,EAAEE,MAAM,CAAC,CAAC;IAC3D;IACA,CAAAD,YAAA,OAAI,CAACI,MAAM,cAAAJ,YAAA,eAAXA,YAAA,CAAaF,UAAU,CAACC,CAAC,CAAC;EAC9B;EAEAM,OAAOA,CAACN,CAAiB,EAAQ;IAAA,IAAAO,kBAAA;IAC7B,IAAI,CAACC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC3B,MAAMR,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACI,MAAM;IAChC,IAAI,CAACJ,KAAK,CAACa,YAAY,IAAI,IAAI,CAACb,KAAK,CAACa,YAAY,CAACX,CAAC,CAAC;IACrD,CAAAO,kBAAA,OAAI,CAACT,KAAK,CAACI,MAAM,cAAAK,kBAAA,eAAjBA,kBAAA,CAAmBH,mBAAmB,CAAC,cAAc,EAAE,CAACJ,CAAC,EAAE,IAAI,CAACF,KAAK,CAACI,MAAM,CAAC,CAAC;IAC9E,MAAMU,WAAW,GAAGH,IAAI,CAACC,GAAG,CAAC,CAAC;IAC9B,MAAMG,QAAQ,GAAGD,WAAW,GAAG,IAAI,CAACE,OAAO;IAC3C,IAAI,IAAI,CAACC,SAAS,EAAE;MAChB,IAAI,CAACA,SAAS,GAAG,KAAK;MACtB;IACJ;IACA,IAAIf,CAAC,CAACL,kBAAkB,EAAE;MAAA,IAAAqB,qBAAA;MACtB,CAAAA,qBAAA,GAAA/B,QAAQ,CAACgC,eAAe,CAACjC,GAAG,CAAC,CAAC,cAAAgC,qBAAA,eAA9BA,qBAAA,CAAgCE,IAAI,CAAC,CAAC;MACtC,IAAG,IAAI,CAACC,aAAa,KAAK,IAAI,CAACL,OAAO,IAC/BD,QAAQ,GAAG,GAAG,EAAE;QACnB,IAAI,CAACf,KAAK,CAACsB,WAAW,IAAI,IAAI,CAACtB,KAAK,CAACsB,WAAW,CAACpB,CAAC,CAAC;QACnDqB,UAAU,CAAC,MAAM;UACbnB,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEE,mBAAmB,CAAC,aAAa,EAAE,CAACJ,CAAC,EAAEE,MAAM,CAAC,CAAC;QAC3D,CAAC,EAAE,GAAG,CAAC;QACP,IAAI,CAACiB,aAAa,GAAGP,WAAW;MACpC;MACAS,UAAU,CAAC,MAAM;QAAA,IAAAC,aAAA;QACb,IAAI,CAACtB,CAAC,CAACL,kBAAkB,EAAE;UACvB;QACJ;QACA,IAAI,IAAI,CAACG,KAAK,CAACK,KAAK,EAAE;UAClB,IAAI,CAACL,KAAK,CAACK,KAAK,CAACH,CAAC,CAAC;QACvB,CAAC,MAAM;UACHE,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEE,mBAAmB,CAAC,OAAO,EAAE,CAACJ,CAAC,EAAEE,MAAM,CAAC,CAAC;QACrD;QACA,CAAAoB,aAAA,OAAI,CAACjB,MAAM,cAAAiB,aAAA,eAAXA,aAAA,CAAahB,OAAO,CAACN,CAAC,CAAC;MAC3B,CAAC,EAAE,GAAG,CAAC;MACP,IAAI,CAACc,OAAO,GAAGF,WAAW;IAC9B;EACJ;EAEAW,SAASA,CAACvB,CAAiB,EAAQ;IAC/B,IAAG,CAACA,CAAC,CAACL,kBAAkB,EAAC;MACrB;IACJ;IACA,IAAI,CAACG,KAAK,CAACyB,SAAS,IAAI,IAAI,CAACzB,KAAK,CAACyB,SAAS,CAACvB,CAAC,CAAC;IAC/CqB,UAAU,CAAC,MAAM;MAAA,IAAAG,mBAAA,EAAAC,aAAA;MACb,CAAAD,mBAAA,OAAI,CAAC1B,KAAK,CAACI,MAAM,cAAAsB,mBAAA,eAAjBA,mBAAA,CAAmBpB,mBAAmB,CAAC,WAAW,EAAE,CAACJ,CAAC,EAAE,IAAI,CAACF,KAAK,CAACI,MAAM,CAAC,CAAC;MAC3E,CAAAuB,aAAA,OAAI,CAACpB,MAAM,cAAAoB,aAAA,eAAXA,aAAA,CAAaC,UAAU,CAAC1B,CAAC,CAAC;IAC9B,CAAC,EAAE,GAAG,CAAC;IACP,IAAI,CAACe,SAAS,GAAG,IAAI;EACzB;EAEAW,UAAUA,CAAC1B,CAAiB,EAAQ;IAChC,IAAG,CAACA,CAAC,CAACL,kBAAkB,EAAC;MACrB;IACJ;IACA,IAAI,CAACG,KAAK,CAAC6B,UAAU,IAAI,IAAI,CAAC7B,KAAK,CAAC6B,UAAU,CAAC3B,CAAC,CAAC;IACjDqB,UAAU,CAAC,MAAM;MAAA,IAAAO,mBAAA,EAAAC,aAAA;MACb,CAAAD,mBAAA,OAAI,CAAC9B,KAAK,CAACI,MAAM,cAAA0B,mBAAA,eAAjBA,mBAAA,CAAmBxB,mBAAmB,CAAC,YAAY,EAAE,CAACJ,CAAC,EAAE,IAAI,CAACF,KAAK,CAACI,MAAM,CAAC,CAAC;MAC5E,CAAA2B,aAAA,OAAI,CAACxB,MAAM,cAAAwB,aAAA,eAAXA,aAAA,CAAaH,UAAU,CAAC1B,CAAC,CAAC;IAC9B,CAAC,EAAE,GAAG,CAAC;IACP,IAAI,CAACe,SAAS,GAAG,KAAK;EAC1B;EACQe,SAASA,CAACzB,MAAgB,EAAE;IAChC,IAAIA,MAAM,IAAI,IAAI,CAACA,MAAM,KAAKA,MAAM,EAAG;MACnC,IAAI,CAACA,MAAM,GAAGA,MAAM;IACxB;EACJ;EAEA0B,MAAMA,CAAA,EAAG;IACL,MAAM7B,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACI,MAAM;IAChC,MAAM8B,WAAW,GAAG;MAChB,IAAInD,QAAQ,CAACoD,EAAE,KAAK,SAAS,IAAIpD,QAAQ,CAACoD,EAAE,KAAK,KAAK,GAAI;QACtDC,kBAAkB,EAAE,IAAI,CAACpC,KAAK,CAACqC,MAAM;QACrCA,MAAM,EAAE,IAAI,CAACrC,KAAK,CAACqC;MACvB,CAAC,GAAE;QACC;QACAA,MAAM,EAAE,IAAI,CAACrC,KAAK,CAACqC;MACvB,CAAC;MACD,GAAG,IAAI,CAACrC,KAAK,CAACsC,kBAAkB;MAChCC,QAAQ,EAACrD,GAAG,CAACkB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEoC,KAAK,EAAE,UAAU,CAAC;MACvCC,KAAK,EAAC,IAAI,CAACzC,KAAK,CAAC0C,MAAM;MACvBlC,OAAO,EAAEN,CAAyB,IAAK;QAAA,IAAAyC,SAAA;QACnC,IAAI,CAACzC,CAAC,aAADA,CAAC,gBAAAyC,SAAA,GAADzC,CAAC,CAAEE,MAAM,cAAAuC,SAAA,uBAAVA,SAAA,CAAoBC,OAAO,MAAK,OAAO,EAAE;UACzC;QACJ;QACA,IAAI,CAACpC,OAAO,CAAC,IAAIf,cAAc,CAAC,CAAC,CAAC;MACtC,CAAC;MACDoD,WAAW,EAAE3C,CAAyB,IAAK,IAAI,CAACuB,SAAS,CAAC,IAAIhC,cAAc,CAAC,CAAC,CAAC;MAC/EmC,UAAU,EAAE1B,CAAyB,IAAK,IAAI,CAAC0B,UAAU,CAAC,IAAInC,cAAc,CAAC,CAAC;IAClF,CAAC;IACD,IAAIW,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAACK,KAAK,IAChBD,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAAC8C,SAAS,IACvB1C,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAAC+C,WAAW,IACzB,IAAI,CAAC/C,KAAK,CAACK,KAAK,IAChB,IAAI,CAACL,KAAK,CAACyB,SAAS,IACpB,IAAI,CAACzB,KAAK,CAACsB,WAAW,EAAE;MAC3B,oBACAxC,KAAA,CAAAkE,aAAA,CAACzD,qBAAqB,QAChB0D,WAA2B,IAAK;QAC9B,OAAOA,WAAW,CAACC,YAAY,IAAI,KAAK,gBACpCpE,KAAA,CAAAkE,aAAA,CAACxD,qBAAqB,CAAC2D,QAAQ,QAAG5C,MAAM,IAAK;UACzC,IAAI,CAACyB,SAAS,CAACzB,MAAM,CAAC;UACtB,oBACIzB,KAAA,CAAAkE,aAAA,CAACxD,qBAAqB,CAAC4D,QAAQ;YAACC,KAAK,EAAE;UAAK,gBACxCvE,KAAA,CAAAkE,aAAA,CAAC5D,eAAe,EAAAkE,QAAA;YACZC,WAAW,EAAE,IAAI,CAACvD,KAAK,CAACwD,kBAAkB,GAAG,aAAa,GAAG,IAAI,CAACxD,KAAK,CAACuD,WAAY;YACpFE,UAAU,EAAE;UAAK,GACbvB,WAAW;YACfwB,QAAQ,EAAE,IAAI,CAAC1D,KAAK,CAAC0D;UAAS,iBAE9B5E,KAAA,CAAAkE,aAAA,CAAAlE,KAAA,CAAA6E,QAAA,QAAG,IAAI,CAAC3D,KAAK,CAAC4D,QAAW,CACZ,CACW,CAAC;QAEzC,CAAkC,CAAC;QAAA;QACnC;QACA9E,KAAA,CAAAkE,aAAA,CAAC/D,gBAAgB,EAAAqE,QAAA;UACbO,aAAa,EAAE,IAAI,CAAC7D,KAAK,CAACwD,kBAAkB,GAAG,CAAC,GAAG,GAAI;UACvDE,QAAQ,EAAE,IAAI,CAAC1D,KAAK,CAAC0D;QAAS,GAC1BxB,WAAW,gBAEfpD,KAAA,CAAAkE,aAAA,CAAAlE,KAAA,CAAA6E,QAAA,QAAG,IAAI,CAAC3D,KAAK,CAAC4D,QAAW,CACX,CAAE;MAC5B,CACmB,CAAC;IAE5B;IACA,oBACI9E,KAAA,CAAAkE,aAAA,CAAChE,IAAI;MACDyD,KAAK,EAAE,IAAI,CAACzC,KAAK,CAAC0C,MAAO;MACzBgB,QAAQ,EAAE,IAAI,CAAC1D,KAAK,CAAC0D;IAAS,GAE7B,IAAI,CAAC1D,KAAK,CAAC4D,QACV,CAAC;EACf;AACJ","ignoreList":[]}
|
1
|
+
{"version":3,"names":["React","Platform","View","TouchableOpacity","get","injector","TouchableRipple","TappableContext","createContext","UIPreferencesConsumer","ParentTappableContext","SyntheticEvent","constructor","_defineProperty","stopPropagation","propagationEnabled","Tappable","Component","props","triggerTap","e","_this$parent","target","onTap","invokeEventCallback","parent","onPress","_this$props$target","lastPress","Date","now","onTouchStart","currentTime","tapDelta","lastTap","isLongTap","_injector$FOCUSED_ELE","FOCUSED_ELEMENT","blur","lastDoubleTap","onDoubleTap","setTimeout","_this$parent2","onLongTap","_this$props$target2","_this$parent3","onPressOut","onTouchEnd","_this$props$target3","_this$parent4","setParent","render","commonProps","OS","accessibilityLabel","testID","accessibilityProps","disabled","proxy","style","styles","_e$target","tagName","onLongPress","onLongtap","onDoubletap","createElement","preferences","enableRipple","Consumer","Provider","value","_extends","rippleColor","disableTouchEffect","borderless","onLayout","Fragment","children","activeOpacity"],"sources":["tappable.component.tsx"],"sourcesContent":["import { BaseComponent } from \"@wavemaker/app-rn-runtime/core/base.component\";\nimport React from \"react\";\nimport { GestureResponderEvent, Platform, View, TouchableOpacity } from \"react-native\";\nimport { get } from \"lodash\";\nimport injector from \"./injector\";\nimport { TouchableRipple } from \"react-native-paper\";\nimport ThemeVariables from \"../styles/theme.variables\";\nimport { isDefined } from \"./utils\";\n\nexport const TappableContext = React.createContext<Tappable>(null as any);\nimport { UIPreferencesConsumer, UI_PREFERENCES } from \"./ui-preferences.context\";\n\nexport const ParentTappableContext = React.createContext<Tappable>(null as any);\ninterface TappableProps {\n testID?: string;\n children?: any\n styles?: any;\n target?: BaseComponent<any, any, any>;\n onTap?: (e: any) => void;\n onLongTap?: (e: any) => void; \n onDoubleTap?: (e: any) => void;\n onTouchStart? : (e: any) => void;\n onTouchEnd? : (e: any) => void;\n rippleColor?: string;\n accessibilityProps?: any;\n disableTouchEffect?:boolean;\n onLayout?: any;\n}\n\nexport class SyntheticEvent {\n // as the event is being used in onPress, onPressOut and onLongTap the TapEvent is renamed to SyntheticEvent\n propagationEnabled = true;\n \n constructor() {\n\n }\n\n stopPropagation() {\n this.propagationEnabled = false;\n }\n}\n\nexport class Tappable extends React.Component<TappableProps, any> {\n private lastPress = 0;\n private lastTap = 0;\n private lastDoubleTap = 0;\n private isLongTap = false;\n private parent:Tappable = null as any;\n \n constructor(props: any) {\n super(props);\n }\n\n async triggerTap(e = new SyntheticEvent()) {\n if (!e.propagationEnabled) {\n return;\n }\n const target = this.props.target;\n if (this.props.onTap) {\n await this.props.onTap(e);\n } else {\n await target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.triggerTap(e);\n }\n\n onPress(e: SyntheticEvent): void { \n this.lastPress = Date.now();\n const target = this.props.target;\n this.props.onTouchStart && this.props.onTouchStart(e);\n this.props.target?.invokeEventCallback('onTouchstart', [e, this.props.target]);\n const currentTime = Date.now();\n const tapDelta = currentTime - this.lastTap;\n if (this.isLongTap) {\n this.isLongTap = false;\n return;\n }\n if (e.propagationEnabled) {\n injector.FOCUSED_ELEMENT.get()?.blur();\n if(this.lastDoubleTap !== this.lastTap \n && tapDelta < 500) {\n this.props.onDoubleTap && this.props.onDoubleTap(e);\n setTimeout(() => {\n target?.invokeEventCallback('onDoubletap', [e, target]);\n }, 200);\n this.lastDoubleTap = currentTime;\n }\n setTimeout(() => {\n if (!e.propagationEnabled) {\n return;\n }\n if (this.props.onTap) {\n this.props.onTap(e);\n } else {\n target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.onPress(e);\n }, 200);\n this.lastTap = currentTime;\n }\n }\n\n onLongTap(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n }\n this.props.onLongTap && this.props.onLongTap(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onLongtap', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = true;\n }\n \n onPressOut(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n } \n this.props.onTouchEnd && this.props.onTouchEnd(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onTouchend', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = false;\n }\n private setParent(parent: Tappable) {\n if (parent && this.parent !== parent) {\n this.parent = parent;\n }\n }\n\n render() {\n const target = this.props.target;\n const commonProps = {\n ...(Platform.OS === 'android' || Platform.OS === 'web') ? {\n accessibilityLabel: this.props.testID,\n testID: this.props.testID\n }: {\n // accessible: false,\n testID: this.props.testID\n },\n ...this.props.accessibilityProps,\n disabled:get(target?.proxy, 'disabled'),\n style:this.props.styles,\n onPress:(e?: GestureResponderEvent) => {\n if ((e?.target as any)?.tagName === 'INPUT') {\n return;\n }\n this.onPress(new SyntheticEvent())\n },\n onLongPress:(e?: GestureResponderEvent) => this.onLongTap(new SyntheticEvent()),\n onPressOut:(e?: GestureResponderEvent) => this.onPressOut(new SyntheticEvent())\n };\n if (target?.props.onTap \n || target?.props.onLongtap \n || target?.props.onDoubletap \n || this.props.onTap \n || this.props.onLongTap \n || this.props.onDoubleTap) {\n return (\n <UIPreferencesConsumer>\n {(preferences: UI_PREFERENCES) => {\n return preferences.enableRipple != false ? (\n <ParentTappableContext.Consumer>{(parent) => {\n this.setParent(parent);\n return(\n <ParentTappableContext.Provider value={this}>\n <TouchableRipple \n rippleColor={this.props.disableTouchEffect ? \"transparent\" : this.props.rippleColor} \n borderless={true} \n {...commonProps}\n onLayout={this.props.onLayout}\n >\n <>{this.props.children}</>\n </TouchableRipple>\n </ParentTappableContext.Provider>\n )\n }}</ParentTappableContext.Consumer>): (\n //default value is 0.2\n <TouchableOpacity \n activeOpacity={this.props.disableTouchEffect ? 1 : 0.2} \n onLayout={this.props.onLayout}\n {...commonProps}\n >\n <>{this.props.children}</>\n </TouchableOpacity>);\n }}\n </UIPreferencesConsumer>\n );\n }\n return (\n <View \n style={this.props.styles}\n onLayout={this.props.onLayout}\n {...this.props.accessibilityProps}\n >\n {this.props.children}\n </View>);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/core/utils.js
CHANGED
@@ -708,6 +708,19 @@ export const getGradientColors = gradientString => {
|
|
708
708
|
return match ? match[1] : segment;
|
709
709
|
});
|
710
710
|
};
|
711
|
+
export const isNativeStyle = (key, context = 'property', traceEnabled = true) => {
|
712
|
+
const nativeStyleProperties = ['shadowOffset', 'shadowRadius', 'shadowColor', 'shadowOpacity', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'borderRadius', 'borderTopColor', 'borderRightColor', 'borderBottomColor', 'borderLeftColor', 'backgroundColor', 'width', 'height', 'flex', 'flexDirection', 'textShadowOffset', 'transform', 'decomposedMatrix', 'transformMatrix', 'boxShadow', 'filter', 'fontVariant', 'margin', 'padding', 'backgroundPosition', 'borderColor', 'backgroundImage', 'backgroundSize', 'backgroundRepeat', 'backgroundResizeMode', 'aspectRatio', 'gap', 'columnGap', 'rowGap', 'content', 'matrix', 'strokeDasharray', 'strokeLinecap', 'strokeLinejoin'];
|
713
|
+
if (!traceEnabled) return true;
|
714
|
+
if (context === 'path') {
|
715
|
+
// For flattened paths like "item.shadowOffset"
|
716
|
+
const parts = key.split('.');
|
717
|
+
const property = parts[parts.length - 1];
|
718
|
+
return nativeStyleProperties.includes(property);
|
719
|
+
} else {
|
720
|
+
// For direct property names like "shadowOffset"
|
721
|
+
return nativeStyleProperties.includes(key);
|
722
|
+
}
|
723
|
+
};
|
711
724
|
export const parseLinearGradient = gradient => {
|
712
725
|
var _ThemeVariables$INSTA, _ThemeVariables$INSTA2;
|
713
726
|
// Check if this is a valid linear gradient
|
package/core/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Platform","moment","FileSystem","isFunction","includes","isUndefined","isNull","orderBy","groupBy","toLower","get","forEach","sortBy","cloneDeep","keys","values","isArray","isString","isNumber","mime","ThemeVariables","GROUP_BY_OPTIONS","ALPHABET","WORD","OTHERS","TIME_ROLLUP_OPTIONS","HOUR","DAY","WEEK","MONTH","YEAR","AppLayoutPosition","currentPage","data","_deepCopy","o1","o2","o","Object","k","v","deepCopy","objects","toBoolean","val","undefined","toNumber","parseFloat","e","encodeUrl","url","splits","split","hash","params","length","map","p","encodeURIComponent","join","encodeURI","isWebPreviewMode","OS","isDevMode","__DEV__","widgetsWithUndefinedValue","isAndroid","test","window","navigator","userAgent","isIos","getGroupKey","fieldDef","groupby","widgetScope","innerItem","apply","proxy","getGroupedData","fieldDefs","match","orderby","dateFormat","groupKey","groupedLiData","concatStr","toString","trim","substr","replace","format","getSortedGroupedData","getOrderedDataset","dataSet","items","fields","directions","obj","item","push","_groupedData","groupkey","index","liData","key","_groupIndex","isDefined","unStringify","defaultVal","number","parseInt","isNaN","retryIfFails","fn","interval","maxRetries","onBeforeRetry","Promise","resolve","retryCount","tryFn","reject","errorFn","errArgs","arguments","setTimeout","then","retry","getAbortableDefer","_defer","promise","onAbort","isAborted","abort","splitBorderColorInPlace","rootStyles","updatedRootStyles","color","borderColor","sides","side","validateField","props","value","requiredCheck","regexCheck","required","errorType","isValid","regexp","condition","RegExp","maxchars","mindate","Date","datavalue","startOf","toDate","maxdate","endOf","countDecimalDigits","numberString","decimalMatch","decimalDigits","formatCompactNumber","isNegative","formattedNumber","toFixed","toBase64","path","readAsStringAsync","encoding","DATASET_WIDGETS","Set","isDataSetWidget","widget","has","isFullPathUrl","startsWith","removeUndefinedKeys","getDaysInMonth","month","year","getDate","getDates","startDate","endDate","getFullYear","daysInMonth","dates","Array","from","i","datesInRange","filter","date","monthNames","getMonths","startMonth","endMonth","months","name","substring","monthRange","_","getMonthIndex","monthName","shortName","monthNumber","findIndex","getYearRange","startYear","endYear","years","getDateObject","getHours","hours","hour","paddedHour","String","padStart","get24Hours","getMinutes","minutes","minute","paddedMinute","getTimeIndicators","getDateTimeObject","getProgressBarGradientStartEnd","angle","angleLowerCase","toLowerCase","start","x","y","end","parseProgressBarLinearGradient","gradient","color1","color2","linearGradientRegex","hasLinearGradient","matches","INSTANCE","primaryColor","extractGradientDirection","gradientString","directionMatch","getGradientStartEnd","direction","directionLowerCase","angleInDegrees","endsWith","Math","PI","adjustedAngle","endX","cos","endY","sin","vectorLength","sqrt","getGradientColorStops","content","withoutDirection","depth","currentSegment","segments","char","hasPercentages","some","segment","colorStops","percentage","max","min","getGradientColors","parseLinearGradient","_ThemeVariables$INSTA","_ThemeVariables$INSTA2","gradientColors","defaultColor","validateInputOnDevice","type","_value$match","isCurrencyField","isValidText","validText","Number","isDateFormatAsPerPattern","datePattern","dateString","_date$format","toUpperCase","error","getMimeType","extensions","hasInvalidExtension","wildCards","extensionList","mimeType","extension","lookup","isWildCardExtension","getNumberOfEmptyObjects","noOfItems","setPosition","_AppLayoutPosition$da","getPosition","setCurrentPageInAppLayout","pageName","target"],"sources":["utils.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport moment from \"moment\";\nimport * as FileSystem from \"expo-file-system\";\nimport { isFunction, includes, isUndefined, isNull, orderBy, groupBy, toLower, get, forEach, sortBy, cloneDeep, keys, values, isArray, isString, isNumber } from 'lodash';\nimport * as mime from 'react-native-mime-types';\nimport ThemeVariables from '../styles/theme.variables';\n\ndeclare const window: any;\nconst GROUP_BY_OPTIONS = {\n ALPHABET: 'alphabet',\n WORD: 'word',\n OTHERS: 'Others'\n};\nconst TIME_ROLLUP_OPTIONS = {\n HOUR: 'hour',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month',\n YEAR: 'year'\n};\n\ntype LayoutData = {\n [index: string]: {\n [index: string]: {\n x: number,\n y: number\n }\n }\n}\n\nconst AppLayoutPosition: { currentPage: string, data: LayoutData } = {\n currentPage: 'Main',\n data: {}\n}\n\nconst _deepCopy = (o1: any, ...o2: any) => {\n o2.forEach((o: any) => {\n if (o) {\n Object.keys(o).forEach(k => {\n const v = o[k];\n if (v && !isString(v) && !isArray(v) && typeof v === 'object') {\n o1[k] = _deepCopy(o1[k] || {}, o[k]);\n } else {\n o1[k] = _deepCopy(v);\n }\n });\n }\n });\n return o1;\n};\n\nexport const deepCopy = (...objects: any) => _deepCopy({}, ...objects);\n\nexport const toBoolean = (val: any) => {\n return val === true\n || val === 'true'\n || !(val === false\n || val === null\n || val === undefined\n || val === '');\n};\n\nexport const toNumber = (val: any) => {\n try {\n return parseFloat(val) || 0;\n } catch (e) {\n return 0;\n }\n};\n\n/**\n * this method encodes the url and returns the encoded string\n */\nexport const encodeUrl = (url: string): string => {\n let splits = url.split('#');\n const hash = splits[1];\n splits = splits[0].split('?');\n let params = '';\n if (splits.length > 1) {\n params = splits[1].split('&')\n .map(p => p.split('='))\n .map(p => p[0] + '=' + encodeURIComponent(p[1]))\n .join('&');\n }\n return encodeURI(splits[0]) + (params ? '?' + params : '') + (hash ? '#' + hash : '');\n};\n\nexport const isWebPreviewMode = () => Platform.OS === 'web';\n\nexport const isDevMode = () => isWebPreviewMode() || __DEV__;\n\nexport const widgetsWithUndefinedValue = ['checkbox', 'toggle'];\n\nexport const isAndroid = () => (Platform.OS === 'android' || (Platform.OS === 'web' && /android/i.test(window.navigator.userAgent)));\n\nexport const isIos = () => (Platform.OS === 'ios' || (Platform.OS === 'web' && /iPhone|iPad/i.test(window.navigator.userAgent)));\n\nconst getGroupKey = (fieldDef: any, groupby: string, widgetScope: any, innerItem?: any) => isFunction(groupby) ? groupby.apply(widgetScope.proxy, [innerItem ? fieldDef[innerItem] : fieldDef]) : get(innerItem ? fieldDef[innerItem] : fieldDef, groupby);\n\n/**\n * This method prepares the grouped data.\n *\n * @param fieldDefs array of objects i.e. dataset\n * @param groupby string groupby\n * @param match string match\n * @param orderby string orderby\n * @param dateFormat string date format\n */\nexport const getGroupedData = (fieldDefs: any, groupby: string, match: string, orderby: string, dateFormat: string, widgetScope: any, innerItem?: any) => {\n\n // handling case-in-sensitive scenario\n // ordering the data based on groupby field. If there is innerItem then apply orderby using the innerItem's containing the groupby field.\n fieldDefs = orderBy(fieldDefs, fieldDef => {\n const groupKey = getGroupKey(fieldDef, groupby, widgetScope, innerItem);\n if (groupKey) {\n return toLower(groupKey);\n }\n return '';\n });\n\n // extract the grouped data based on the field obtained from 'groupDataByField'.\n const groupedLiData = groupBy(fieldDefs, function (fieldDef) {\n let concatStr = getGroupKey(fieldDef, groupby, widgetScope, innerItem);\n // by default set the undefined groupKey as 'others'\n if (isUndefined(concatStr) || isNull(concatStr) || concatStr.toString().trim() === '') {\n return GROUP_BY_OPTIONS.OTHERS;\n }\n // if match prop is alphabetic ,get the starting alphabet of the word as key.\n if (match === GROUP_BY_OPTIONS.ALPHABET) {\n concatStr = concatStr.substr(0, 1);\n }\n\n // if match contains the time options then get the concatStr using 'getTimeRolledUpString'\n if (includes(values(TIME_ROLLUP_OPTIONS), match)) {\n dateFormat = dateFormat && dateFormat.replace(/d/g, 'D');\n dateFormat = dateFormat && dateFormat.replace(/y/g, 'Y');\n concatStr = moment(concatStr).format(dateFormat);\n }\n\n return concatStr;\n });\n\n return getSortedGroupedData(groupedLiData, groupby, orderby, innerItem);\n};\n\n/**\n * function to get the ordered dataset based on the given orderby\n */\nexport const getOrderedDataset = (dataSet: any, orderby: string, innerItem?: any) => {\n if (!orderBy) {\n return cloneDeep(dataSet);\n }\n\n // The order by only works when the dataset contains list of objects.\n const items = orderby && orderby.split(','),\n fields: any = [],\n directions: any = [];\n items && items.forEach(obj => {\n const item = obj.split(':');\n fields.push(innerItem ? innerItem + '.' + item[0] : item[0]);\n directions.push(item[1]);\n });\n return orderBy(dataSet, fields, directions);\n};\n\n\n/**\n * This method returns sorted data based to groupkey.\n * Returns a array of objects, each object containing key which is groupKey and data is the sorted data which is sorted by groupby field in the data.\n *\n * @param groupedLiData, grouped data object with key as the groupKey and its value as the array of objects grouped under the groupKey.\n * @param groupBy, string groupby property\n * @returns {any[]}\n */\nexport const getSortedGroupedData = (groupedLiData: any, groupBy: string, orderby: string, innerItem?: any) => {\n const _groupedData: any = [];\n forEach(keys(groupedLiData), (groupkey, index) => {\n const liData = getOrderedDataset(groupedLiData[groupkey], orderby, innerItem);\n _groupedData.push({\n key: groupkey,\n data: sortBy(liData, data => {\n data._groupIndex = index;\n return get(data, groupBy) || get(data[innerItem], groupBy);\n })\n });\n });\n return _groupedData;\n};\n\nexport const isDefined = (v: any) => typeof v !== 'undefined';\n\n// try to convert the chekedvalue and unchecked values to boolean/number\nexport const unStringify = (val: any, defaultVal?: boolean) => {\n if (val === null) {\n return defaultVal;\n }\n\n if (val === true || val === 'true') {\n return true;\n }\n\n if (val === false || val === 'false') {\n return false;\n }\n\n const number = parseInt(val, 10);\n if (!isNaN(number)) {\n return number;\n }\n return val;\n};\n\n/**\n * This function invokes the given the function (fn) until the function successfully executes or the maximum number\n * of retries is reached or onBeforeRetry returns false.\n *\n * @param fn - a function that is needs to be invoked. The function can also return a promise as well.\n * @param interval - minimum time gap between successive retries. This argument should be greater or equal to 0.\n * @param maxRetries - maximum number of retries. This argument should be greater than 0. For all other values,\n * maxRetries is infinity.\n * @param onBeforeRetry - a callback function that will be invoked before re-invoking again. This function can\n * return false or a promise that is resolved to false to stop further retry attempts.\n * @returns {*} a promise that is resolved when fn is success (or) maximum retry attempts reached\n * (or) onBeforeRetry returned false.\n */\nexport const retryIfFails = (fn: Function, interval: number, maxRetries: number, onBeforeRetry = () => Promise.resolve(false)) => {\n let retryCount = 0;\n const tryFn = () => {\n retryCount++;\n if (isFunction(fn)) {\n return fn();\n }\n };\n maxRetries = (isNumber(maxRetries) && maxRetries > 0 ? maxRetries : 0);\n interval = (isNumber(interval) && interval > 0 ? interval : 0);\n return new Promise((resolve, reject) => {\n const errorFn = function () {\n const errArgs = arguments;\n setTimeout(() => {\n Promise.resolve().then(() => onBeforeRetry()).then(function (retry) {\n if (retry !== false && (!maxRetries || retryCount <= maxRetries)) {\n Promise.resolve().then(() => tryFn()).then(resolve, errorFn);\n } else {\n reject(errArgs);\n }\n }, () => reject(errArgs));\n }, interval);\n };\n Promise.resolve().then(() => tryFn()).then(resolve, errorFn);\n });\n};\n\n/**\n * Promise of a defer created using this function, has abort function that will reject the defer when called.\n * @returns {*} angular defer object\n */\nexport const getAbortableDefer = () => {\n const _defer: any = {\n promise: null,\n reject: null,\n resolve: null,\n onAbort: () => { },\n isAborted: false\n };\n _defer.promise = new Promise((resolve, reject) => {\n _defer.resolve = resolve;\n _defer.reject = reject;\n });\n _defer.promise.abort = () => {\n _defer.onAbort && _defer.onAbort();\n _defer.reject('aborted');\n _defer.isAborted = true;\n };\n return _defer;\n};\n\n//Adding the below function to split borderColor, as there is a known bug in reactnative where borderBottomColor does not override borderColor on Android (https://github.com/facebook/react-native/issues/38335)\nexport function splitBorderColorInPlace(rootStyles: any): any {\n const updatedRootStyles = cloneDeep(rootStyles);\n \n const color = updatedRootStyles.borderColor;\n \n if (!color) return updatedRootStyles;\n\n const sides = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n for (const side of sides) {\n const key = `border${side}Color`;\n if (!updatedRootStyles[key]) {\n updatedRootStyles[key] = color;\n }\n }\n delete updatedRootStyles.borderColor;\n return updatedRootStyles;\n}\n\n \n\nexport const validateField = (props: any, value: any) => {\n let requiredCheck = true, regexCheck = true;\n if (props.required) {\n if (isArray(value)) {\n requiredCheck = value.length === 0 ? false : true\n } else {\n requiredCheck = !value ? false : true\n }\n if (!requiredCheck) {\n return {\n errorType: 'required',\n isValid: false\n }\n }\n }\n if (value && props.regexp) {\n const condition = new RegExp(\"^\" + props.regexp + \"$\", 'g');\n regexCheck = condition.test(value);\n if (!regexCheck) {\n return {\n errorType: 'regexp',\n isValid: false\n }\n }\n }\n if (value && props.maxchars && value.length > props.maxchars) {\n return {\n errorType: 'maxchars',\n isValid: false\n }\n\n }\n if (value && props.mindate && new Date(props.datavalue) < moment(props.mindate).startOf('day').toDate()) {\n return {\n errorType: 'mindate',\n isValid: false\n }\n }\n if (value && props.maxdate && new Date(props.datavalue) > moment(props.maxdate).endOf('day').toDate()) {\n return {\n errorType: 'maxdate',\n isValid: false\n }\n }\n\n return {\n isValid: true\n }\n};\n\nexport const countDecimalDigits = (number: number | string) => {\n if (!number) return 0;\n\n // * convert the number to a string\n const numberString = number.toString();\n\n // * regular expression to match and count the decimal digits\n const decimalMatch = numberString.match(/\\.(\\d+)/);\n\n if (decimalMatch) {\n const decimalDigits = decimalMatch[1];\n return decimalDigits.length;\n } else {\n return 0; // * no decimal digits found\n }\n}\n\nexport const formatCompactNumber = (number: number) => {\n const isNegative = number < 0;\n number = isNegative ? number * -1 : number;\n let formattedNumber = number + '';\n if (number >= 1000 && number < 1_000_000) {\n formattedNumber = (number / 1000).toFixed(1).replace(/\\.0$/, \"\") + \"K\";\n } else if (number >= 1_000_000 && number < 1_000_000_000) {\n formattedNumber = (number / 1_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"M\";\n } else if (number >= 1_000_000_000 && number < 1_000_000_000_000) {\n formattedNumber = (number / 1_000_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"B\";\n } else if (number >= 1_000_000_000_000 && number < 1_000_000_000_000_000) {\n formattedNumber = (number / 1_000_000_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"T\";\n }\n return (isNegative ? '-' : '') + formattedNumber;\n}\n\nexport const toBase64 = function (path: string) {\n return FileSystem.readAsStringAsync(path, { encoding: 'base64' });\n};\n\nconst DATASET_WIDGETS = new Set(['select', 'checkboxset', 'radioset', 'switch', 'autocomplete', 'chips', 'typeahead', 'rating']);\nexport const isDataSetWidget = (widget: any) => {\n return DATASET_WIDGETS.has(widget);\n};\nexport const isFullPathUrl = (url: string) => {\n return isString(url) &&\n (url.startsWith('data:')\n || url.startsWith('http:')\n || url.startsWith('https:')\n || url.startsWith('file:'));\n};\n\nexport function removeUndefinedKeys(obj: any) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n } else if (typeof obj[key] === 'object') {\n // * if the value is an object, recursively call the function\n removeUndefinedKeys(obj[key]);\n }\n }\n\n return obj;\n}\n// * get total number of days in a month of a year\nexport function getDaysInMonth(month: number, year: number) {\n return new Date(year, month, 0).getDate();\n}\n\nexport const getDates = (\n startDate: number,\n endDate: number,\n month = 0, // zero-based\n year = new Date().getFullYear(),\n) => {\n const daysInMonth = getDaysInMonth(month, year);\n const dates = Array.from({ length: daysInMonth }, (v, i) => i + 1);\n\n const datesInRange = dates.filter(date => date >= startDate && date <= endDate);\n\n return datesInRange;\n};\n\nexport const monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nexport const getMonths = (startMonth: number, endMonth: number) => {\n const months = monthNames.map(name => name.substring(0, 3));\n const monthRange = months.filter((_, index) => index >= startMonth && index <= endMonth);\n\n return monthRange;\n};\n\nexport const getMonthIndex = (monthName: string, shortName: boolean = true) => {\n const months = shortName ? monthNames.map(name => name.substring(0, 3)) : monthNames;\n const monthNumber = months.findIndex((name) => name === monthName);\n\n return monthNumber;\n}\n\nexport const getYearRange = (\n startYear: number = 1950,\n endYear: number = 2060,\n) => {\n const years = [];\n for (let year = startYear; year <= endYear; ++year) {\n years.push(year);\n }\n\n return years;\n};\n\nexport const getDateObject = (date: number, month: number, year: number) => {\n // * month is zero-based\n return new Date(year, month, date);\n};\n\nexport const getHours = () => {\n const hours = [];\n for (let hour = 1; hour <= 12; ++hour) {\n const paddedHour = String(hour).padStart(2, '0');\n hours.push(paddedHour);\n }\n\n return hours;\n}\n\nexport const get24Hours = () => {\n const hours = [];\n for (let hour = 0; hour <= 23; ++hour) {\n const paddedHour = String(hour).padStart(2, '0');\n hours.push(paddedHour);\n }\n\n return hours;\n}\n\nexport const getMinutes = () => {\n const minutes = [];\n for (let minute = 0; minute <= 59; ++minute) {\n const paddedMinute = String(minute).padStart(2, '0');\n minutes.push(paddedMinute);\n }\n\n return minutes;\n}\n\nexport const getTimeIndicators = () => {\n return ['AM', 'PM'];\n}\n\nexport const getDateTimeObject = (date: number, month: number, year: number, hour: number, minute: number) => {\n // * month is zero-based\n return new Date(year, month, date, hour, minute);\n};\n\nexport const getProgressBarGradientStartEnd = (angle: string) => {\n const angleLowerCase = angle?.toLowerCase();\n let start = { x: 0, y: 1 };\n let end = { x: 1, y: 1 };\n\n if (angle === '0deg' || angleLowerCase === 'to top') {\n end.x = 0;\n end.y = 0;\n } else if (angle === '90deg' || angleLowerCase === 'to right') {\n start.x = 0;\n } else if (angle === '180deg' || angleLowerCase === 'to bottom') {\n start.y = 0;\n end.x = 0;\n end.y = 1;\n } else if (angle === '270deg' || angleLowerCase === 'to left') {\n start.x = 1;\n end.x = 0;\n } else {\n // other angle\n }\n\n return {start, end}\n}\n\nexport const parseProgressBarLinearGradient = (gradient: string) => {\n let angle = '', color1 = '', color2 = '';\n const linearGradientRegex = /linear-gradient\\(([^,]+),\\s*([^,]+),\\s*([^)]+)\\)/;\n const hasLinearGradient = linearGradientRegex.test(gradient);\n\n const matches = gradient?.match(linearGradientRegex);\n angle = matches?.[1] || '90deg';\n const {start, end} = getProgressBarGradientStartEnd(angle)\n color1 = matches?.[2] || ThemeVariables.INSTANCE.primaryColor;\n color2 = matches?.[3] || ThemeVariables.INSTANCE.primaryColor;\n\n return {hasLinearGradient, color1, color2, start, end};\n}\n\n\n\nexport const extractGradientDirection = (gradientString: string): string => {\n // Check if the gradient string contains a direction or angle\n const directionMatch = gradientString.match(/linear-gradient\\s*\\(\\s*((?:to\\s+(?:top|bottom|left|right)(?:\\s+(?:left|right))?|[0-9]+(?:deg|grad|rad|turn)))/i);\n \n // Return the direction if found, otherwise return default '90deg'\n return directionMatch ? directionMatch[1] : '90deg';\n};\n\nexport const getGradientStartEnd = (direction: string) => {\n const directionLowerCase = direction?.toLowerCase();\n \n // Default values (to right / 90deg)\n let start = { x: 0, y: 0 };\n let end = { x: 1, y: 0 };\n \n // Handle standard named directions and common angles first\n if (direction === '0deg' || directionLowerCase === 'to top') {\n start = { x: 0, y: 1 };\n end = { x: 0, y: 0 };\n } else if (direction === '90deg' || directionLowerCase === 'to right') {\n start = { x: 0, y: 0 };\n end = { x: 1, y: 0 };\n } else if (direction === '180deg' || directionLowerCase === 'to bottom') {\n start = { x: 0, y: 0 };\n end = { x: 0, y: 1 };\n } else if (direction === '270deg' || directionLowerCase === 'to left') {\n start = { x: 1, y: 0 };\n end = { x: 0, y: 0 };\n } else if (direction === '45deg' || directionLowerCase === 'to top right') {\n start = { x: 0, y: 1 };\n end = { x: 1, y: 0 };\n } else if (direction === '135deg' || directionLowerCase === 'to bottom right') {\n start = { x: 0, y: 0 };\n end = { x: 1, y: 1 };\n } else if (direction === '225deg' || directionLowerCase === 'to bottom left') {\n start = { x: 1, y: 0 };\n end = { x: 0, y: 1 };\n } else if (direction === '315deg' || directionLowerCase === 'to top left') {\n start = { x: 1, y: 1 };\n end = { x: 0, y: 0 };\n } else if (direction.match(/\\d+(?:deg|grad|rad|turn)$/)) {\n // Handle custom angles\n let angleInDegrees = 0;\n \n if (direction.endsWith('deg')) {\n angleInDegrees = parseFloat(direction);\n } else if (direction.endsWith('grad')) {\n // 1 grad = 0.9 degrees\n angleInDegrees = parseFloat(direction) * 0.9;\n } else if (direction.endsWith('rad')) {\n // 1 rad = 180/π degrees\n angleInDegrees = parseFloat(direction) * (180 / Math.PI);\n } else if (direction.endsWith('turn')) {\n // 1 turn = 360 degrees\n angleInDegrees = parseFloat(direction) * 360;\n }\n \n // Normalize angle to [0, 360)\n angleInDegrees = ((angleInDegrees % 360) + 360) % 360;\n \n // Convert angle to radians for calculations\n // Note: CSS angles follow the polar coordinate system where 0deg points up (north)\n // and increases clockwise. We adjust by adding 270 to match this convention.\n const adjustedAngle = ((angleInDegrees + 270) % 360) * (Math.PI / 180);\n \n // Calculate end point on a unit circle\n const endX = Math.cos(adjustedAngle);\n const endY = Math.sin(adjustedAngle);\n \n // Normalize to ensure the vector length is correct and fits in our coordinate system\n const vectorLength = Math.sqrt(endX * endX + endY * endY);\n \n // Set start at center point (0.5, 0.5) and calculate end point\n start = { \n x: 0.5 - (endX / vectorLength) * 0.5,\n y: 0.5 - (endY / vectorLength) * 0.5\n };\n \n end = { \n x: 0.5 + (endX / vectorLength) * 0.5, \n y: 0.5 + (endY / vectorLength) * 0.5 \n };\n }\n \n return { start, end };\n};\n\nexport const getGradientColorStops = (gradientString: string): number[] => {\n // Check if input is valid\n if (!gradientString) return [];\n \n // Extract the content inside linear-gradient()\n const match = gradientString.match(/linear-gradient\\s*\\((.*)\\)/);\n if (!match) return [];\n \n const content = match[1];\n \n // Remove angle/direction part if present\n const withoutDirection = content.replace(/^(to\\s+\\w+(?:\\s+\\w+)?|[0-9]+(?:deg|grad|rad|turn))\\s*,\\s*/, '');\n \n // Split by commas that are not inside parentheses\n let depth = 0;\n let currentSegment = '';\n const segments = [];\n \n for (let i = 0; i < withoutDirection.length; i++) {\n const char = withoutDirection[i];\n \n if (char === '(') depth++;\n else if (char === ')') depth--;\n else if (char === ',' && depth === 0) {\n segments.push(currentSegment.trim());\n currentSegment = '';\n continue;\n }\n \n currentSegment += char;\n }\n \n // Don't forget the last segment\n if (currentSegment.trim()) {\n segments.push(currentSegment.trim());\n }\n \n // Check if any segments have percentages\n const hasPercentages = segments.some(segment => {\n return segment.match(/^(?:rgba?\\([^)]+\\)|hsla?\\([^)]+\\)|#[0-9a-fA-F]{3,8}|\\w+)\\s+\\d+(?:\\.\\d+)?%$/);\n });\n \n // If no percentages are defined, return an empty array\n if (!hasPercentages) return [];\n \n // Parse each segment into color and position\n const colorStops = segments.map((segment, index) => {\n // Match color and optional percentage position\n const match = segment.match(/^(?:rgba?\\([^)]+\\)|hsla?\\([^)]+\\)|#[0-9a-fA-F]{3,8}|\\w+)(?:\\s+(\\d+(?:\\.\\d+)?)%)?$/);\n \n if (match && match[1]) {\n // If percentage is present, convert to decimal (0-1)\n const percentage = parseFloat(match[1]);\n return Math.max(0, Math.min(percentage / 100, 1)); // Clamp between 0 and 1\n } else {\n // If no percentage, calculate based on position\n return segments.length > 1 ? index / (segments.length - 1) : 0;\n }\n });\n \n //expo linear gradient location props ascendng order validation\n for (let i = 0; i < colorStops.length - 1; i++) {\n if (colorStops[i] < colorStops[i - 1]) {\n return []; // Invalid: not in ascending order return empty array\n }\n }\n return colorStops;\n};\n\nexport const getGradientColors = (gradientString: string): string[] => {\n // Check if input is valid\n if (!gradientString) return [];\n \n // Extract the content inside linear-gradient()\n const match = gradientString.match(/linear-gradient\\s*\\((.*)\\)/);\n if (!match) return [];\n \n const content = match[1];\n \n // Remove angle/direction part if present\n const withoutDirection = content.replace(/^(to\\s+\\w+(?:\\s+\\w+)?|[0-9]+(?:deg|grad|rad|turn))\\s*,\\s*/, '');\n \n // Split by commas that are not inside parentheses\n let depth = 0;\n let currentSegment = '';\n const segments = [];\n \n for (let i = 0; i < withoutDirection.length; i++) {\n const char = withoutDirection[i];\n \n if (char === '(') depth++;\n else if (char === ')') depth--;\n else if (char === ',' && depth === 0) {\n segments.push(currentSegment.trim());\n currentSegment = '';\n continue;\n }\n \n currentSegment += char;\n }\n \n // Don't forget the last segment\n if (currentSegment.trim()) {\n segments.push(currentSegment.trim());\n }\n \n // Extract just the color part from each segment\n return segments.map(segment => {\n const match = segment.match(/^((?:rgba?\\([^)]+\\)|hsla?\\([^)]+\\)|#[0-9a-fA-F]{3,8}|\\w+))/);\n return match ? match[1] : segment;\n });\n};\n\n\n\nexport const parseLinearGradient = (gradient: string) => {\n // Check if this is a valid linear gradient\n const hasLinearGradient = /linear-gradient\\s*\\(/i.test(gradient);\n \n if (!hasLinearGradient || !gradient) return{\n hasLinearGradient: false,\n color1: '',\n color2: '',\n start: { x: 0, y: 0 },\n end: { x: 1, y: 0 },\n gradientColors: [],\n colorStops: []\n }\n \n // Extract direction/angle\n const direction = extractGradientDirection(gradient);\n \n // Get start and end points\n const { start, end } = getGradientStartEnd(direction);\n \n // Get colors\n let gradientColors = getGradientColors(gradient);\n \n // Get color stops in the format [[0, 0.5], [0.5, 1]]\n const colorStops = getGradientColorStops(gradient);\n \n // For backward compatibility, extract color1 and color2\n const color1 = gradientColors.length > 0 ? gradientColors[0] : ThemeVariables?.INSTANCE?.primaryColor || '#000000';\n const color2 = gradientColors.length > 1 ? gradientColors[gradientColors.length - 1] : color1;\n\n const defaultColor = ThemeVariables?.INSTANCE?.primaryColor\n\n gradientColors = gradientColors.length >= 2 ? gradientColors : [defaultColor,defaultColor]\n \n return { \n hasLinearGradient, \n color1, \n color2, \n start, \n end, \n gradientColors,\n colorStops,\n };\n};\n\nexport const validateInputOnDevice = (value: string, type: 'number' | 'currency') => {\n const isCurrencyField = type === 'currency';\n let isValidText = true;\n let validText = value;\n\n // * no alphabets except E, may contain E only once\n if (/[a-df-zA-DF-Z]/.test(value) || !/^[^eE]*[eE]?[^eE]*$/.test(value)) {\n isValidText = false;\n validText = validText.replace(/[a-df-zA-DF-Z]/g, '');\n validText = validText.replace(/([eE])\\1+/g, 'e');\n }\n\n // * currency only: check for negative number\n if (isCurrencyField && (Number(value) < 0 || /-/g.test(value))) {\n isValidText = false;\n validText = validText.replace(/-/g, '');\n }\n\n // * number only: not more than one minus and doesn't end with minus (-)\n if (!isCurrencyField && (Number(value.match(/-/g)?.length) > 1) || /\\w-/.test(value)) {\n isValidText = false;\n validText = validText.replace(/-/g, '');\n validText = validText.replace(/\\w-/g, '');\n }\n\n // * check for more than one decimal point\n if (/^\\d*\\.\\d*\\..*$/.test(value)) {\n isValidText = false;\n validText = validText.replace(/\\.(?=\\.*\\.)/g, '');\n }\n\n // * check for spaces and comma\n if (/[\\s,]/.test(value)) {\n isValidText = false;\n validText = validText.replace(/[\\s,]/, '');\n }\n\n return { isValidText, validText };\n}\n\nexport const isDateFormatAsPerPattern = (\n datePattern?: string,\n dateString?: string | Date\n) => {\n try {\n // * format dateString as per datePattern\n const date = moment(dateString, datePattern, true);\n\n // * check date is valid and matches the format\n return date.isValid() && typeof dateString === 'string' && dateString?.toUpperCase() === date.format(datePattern)?.toUpperCase();\n } catch (error) {\n // * if not able to parse date string\n return false;\n }\n};\n\nexport const getMimeType = (extensions?: string) => {\n if (!extensions) return '*/*';\n let hasInvalidExtension = false;\n let wildCards = ['image/*', 'audio/*', 'video/*'];\n let extensionList = extensions.split(' ');\n let mimeType = extensionList\n .map((extension: string) => {\n let type = mime.lookup(extension);\n let isWildCardExtension = wildCards.includes(extension);\n // * invalid extension, also not in wildcards\n hasInvalidExtension = !type && !isWildCardExtension;\n return type ? type : isWildCardExtension ? extension : '';\n })\n .filter((type) => type);\n\n if (hasInvalidExtension) return '*/*';\n return mimeType;\n};\n\nexport function getNumberOfEmptyObjects(noOfItems: number) {\n return Array.from({ length: noOfItems }, () => ({}));\n}\n\nexport const setPosition = (data: { [index: string]: {x: number, y: number} }): void => {\n Object.keys(data).forEach((key: string):void => {\n if(AppLayoutPosition?.data?.[AppLayoutPosition?.currentPage]){\n AppLayoutPosition.data[AppLayoutPosition.currentPage][key] = data[key]\n }\n })\n}\n\nexport const getPosition = (key: string): { x: number, y: number } => {\n return AppLayoutPosition.data[AppLayoutPosition.currentPage][key];\n}\n\nexport const setCurrentPageInAppLayout = (pageName: string): void => {\n AppLayoutPosition.currentPage = pageName;\n AppLayoutPosition.data[pageName] = {};\n}\n\nexport const replace = (target: string, value: any): string => {\n if (!target || !target.includes('${')) {\n return target;\n }\n\n return target.replace(/\\${([^}]+)}/g, (match, key) => {\n const val = value[key];\n return val !== undefined ? val : match;\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["Platform","moment","FileSystem","isFunction","includes","isUndefined","isNull","orderBy","groupBy","toLower","get","forEach","sortBy","cloneDeep","keys","values","isArray","isString","isNumber","mime","ThemeVariables","GROUP_BY_OPTIONS","ALPHABET","WORD","OTHERS","TIME_ROLLUP_OPTIONS","HOUR","DAY","WEEK","MONTH","YEAR","AppLayoutPosition","currentPage","data","_deepCopy","o1","o2","o","Object","k","v","deepCopy","objects","toBoolean","val","undefined","toNumber","parseFloat","e","encodeUrl","url","splits","split","hash","params","length","map","p","encodeURIComponent","join","encodeURI","isWebPreviewMode","OS","isDevMode","__DEV__","widgetsWithUndefinedValue","isAndroid","test","window","navigator","userAgent","isIos","getGroupKey","fieldDef","groupby","widgetScope","innerItem","apply","proxy","getGroupedData","fieldDefs","match","orderby","dateFormat","groupKey","groupedLiData","concatStr","toString","trim","substr","replace","format","getSortedGroupedData","getOrderedDataset","dataSet","items","fields","directions","obj","item","push","_groupedData","groupkey","index","liData","key","_groupIndex","isDefined","unStringify","defaultVal","number","parseInt","isNaN","retryIfFails","fn","interval","maxRetries","onBeforeRetry","Promise","resolve","retryCount","tryFn","reject","errorFn","errArgs","arguments","setTimeout","then","retry","getAbortableDefer","_defer","promise","onAbort","isAborted","abort","splitBorderColorInPlace","rootStyles","updatedRootStyles","color","borderColor","sides","side","validateField","props","value","requiredCheck","regexCheck","required","errorType","isValid","regexp","condition","RegExp","maxchars","mindate","Date","datavalue","startOf","toDate","maxdate","endOf","countDecimalDigits","numberString","decimalMatch","decimalDigits","formatCompactNumber","isNegative","formattedNumber","toFixed","toBase64","path","readAsStringAsync","encoding","DATASET_WIDGETS","Set","isDataSetWidget","widget","has","isFullPathUrl","startsWith","removeUndefinedKeys","getDaysInMonth","month","year","getDate","getDates","startDate","endDate","getFullYear","daysInMonth","dates","Array","from","i","datesInRange","filter","date","monthNames","getMonths","startMonth","endMonth","months","name","substring","monthRange","_","getMonthIndex","monthName","shortName","monthNumber","findIndex","getYearRange","startYear","endYear","years","getDateObject","getHours","hours","hour","paddedHour","String","padStart","get24Hours","getMinutes","minutes","minute","paddedMinute","getTimeIndicators","getDateTimeObject","getProgressBarGradientStartEnd","angle","angleLowerCase","toLowerCase","start","x","y","end","parseProgressBarLinearGradient","gradient","color1","color2","linearGradientRegex","hasLinearGradient","matches","INSTANCE","primaryColor","extractGradientDirection","gradientString","directionMatch","getGradientStartEnd","direction","directionLowerCase","angleInDegrees","endsWith","Math","PI","adjustedAngle","endX","cos","endY","sin","vectorLength","sqrt","getGradientColorStops","content","withoutDirection","depth","currentSegment","segments","char","hasPercentages","some","segment","colorStops","percentage","max","min","getGradientColors","isNativeStyle","context","traceEnabled","nativeStyleProperties","parts","property","parseLinearGradient","_ThemeVariables$INSTA","_ThemeVariables$INSTA2","gradientColors","defaultColor","validateInputOnDevice","type","_value$match","isCurrencyField","isValidText","validText","Number","isDateFormatAsPerPattern","datePattern","dateString","_date$format","toUpperCase","error","getMimeType","extensions","hasInvalidExtension","wildCards","extensionList","mimeType","extension","lookup","isWildCardExtension","getNumberOfEmptyObjects","noOfItems","setPosition","_AppLayoutPosition$da","getPosition","setCurrentPageInAppLayout","pageName","target"],"sources":["utils.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport moment from \"moment\";\nimport * as FileSystem from \"expo-file-system\";\nimport { isFunction, includes, isUndefined, isNull, orderBy, groupBy, toLower, get, forEach, sortBy, cloneDeep, keys, values, isArray, isString, isNumber } from 'lodash';\nimport * as mime from 'react-native-mime-types';\nimport ThemeVariables from '../styles/theme.variables';\n\ndeclare const window: any;\nconst GROUP_BY_OPTIONS = {\n ALPHABET: 'alphabet',\n WORD: 'word',\n OTHERS: 'Others'\n};\nconst TIME_ROLLUP_OPTIONS = {\n HOUR: 'hour',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month',\n YEAR: 'year'\n};\n\ntype LayoutData = {\n [index: string]: {\n [index: string]: {\n x: number,\n y: number\n }\n }\n}\n\nconst AppLayoutPosition: { currentPage: string, data: LayoutData } = {\n currentPage: 'Main',\n data: {}\n}\n\nconst _deepCopy = (o1: any, ...o2: any) => {\n o2.forEach((o: any) => {\n if (o) {\n Object.keys(o).forEach(k => {\n const v = o[k];\n if (v && !isString(v) && !isArray(v) && typeof v === 'object') {\n o1[k] = _deepCopy(o1[k] || {}, o[k]);\n } else {\n o1[k] = _deepCopy(v);\n }\n });\n }\n });\n return o1;\n};\n\nexport const deepCopy = (...objects: any) => _deepCopy({}, ...objects);\n\nexport const toBoolean = (val: any) => {\n return val === true\n || val === 'true'\n || !(val === false\n || val === null\n || val === undefined\n || val === '');\n};\n\nexport const toNumber = (val: any) => {\n try {\n return parseFloat(val) || 0;\n } catch (e) {\n return 0;\n }\n};\n\n/**\n * this method encodes the url and returns the encoded string\n */\nexport const encodeUrl = (url: string): string => {\n let splits = url.split('#');\n const hash = splits[1];\n splits = splits[0].split('?');\n let params = '';\n if (splits.length > 1) {\n params = splits[1].split('&')\n .map(p => p.split('='))\n .map(p => p[0] + '=' + encodeURIComponent(p[1]))\n .join('&');\n }\n return encodeURI(splits[0]) + (params ? '?' + params : '') + (hash ? '#' + hash : '');\n};\n\nexport const isWebPreviewMode = () => Platform.OS === 'web';\n\nexport const isDevMode = () => isWebPreviewMode() || __DEV__;\n\nexport const widgetsWithUndefinedValue = ['checkbox', 'toggle'];\n\nexport const isAndroid = () => (Platform.OS === 'android' || (Platform.OS === 'web' && /android/i.test(window.navigator.userAgent)));\n\nexport const isIos = () => (Platform.OS === 'ios' || (Platform.OS === 'web' && /iPhone|iPad/i.test(window.navigator.userAgent)));\n\nconst getGroupKey = (fieldDef: any, groupby: string, widgetScope: any, innerItem?: any) => isFunction(groupby) ? groupby.apply(widgetScope.proxy, [innerItem ? fieldDef[innerItem] : fieldDef]) : get(innerItem ? fieldDef[innerItem] : fieldDef, groupby);\n\n/**\n * This method prepares the grouped data.\n *\n * @param fieldDefs array of objects i.e. dataset\n * @param groupby string groupby\n * @param match string match\n * @param orderby string orderby\n * @param dateFormat string date format\n */\nexport const getGroupedData = (fieldDefs: any, groupby: string, match: string, orderby: string, dateFormat: string, widgetScope: any, innerItem?: any) => {\n\n // handling case-in-sensitive scenario\n // ordering the data based on groupby field. If there is innerItem then apply orderby using the innerItem's containing the groupby field.\n fieldDefs = orderBy(fieldDefs, fieldDef => {\n const groupKey = getGroupKey(fieldDef, groupby, widgetScope, innerItem);\n if (groupKey) {\n return toLower(groupKey);\n }\n return '';\n });\n\n // extract the grouped data based on the field obtained from 'groupDataByField'.\n const groupedLiData = groupBy(fieldDefs, function (fieldDef) {\n let concatStr = getGroupKey(fieldDef, groupby, widgetScope, innerItem);\n // by default set the undefined groupKey as 'others'\n if (isUndefined(concatStr) || isNull(concatStr) || concatStr.toString().trim() === '') {\n return GROUP_BY_OPTIONS.OTHERS;\n }\n // if match prop is alphabetic ,get the starting alphabet of the word as key.\n if (match === GROUP_BY_OPTIONS.ALPHABET) {\n concatStr = concatStr.substr(0, 1);\n }\n\n // if match contains the time options then get the concatStr using 'getTimeRolledUpString'\n if (includes(values(TIME_ROLLUP_OPTIONS), match)) {\n dateFormat = dateFormat && dateFormat.replace(/d/g, 'D');\n dateFormat = dateFormat && dateFormat.replace(/y/g, 'Y');\n concatStr = moment(concatStr).format(dateFormat);\n }\n\n return concatStr;\n });\n\n return getSortedGroupedData(groupedLiData, groupby, orderby, innerItem);\n};\n\n/**\n * function to get the ordered dataset based on the given orderby\n */\nexport const getOrderedDataset = (dataSet: any, orderby: string, innerItem?: any) => {\n if (!orderBy) {\n return cloneDeep(dataSet);\n }\n\n // The order by only works when the dataset contains list of objects.\n const items = orderby && orderby.split(','),\n fields: any = [],\n directions: any = [];\n items && items.forEach(obj => {\n const item = obj.split(':');\n fields.push(innerItem ? innerItem + '.' + item[0] : item[0]);\n directions.push(item[1]);\n });\n return orderBy(dataSet, fields, directions);\n};\n\n\n/**\n * This method returns sorted data based to groupkey.\n * Returns a array of objects, each object containing key which is groupKey and data is the sorted data which is sorted by groupby field in the data.\n *\n * @param groupedLiData, grouped data object with key as the groupKey and its value as the array of objects grouped under the groupKey.\n * @param groupBy, string groupby property\n * @returns {any[]}\n */\nexport const getSortedGroupedData = (groupedLiData: any, groupBy: string, orderby: string, innerItem?: any) => {\n const _groupedData: any = [];\n forEach(keys(groupedLiData), (groupkey, index) => {\n const liData = getOrderedDataset(groupedLiData[groupkey], orderby, innerItem);\n _groupedData.push({\n key: groupkey,\n data: sortBy(liData, data => {\n data._groupIndex = index;\n return get(data, groupBy) || get(data[innerItem], groupBy);\n })\n });\n });\n return _groupedData;\n};\n\nexport const isDefined = (v: any) => typeof v !== 'undefined';\n\n// try to convert the chekedvalue and unchecked values to boolean/number\nexport const unStringify = (val: any, defaultVal?: boolean) => {\n if (val === null) {\n return defaultVal;\n }\n\n if (val === true || val === 'true') {\n return true;\n }\n\n if (val === false || val === 'false') {\n return false;\n }\n\n const number = parseInt(val, 10);\n if (!isNaN(number)) {\n return number;\n }\n return val;\n};\n\n/**\n * This function invokes the given the function (fn) until the function successfully executes or the maximum number\n * of retries is reached or onBeforeRetry returns false.\n *\n * @param fn - a function that is needs to be invoked. The function can also return a promise as well.\n * @param interval - minimum time gap between successive retries. This argument should be greater or equal to 0.\n * @param maxRetries - maximum number of retries. This argument should be greater than 0. For all other values,\n * maxRetries is infinity.\n * @param onBeforeRetry - a callback function that will be invoked before re-invoking again. This function can\n * return false or a promise that is resolved to false to stop further retry attempts.\n * @returns {*} a promise that is resolved when fn is success (or) maximum retry attempts reached\n * (or) onBeforeRetry returned false.\n */\nexport const retryIfFails = (fn: Function, interval: number, maxRetries: number, onBeforeRetry = () => Promise.resolve(false)) => {\n let retryCount = 0;\n const tryFn = () => {\n retryCount++;\n if (isFunction(fn)) {\n return fn();\n }\n };\n maxRetries = (isNumber(maxRetries) && maxRetries > 0 ? maxRetries : 0);\n interval = (isNumber(interval) && interval > 0 ? interval : 0);\n return new Promise((resolve, reject) => {\n const errorFn = function () {\n const errArgs = arguments;\n setTimeout(() => {\n Promise.resolve().then(() => onBeforeRetry()).then(function (retry) {\n if (retry !== false && (!maxRetries || retryCount <= maxRetries)) {\n Promise.resolve().then(() => tryFn()).then(resolve, errorFn);\n } else {\n reject(errArgs);\n }\n }, () => reject(errArgs));\n }, interval);\n };\n Promise.resolve().then(() => tryFn()).then(resolve, errorFn);\n });\n};\n\n/**\n * Promise of a defer created using this function, has abort function that will reject the defer when called.\n * @returns {*} angular defer object\n */\nexport const getAbortableDefer = () => {\n const _defer: any = {\n promise: null,\n reject: null,\n resolve: null,\n onAbort: () => { },\n isAborted: false\n };\n _defer.promise = new Promise((resolve, reject) => {\n _defer.resolve = resolve;\n _defer.reject = reject;\n });\n _defer.promise.abort = () => {\n _defer.onAbort && _defer.onAbort();\n _defer.reject('aborted');\n _defer.isAborted = true;\n };\n return _defer;\n};\n\n//Adding the below function to split borderColor, as there is a known bug in reactnative where borderBottomColor does not override borderColor on Android (https://github.com/facebook/react-native/issues/38335)\nexport function splitBorderColorInPlace(rootStyles: any): any {\n const updatedRootStyles = cloneDeep(rootStyles);\n \n const color = updatedRootStyles.borderColor;\n \n if (!color) return updatedRootStyles;\n\n const sides = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n for (const side of sides) {\n const key = `border${side}Color`;\n if (!updatedRootStyles[key]) {\n updatedRootStyles[key] = color;\n }\n }\n delete updatedRootStyles.borderColor;\n return updatedRootStyles;\n}\n\n \n\nexport const validateField = (props: any, value: any) => {\n let requiredCheck = true, regexCheck = true;\n if (props.required) {\n if (isArray(value)) {\n requiredCheck = value.length === 0 ? false : true\n } else {\n requiredCheck = !value ? false : true\n }\n if (!requiredCheck) {\n return {\n errorType: 'required',\n isValid: false\n }\n }\n }\n if (value && props.regexp) {\n const condition = new RegExp(\"^\" + props.regexp + \"$\", 'g');\n regexCheck = condition.test(value);\n if (!regexCheck) {\n return {\n errorType: 'regexp',\n isValid: false\n }\n }\n }\n if (value && props.maxchars && value.length > props.maxchars) {\n return {\n errorType: 'maxchars',\n isValid: false\n }\n\n }\n if (value && props.mindate && new Date(props.datavalue) < moment(props.mindate).startOf('day').toDate()) {\n return {\n errorType: 'mindate',\n isValid: false\n }\n }\n if (value && props.maxdate && new Date(props.datavalue) > moment(props.maxdate).endOf('day').toDate()) {\n return {\n errorType: 'maxdate',\n isValid: false\n }\n }\n\n return {\n isValid: true\n }\n};\n\nexport const countDecimalDigits = (number: number | string) => {\n if (!number) return 0;\n\n // * convert the number to a string\n const numberString = number.toString();\n\n // * regular expression to match and count the decimal digits\n const decimalMatch = numberString.match(/\\.(\\d+)/);\n\n if (decimalMatch) {\n const decimalDigits = decimalMatch[1];\n return decimalDigits.length;\n } else {\n return 0; // * no decimal digits found\n }\n}\n\nexport const formatCompactNumber = (number: number) => {\n const isNegative = number < 0;\n number = isNegative ? number * -1 : number;\n let formattedNumber = number + '';\n if (number >= 1000 && number < 1_000_000) {\n formattedNumber = (number / 1000).toFixed(1).replace(/\\.0$/, \"\") + \"K\";\n } else if (number >= 1_000_000 && number < 1_000_000_000) {\n formattedNumber = (number / 1_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"M\";\n } else if (number >= 1_000_000_000 && number < 1_000_000_000_000) {\n formattedNumber = (number / 1_000_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"B\";\n } else if (number >= 1_000_000_000_000 && number < 1_000_000_000_000_000) {\n formattedNumber = (number / 1_000_000_000_000).toFixed(1).replace(/\\.0$/, \"\") + \"T\";\n }\n return (isNegative ? '-' : '') + formattedNumber;\n}\n\nexport const toBase64 = function (path: string) {\n return FileSystem.readAsStringAsync(path, { encoding: 'base64' });\n};\n\nconst DATASET_WIDGETS = new Set(['select', 'checkboxset', 'radioset', 'switch', 'autocomplete', 'chips', 'typeahead', 'rating']);\nexport const isDataSetWidget = (widget: any) => {\n return DATASET_WIDGETS.has(widget);\n};\nexport const isFullPathUrl = (url: string) => {\n return isString(url) &&\n (url.startsWith('data:')\n || url.startsWith('http:')\n || url.startsWith('https:')\n || url.startsWith('file:'));\n};\n\nexport function removeUndefinedKeys(obj: any) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n } else if (typeof obj[key] === 'object') {\n // * if the value is an object, recursively call the function\n removeUndefinedKeys(obj[key]);\n }\n }\n\n return obj;\n}\n// * get total number of days in a month of a year\nexport function getDaysInMonth(month: number, year: number) {\n return new Date(year, month, 0).getDate();\n}\n\nexport const getDates = (\n startDate: number,\n endDate: number,\n month = 0, // zero-based\n year = new Date().getFullYear(),\n) => {\n const daysInMonth = getDaysInMonth(month, year);\n const dates = Array.from({ length: daysInMonth }, (v, i) => i + 1);\n\n const datesInRange = dates.filter(date => date >= startDate && date <= endDate);\n\n return datesInRange;\n};\n\nexport const monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nexport const getMonths = (startMonth: number, endMonth: number) => {\n const months = monthNames.map(name => name.substring(0, 3));\n const monthRange = months.filter((_, index) => index >= startMonth && index <= endMonth);\n\n return monthRange;\n};\n\nexport const getMonthIndex = (monthName: string, shortName: boolean = true) => {\n const months = shortName ? monthNames.map(name => name.substring(0, 3)) : monthNames;\n const monthNumber = months.findIndex((name) => name === monthName);\n\n return monthNumber;\n}\n\nexport const getYearRange = (\n startYear: number = 1950,\n endYear: number = 2060,\n) => {\n const years = [];\n for (let year = startYear; year <= endYear; ++year) {\n years.push(year);\n }\n\n return years;\n};\n\nexport const getDateObject = (date: number, month: number, year: number) => {\n // * month is zero-based\n return new Date(year, month, date);\n};\n\nexport const getHours = () => {\n const hours = [];\n for (let hour = 1; hour <= 12; ++hour) {\n const paddedHour = String(hour).padStart(2, '0');\n hours.push(paddedHour);\n }\n\n return hours;\n}\n\nexport const get24Hours = () => {\n const hours = [];\n for (let hour = 0; hour <= 23; ++hour) {\n const paddedHour = String(hour).padStart(2, '0');\n hours.push(paddedHour);\n }\n\n return hours;\n}\n\nexport const getMinutes = () => {\n const minutes = [];\n for (let minute = 0; minute <= 59; ++minute) {\n const paddedMinute = String(minute).padStart(2, '0');\n minutes.push(paddedMinute);\n }\n\n return minutes;\n}\n\nexport const getTimeIndicators = () => {\n return ['AM', 'PM'];\n}\n\nexport const getDateTimeObject = (date: number, month: number, year: number, hour: number, minute: number) => {\n // * month is zero-based\n return new Date(year, month, date, hour, minute);\n};\n\nexport const getProgressBarGradientStartEnd = (angle: string) => {\n const angleLowerCase = angle?.toLowerCase();\n let start = { x: 0, y: 1 };\n let end = { x: 1, y: 1 };\n\n if (angle === '0deg' || angleLowerCase === 'to top') {\n end.x = 0;\n end.y = 0;\n } else if (angle === '90deg' || angleLowerCase === 'to right') {\n start.x = 0;\n } else if (angle === '180deg' || angleLowerCase === 'to bottom') {\n start.y = 0;\n end.x = 0;\n end.y = 1;\n } else if (angle === '270deg' || angleLowerCase === 'to left') {\n start.x = 1;\n end.x = 0;\n } else {\n // other angle\n }\n\n return {start, end}\n}\n\nexport const parseProgressBarLinearGradient = (gradient: string) => {\n let angle = '', color1 = '', color2 = '';\n const linearGradientRegex = /linear-gradient\\(([^,]+),\\s*([^,]+),\\s*([^)]+)\\)/;\n const hasLinearGradient = linearGradientRegex.test(gradient);\n\n const matches = gradient?.match(linearGradientRegex);\n angle = matches?.[1] || '90deg';\n const {start, end} = getProgressBarGradientStartEnd(angle)\n color1 = matches?.[2] || ThemeVariables.INSTANCE.primaryColor;\n color2 = matches?.[3] || ThemeVariables.INSTANCE.primaryColor;\n\n return {hasLinearGradient, color1, color2, start, end};\n}\n\n\n\nexport const extractGradientDirection = (gradientString: string): string => {\n // Check if the gradient string contains a direction or angle\n const directionMatch = gradientString.match(/linear-gradient\\s*\\(\\s*((?:to\\s+(?:top|bottom|left|right)(?:\\s+(?:left|right))?|[0-9]+(?:deg|grad|rad|turn)))/i);\n \n // Return the direction if found, otherwise return default '90deg'\n return directionMatch ? directionMatch[1] : '90deg';\n};\n\nexport const getGradientStartEnd = (direction: string) => {\n const directionLowerCase = direction?.toLowerCase();\n \n // Default values (to right / 90deg)\n let start = { x: 0, y: 0 };\n let end = { x: 1, y: 0 };\n \n // Handle standard named directions and common angles first\n if (direction === '0deg' || directionLowerCase === 'to top') {\n start = { x: 0, y: 1 };\n end = { x: 0, y: 0 };\n } else if (direction === '90deg' || directionLowerCase === 'to right') {\n start = { x: 0, y: 0 };\n end = { x: 1, y: 0 };\n } else if (direction === '180deg' || directionLowerCase === 'to bottom') {\n start = { x: 0, y: 0 };\n end = { x: 0, y: 1 };\n } else if (direction === '270deg' || directionLowerCase === 'to left') {\n start = { x: 1, y: 0 };\n end = { x: 0, y: 0 };\n } else if (direction === '45deg' || directionLowerCase === 'to top right') {\n start = { x: 0, y: 1 };\n end = { x: 1, y: 0 };\n } else if (direction === '135deg' || directionLowerCase === 'to bottom right') {\n start = { x: 0, y: 0 };\n end = { x: 1, y: 1 };\n } else if (direction === '225deg' || directionLowerCase === 'to bottom left') {\n start = { x: 1, y: 0 };\n end = { x: 0, y: 1 };\n } else if (direction === '315deg' || directionLowerCase === 'to top left') {\n start = { x: 1, y: 1 };\n end = { x: 0, y: 0 };\n } else if (direction.match(/\\d+(?:deg|grad|rad|turn)$/)) {\n // Handle custom angles\n let angleInDegrees = 0;\n \n if (direction.endsWith('deg')) {\n angleInDegrees = parseFloat(direction);\n } else if (direction.endsWith('grad')) {\n // 1 grad = 0.9 degrees\n angleInDegrees = parseFloat(direction) * 0.9;\n } else if (direction.endsWith('rad')) {\n // 1 rad = 180/π degrees\n angleInDegrees = parseFloat(direction) * (180 / Math.PI);\n } else if (direction.endsWith('turn')) {\n // 1 turn = 360 degrees\n angleInDegrees = parseFloat(direction) * 360;\n }\n \n // Normalize angle to [0, 360)\n angleInDegrees = ((angleInDegrees % 360) + 360) % 360;\n \n // Convert angle to radians for calculations\n // Note: CSS angles follow the polar coordinate system where 0deg points up (north)\n // and increases clockwise. We adjust by adding 270 to match this convention.\n const adjustedAngle = ((angleInDegrees + 270) % 360) * (Math.PI / 180);\n \n // Calculate end point on a unit circle\n const endX = Math.cos(adjustedAngle);\n const endY = Math.sin(adjustedAngle);\n \n // Normalize to ensure the vector length is correct and fits in our coordinate system\n const vectorLength = Math.sqrt(endX * endX + endY * endY);\n \n // Set start at center point (0.5, 0.5) and calculate end point\n start = { \n x: 0.5 - (endX / vectorLength) * 0.5,\n y: 0.5 - (endY / vectorLength) * 0.5\n };\n \n end = { \n x: 0.5 + (endX / vectorLength) * 0.5, \n y: 0.5 + (endY / vectorLength) * 0.5 \n };\n }\n \n return { start, end };\n};\n\nexport const getGradientColorStops = (gradientString: string): number[] => {\n // Check if input is valid\n if (!gradientString) return [];\n \n // Extract the content inside linear-gradient()\n const match = gradientString.match(/linear-gradient\\s*\\((.*)\\)/);\n if (!match) return [];\n \n const content = match[1];\n \n // Remove angle/direction part if present\n const withoutDirection = content.replace(/^(to\\s+\\w+(?:\\s+\\w+)?|[0-9]+(?:deg|grad|rad|turn))\\s*,\\s*/, '');\n \n // Split by commas that are not inside parentheses\n let depth = 0;\n let currentSegment = '';\n const segments = [];\n \n for (let i = 0; i < withoutDirection.length; i++) {\n const char = withoutDirection[i];\n \n if (char === '(') depth++;\n else if (char === ')') depth--;\n else if (char === ',' && depth === 0) {\n segments.push(currentSegment.trim());\n currentSegment = '';\n continue;\n }\n \n currentSegment += char;\n }\n \n // Don't forget the last segment\n if (currentSegment.trim()) {\n segments.push(currentSegment.trim());\n }\n \n // Check if any segments have percentages\n const hasPercentages = segments.some(segment => {\n return segment.match(/^(?:rgba?\\([^)]+\\)|hsla?\\([^)]+\\)|#[0-9a-fA-F]{3,8}|\\w+)\\s+\\d+(?:\\.\\d+)?%$/);\n });\n \n // If no percentages are defined, return an empty array\n if (!hasPercentages) return [];\n \n // Parse each segment into color and position\n const colorStops = segments.map((segment, index) => {\n // Match color and optional percentage position\n const match = segment.match(/^(?:rgba?\\([^)]+\\)|hsla?\\([^)]+\\)|#[0-9a-fA-F]{3,8}|\\w+)(?:\\s+(\\d+(?:\\.\\d+)?)%)?$/);\n \n if (match && match[1]) {\n // If percentage is present, convert to decimal (0-1)\n const percentage = parseFloat(match[1]);\n return Math.max(0, Math.min(percentage / 100, 1)); // Clamp between 0 and 1\n } else {\n // If no percentage, calculate based on position\n return segments.length > 1 ? index / (segments.length - 1) : 0;\n }\n });\n \n //expo linear gradient location props ascendng order validation\n for (let i = 0; i < colorStops.length - 1; i++) {\n if (colorStops[i] < colorStops[i - 1]) {\n return []; // Invalid: not in ascending order return empty array\n }\n }\n return colorStops;\n};\n\nexport const getGradientColors = (gradientString: string): string[] => {\n // Check if input is valid\n if (!gradientString) return [];\n \n // Extract the content inside linear-gradient()\n const match = gradientString.match(/linear-gradient\\s*\\((.*)\\)/);\n if (!match) return [];\n \n const content = match[1];\n \n // Remove angle/direction part if present\n const withoutDirection = content.replace(/^(to\\s+\\w+(?:\\s+\\w+)?|[0-9]+(?:deg|grad|rad|turn))\\s*,\\s*/, '');\n \n // Split by commas that are not inside parentheses\n let depth = 0;\n let currentSegment = '';\n const segments = [];\n \n for (let i = 0; i < withoutDirection.length; i++) {\n const char = withoutDirection[i];\n \n if (char === '(') depth++;\n else if (char === ')') depth--;\n else if (char === ',' && depth === 0) {\n segments.push(currentSegment.trim());\n currentSegment = '';\n continue;\n }\n \n currentSegment += char;\n }\n \n // Don't forget the last segment\n if (currentSegment.trim()) {\n segments.push(currentSegment.trim());\n }\n \n // Extract just the color part from each segment\n return segments.map(segment => {\n const match = segment.match(/^((?:rgba?\\([^)]+\\)|hsla?\\([^)]+\\)|#[0-9a-fA-F]{3,8}|\\w+))/);\n return match ? match[1] : segment;\n });\n};\n\nexport const isNativeStyle = (key: string, context: 'property' | 'path' = 'property', traceEnabled: boolean = true): boolean => {\n const nativeStyleProperties = [\n 'shadowOffset', 'shadowRadius', 'shadowColor', 'shadowOpacity', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'borderRadius', 'borderTopColor', 'borderRightColor', \n 'borderBottomColor','borderLeftColor','backgroundColor', 'width', 'height', 'flex', 'flexDirection', 'textShadowOffset', \n 'transform', 'decomposedMatrix','transformMatrix', 'boxShadow', 'filter', 'fontVariant','margin', 'padding', \n 'backgroundPosition', 'borderColor', 'backgroundImage','backgroundSize', 'backgroundRepeat', 'backgroundResizeMode',\n 'aspectRatio', 'gap', 'columnGap', 'rowGap','content', 'matrix','strokeDasharray', 'strokeLinecap', 'strokeLinejoin'\n ];\n\n if (!traceEnabled) return true;\n\n if (context === 'path') {\n // For flattened paths like \"item.shadowOffset\"\n const parts = key.split('.');\n const property = parts[parts.length - 1];\n return nativeStyleProperties.includes(property);\n } else {\n // For direct property names like \"shadowOffset\"\n return nativeStyleProperties.includes(key);\n }\n};\n\nexport const parseLinearGradient = (gradient: string) => {\n // Check if this is a valid linear gradient\n const hasLinearGradient = /linear-gradient\\s*\\(/i.test(gradient);\n \n if (!hasLinearGradient || !gradient) return{\n hasLinearGradient: false,\n color1: '',\n color2: '',\n start: { x: 0, y: 0 },\n end: { x: 1, y: 0 },\n gradientColors: [],\n colorStops: []\n }\n \n // Extract direction/angle\n const direction = extractGradientDirection(gradient);\n \n // Get start and end points\n const { start, end } = getGradientStartEnd(direction);\n \n // Get colors\n let gradientColors = getGradientColors(gradient);\n \n // Get color stops in the format [[0, 0.5], [0.5, 1]]\n const colorStops = getGradientColorStops(gradient);\n \n // For backward compatibility, extract color1 and color2\n const color1 = gradientColors.length > 0 ? gradientColors[0] : ThemeVariables?.INSTANCE?.primaryColor || '#000000';\n const color2 = gradientColors.length > 1 ? gradientColors[gradientColors.length - 1] : color1;\n\n const defaultColor = ThemeVariables?.INSTANCE?.primaryColor\n\n gradientColors = gradientColors.length >= 2 ? gradientColors : [defaultColor,defaultColor]\n \n return { \n hasLinearGradient, \n color1, \n color2, \n start, \n end, \n gradientColors,\n colorStops,\n };\n};\n\nexport const validateInputOnDevice = (value: string, type: 'number' | 'currency') => {\n const isCurrencyField = type === 'currency';\n let isValidText = true;\n let validText = value;\n\n // * no alphabets except E, may contain E only once\n if (/[a-df-zA-DF-Z]/.test(value) || !/^[^eE]*[eE]?[^eE]*$/.test(value)) {\n isValidText = false;\n validText = validText.replace(/[a-df-zA-DF-Z]/g, '');\n validText = validText.replace(/([eE])\\1+/g, 'e');\n }\n\n // * currency only: check for negative number\n if (isCurrencyField && (Number(value) < 0 || /-/g.test(value))) {\n isValidText = false;\n validText = validText.replace(/-/g, '');\n }\n\n // * number only: not more than one minus and doesn't end with minus (-)\n if (!isCurrencyField && (Number(value.match(/-/g)?.length) > 1) || /\\w-/.test(value)) {\n isValidText = false;\n validText = validText.replace(/-/g, '');\n validText = validText.replace(/\\w-/g, '');\n }\n\n // * check for more than one decimal point\n if (/^\\d*\\.\\d*\\..*$/.test(value)) {\n isValidText = false;\n validText = validText.replace(/\\.(?=\\.*\\.)/g, '');\n }\n\n // * check for spaces and comma\n if (/[\\s,]/.test(value)) {\n isValidText = false;\n validText = validText.replace(/[\\s,]/, '');\n }\n\n return { isValidText, validText };\n}\n\nexport const isDateFormatAsPerPattern = (\n datePattern?: string,\n dateString?: string | Date\n) => {\n try {\n // * format dateString as per datePattern\n const date = moment(dateString, datePattern, true);\n\n // * check date is valid and matches the format\n return date.isValid() && typeof dateString === 'string' && dateString?.toUpperCase() === date.format(datePattern)?.toUpperCase();\n } catch (error) {\n // * if not able to parse date string\n return false;\n }\n};\n\nexport const getMimeType = (extensions?: string) => {\n if (!extensions) return '*/*';\n let hasInvalidExtension = false;\n let wildCards = ['image/*', 'audio/*', 'video/*'];\n let extensionList = extensions.split(' ');\n let mimeType = extensionList\n .map((extension: string) => {\n let type = mime.lookup(extension);\n let isWildCardExtension = wildCards.includes(extension);\n // * invalid extension, also not in wildcards\n hasInvalidExtension = !type && !isWildCardExtension;\n return type ? type : isWildCardExtension ? extension : '';\n })\n .filter((type) => type);\n\n if (hasInvalidExtension) return '*/*';\n return mimeType;\n};\n\nexport function getNumberOfEmptyObjects(noOfItems: number) {\n return Array.from({ length: noOfItems }, () => ({}));\n}\n\nexport const setPosition = (data: { [index: string]: {x: number, y: number} }): void => {\n Object.keys(data).forEach((key: string):void => {\n if(AppLayoutPosition?.data?.[AppLayoutPosition?.currentPage]){\n AppLayoutPosition.data[AppLayoutPosition.currentPage][key] = data[key]\n }\n })\n}\n\nexport const getPosition = (key: string): { x: number, y: number } => {\n return AppLayoutPosition.data[AppLayoutPosition.currentPage][key];\n}\n\nexport const setCurrentPageInAppLayout = (pageName: string): void => {\n AppLayoutPosition.currentPage = pageName;\n AppLayoutPosition.data[pageName] = {};\n}\n\nexport const replace = (target: string, value: any): string => {\n if (!target || !target.includes('${')) {\n return target;\n }\n\n return target.replace(/\\${([^}]+)}/g, (match, key) => {\n const val = value[key];\n return val !== undefined ? val : match;\n });\n}\n"],"mappings":"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","ignoreList":[]}
|