@tecsinapse/react-native-kit 2.0.2 → 2.0.4
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/dist/cjs/components/atoms/BottomNavigator/styled.js.map +1 -1
- package/dist/cjs/components/atoms/Header/styled.js.map +1 -1
- package/dist/cjs/components/atoms/Input/styled.js.map +1 -1
- package/dist/cjs/components/atoms/InputMask/styled.js.map +1 -1
- package/dist/cjs/components/atoms/Modal/ModalLifecycleHandler.js +1 -1
- package/dist/cjs/components/atoms/Modal/ModalLifecycleHandler.js.map +1 -1
- package/dist/cjs/components/atoms/Modal/ui/BaseModalView.js.map +1 -1
- package/dist/cjs/components/atoms/Modal/ui/styled.js.map +1 -1
- package/dist/cjs/components/atoms/Skeleton/styled.js.map +1 -1
- package/dist/cjs/components/atoms/Text/styled.js.map +1 -1
- package/dist/cjs/components/molecules/DatePicker/DatePicker.js +1 -1
- package/dist/cjs/components/molecules/DatePicker/styled.js.map +1 -1
- package/dist/cjs/components/molecules/DateTimePicker/DateTimePicker.js +1 -1
- package/dist/cjs/components/molecules/Grid/Grid.js.map +1 -1
- package/dist/cjs/components/molecules/Grid/Item/Item.js.map +1 -1
- package/dist/cjs/components/molecules/IconTextButton/styled.js.map +1 -1
- package/dist/cjs/components/molecules/LabeledSwitch/styled.js.map +1 -1
- package/dist/cjs/components/molecules/Select/Modal.js +0 -1
- package/dist/cjs/components/molecules/Select/Modal.js.map +1 -1
- package/dist/cjs/components/molecules/Select/Select.js +0 -1
- package/dist/cjs/components/molecules/Select/Select.js.map +1 -1
- package/dist/cjs/components/molecules/Select/styled.js.map +1 -1
- package/dist/cjs/components/molecules/Snackbar/styled.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/esm/components/atoms/BottomNavigator/styled.js.map +1 -1
- package/dist/esm/components/atoms/Header/styled.js.map +1 -1
- package/dist/esm/components/atoms/Input/styled.js.map +1 -1
- package/dist/esm/components/atoms/InputMask/styled.js.map +1 -1
- package/dist/esm/components/atoms/Modal/ModalLifecycleHandler.js +1 -1
- package/dist/esm/components/atoms/Modal/ModalLifecycleHandler.js.map +1 -1
- package/dist/esm/components/atoms/Modal/ui/BaseModalView.js.map +1 -1
- package/dist/esm/components/atoms/Modal/ui/styled.js.map +1 -1
- package/dist/esm/components/atoms/Skeleton/styled.js.map +1 -1
- package/dist/esm/components/atoms/Text/styled.js.map +1 -1
- package/dist/esm/components/molecules/DatePicker/DatePicker.js +1 -1
- package/dist/esm/components/molecules/DatePicker/styled.js.map +1 -1
- package/dist/esm/components/molecules/DateTimePicker/DateTimePicker.js +1 -1
- package/dist/esm/components/molecules/Grid/Grid.js.map +1 -1
- package/dist/esm/components/molecules/Grid/Item/Item.js.map +1 -1
- package/dist/esm/components/molecules/IconTextButton/styled.js.map +1 -1
- package/dist/esm/components/molecules/LabeledSwitch/styled.js.map +1 -1
- package/dist/esm/components/molecules/Select/Modal.js +0 -1
- package/dist/esm/components/molecules/Select/Modal.js.map +1 -1
- package/dist/esm/components/molecules/Select/Select.js +0 -1
- package/dist/esm/components/molecules/Select/Select.js.map +1 -1
- package/dist/esm/components/molecules/Select/styled.js.map +1 -1
- package/dist/esm/components/molecules/Snackbar/styled.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/BottomNavigator/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { PressableProps, ViewProps } from 'react-native';\n\nexport const StyledView = styled.View<ViewProps & Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n padding-bottom: ${({ theme }) => theme.spacing.kilo};\n background-color: ${({ theme }) => theme.miscellaneous.surfaceColor};\n`;\n\nexport const TabContainer = styled.Pressable<\n { selected: boolean } & PressableProps & Partial<StyleProps>\n>`\n flex: 1;\n margin-horizontal: ${({ theme }) => theme.spacing.mili};\n padding-top: ${({ theme }) => theme.spacing.deca};\n border-top-width: ${({ selected }) => (selected ? RFValueStr('2px') : 0)};\n border-color: ${({ theme }) => theme.color.primary.medium};\n align-items: center;\n justify-content: flex-end;\n`;\n\nexport const TabContent = styled.View<ViewProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n justify-content: center;\n align-items: center;\n min-height: ${RFValueStr('48px')};\n background-color: ${({ theme }) => theme.color.primary.xlight};\n border-radius: ${({ theme }) => theme.borderRadius['mili']};\n`;\n\nexport const CustomTabContent = styled.View<ViewProps & Partial<StyleProps>>``;\n"],"names":["RFValueStr"],"mappings":";;;;;AAIO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA,sBAAA,EAGT,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/BottomNavigator/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { PressableProps, ViewProps } from 'react-native';\n\nexport const StyledView = styled.View<ViewProps & Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n padding-bottom: ${({ theme }) => theme.spacing.kilo};\n background-color: ${({ theme }) => theme.miscellaneous.surfaceColor};\n`;\n\nexport const TabContainer = styled.Pressable<\n { selected: boolean } & PressableProps & Partial<StyleProps>\n>`\n flex: 1;\n margin-horizontal: ${({ theme }) => theme.spacing.mili};\n padding-top: ${({ theme }) => theme.spacing.deca};\n border-top-width: ${({ selected }) => (selected ? RFValueStr('2px') : 0)};\n border-color: ${({ theme }) => theme.color.primary.medium};\n align-items: center;\n justify-content: flex-end;\n`;\n\nexport const TabContent = styled.View<ViewProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n justify-content: center;\n align-items: center;\n min-height: ${RFValueStr('48px')};\n background-color: ${({ theme }) => theme.color.primary.xlight};\n border-radius: ${({ theme }) => theme.borderRadius['mili']};\n`;\n\nexport const CustomTabContent = styled.View<ViewProps & Partial<StyleProps>>``;\n"],"names":["RFValueStr"],"mappings":";;;;;AAIO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA,sBAAA,EAGT,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,kBAAA,EACrC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,oBAAA,EAC/B,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,cAAc,YAAY,CAAA;AAAA,EAAA;AAG9D,MAAM,eAAe,MAAO,CAAA,SAAA,CAAA;AAAA;AAAA,qBAAA,EAIZ,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,eAAA,EACvC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,oBAC5B,EAAA,CAAC,EAAE,QAAS,EAAA,KAAO,WAAWA,oBAAW,CAAA,KAAK,IAAI,CAAE,CAAA;AAAA,gBAAA,EACxD,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA;AAAA;AAAA,EAAA;AAKpD,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,cAIjB,EAAAA,oBAAA,CAAW,MAAM,CAAC,CAAA;AAAA,oBAAA,EACZ,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA,iBAAA,EAC5C,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,YAAA,CAAa,MAAM,CAAC,CAAA;AAAA,EAAA;AAGrD,MAAM,mBAAmB,MAAO,CAAA,IAAA,CAAA;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Header/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n RFValue,\n StyleProps,\n} from '@tecsinapse/react-core';\n\nexport const StyledView = styled.View<Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: ${({ theme }) => theme.spacing.deca};\n width: 100%;\n`;\n\nexport const FloatingButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: ${() => `${RFValue(49)}px`};\n`;\n\nexport const Dummy = styled(FloatingButton)`\n background-color: rgba(0, 0, 0, 0);\n`;\n"],"names":["Button","RFValue"],"mappings":";;;;;AAQO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAIpB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Header/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n RFValue,\n StyleProps,\n} from '@tecsinapse/react-core';\n\nexport const StyledView = styled.View<Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: ${({ theme }) => theme.spacing.deca};\n width: 100%;\n`;\n\nexport const FloatingButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: ${() => `${RFValue(49)}px`};\n`;\n\nexport const Dummy = styled(FloatingButton)`\n background-color: rgba(0, 0, 0, 0);\n`;\n"],"names":["Button","RFValue"],"mappings":";;;;;AAQO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAIpB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;AAAA,EAAA;AAIjC,MAAA,cAAA,GAAiB,OAAOA,gBAAM,CAAA,CAAA;AAAA;AAAA,UAAA,EAE/B,MAAM,CAAA,EAAGC,iBAAQ,CAAA,EAAE,CAAC,CAAI,EAAA,CAAA,CAAA;AAAA,EAAA;AAGvB,MAAA,KAAA,GAAQ,OAAO,cAAc,CAAA,CAAA;AAAA;AAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Input/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { InputElement, StyleProps } from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputNativeProps } from './Input';\n\nconst StyledNativeInputBase = styled(InputElement)<\n Partial<InputNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInput = styled(StyledNativeInputBase)<\n Font & Partial<InputNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":["InputElement","fontStyles"],"mappings":";;;;;;AAKA,MAAM,qBAAA,GAAwB,OAAOA,sBAAY,CAAA,CAAA;AAAA,UAAA,EAGrC,CAAC,EAAE,KAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Input/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { InputElement, StyleProps } from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputNativeProps } from './Input';\n\nconst StyledNativeInputBase = styled(InputElement)<\n Partial<InputNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInput = styled(StyledNativeInputBase)<\n Font & Partial<InputNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":["InputElement","fontStyles"],"mappings":";;;;;;AAKA,MAAM,qBAAA,GAAwB,OAAOA,sBAAY,CAAA,CAAA;AAAA,UAAA,EAGrC,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,UAAA,CAAW,GAAG,UAAU,CAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAKlD,MAAM,iBAAoB,GAAA,MAAA,CAAO,qBAAqB,CAAA,CAE3DC,mBAAU;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/InputMask/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n InputContainer,\n InputMaskElement,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputMaskNativeProps } from './InputMask';\n\nexport const StyledInputContainer = styled(InputContainer)<Partial<StyleProps>>`\n min-height: ${RFValueStr('50px')};\n`;\n\nconst StyledNativeInputMaskBase = styled(InputMaskElement)<\n Partial<InputMaskNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInputMask = styled(StyledNativeInputMaskBase)<\n Font & Partial<InputMaskNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":["InputContainer","RFValueStr","InputMaskElement","fontStyles"],"mappings":";;;;;;AAUa,MAAA,oBAAA,GAAuB,OAAOA,wBAAc,CAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/InputMask/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n InputContainer,\n InputMaskElement,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputMaskNativeProps } from './InputMask';\n\nexport const StyledInputContainer = styled(InputContainer)<Partial<StyleProps>>`\n min-height: ${RFValueStr('50px')};\n`;\n\nconst StyledNativeInputMaskBase = styled(InputMaskElement)<\n Partial<InputMaskNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInputMask = styled(StyledNativeInputMaskBase)<\n Font & Partial<InputMaskNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":["InputContainer","RFValueStr","InputMaskElement","fontStyles"],"mappings":";;;;;;AAUa,MAAA,oBAAA,GAAuB,OAAOA,wBAAc,CAAA,CAAA;AAAA,cACzC,EAAAC,oBAAA,CAAW,MAAM,CAAC,CAAA;AAAA,EAAA;AAGlC,MAAM,yBAAA,GAA4B,OAAOC,0BAAgB,CAAA,CAAA;AAAA,UAAA,EAG7C,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,UAAA,CAAW,GAAG,UAAU,CAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAKlD,MAAM,qBAAwB,GAAA,MAAA,CAAO,yBAAyB,CAAA,CAEnEC,mBAAU;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalLifecycleHandler.js","sources":["../../../../../src/components/atoms/Modal/ModalLifecycleHandler.ts"],"sourcesContent":["import React, { Dispatch, ReactElement } from 'react';\nimport { IBaseModal } from './ui/types';\n\n/**\n * It Represents a node (usually a modal component) in the modal's lifecycle handler.\n */\ninterface ModalNode {\n id: string;\n visible?: boolean;\n lastVisualization?: Date;\n modal: () => ReactElement<IBaseModal>;\n}\n\n/**\n * Manage all modal's lifecycle.\n */\nexport class ModalLifecycleHandler {\n nodeGroup: Map<string, ModalNode>;\n state:\n | [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n | undefined;\n\n constructor() {\n this.nodeGroup = new Map();\n this.state = undefined;\n }\n\n /**\n * Holds the ModalGroupManager state.\n *\n * @param state\n */\n public attach = (\n state: [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n ) => {\n this.state = state;\n };\n\n /**\n * Updates all the modal components.\n */\n public update = () => {\n requestAnimationFrame(() => {\n const nodes = Array.from(this.nodeGroup.values())\n .filter(node => node.visible || !!node.lastVisualization)\n .sort(\n (nodeA, nodeB) =>\n (nodeA.lastVisualization?.getTime() || 0) -\n (nodeB.lastVisualization?.getTime() || 0)\n )\n .map((node, index, filteredNodes) => {\n const modalElement = node.modal();\n const { props } = modalElement;\n return React.cloneElement(modalElement, {\n ...props,\n key: node.id,\n visible: node.visible,\n isLastShown: filteredNodes.length - 1 === index,\n close: () => this.close(node.id),\n onClose: () => {\n this.remove(node.id);\n props.onClose?.();\n },\n });\n });\n\n const [, updateState] = this.state || [];\n updateState?.(nodes);\n });\n };\n\n /**\n * Renders all selected modals.\n *\n * @returns\n */\n public render = (): ReactElement<IBaseModal>[] => {\n const [modals] = this.state || [];\n return modals || [];\n };\n\n /**\n * Tells to the lifecycle handler that a modal component needs to be handled.\n *\n * @param id\n * @param modal\n * @returns\n */\n public sync = (id: string, modal: () => ReactElement<IBaseModal>) => {\n if (this.nodeGroup.has(id)) {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, modal });\n return;\n }\n this.nodeGroup.set(id, { id, modal });\n };\n\n /**\n * Destroy a modal from the lifecycle handler.\n *\n * @param id\n */\n public destroy = (id: string) => {\n this.nodeGroup.delete(id);\n this.update();\n };\n\n /**\n * Removes a modal from the rendering stack. It tells to the lifecycle handler that a modal\n * component is no longer used by the application.\n *\n * @param id\n */\n private remove = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, { ...savedNode, lastVisualization: undefined });\n this.update();\n };\n\n /**\n * Find a modal node by id.\n *\n * @param id\n */\n private findNode = (id: string) => {\n const node = this.nodeGroup.get(id);\n !node && console.warn(`No modal was found with the id \"${id}\"`);\n return node;\n };\n\n /**\n * Makes a modal appears.\n *\n * @param id\n */\n public show = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, {\n ...savedNode,\n visible: true,\n lastVisualization: new Date(),\n });\n this.update();\n };\n\n /**\n * Makes a modal disappears.\n *\n * @param id\n */\n public close = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, visible: false });\n this.update();\n };\n}\n\n/**\n * Creates a new ModalLifecycleHandlere instance.\n *\n * @returns\n */\nexport const createModalLifecycleHandler = () => {\n return new ModalLifecycleHandler();\n};\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ModalLifecycleHandler.js","sources":["../../../../../src/components/atoms/Modal/ModalLifecycleHandler.ts"],"sourcesContent":["import React, { Dispatch, ReactElement } from 'react';\nimport { IBaseModal } from './ui/types';\n\n/**\n * It Represents a node (usually a modal component) in the modal's lifecycle handler.\n */\ninterface ModalNode {\n id: string;\n visible?: boolean;\n lastVisualization?: Date;\n modal: () => ReactElement<IBaseModal>;\n}\n\n/**\n * Manage all modal's lifecycle.\n */\nexport class ModalLifecycleHandler {\n nodeGroup: Map<string, ModalNode>;\n state:\n | [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n | undefined;\n\n constructor() {\n this.nodeGroup = new Map();\n this.state = undefined;\n }\n\n /**\n * Holds the ModalGroupManager state.\n *\n * @param state\n */\n public attach = (\n state: [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n ) => {\n this.state = state;\n };\n\n /**\n * Updates all the modal components.\n */\n public update = () => {\n requestAnimationFrame(() => {\n const nodes = Array.from(this.nodeGroup.values())\n .filter(node => node.visible || !!node.lastVisualization)\n .sort(\n (nodeA, nodeB) =>\n (nodeA.lastVisualization?.getTime() || 0) -\n (nodeB.lastVisualization?.getTime() || 0)\n )\n .map((node, index, filteredNodes) => {\n const modalElement = node.modal();\n const { props } = modalElement;\n return React.cloneElement(modalElement, {\n ...props,\n key: node.id,\n visible: node.visible,\n isLastShown: filteredNodes.length - 1 === index,\n close: () => this.close(node.id),\n onClose: () => {\n this.remove(node.id);\n props.onClose?.();\n },\n });\n });\n\n const [, updateState] = this.state || [];\n updateState?.(nodes);\n });\n };\n\n /**\n * Renders all selected modals.\n *\n * @returns\n */\n public render = (): ReactElement<IBaseModal>[] => {\n const [modals] = this.state || [];\n return modals || [];\n };\n\n /**\n * Tells to the lifecycle handler that a modal component needs to be handled.\n *\n * @param id\n * @param modal\n * @returns\n */\n public sync = (id: string, modal: () => ReactElement<IBaseModal>) => {\n if (this.nodeGroup.has(id)) {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, modal });\n return;\n }\n this.nodeGroup.set(id, { id, modal });\n };\n\n /**\n * Destroy a modal from the lifecycle handler.\n *\n * @param id\n */\n public destroy = (id: string) => {\n this.nodeGroup.delete(id);\n this.update();\n };\n\n /**\n * Removes a modal from the rendering stack. It tells to the lifecycle handler that a modal\n * component is no longer used by the application.\n *\n * @param id\n */\n private remove = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, { ...savedNode, lastVisualization: undefined });\n this.update();\n };\n\n /**\n * Find a modal node by id.\n *\n * @param id\n */\n private findNode = (id: string) => {\n const node = this.nodeGroup.get(id);\n !node && console.warn(`No modal was found with the id \"${id}\"`);\n return node;\n };\n\n /**\n * Makes a modal appears.\n *\n * @param id\n */\n public show = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, {\n ...savedNode,\n visible: true,\n lastVisualization: new Date(),\n });\n this.update();\n };\n\n /**\n * Makes a modal disappears.\n *\n * @param id\n */\n public close = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, visible: false });\n this.update();\n };\n}\n\n/**\n * Creates a new ModalLifecycleHandlere instance.\n *\n * @returns\n */\nexport const createModalLifecycleHandler = () => {\n return new ModalLifecycleHandler();\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseModalView.js","sources":["../../../../../../src/components/atoms/Modal/ui/BaseModalView.tsx"],"sourcesContent":["import { BoxContent } from '@tecsinapse/react-core';\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n Dimensions,\n Easing,\n Keyboard,\n LayoutChangeEvent,\n Pressable,\n StatusBar,\n} from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { BackDropView, CloseBar, StyledPressableBackDrop } from './styled';\nimport { IBaseModal } from './types';\n\nconst BACKDROP_ALPHA = 0.65;\nconst INTERPOLATION_STEPS = 10;\nconst INTERPOLATION_DURATION = 195; //ms\nconst OPACITY_DURATION = 25; //ms\n\nexport const ModalView: FC<IBaseModal> = ({\n children,\n visible,\n BoxComponent = BoxContent,\n frozen,\n isLastShown,\n showCloseBar = true,\n close,\n onClose,\n}) => {\n const { bottom } = useSafeAreaInsets();\n const [ready, setReady] = useState(false);\n const [keyboardOpened, setKeyboardOpened] = useState(0);\n const [boxHeight, setBoxHeight] = useState(0);\n const backgroundCarrier = useRef(new Animated.Value(0)).current;\n const translationCarrier = useRef(new Animated.Value(0)).current;\n const opacityCarrier = useRef(new Animated.Value(0)).current;\n const offset = isLastShown && keyboardOpened > 0 ? 0 : bottom;\n\n const getKeyboardHeight = (keyboard: number) => {\n if (keyboard === 0) return 0;\n\n const wHeight = Math.ceil(Dimensions.get('window').height);\n const sHeight = Math.ceil(Dimensions.get('screen').height);\n if (wHeight !== sHeight) {\n return keyboard + (sHeight - wHeight - (StatusBar.currentHeight || 0));\n }\n return keyboard;\n };\n\n const show = useCallback(() => {\n Animated.sequence([\n Animated.timing(backgroundCarrier, {\n toValue: INTERPOLATION_STEPS,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 1,\n duration: OPACITY_DURATION,\n useNativeDriver: true,\n }),\n Animated.timing(translationCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n ]).start();\n }, []);\n\n const hide = useCallback(\n (to: number) => {\n Animated.sequence([\n Animated.parallel([\n Animated.timing(translationCarrier, {\n toValue: to,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n useNativeDriver: true,\n }),\n ]),\n Animated.timing(backgroundCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n ]).start(onClose);\n },\n [onClose]\n );\n\n const backgroundInterpolation = backgroundCarrier.interpolate({\n inputRange: [0, INTERPOLATION_STEPS],\n outputRange: ['rgba(0, 0, 0, 0)', `rgba(0, 0, 0, ${BACKDROP_ALPHA})`],\n });\n\n const handleBoxLayoutChanges = useCallback(\n (lce: LayoutChangeEvent) => {\n const boxHeightEvent = lce.nativeEvent.layout.height;\n setBoxHeight(boxHeightEvent);\n\n if (visible && !ready) {\n translationCarrier.setValue(boxHeightEvent);\n setReady(true);\n }\n },\n [show, ready, visible, setReady]\n );\n\n useEffect(() => {\n if (visible && ready) requestAnimationFrame(() => show());\n if (!visible && !ready) {\n Keyboard.dismiss();\n requestAnimationFrame(() => hide(boxHeight));\n }\n if (!visible && ready) setReady(false);\n }, [ready, visible]);\n\n useEffect(() => {\n const showEvent = Keyboard.addListener('keyboardDidShow', e =>\n setKeyboardOpened(e.endCoordinates.height)\n );\n const hideEvent = Keyboard.addListener('keyboardDidHide', () =>\n setKeyboardOpened(0)\n );\n return () => {\n showEvent.remove();\n hideEvent.remove();\n };\n }, []);\n\n return (\n <StyledPressableBackDrop onPress={!frozen ? close : undefined}>\n <BackDropView style={{ backgroundColor: backgroundInterpolation }}>\n <Animated.View\n style={{\n paddingBottom: isLastShown ? getKeyboardHeight(keyboardOpened) : 0,\n opacity: opacityCarrier,\n transform: [{ translateY: translationCarrier }],\n }}\n >\n <Pressable>\n <BoxComponent\n onLayout={handleBoxLayoutChanges}\n style={{ paddingBottom: offset }}\n variant=\"bottom\"\n >\n {showCloseBar && <CloseBar />}\n {children}\n </BoxComponent>\n </Pressable>\n </Animated.View>\n </BackDropView>\n </StyledPressableBackDrop>\n );\n};\n"],"names":["BoxContent","useSafeAreaInsets","useState","useRef","Animated","Dimensions","StatusBar","useCallback","Easing","useEffect","Keyboard","StyledPressableBackDrop","BackDropView","Pressable","CloseBar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseModalView.js","sources":["../../../../../../src/components/atoms/Modal/ui/BaseModalView.tsx"],"sourcesContent":["import { BoxContent } from '@tecsinapse/react-core';\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n Dimensions,\n Easing,\n Keyboard,\n LayoutChangeEvent,\n Pressable,\n StatusBar,\n} from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { BackDropView, CloseBar, StyledPressableBackDrop } from './styled';\nimport { IBaseModal } from './types';\n\nconst BACKDROP_ALPHA = 0.65;\nconst INTERPOLATION_STEPS = 10;\nconst INTERPOLATION_DURATION = 195; //ms\nconst OPACITY_DURATION = 25; //ms\n\nexport const ModalView: FC<IBaseModal> = ({\n children,\n visible,\n BoxComponent = BoxContent,\n frozen,\n isLastShown,\n showCloseBar = true,\n close,\n onClose,\n}) => {\n const { bottom } = useSafeAreaInsets();\n const [ready, setReady] = useState(false);\n const [keyboardOpened, setKeyboardOpened] = useState(0);\n const [boxHeight, setBoxHeight] = useState(0);\n const backgroundCarrier = useRef(new Animated.Value(0)).current;\n const translationCarrier = useRef(new Animated.Value(0)).current;\n const opacityCarrier = useRef(new Animated.Value(0)).current;\n const offset = isLastShown && keyboardOpened > 0 ? 0 : bottom;\n\n const getKeyboardHeight = (keyboard: number) => {\n if (keyboard === 0) return 0;\n\n const wHeight = Math.ceil(Dimensions.get('window').height);\n const sHeight = Math.ceil(Dimensions.get('screen').height);\n if (wHeight !== sHeight) {\n return keyboard + (sHeight - wHeight - (StatusBar.currentHeight || 0));\n }\n return keyboard;\n };\n\n const show = useCallback(() => {\n Animated.sequence([\n Animated.timing(backgroundCarrier, {\n toValue: INTERPOLATION_STEPS,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 1,\n duration: OPACITY_DURATION,\n useNativeDriver: true,\n }),\n Animated.timing(translationCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n ]).start();\n }, []);\n\n const hide = useCallback(\n (to: number) => {\n Animated.sequence([\n Animated.parallel([\n Animated.timing(translationCarrier, {\n toValue: to,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n useNativeDriver: true,\n }),\n ]),\n Animated.timing(backgroundCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n ]).start(onClose);\n },\n [onClose]\n );\n\n const backgroundInterpolation = backgroundCarrier.interpolate({\n inputRange: [0, INTERPOLATION_STEPS],\n outputRange: ['rgba(0, 0, 0, 0)', `rgba(0, 0, 0, ${BACKDROP_ALPHA})`],\n });\n\n const handleBoxLayoutChanges = useCallback(\n (lce: LayoutChangeEvent) => {\n const boxHeightEvent = lce.nativeEvent.layout.height;\n setBoxHeight(boxHeightEvent);\n\n if (visible && !ready) {\n translationCarrier.setValue(boxHeightEvent);\n setReady(true);\n }\n },\n [show, ready, visible, setReady]\n );\n\n useEffect(() => {\n if (visible && ready) requestAnimationFrame(() => show());\n if (!visible && !ready) {\n Keyboard.dismiss();\n requestAnimationFrame(() => hide(boxHeight));\n }\n if (!visible && ready) setReady(false);\n }, [ready, visible]);\n\n useEffect(() => {\n const showEvent = Keyboard.addListener('keyboardDidShow', e =>\n setKeyboardOpened(e.endCoordinates.height)\n );\n const hideEvent = Keyboard.addListener('keyboardDidHide', () =>\n setKeyboardOpened(0)\n );\n return () => {\n showEvent.remove();\n hideEvent.remove();\n };\n }, []);\n\n return (\n <StyledPressableBackDrop onPress={!frozen ? close : undefined}>\n <BackDropView style={{ backgroundColor: backgroundInterpolation }}>\n <Animated.View\n style={{\n paddingBottom: isLastShown ? getKeyboardHeight(keyboardOpened) : 0,\n opacity: opacityCarrier,\n transform: [{ translateY: translationCarrier }],\n }}\n >\n <Pressable>\n <BoxComponent\n onLayout={handleBoxLayoutChanges}\n style={{ paddingBottom: offset }}\n variant=\"bottom\"\n >\n {showCloseBar && <CloseBar />}\n {children}\n </BoxComponent>\n </Pressable>\n </Animated.View>\n </BackDropView>\n </StyledPressableBackDrop>\n );\n};\n"],"names":["BoxContent","useSafeAreaInsets","useState","useRef","Animated","Dimensions","StatusBar","useCallback","Easing","useEffect","Keyboard","StyledPressableBackDrop","BackDropView","Pressable","CloseBar"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../../src/components/atoms/Modal/ui/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { Animated } from 'react-native';\n\nexport const StyledPressableBackDrop = styled.Pressable<Partial<StyleProps>>`\n flex: 1;\n position: absolute;\n width: 100%;\n height: 100%;\n`;\n\nexport const BackDropView = styled(Animated.View)<Partial<StyleProps>>`\n justify-content: flex-end;\n flex: 1;\n`;\n\nexport const CloseBar = styled.View<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.light};\n border-radius: ${RFValueStr('10px')};\n margin: ${`${RFValueStr('5px')} auto`};\n width: ${RFValueStr('42px')};\n height: ${RFValueStr('5px')};\n`;\n"],"names":["Animated","RFValueStr"],"mappings":";;;;;;AAIO,MAAM,0BAA0B,MAAO,CAAA,SAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAOjC,MAAA,YAAA,GAAe,MAAO,CAAAA,oBAAA,CAAS,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAKzC,MAAM,WAAW,MAAO,CAAA,IAAA,CAAA;AAAA,oBAAA,EACT,CAAC,EAAE,KAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../../src/components/atoms/Modal/ui/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { Animated } from 'react-native';\n\nexport const StyledPressableBackDrop = styled.Pressable<Partial<StyleProps>>`\n flex: 1;\n position: absolute;\n width: 100%;\n height: 100%;\n`;\n\nexport const BackDropView = styled(Animated.View)<Partial<StyleProps>>`\n justify-content: flex-end;\n flex: 1;\n`;\n\nexport const CloseBar = styled.View<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.light};\n border-radius: ${RFValueStr('10px')};\n margin: ${`${RFValueStr('5px')} auto`};\n width: ${RFValueStr('42px')};\n height: ${RFValueStr('5px')};\n`;\n"],"names":["Animated","RFValueStr"],"mappings":";;;;;;AAIO,MAAM,0BAA0B,MAAO,CAAA,SAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAOjC,MAAA,YAAA,GAAe,MAAO,CAAAA,oBAAA,CAAS,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAKzC,MAAM,WAAW,MAAO,CAAA,IAAA,CAAA;AAAA,oBAAA,EACT,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,iBAC7C,EAAAC,oBAAA,CAAW,MAAM,CAAC,CAAA;AAAA,UAAA,EACzB,CAAG,EAAAA,oBAAA,CAAW,KAAK,CAAC,CAAO,KAAA,CAAA,CAAA;AAAA,SAC5B,EAAAA,oBAAA,CAAW,MAAM,CAAC,CAAA;AAAA,UACjB,EAAAA,oBAAA,CAAW,KAAK,CAAC,CAAA;AAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Skeleton/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { SkeletonProps } from './Skeleton';\n\nexport const Wrapper = styled.View<Partial<StyleProps & SkeletonProps>>`\n width: ${({ width }) => (width ? `${RFValueStr(`${width}px`)}` : '100%')};\n height: ${({ height }) => (height ? `${RFValueStr(`${height}px`)}` : 'auto')};\n border-radius: ${({ theme, radius }: StyleProps & Partial<SkeletonProps>) =>\n radius ? theme.borderRadius[radius] : 0};\n overflow: hidden;\n position: relative;\n`;\n"],"names":["RFValueStr"],"mappings":";;;;;AAIO,MAAM,UAAU,MAAO,CAAA,IAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Skeleton/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { SkeletonProps } from './Skeleton';\n\nexport const Wrapper = styled.View<Partial<StyleProps & SkeletonProps>>`\n width: ${({ width }) => (width ? `${RFValueStr(`${width}px`)}` : '100%')};\n height: ${({ height }) => (height ? `${RFValueStr(`${height}px`)}` : 'auto')};\n border-radius: ${({ theme, radius }: StyleProps & Partial<SkeletonProps>) =>\n radius ? theme.borderRadius[radius] : 0};\n overflow: hidden;\n position: relative;\n`;\n"],"names":["RFValueStr"],"mappings":";;;;;AAIO,MAAM,UAAU,MAAO,CAAA,IAAA,CAAA;AAAA,SAAA,EACnB,CAAC,EAAE,KAAM,EAAA,KAAO,KAAQ,GAAA,CAAA,EAAGA,oBAAW,CAAA,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAA,CAAA,GAAK,MAAO,CAAA;AAAA,UAAA,EAC9D,CAAC,EAAE,MAAO,EAAA,KAAO,MAAS,GAAA,CAAA,EAAGA,oBAAW,CAAA,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,CAAC,CAAA,CAAA,GAAK,MAAO,CAAA;AAAA,iBAC3D,EAAA,CAAC,EAAE,KAAA,EAAO,MAAO,EAAA,KAChC,SAAS,KAAM,CAAA,YAAA,CAAa,MAAM,CAAA,GAAI,CAAC,CAAA;AAAA;AAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Text/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n FontStackType,\n FontWeightType,\n StyleProps,\n Text,\n} from '@tecsinapse/react-core';\nimport { Platform } from 'react-native';\nimport { TextNativeProps } from './Text';\n\nexport interface Font {\n fontStack?: FontStackType;\n fontWeight?: FontWeightType;\n}\n\nexport const fontStyles = ({\n theme,\n fontStack = 'default',\n fontWeight = 'regular',\n}: Partial<Font & Partial<StyleProps>>) => {\n const fontFamily = theme?.font.stack[fontStack] || '';\n const fontStyle = theme?.font.files[fontWeight];\n return css`\n ${Platform.OS === 'android' ? 'font-weight: normal;' : undefined}\n font-family: ${fontStyle?.replace('{0}', fontFamily)};\n `;\n};\n\nexport const StyledNativeText = styled(Text)<\n Font & Partial<TextNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":["css","Platform","Text"],"mappings":";;;;;;AAeO,MAAM,aAAa,CAAC;AAAA,EACzB,KAAA;AAAA,EACA,SAAY,GAAA,SAAA;AAAA,EACZ,UAAa,GAAA,SAAA;AACf,CAA2C,KAAA;AACzC,EAAA,MAAM,UAAa,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,SAAS,CAAK,IAAA,EAAA,CAAA;AACnD,EAAA,MAAM,SAAY,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAC9C,EAAO,OAAAA,UAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Text/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n FontStackType,\n FontWeightType,\n StyleProps,\n Text,\n} from '@tecsinapse/react-core';\nimport { Platform } from 'react-native';\nimport { TextNativeProps } from './Text';\n\nexport interface Font {\n fontStack?: FontStackType;\n fontWeight?: FontWeightType;\n}\n\nexport const fontStyles = ({\n theme,\n fontStack = 'default',\n fontWeight = 'regular',\n}: Partial<Font & Partial<StyleProps>>) => {\n const fontFamily = theme?.font.stack[fontStack] || '';\n const fontStyle = theme?.font.files[fontWeight];\n return css`\n ${Platform.OS === 'android' ? 'font-weight: normal;' : undefined}\n font-family: ${fontStyle?.replace('{0}', fontFamily)};\n `;\n};\n\nexport const StyledNativeText = styled(Text)<\n Font & Partial<TextNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":["css","Platform","Text"],"mappings":";;;;;;AAeO,MAAM,aAAa,CAAC;AAAA,EACzB,KAAA;AAAA,EACA,SAAY,GAAA,SAAA;AAAA,EACZ,UAAa,GAAA,SAAA;AACf,CAA2C,KAAA;AACzC,EAAA,MAAM,UAAa,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,SAAS,CAAK,IAAA,EAAA,CAAA;AACnD,EAAA,MAAM,SAAY,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAC9C,EAAO,OAAAA,UAAA,CAAA;AAAA,IAAA,EACHC,oBAAS,CAAA,EAAA,KAAO,SAAY,GAAA,sBAAA,GAAyB,KAAS,CAAA,CAAA;AAAA,iBAAA,EACjD,SAAW,EAAA,OAAA,CAAQ,KAAO,EAAA,UAAU,CAAC,CAAA;AAAA,EAAA,CAAA,CAAA;AAExD,EAAA;AAEO,MAAM,gBAAmB,GAAA,MAAA,CAAOC,cAAI,CAAA,CAEzC,UAAU;;;;;"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var reactCore = require('@tecsinapse/react-core');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var date = require('../../../utils/date.js');
|
|
6
|
-
require('
|
|
6
|
+
require('react-native');
|
|
7
7
|
var BaseModalView = require('../../atoms/Modal/ui/BaseModalView.js');
|
|
8
8
|
require('uuid');
|
|
9
9
|
var useLazyModalManager = require('../../atoms/Modal/useLazyModalManager.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/DatePicker/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { BoxContent, StyleProps } from '@tecsinapse/react-core';\n\nexport const CalendarBoxContent = styled(BoxContent)<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.xlight};\n`;\n"],"names":["BoxContent"],"mappings":";;;;;AAGa,MAAA,kBAAA,GAAqB,OAAOA,oBAAU,CAAA,CAAA;AAAA,oBAAA,EAC7B,CAAC,EAAE,KAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/DatePicker/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { BoxContent, StyleProps } from '@tecsinapse/react-core';\n\nexport const CalendarBoxContent = styled(BoxContent)<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.xlight};\n`;\n"],"names":["BoxContent"],"mappings":";;;;;AAGa,MAAA,kBAAA,GAAqB,OAAOA,oBAAU,CAAA,CAAA;AAAA,oBAAA,EAC7B,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AAAA;;;;"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var reactCore = require('@tecsinapse/react-core');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var date = require('../../../utils/date.js');
|
|
6
|
-
require('
|
|
6
|
+
require('react-native');
|
|
7
7
|
var BaseModalView = require('../../atoms/Modal/ui/BaseModalView.js');
|
|
8
8
|
require('uuid');
|
|
9
9
|
var useLazyModalManager = require('../../atoms/Modal/useLazyModalManager.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sources":["../../../../../src/components/molecules/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { GridItem } from './Item';\nimport { IGrid } from '@tecsinapse/react-core';\n\nexport type IGridNative = IGrid & ViewProps;\n\nconst Grid = ({\n children,\n columns = 12,\n layout,\n style,\n spacing,\n ...rest\n}: IGridNative): JSX.Element => {\n if (layout) {\n const flatLayout = layout.flat();\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => (\n <GridItem\n key={`child-${index}`}\n columns={columns}\n span={flatLayout[index]}\n spacing={spacing}\n >\n {child}\n </GridItem>\n ))}\n </View>\n );\n }\n\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => {\n return React.cloneElement(child, {\n ...child?.props,\n columns,\n spacing: child?.props.spacing ?? spacing,\n key: `child-${index}`,\n });\n })}\n </View>\n );\n};\n\nexport default Grid;\n"],"names":["View","GridItem"],"mappings":";;;;;;AAOA,MAAM,OAAO,CAAC;AAAA,EACZ,QAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAgC,KAAA;AAC9B,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,UAAA,GAAa,OAAO,IAAK,EAAA,CAAA;AAC/B,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAACA,gBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,YACE,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA,KAAA;AAAA,YACf,QAAU,EAAA,MAAA;AAAA,WACZ;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,OAAA;AAAA,MAEH,MAAM,QAAS,CAAA,GAAA,CAAI,QAAU,EAAA,CAAC,OAAO,KACpC,qBAAA,KAAA,CAAA,aAAA;AAAA,QAACC,IAAA;AAAA,QAAA;AAAA,UACC,
|
|
1
|
+
{"version":3,"file":"Grid.js","sources":["../../../../../src/components/molecules/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { GridItem } from './Item';\nimport { IGrid } from '@tecsinapse/react-core';\n\nexport type IGridNative = IGrid & ViewProps;\n\nconst Grid = ({\n children,\n columns = 12,\n layout,\n style,\n spacing,\n ...rest\n}: IGridNative): JSX.Element => {\n if (layout) {\n const flatLayout = layout.flat();\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => (\n <GridItem\n key={`child-${index}`}\n columns={columns}\n span={flatLayout[index]}\n spacing={spacing}\n >\n {child}\n </GridItem>\n ))}\n </View>\n );\n }\n\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => {\n return React.cloneElement(child, {\n ...child?.props,\n columns,\n spacing: child?.props.spacing ?? spacing,\n key: `child-${index}`,\n });\n })}\n </View>\n );\n};\n\nexport default Grid;\n"],"names":["View","GridItem"],"mappings":";;;;;;AAOA,MAAM,OAAO,CAAC;AAAA,EACZ,QAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAgC,KAAA;AAC9B,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,UAAA,GAAa,OAAO,IAAK,EAAA,CAAA;AAC/B,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAACA,gBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,YACE,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA,KAAA;AAAA,YACf,QAAU,EAAA,MAAA;AAAA,WACZ;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,OAAA;AAAA,MAEH,MAAM,QAAS,CAAA,GAAA,CAAI,QAAU,EAAA,CAAC,OAAO,KACpC,qBAAA,KAAA,CAAA,aAAA;AAAA,QAACC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,SAAS,KAAK,CAAA,CAAA;AAAA,UACnB,OAAA;AAAA,UACA,IAAA,EAAM,WAAW,KAAK,CAAA;AAAA,UACtB,OAAA;AAAA,SAAA;AAAA,QAEC,KAAA;AAAA,OAEJ,CAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAACD,gBAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA;AAAA,QACL,KAAA;AAAA,QACA;AAAA,UACE,OAAS,EAAA,MAAA;AAAA,UACT,aAAe,EAAA,KAAA;AAAA,UACf,QAAU,EAAA,MAAA;AAAA,SACZ;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,KAAA;AAAA,IAEH,MAAM,QAAS,CAAA,GAAA,CAAI,QAAU,EAAA,CAAC,OAAO,KAAU,KAAA;AAC9C,MAAO,OAAA,KAAA,CAAM,aAAa,KAAO,EAAA;AAAA,QAC/B,GAAG,KAAO,EAAA,KAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA,EAAS,KAAO,EAAA,KAAA,CAAM,OAAW,IAAA,OAAA;AAAA,QACjC,GAAA,EAAK,SAAS,KAAK,CAAA,CAAA;AAAA,OACpB,CAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.js","sources":["../../../../../../src/components/molecules/Grid/Item/Item.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport {\n IGridItem,\n useTheme,\n getGridItemColumSpan,\n getGridItemPadding,\n} from '@tecsinapse/react-core';\n\nexport type IGridItemNative = IGridItem &\n ViewProps & {\n /** Only specify this property if the GridItem will be 'dynamic', adjusting itself to content. Use this with `wrapper` for better result. */\n flexBasis?: string | 'auto';\n };\n\nconst GridItem = ({\n children,\n span,\n columns = 12,\n loadingComponent,\n loading = false,\n spacing: _spacing,\n wrapper = false,\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n flexBasis,\n style,\n ...rest\n}: IGridItemNative): JSX.Element => {\n const { spacing } = useTheme();\n if (!React.Children.only(children)) {\n throw new Error('The number of children in GridItem should be one');\n }\n if (loadingComponent && loading) {\n return loadingComponent;\n }\n\n const _style = {\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n boxSizing: 'border-box',\n flexBasis: flexBasis ?? `${getGridItemColumSpan(columns, span)}%`,\n paddingTop: getGridItemPadding('top', _spacing, spacing),\n paddingBottom: getGridItemPadding('bottom', _spacing, spacing),\n paddingRight: getGridItemPadding('right', _spacing, spacing),\n paddingLeft: getGridItemPadding('left', _spacing, spacing),\n };\n\n const clone = React.cloneElement(children, {\n ...children?.props,\n style: wrapper\n ? children?.props.style\n : { ..._style, ...children?.props.style },\n });\n\n return wrapper ? (\n <View {...rest} style={[style, _style]}>\n {clone}\n </View>\n ) : (\n clone\n );\n};\n\nexport default GridItem;\n"],"names":["useTheme","getGridItemColumSpan","getGridItemPadding","View"],"mappings":";;;;;;AAeA,MAAM,WAAW,CAAC;AAAA,EAChB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,gBAAA;AAAA,EACA,OAAU,GAAA,KAAA;AAAA,EACV,OAAS,EAAA,QAAA;AAAA,EACT,OAAU,GAAA,KAAA;AAAA,EACV,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAoC,KAAA;AAClC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAIA,kBAAS,EAAA,CAAA;AAC7B,EAAA,IAAI,CAAC,KAAA,CAAM,QAAS,CAAA,IAAA,CAAK,QAAQ,CAAG,EAAA;AAClC,IAAM,MAAA,IAAI,MAAM,kDAAkD,CAAA,CAAA;AAAA,GACpE;AACA,EAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,IAAO,OAAA,gBAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAW,EAAA,YAAA;AAAA,IACX,
|
|
1
|
+
{"version":3,"file":"Item.js","sources":["../../../../../../src/components/molecules/Grid/Item/Item.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport {\n IGridItem,\n useTheme,\n getGridItemColumSpan,\n getGridItemPadding,\n} from '@tecsinapse/react-core';\n\nexport type IGridItemNative = IGridItem &\n ViewProps & {\n /** Only specify this property if the GridItem will be 'dynamic', adjusting itself to content. Use this with `wrapper` for better result. */\n flexBasis?: string | 'auto';\n };\n\nconst GridItem = ({\n children,\n span,\n columns = 12,\n loadingComponent,\n loading = false,\n spacing: _spacing,\n wrapper = false,\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n flexBasis,\n style,\n ...rest\n}: IGridItemNative): JSX.Element => {\n const { spacing } = useTheme();\n if (!React.Children.only(children)) {\n throw new Error('The number of children in GridItem should be one');\n }\n if (loadingComponent && loading) {\n return loadingComponent;\n }\n\n const _style = {\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n boxSizing: 'border-box',\n flexBasis: flexBasis ?? `${getGridItemColumSpan(columns, span)}%`,\n paddingTop: getGridItemPadding('top', _spacing, spacing),\n paddingBottom: getGridItemPadding('bottom', _spacing, spacing),\n paddingRight: getGridItemPadding('right', _spacing, spacing),\n paddingLeft: getGridItemPadding('left', _spacing, spacing),\n };\n\n const clone = React.cloneElement(children, {\n ...children?.props,\n style: wrapper\n ? children?.props.style\n : { ..._style, ...children?.props.style },\n });\n\n return wrapper ? (\n <View {...rest} style={[style, _style]}>\n {clone}\n </View>\n ) : (\n clone\n );\n};\n\nexport default GridItem;\n"],"names":["useTheme","getGridItemColumSpan","getGridItemPadding","View"],"mappings":";;;;;;AAeA,MAAM,WAAW,CAAC;AAAA,EAChB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,gBAAA;AAAA,EACA,OAAU,GAAA,KAAA;AAAA,EACV,OAAS,EAAA,QAAA;AAAA,EACT,OAAU,GAAA,KAAA;AAAA,EACV,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAoC,KAAA;AAClC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAIA,kBAAS,EAAA,CAAA;AAC7B,EAAA,IAAI,CAAC,KAAA,CAAM,QAAS,CAAA,IAAA,CAAK,QAAQ,CAAG,EAAA;AAClC,IAAM,MAAA,IAAI,MAAM,kDAAkD,CAAA,CAAA;AAAA,GACpE;AACA,EAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,IAAO,OAAA,gBAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAW,EAAA,YAAA;AAAA,IACX,WAAW,SAAa,IAAA,CAAA,EAAGC,8BAAqB,CAAA,OAAA,EAAS,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,IAC9D,UAAY,EAAAC,4BAAA,CAAmB,KAAO,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,IACvD,aAAe,EAAAA,4BAAA,CAAmB,QAAU,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,IAC7D,YAAc,EAAAA,4BAAA,CAAmB,OAAS,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,IAC3D,WAAa,EAAAA,4BAAA,CAAmB,MAAQ,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,GAC3D,CAAA;AAEA,EAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,YAAA,CAAa,QAAU,EAAA;AAAA,IACzC,GAAG,QAAU,EAAA,KAAA;AAAA,IACb,KAAA,EAAO,OACH,GAAA,QAAA,EAAU,KAAM,CAAA,KAAA,GAChB,EAAE,GAAG,MAAQ,EAAA,GAAG,QAAU,EAAA,KAAA,CAAM,KAAM,EAAA;AAAA,GAC3C,CAAA,CAAA;AAED,EAAO,OAAA,OAAA,mBACJ,KAAA,CAAA,aAAA,CAAAC,gBAAA,EAAA,EAAM,GAAG,IAAA,EAAM,KAAO,EAAA,CAAC,KAAO,EAAA,MAAM,CAClC,EAAA,EAAA,KACH,CAEA,GAAA,KAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/IconTextButton/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { IconPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { Button } from '../../atoms/Button';\nimport { Text } from '../../atoms/Text';\n\nconst boxedStyle = ({ theme }: Partial<StyleProps>) => `\n padding: ${theme?.spacing.centi};\n aspect-ratio: 1;\n `;\n\nexport const StyledIconTextButton = styled(Button)<\n Partial<StyleProps> & {\n boxed: boolean;\n }\n>`\n ${({ boxed, theme }) => boxed && boxedStyle({ theme })};\n`;\n\nexport const StyledText = styled(Text)<\n Partial<StyleProps> & {\n iconPosition: IconPositionOptions;\n hasIcon?: boolean;\n }\n>`\n ${({ theme, iconPosition, hasIcon = false }) => {\n if (hasIcon && iconPosition === 'left')\n return css`\n margin-left: ${theme?.spacing.mili};\n `;\n else if (hasIcon && iconPosition === 'right')\n return css`\n margin-right: ${theme?.spacing.mili};\n `;\n }}\n`;\n"],"names":["Button","css"],"mappings":";;;;;;;;AAKA,MAAM,UAAa,GAAA,CAAC,EAAE,KAAA,EAAiC,KAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/IconTextButton/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { IconPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { Button } from '../../atoms/Button';\nimport { Text } from '../../atoms/Text';\n\nconst boxedStyle = ({ theme }: Partial<StyleProps>) => `\n padding: ${theme?.spacing.centi};\n aspect-ratio: 1;\n `;\n\nexport const StyledIconTextButton = styled(Button)<\n Partial<StyleProps> & {\n boxed: boolean;\n }\n>`\n ${({ boxed, theme }) => boxed && boxedStyle({ theme })};\n`;\n\nexport const StyledText = styled(Text)<\n Partial<StyleProps> & {\n iconPosition: IconPositionOptions;\n hasIcon?: boolean;\n }\n>`\n ${({ theme, iconPosition, hasIcon = false }) => {\n if (hasIcon && iconPosition === 'left')\n return css`\n margin-left: ${theme?.spacing.mili};\n `;\n else if (hasIcon && iconPosition === 'right')\n return css`\n margin-right: ${theme?.spacing.mili};\n `;\n }}\n`;\n"],"names":["Button","css"],"mappings":";;;;;;;;AAKA,MAAM,UAAa,GAAA,CAAC,EAAE,KAAA,EAAiC,KAAA,CAAA;AAAA,aACxC,EAAA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAItB,MAAA,oBAAA,GAAuB,OAAOA,aAAM,CAAA,CAAA;AAAA,EAK7C,EAAA,CAAC,EAAE,KAAA,EAAO,KAAM,EAAA,KAAM,SAAS,UAAW,CAAA,EAAE,KAAM,EAAC,CAAC,CAAA;AAAA,EAAA;AAG3C,MAAA,UAAA,GAAa,OAAO,IAAI,CAAA,CAAA;AAAA,EAAA,EAMjC,CAAC,EAAE,KAAA,EAAO,YAAc,EAAA,OAAA,GAAU,OAAY,KAAA;AAC9C,EAAA,IAAI,WAAW,YAAiB,KAAA,MAAA;AAC9B,IAAO,OAAAC,UAAA,CAAA;AAAA,qBACU,EAAA,KAAA,EAAO,QAAQ,IAAI,CAAA;AAAA,MAAA,CAAA,CAAA;AAAA,OAAA,IAE7B,WAAW,YAAiB,KAAA,OAAA;AACnC,IAAO,OAAAA,UAAA,CAAA;AAAA,sBACW,EAAA,KAAA,EAAO,QAAQ,IAAI,CAAA;AAAA,MAAA,CAAA,CAAA;AAEzC,CAAC,CAAA;AAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/LabeledSwitch/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { LabelPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { View } from 'react-native';\nimport { Text } from '../../atoms/Text';\n\nexport const StyledView = styled(View)`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const StyledLabel = styled(Text)<\n Partial<StyleProps> & {\n labelPosition: LabelPositionOptions;\n }\n>`\n ${({ theme, labelPosition }) => {\n if (labelPosition === 'right')\n return css`\n margin-left: ${theme?.spacing.centi};\n `;\n else if (labelPosition === 'left')\n return css`\n margin-right: ${theme?.spacing.centi};\n `;\n }}\n`;\n"],"names":["View","css"],"mappings":";;;;;;AAKa,MAAA,UAAA,GAAa,OAAOA,gBAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAMxB,MAAA,WAAA,GAAc,OAAO,IAAI,CAAA,CAAA;AAAA,EAAA,EAKlC,CAAC,EAAE,KAAO,EAAA,aAAA,EAAoB,KAAA;AAC9B,EAAA,IAAI,aAAkB,KAAA,OAAA;AACpB,IAAO,OAAAC,UAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/LabeledSwitch/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { LabelPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { View } from 'react-native';\nimport { Text } from '../../atoms/Text';\n\nexport const StyledView = styled(View)`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const StyledLabel = styled(Text)<\n Partial<StyleProps> & {\n labelPosition: LabelPositionOptions;\n }\n>`\n ${({ theme, labelPosition }) => {\n if (labelPosition === 'right')\n return css`\n margin-left: ${theme?.spacing.centi};\n `;\n else if (labelPosition === 'left')\n return css`\n margin-right: ${theme?.spacing.centi};\n `;\n }}\n`;\n"],"names":["View","css"],"mappings":";;;;;;AAKa,MAAA,UAAA,GAAa,OAAOA,gBAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAMxB,MAAA,WAAA,GAAc,OAAO,IAAI,CAAA,CAAA;AAAA,EAAA,EAKlC,CAAC,EAAE,KAAO,EAAA,aAAA,EAAoB,KAAA;AAC9B,EAAA,IAAI,aAAkB,KAAA,OAAA;AACpB,IAAO,OAAAC,UAAA,CAAA;AAAA,qBACU,EAAA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,MAAA,CAAA,CAAA;AAAA,OAAA,IAE9B,aAAkB,KAAA,MAAA;AACzB,IAAO,OAAAA,UAAA,CAAA;AAAA,sBACW,EAAA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,MAAA,CAAA,CAAA;AAE1C,CAAC,CAAA;AAAA;;;;;"}
|
|
@@ -7,7 +7,6 @@ var Button = require('../../atoms/Button/Button.js');
|
|
|
7
7
|
var Text = require('../../atoms/Text/Text.js');
|
|
8
8
|
var Header = require('../../atoms/Header/Header.js');
|
|
9
9
|
var Input = require('../../atoms/Input/Input.js');
|
|
10
|
-
require('../../atoms/Modal/ModalGroupManager.js');
|
|
11
10
|
var BaseModalView = require('../../atoms/Modal/ui/BaseModalView.js');
|
|
12
11
|
require('uuid');
|
|
13
12
|
var styled = require('./styled.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["React","useDebouncedState","getStyledModal","getStatusBarHeight","options","value","selectedValues","FlatList","TextTitleModal","RFValue","ModalView","SearchBarContainer","SelectIcon","FetchIndicator","ModalFooter","Button","ListItem","View","Checkbox","StyledTextItemSelect","RadioButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,YAAY,CAAwC;AAAA,EACxD,OAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,yBAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG,MAAA;AACL,CAA8E,KAAA;AAC5E,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,IAAIA,gBAAM,CAAA,QAAA,CAAiB,EAAE,CAAA,CAAA;AACrE,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAAC,2BAAA,CAA0B,IAAI,QAAQ,CAAA,CAAA;AACxE,EAAA,MAAM,iBAAiBD,gBAAM,CAAA,OAAA;AAAA,IAC3B,MAAME,qBAAA,CAAeC,4BAAmB,CAAA,IAAI,CAAC,CAAA;AAAA,IAC7C,EAAC;AAAA,GACH,CAAA;AACA,EAAM,MAAA,YAAA,GAAe,eAAe,IAAS,KAAA,QAAA,CAAA;AAI7C,EAAAH,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,iBAAA;AAAA,MACG,QAAS,IAAS,KAAA,OAAA,GAAU,QAAQ,CAAC,KAAK,IAAK,EAAC;AAAA,KACnD,CAAA;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,OAAA,EAAS,iBAAiB,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,UAAUA,gBAAM,CAAA,WAAA;AAAA,IACpB,CAACI,QAAoB,KAAA;AACnB,MAAA,OAAOA,QAAS,EAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAW,MAAA;AAAA,QACtC,GAAG,MAAA;AAAA,QACH,QACE,EAAA,IAAA,KAAS,OACL,GAAA,CAAC,CAAC,cAAe,CAAA,IAAA;AAAA,UACf,CAAAC,WACE,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAK,IAAA,YAAA,CAAaA,QAAO,KAAK,CAAA;AAAA,SAC5D,GACA,YAAc,CAAA,cAAA,CAAe,CAAC,CAAA,IAAK,EAAC,EAAY,KAAK,CAAA,IACrD,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,OAChC,CAAA,CAAA,CAAA;AAAA,KACJ;AAAA,IACA,CAAC,YAAc,EAAA,cAAA,EAAgB,IAAI,CAAA;AAAA,GACrC,CAAA;AAEA,EAAA,MAAM,OAAOL,gBAAM,CAAA,OAAA;AAAA,IACjB,MAAO,OAAO,OAAA,KAAY,aAAa,OAAQ,CAAA,OAAO,IAAI,EAAC;AAAA,IAC3D,CAAC,SAAS,OAAO,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,kBAAkBA,gBAAM,CAAA,WAAA;AAAA,IAC5B,CAAC,MAAiB,KAAA;AAChB,MAAA,iBAAA,CAAkB,CAAAM,eAAkB,KAAA;AAClC,QAAA,IAAI,SAAS,OAAS,EAAA;AACpB,UAAA,MAAM,SAAiB,EAAC,CAAA;AACxB,UAAA,IAAI,KAAQ,GAAA,KAAA,CAAA;AACZ,UAAA,KAAA,MAAWD,UAASC,eAAgB,EAAA;AAClC,YAAA,IAAI,YAAaD,CAAAA,MAAK,CAAK,IAAA,YAAA,CAAa,MAAM,CAAA;AAAG,cAAA,MAAA,CAAO,KAAKA,MAAK,CAAA,CAAA;AAAA;AAC7D,cAAQ,KAAA,GAAA,IAAA,CAAA;AAAA,WACf;AACA,UAAA,IAAI,CAAC,KAAA;AAAO,YAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAC9B,UAAO,OAAA,MAAA,CAAA;AAAA,SACT;AACA,QAAA,OAAO,YAAcC,CAAAA,eAAAA,CAAe,CAAC,CAAA,IAAK,EAAW,CACnD,KAAA,YAAA,CAAa,MAAM,CAAA,GACjB,EAAC,GACD,CAAC,MAAM,CAAA,CAAA;AAAA,OACZ,CAAA,CAAA;AAAA,KACH;AAAA,IACA,CAAC,cAAA,EAAgB,iBAAmB,EAAA,YAAA,EAAc,IAAI,CAAA;AAAA,GACxD,CAAA;AAEA,EAAAN,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,gBAAgB,cAAe,CAAA,CAAC,KAAK,cAAe,CAAA,CAAC,MAAM,KAAO,EAAA;AACpE,MAAc,aAAA,EAAA,CAAA;AAAA,KAChB;AAAA,KACC,CAAC,cAAA,CAAe,CAAC,CAAG,EAAA,KAAA,EAAO,WAAW,CAAC,CAAA,CAAA;AAE1C,EAAM,MAAA,aAAA,GAAgBA,gBAAM,CAAA,WAAA,CAAY,MAAM;AAG5C,IAAA,QAAA;AAAA,MACG,IAAS,KAAA,QAAA,GAAW,cAAe,CAAA,CAAC,CAAI,GAAA,cAAA;AAAA,KAC3C,CAAA;AACA,IAAQ,KAAA,IAAA,CAAA;AAAA,GACV,EAAG,CAAC,cAAc,CAAC,CAAA,CAAA;AAEnB,EAAA,MAAM,gBAAgBA,gBAAM,CAAA,WAAA;AAAA,IAC1B,CAAC,EAAE,IAAA,EACD,qBAAAA,gBAAA,CAAA,aAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,IAAA;AAAA,QACA,eAAA;AAAA,QACA,cAAA;AAAA,OAAA;AAAA,KACF;AAAA,IAEF,EAAC;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,aAAa,IAAK,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,CAAE,CAAA,MAAA,CAAA;AACtD,EAAA,MAAM,oBAAoB,IAAK,CAAA,MAAA,CAAA;AAE/B,EAAA,MAAM,mBAAmBA,gBAAM,CAAA,OAAA;AAAA,IAC7B,sBACEA,gBAAA,CAAA,aAAA;AAAA,MAACO,oBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,YAAA;AAAA,QACA,gBAAkB,EAAA,GAAA;AAAA,QAClB,UAAY,EAAA,aAAA;AAAA,OAAA;AAAA,KACd;AAAA,IAEF,CAAC,cAAgB,EAAA,UAAA,EAAY,iBAAiB,CAAA;AAAA,GAChD,CAAA;AAEA,EAAA,MAAM,iBAAiB,gBACrB,mBAAAP,gBAAA,CAAA,aAAA;AAAA,IAACQ,qBAAA;AAAA,IAAA;AAAA,MACC,UAAW,EAAA,IAAA;AAAA,MACX,UAAW,EAAA,MAAA;AAAA,MACX,aAAe,EAAA,CAAA;AAAA,MACf,KAAO,EAAA,EAAE,QAAU,EAAAC,iBAAA,CAAQ,GAAG,CAAE,EAAA;AAAA,KAAA;AAAA,IAE/B,gBAAA;AAAA,GAED,GAAA,IAAA,CAAA;AAEJ,EAAM,MAAA,aAAA,GAAgB,4BAClB,yBACA,GAAA,cAAA,CAAA;AAEJ,EAAA,sDACGC,uBAAW,EAAA,EAAA,GAAG,QAAQ,YAAc,EAAA,cAAA,EAAgB,cAAc,KACjE,EAAA,kBAAAV,gBAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,KAAA;AAAA,QACT,IAAM,EAAA;AAAA,UACJ,IAAM,EAAA,OAAA;AAAA,UACN,IAAM,EAAA,oBAAA;AAAA,UACN,SAAW,EAAA,OAAA;AAAA,SACb;AAAA,OACF;AAAA,KAAA;AAAA,IAEC,aAAA;AAAA,GAGF,EAAA,CAAC,aACA,oBAAAA,gBAAA,CAAA,aAAA,CAACW,yBACC,EAAA,IAAA,kBAAAX,gBAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA,oBAAA;AAAA,MACb,KAAO,EAAA,SAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,aAAA,iDACGY,iBAAW,EAAA,EAAA,IAAA,EAAK,UAAS,IAAK,EAAA,SAAA,EAAU,MAAK,OAAQ,EAAA,CAAA;AAAA,KAAA;AAAA,GAG5D,CAGD,EAAA,OAAA,oBACEZ,gBAAA,CAAA,aAAA,CAAAa,qBAAA,EAAA,EAAe,WAAW,IAAM,EAAA,KAAA,EAAO,MAAQ,EAAA,IAAA,EAAM,SAAS,CAGhE,EAAA,gBAAA,EAEA,CAAC,YAAA,mDACCC,kBACC,EAAA,IAAA,kBAAAd,gBAAA,CAAA,aAAA;AAAA,IAACe,aAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,QAAA;AAAA,MACT,KAAO,EAAA,SAAA;AAAA,MACP,OAAS,EAAA,aAAA;AAAA,MACT,QAAU,EAAA,OAAA;AAAA,KAAA;AAAA,mDAET,IAAK,EAAA,EAAA,SAAA,EAAW,OAAS,EAAA,UAAA,EAAW,UAClC,iBACH,CAAA;AAAA,GAEJ,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AASA,MAAM,iBAAiB,CAAK;AAAA,EAC1B,eAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AACF,CAA+B,KAAA;AAC7B,EAAO,OAAAf,gBAAA,CAAM,QAAQ,MAAM;AACzB,IAAM,MAAA,KAAA,GAAQ,eAAe,IAAI,CAAA,CAAA;AACjC,IAAA,uBACGA,gBAAA,CAAA,aAAA,CAAAgB,eAAA,EAAA,EAAS,OAAS,EAAA,MAAM,eAAgB,CAAA,IAAI,CAC3C,EAAA,kBAAAhB,gBAAA,CAAA,aAAA,CAACiB,gBAAK,EAAA,EAAA,aAAA,EAAe,MAClB,EAAA,EAAA,IAAA,KAAS,OACR,mBAAAjB,gBAAA,CAAA,aAAA;AAAA,MAACkB,kBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEdlB,gBAAA,CAAA,aAAA;AAAA,QAACmB,2BAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGF,mBAAAnB,gBAAA,CAAA,aAAA;AAAA,MAACoB,qBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEdpB,gBAAA,CAAA,aAAA;AAAA,QAACmB,2BAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGN,CACF,CAAA,CAAA;AAAA,GAED,EAAA,CAAC,IAAK,CAAA,QAAQ,CAAC,CAAA,CAAA;AACpB,CAAA,CAAA;AAEO,MAAM,KAAQ,GAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["React","useDebouncedState","getStyledModal","getStatusBarHeight","options","value","selectedValues","FlatList","TextTitleModal","RFValue","ModalView","SearchBarContainer","SelectIcon","FetchIndicator","ModalFooter","Button","ListItem","View","Checkbox","StyledTextItemSelect","RadioButton"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[])?.length) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["useInputFocus","useState","useLazyModalManager","useEffect","React","options","Modal","HintInputContainer","SelectIcon","StyledSelectionText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[])?.length) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["useInputFocus","useState","useLazyModalManager","useEffect","React","options","Modal","HintInputContainer","SelectIcon","StyledSelectionText"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n disabledInputStyles,\n Icon,\n InputContainerProps,\n PressableSurface,\n PressableSurfaceProps,\n RFValue,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { ActivityIndicator, ModalProps, View, ViewProps } from 'react-native';\nimport { Input, InputNativeProps } from '../../atoms/Input';\nimport { Text } from '../../atoms/Text';\n\nexport const getStyledModal = (safeTop = 0) => {\n return styled(View)<ModalProps & Partial<StyleProps>>`\n padding-top: ${`${RFValue(safeTop)}px`};\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n height: 100%;\n `;\n};\n\nexport const StyledSelectionText = styled(Text)(\n (props: Partial<InputContainerProps> & Partial<StyleProps>) => css`\n line-height: ${props.theme?.typography.h5.lineHeight};\n ${disabledInputStyles(props)};\n `\n);\n\nexport const Dummy = styled(View)`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const StyledPressableSurface = styled(\n PressableSurface\n)<PressableSurfaceProps>`\n width: 100%;\n`;\n\nexport const Header = styled(View)<ViewProps & Partial<StyleProps>>`\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: ${({ theme }) => theme.spacing.deca};\n height: ${RFValueStr('75px')};\n`;\n\nexport const CloseButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const SearchBarContainer = styled(View)<ViewProps & Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.deca};\n position: relative;\n`;\n\nexport const SearchBar = styled(Input)<InputNativeProps & Partial<StyleProps>>`\n margin-bottom: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ListItem = styled(PressableSurface)<\n PressableSurfaceProps & Partial<StyleProps>\n>`\n border-bottom-width: ${RFValueStr('1px')};\n border-color: ${({ theme }) => theme.color.secondary.light};\n padding-vertical: ${({ theme }) => theme.spacing.mili};\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ModalFooter = styled(View)<Partial<StyleProps>>`\n width: 100%;\n height: auto;\n bottom: 0;\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n padding: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const SelectIcon = styled(Icon)<Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.centi};\n color: ${({ theme }) => theme.color.secondary.medium};\n`;\n\nexport const FetchIndicator = styled(ActivityIndicator)`\n align-self: center;\n`;\n\nexport const TextTitleModal = styled(Text)<Partial<StyleProps>>`\n text-align: center;\n`;\nexport const StyledTextItemSelect = styled(Text)`\n width: 90%;\n`;\n"],"names":["View","RFValue","css","disabledInputStyles","PressableSurface","RFValueStr","Button","Icon","ActivityIndicator"],"mappings":";;;;;;;;AAiBa,MAAA,cAAA,GAAiB,CAAC,OAAA,GAAU,CAAM,KAAA;AAC7C,EAAA,OAAO,OAAOA,gBAAI,CAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n disabledInputStyles,\n Icon,\n InputContainerProps,\n PressableSurface,\n PressableSurfaceProps,\n RFValue,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { ActivityIndicator, ModalProps, View, ViewProps } from 'react-native';\nimport { Input, InputNativeProps } from '../../atoms/Input';\nimport { Text } from '../../atoms/Text';\n\nexport const getStyledModal = (safeTop = 0) => {\n return styled(View)<ModalProps & Partial<StyleProps>>`\n padding-top: ${`${RFValue(safeTop)}px`};\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n height: 100%;\n `;\n};\n\nexport const StyledSelectionText = styled(Text)(\n (props: Partial<InputContainerProps> & Partial<StyleProps>) => css`\n line-height: ${props.theme?.typography.h5.lineHeight};\n ${disabledInputStyles(props)};\n `\n);\n\nexport const Dummy = styled(View)`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const StyledPressableSurface = styled(\n PressableSurface\n)<PressableSurfaceProps>`\n width: 100%;\n`;\n\nexport const Header = styled(View)<ViewProps & Partial<StyleProps>>`\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: ${({ theme }) => theme.spacing.deca};\n height: ${RFValueStr('75px')};\n`;\n\nexport const CloseButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const SearchBarContainer = styled(View)<ViewProps & Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.deca};\n position: relative;\n`;\n\nexport const SearchBar = styled(Input)<InputNativeProps & Partial<StyleProps>>`\n margin-bottom: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ListItem = styled(PressableSurface)<\n PressableSurfaceProps & Partial<StyleProps>\n>`\n border-bottom-width: ${RFValueStr('1px')};\n border-color: ${({ theme }) => theme.color.secondary.light};\n padding-vertical: ${({ theme }) => theme.spacing.mili};\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ModalFooter = styled(View)<Partial<StyleProps>>`\n width: 100%;\n height: auto;\n bottom: 0;\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n padding: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const SelectIcon = styled(Icon)<Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.centi};\n color: ${({ theme }) => theme.color.secondary.medium};\n`;\n\nexport const FetchIndicator = styled(ActivityIndicator)`\n align-self: center;\n`;\n\nexport const TextTitleModal = styled(Text)<Partial<StyleProps>>`\n text-align: center;\n`;\nexport const StyledTextItemSelect = styled(Text)`\n width: 90%;\n`;\n"],"names":["View","RFValue","css","disabledInputStyles","PressableSurface","RFValueStr","Button","Icon","ActivityIndicator"],"mappings":";;;;;;;;AAiBa,MAAA,cAAA,GAAiB,CAAC,OAAA,GAAU,CAAM,KAAA;AAC7C,EAAA,OAAO,OAAOA,gBAAI,CAAA,CAAA;AAAA,iBAAA,EACD,CAAG,EAAAC,iBAAA,CAAQ,OAAO,CAAC,CAAI,EAAA,CAAA,CAAA;AAAA,sBAAA,EAClB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,cAAc,SAAS,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAGpE,EAAA;AAEa,MAAA,mBAAA,GAAsB,OAAO,IAAI,CAAA;AAAA,EAC5C,CAAC,KAA8D,KAAAC,UAAA,CAAA;AAAA,iBAAA,EAC9C,KAAM,CAAA,KAAA,EAAO,UAAW,CAAA,EAAA,CAAG,UAAU,CAAA;AAAA,IAClD,EAAAC,6BAAA,CAAoB,KAAK,CAAC,CAAA;AAAA,EAAA,CAAA;AAEhC,EAAA;AAEqB,OAAOH,gBAAI,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAKM,MAAA;AAAA,EACpCI,0BAAA;AACF,CAAA,CAAA;AAAA;AAAA,EAAA;AAIsB,OAAOJ,gBAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAOpB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,UAClC,EAAAK,oBAAA,CAAW,MAAM,CAAC,CAAA;AAAA,EAAA;AAGH,OAAOC,gBAAM,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAK3B,MAAA,kBAAA,GAAqB,OAAON,gBAAI,CAAA,CAAA;AAAA,WAAA,EAChC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;AAAA,EAAA;AAIrB,OAAO,KAAK,CAAA,CAAA;AAAA,iBAAA,EAClB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,EAAA;AAGvC,MAAA,QAAA,GAAW,OAAOI,0BAAgB,CAAA,CAAA;AAAA,uBAGtB,EAAAC,oBAAA,CAAW,KAAK,CAAC,CAAA;AAAA,gBAAA,EACxB,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,oBAAA,EACtC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,sBAAA,EAC/B,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,EAAA;AAG5C,MAAA,WAAA,GAAc,OAAOL,gBAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,oBAAA,EAIhB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,cAAc,SAAS,CAAA;AAAA,WAAA,EACrD,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,EAAA;AAGjC,MAAA,UAAA,GAAa,OAAOO,cAAI,CAAA,CAAA;AAAA,WAAA,EACxB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,SAAA,EACpC,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AAAA,EAAA;AAGzC,MAAA,cAAA,GAAiB,OAAOC,6BAAiB,CAAA,CAAA;AAAA;AAAA,EAAA;AAIzC,MAAA,cAAA,GAAiB,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA,EAAA;AAG5B,MAAA,oBAAA,GAAuB,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Snackbar/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { Snackbar as SnackbarCore, StyleProps } from '@tecsinapse/react-core';\n\nexport const SnackbarStyled = styled(SnackbarCore)<Partial<StyleProps>>`\n left: ${({ theme }) => theme.spacing.deca};\n right: ${({ theme }) => theme.spacing.deca};\n`;\n"],"names":["SnackbarCore"],"mappings":";;;;;AAGa,MAAA,cAAA,GAAiB,OAAOA,kBAAY,CAAA,CAAA;AAAA,QAAA,EACvC,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Snackbar/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { Snackbar as SnackbarCore, StyleProps } from '@tecsinapse/react-core';\n\nexport const SnackbarStyled = styled(SnackbarCore)<Partial<StyleProps>>`\n left: ${({ theme }) => theme.spacing.deca};\n right: ${({ theme }) => theme.spacing.deca};\n`;\n"],"names":["SnackbarCore"],"mappings":";;;;;AAGa,MAAA,cAAA,GAAiB,OAAOA,kBAAY,CAAA,CAAA;AAAA,QAAA,EACvC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,SAAA,EAChC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -71,7 +71,7 @@ exports.Snackbar = Snackbar;
|
|
|
71
71
|
exports.GridItem = Item;
|
|
72
72
|
exports.Grid = Grid;
|
|
73
73
|
Object.keys(reactCore).forEach(function (k) {
|
|
74
|
-
if (k !== 'default' && !
|
|
74
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
75
75
|
enumerable: true,
|
|
76
76
|
get: function () { return reactCore[k]; }
|
|
77
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/BottomNavigator/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { PressableProps, ViewProps } from 'react-native';\n\nexport const StyledView = styled.View<ViewProps & Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n padding-bottom: ${({ theme }) => theme.spacing.kilo};\n background-color: ${({ theme }) => theme.miscellaneous.surfaceColor};\n`;\n\nexport const TabContainer = styled.Pressable<\n { selected: boolean } & PressableProps & Partial<StyleProps>\n>`\n flex: 1;\n margin-horizontal: ${({ theme }) => theme.spacing.mili};\n padding-top: ${({ theme }) => theme.spacing.deca};\n border-top-width: ${({ selected }) => (selected ? RFValueStr('2px') : 0)};\n border-color: ${({ theme }) => theme.color.primary.medium};\n align-items: center;\n justify-content: flex-end;\n`;\n\nexport const TabContent = styled.View<ViewProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n justify-content: center;\n align-items: center;\n min-height: ${RFValueStr('48px')};\n background-color: ${({ theme }) => theme.color.primary.xlight};\n border-radius: ${({ theme }) => theme.borderRadius['mili']};\n`;\n\nexport const CustomTabContent = styled.View<ViewProps & Partial<StyleProps>>``;\n"],"names":[],"mappings":";;;AAIO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA,sBAAA,EAGT,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/BottomNavigator/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { PressableProps, ViewProps } from 'react-native';\n\nexport const StyledView = styled.View<ViewProps & Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n padding-bottom: ${({ theme }) => theme.spacing.kilo};\n background-color: ${({ theme }) => theme.miscellaneous.surfaceColor};\n`;\n\nexport const TabContainer = styled.Pressable<\n { selected: boolean } & PressableProps & Partial<StyleProps>\n>`\n flex: 1;\n margin-horizontal: ${({ theme }) => theme.spacing.mili};\n padding-top: ${({ theme }) => theme.spacing.deca};\n border-top-width: ${({ selected }) => (selected ? RFValueStr('2px') : 0)};\n border-color: ${({ theme }) => theme.color.primary.medium};\n align-items: center;\n justify-content: flex-end;\n`;\n\nexport const TabContent = styled.View<ViewProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n justify-content: center;\n align-items: center;\n min-height: ${RFValueStr('48px')};\n background-color: ${({ theme }) => theme.color.primary.xlight};\n border-radius: ${({ theme }) => theme.borderRadius['mili']};\n`;\n\nexport const CustomTabContent = styled.View<ViewProps & Partial<StyleProps>>``;\n"],"names":[],"mappings":";;;AAIO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA,sBAAA,EAGT,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,kBAAA,EACrC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,oBAAA,EAC/B,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,cAAc,YAAY,CAAA;AAAA,EAAA;AAG9D,MAAM,eAAe,MAAO,CAAA,SAAA,CAAA;AAAA;AAAA,qBAAA,EAIZ,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,eAAA,EACvC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,oBAC5B,EAAA,CAAC,EAAE,QAAS,EAAA,KAAO,WAAW,UAAW,CAAA,KAAK,IAAI,CAAE,CAAA;AAAA,gBAAA,EACxD,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA;AAAA;AAAA,EAAA;AAKpD,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,cAIjB,EAAA,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,oBAAA,EACZ,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA,iBAAA,EAC5C,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,YAAA,CAAa,MAAM,CAAC,CAAA;AAAA,EAAA;AAGrD,MAAM,mBAAmB,MAAO,CAAA,IAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Header/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n RFValue,\n StyleProps,\n} from '@tecsinapse/react-core';\n\nexport const StyledView = styled.View<Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: ${({ theme }) => theme.spacing.deca};\n width: 100%;\n`;\n\nexport const FloatingButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: ${() => `${RFValue(49)}px`};\n`;\n\nexport const Dummy = styled(FloatingButton)`\n background-color: rgba(0, 0, 0, 0);\n`;\n"],"names":[],"mappings":";;;AAQO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAIpB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Header/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n RFValue,\n StyleProps,\n} from '@tecsinapse/react-core';\n\nexport const StyledView = styled.View<Partial<StyleProps>>`\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: ${({ theme }) => theme.spacing.deca};\n width: 100%;\n`;\n\nexport const FloatingButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: ${() => `${RFValue(49)}px`};\n`;\n\nexport const Dummy = styled(FloatingButton)`\n background-color: rgba(0, 0, 0, 0);\n`;\n"],"names":[],"mappings":";;;AAQO,MAAM,aAAa,MAAO,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAIpB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;AAAA,EAAA;AAIjC,MAAA,cAAA,GAAiB,OAAO,MAAM,CAAA,CAAA;AAAA;AAAA,UAAA,EAE/B,MAAM,CAAA,EAAG,OAAQ,CAAA,EAAE,CAAC,CAAI,EAAA,CAAA,CAAA;AAAA,EAAA;AAGvB,MAAA,KAAA,GAAQ,OAAO,cAAc,CAAA,CAAA;AAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Input/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { InputElement, StyleProps } from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputNativeProps } from './Input';\n\nconst StyledNativeInputBase = styled(InputElement)<\n Partial<InputNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInput = styled(StyledNativeInputBase)<\n Font & Partial<InputNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":[],"mappings":";;;;AAKA,MAAM,qBAAA,GAAwB,OAAO,YAAY,CAAA,CAAA;AAAA,UAAA,EAGrC,CAAC,EAAE,KAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Input/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { InputElement, StyleProps } from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputNativeProps } from './Input';\n\nconst StyledNativeInputBase = styled(InputElement)<\n Partial<InputNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInput = styled(StyledNativeInputBase)<\n Font & Partial<InputNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":[],"mappings":";;;;AAKA,MAAM,qBAAA,GAAwB,OAAO,YAAY,CAAA,CAAA;AAAA,UAAA,EAGrC,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,UAAA,CAAW,GAAG,UAAU,CAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAKlD,MAAM,iBAAoB,GAAA,MAAA,CAAO,qBAAqB,CAAA,CAE3D,UAAU;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/InputMask/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n InputContainer,\n InputMaskElement,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputMaskNativeProps } from './InputMask';\n\nexport const StyledInputContainer = styled(InputContainer)<Partial<StyleProps>>`\n min-height: ${RFValueStr('50px')};\n`;\n\nconst StyledNativeInputMaskBase = styled(InputMaskElement)<\n Partial<InputMaskNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInputMask = styled(StyledNativeInputMaskBase)<\n Font & Partial<InputMaskNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":[],"mappings":";;;;AAUa,MAAA,oBAAA,GAAuB,OAAO,cAAc,CAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/InputMask/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport {\n InputContainer,\n InputMaskElement,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { Font, fontStyles } from '../Text/styled';\nimport { InputMaskNativeProps } from './InputMask';\n\nexport const StyledInputContainer = styled(InputContainer)<Partial<StyleProps>>`\n min-height: ${RFValueStr('50px')};\n`;\n\nconst StyledNativeInputMaskBase = styled(InputMaskElement)<\n Partial<InputMaskNativeProps> & Partial<StyleProps>\n>`\n height: ${({ theme }) => theme.typography.h5.lineHeight};\n width: 100%;\n padding: 0;\n`;\n\nexport const StyledNativeInputMask = styled(StyledNativeInputMaskBase)<\n Font & Partial<InputMaskNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":[],"mappings":";;;;AAUa,MAAA,oBAAA,GAAuB,OAAO,cAAc,CAAA,CAAA;AAAA,cACzC,EAAA,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,EAAA;AAGlC,MAAM,yBAAA,GAA4B,OAAO,gBAAgB,CAAA,CAAA;AAAA,UAAA,EAG7C,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,UAAA,CAAW,GAAG,UAAU,CAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAKlD,MAAM,qBAAwB,GAAA,MAAA,CAAO,yBAAyB,CAAA,CAEnE,UAAU;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalLifecycleHandler.js","sources":["../../../../../src/components/atoms/Modal/ModalLifecycleHandler.ts"],"sourcesContent":["import React, { Dispatch, ReactElement } from 'react';\nimport { IBaseModal } from './ui/types';\n\n/**\n * It Represents a node (usually a modal component) in the modal's lifecycle handler.\n */\ninterface ModalNode {\n id: string;\n visible?: boolean;\n lastVisualization?: Date;\n modal: () => ReactElement<IBaseModal>;\n}\n\n/**\n * Manage all modal's lifecycle.\n */\nexport class ModalLifecycleHandler {\n nodeGroup: Map<string, ModalNode>;\n state:\n | [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n | undefined;\n\n constructor() {\n this.nodeGroup = new Map();\n this.state = undefined;\n }\n\n /**\n * Holds the ModalGroupManager state.\n *\n * @param state\n */\n public attach = (\n state: [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n ) => {\n this.state = state;\n };\n\n /**\n * Updates all the modal components.\n */\n public update = () => {\n requestAnimationFrame(() => {\n const nodes = Array.from(this.nodeGroup.values())\n .filter(node => node.visible || !!node.lastVisualization)\n .sort(\n (nodeA, nodeB) =>\n (nodeA.lastVisualization?.getTime() || 0) -\n (nodeB.lastVisualization?.getTime() || 0)\n )\n .map((node, index, filteredNodes) => {\n const modalElement = node.modal();\n const { props } = modalElement;\n return React.cloneElement(modalElement, {\n ...props,\n key: node.id,\n visible: node.visible,\n isLastShown: filteredNodes.length - 1 === index,\n close: () => this.close(node.id),\n onClose: () => {\n this.remove(node.id);\n props.onClose?.();\n },\n });\n });\n\n const [, updateState] = this.state || [];\n updateState?.(nodes);\n });\n };\n\n /**\n * Renders all selected modals.\n *\n * @returns\n */\n public render = (): ReactElement<IBaseModal>[] => {\n const [modals] = this.state || [];\n return modals || [];\n };\n\n /**\n * Tells to the lifecycle handler that a modal component needs to be handled.\n *\n * @param id\n * @param modal\n * @returns\n */\n public sync = (id: string, modal: () => ReactElement<IBaseModal>) => {\n if (this.nodeGroup.has(id)) {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, modal });\n return;\n }\n this.nodeGroup.set(id, { id, modal });\n };\n\n /**\n * Destroy a modal from the lifecycle handler.\n *\n * @param id\n */\n public destroy = (id: string) => {\n this.nodeGroup.delete(id);\n this.update();\n };\n\n /**\n * Removes a modal from the rendering stack. It tells to the lifecycle handler that a modal\n * component is no longer used by the application.\n *\n * @param id\n */\n private remove = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, { ...savedNode, lastVisualization: undefined });\n this.update();\n };\n\n /**\n * Find a modal node by id.\n *\n * @param id\n */\n private findNode = (id: string) => {\n const node = this.nodeGroup.get(id);\n !node && console.warn(`No modal was found with the id \"${id}\"`);\n return node;\n };\n\n /**\n * Makes a modal appears.\n *\n * @param id\n */\n public show = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, {\n ...savedNode,\n visible: true,\n lastVisualization: new Date(),\n });\n this.update();\n };\n\n /**\n * Makes a modal disappears.\n *\n * @param id\n */\n public close = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, visible: false });\n this.update();\n };\n}\n\n/**\n * Creates a new ModalLifecycleHandlere instance.\n *\n * @returns\n */\nexport const createModalLifecycleHandler = () => {\n return new ModalLifecycleHandler();\n};\n"],"names":["React"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ModalLifecycleHandler.js","sources":["../../../../../src/components/atoms/Modal/ModalLifecycleHandler.ts"],"sourcesContent":["import React, { Dispatch, ReactElement } from 'react';\nimport { IBaseModal } from './ui/types';\n\n/**\n * It Represents a node (usually a modal component) in the modal's lifecycle handler.\n */\ninterface ModalNode {\n id: string;\n visible?: boolean;\n lastVisualization?: Date;\n modal: () => ReactElement<IBaseModal>;\n}\n\n/**\n * Manage all modal's lifecycle.\n */\nexport class ModalLifecycleHandler {\n nodeGroup: Map<string, ModalNode>;\n state:\n | [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n | undefined;\n\n constructor() {\n this.nodeGroup = new Map();\n this.state = undefined;\n }\n\n /**\n * Holds the ModalGroupManager state.\n *\n * @param state\n */\n public attach = (\n state: [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]\n ) => {\n this.state = state;\n };\n\n /**\n * Updates all the modal components.\n */\n public update = () => {\n requestAnimationFrame(() => {\n const nodes = Array.from(this.nodeGroup.values())\n .filter(node => node.visible || !!node.lastVisualization)\n .sort(\n (nodeA, nodeB) =>\n (nodeA.lastVisualization?.getTime() || 0) -\n (nodeB.lastVisualization?.getTime() || 0)\n )\n .map((node, index, filteredNodes) => {\n const modalElement = node.modal();\n const { props } = modalElement;\n return React.cloneElement(modalElement, {\n ...props,\n key: node.id,\n visible: node.visible,\n isLastShown: filteredNodes.length - 1 === index,\n close: () => this.close(node.id),\n onClose: () => {\n this.remove(node.id);\n props.onClose?.();\n },\n });\n });\n\n const [, updateState] = this.state || [];\n updateState?.(nodes);\n });\n };\n\n /**\n * Renders all selected modals.\n *\n * @returns\n */\n public render = (): ReactElement<IBaseModal>[] => {\n const [modals] = this.state || [];\n return modals || [];\n };\n\n /**\n * Tells to the lifecycle handler that a modal component needs to be handled.\n *\n * @param id\n * @param modal\n * @returns\n */\n public sync = (id: string, modal: () => ReactElement<IBaseModal>) => {\n if (this.nodeGroup.has(id)) {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, modal });\n return;\n }\n this.nodeGroup.set(id, { id, modal });\n };\n\n /**\n * Destroy a modal from the lifecycle handler.\n *\n * @param id\n */\n public destroy = (id: string) => {\n this.nodeGroup.delete(id);\n this.update();\n };\n\n /**\n * Removes a modal from the rendering stack. It tells to the lifecycle handler that a modal\n * component is no longer used by the application.\n *\n * @param id\n */\n private remove = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, { ...savedNode, lastVisualization: undefined });\n this.update();\n };\n\n /**\n * Find a modal node by id.\n *\n * @param id\n */\n private findNode = (id: string) => {\n const node = this.nodeGroup.get(id);\n !node && console.warn(`No modal was found with the id \"${id}\"`);\n return node;\n };\n\n /**\n * Makes a modal appears.\n *\n * @param id\n */\n public show = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode &&\n this.nodeGroup.set(id, {\n ...savedNode,\n visible: true,\n lastVisualization: new Date(),\n });\n this.update();\n };\n\n /**\n * Makes a modal disappears.\n *\n * @param id\n */\n public close = (id: string) => {\n const savedNode = this.findNode(id);\n savedNode && this.nodeGroup.set(id, { ...savedNode, visible: false });\n this.update();\n };\n}\n\n/**\n * Creates a new ModalLifecycleHandlere instance.\n *\n * @returns\n */\nexport const createModalLifecycleHandler = () => {\n return new ModalLifecycleHandler();\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseModalView.js","sources":["../../../../../../src/components/atoms/Modal/ui/BaseModalView.tsx"],"sourcesContent":["import { BoxContent } from '@tecsinapse/react-core';\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n Dimensions,\n Easing,\n Keyboard,\n LayoutChangeEvent,\n Pressable,\n StatusBar,\n} from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { BackDropView, CloseBar, StyledPressableBackDrop } from './styled';\nimport { IBaseModal } from './types';\n\nconst BACKDROP_ALPHA = 0.65;\nconst INTERPOLATION_STEPS = 10;\nconst INTERPOLATION_DURATION = 195; //ms\nconst OPACITY_DURATION = 25; //ms\n\nexport const ModalView: FC<IBaseModal> = ({\n children,\n visible,\n BoxComponent = BoxContent,\n frozen,\n isLastShown,\n showCloseBar = true,\n close,\n onClose,\n}) => {\n const { bottom } = useSafeAreaInsets();\n const [ready, setReady] = useState(false);\n const [keyboardOpened, setKeyboardOpened] = useState(0);\n const [boxHeight, setBoxHeight] = useState(0);\n const backgroundCarrier = useRef(new Animated.Value(0)).current;\n const translationCarrier = useRef(new Animated.Value(0)).current;\n const opacityCarrier = useRef(new Animated.Value(0)).current;\n const offset = isLastShown && keyboardOpened > 0 ? 0 : bottom;\n\n const getKeyboardHeight = (keyboard: number) => {\n if (keyboard === 0) return 0;\n\n const wHeight = Math.ceil(Dimensions.get('window').height);\n const sHeight = Math.ceil(Dimensions.get('screen').height);\n if (wHeight !== sHeight) {\n return keyboard + (sHeight - wHeight - (StatusBar.currentHeight || 0));\n }\n return keyboard;\n };\n\n const show = useCallback(() => {\n Animated.sequence([\n Animated.timing(backgroundCarrier, {\n toValue: INTERPOLATION_STEPS,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 1,\n duration: OPACITY_DURATION,\n useNativeDriver: true,\n }),\n Animated.timing(translationCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n ]).start();\n }, []);\n\n const hide = useCallback(\n (to: number) => {\n Animated.sequence([\n Animated.parallel([\n Animated.timing(translationCarrier, {\n toValue: to,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n useNativeDriver: true,\n }),\n ]),\n Animated.timing(backgroundCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n ]).start(onClose);\n },\n [onClose]\n );\n\n const backgroundInterpolation = backgroundCarrier.interpolate({\n inputRange: [0, INTERPOLATION_STEPS],\n outputRange: ['rgba(0, 0, 0, 0)', `rgba(0, 0, 0, ${BACKDROP_ALPHA})`],\n });\n\n const handleBoxLayoutChanges = useCallback(\n (lce: LayoutChangeEvent) => {\n const boxHeightEvent = lce.nativeEvent.layout.height;\n setBoxHeight(boxHeightEvent);\n\n if (visible && !ready) {\n translationCarrier.setValue(boxHeightEvent);\n setReady(true);\n }\n },\n [show, ready, visible, setReady]\n );\n\n useEffect(() => {\n if (visible && ready) requestAnimationFrame(() => show());\n if (!visible && !ready) {\n Keyboard.dismiss();\n requestAnimationFrame(() => hide(boxHeight));\n }\n if (!visible && ready) setReady(false);\n }, [ready, visible]);\n\n useEffect(() => {\n const showEvent = Keyboard.addListener('keyboardDidShow', e =>\n setKeyboardOpened(e.endCoordinates.height)\n );\n const hideEvent = Keyboard.addListener('keyboardDidHide', () =>\n setKeyboardOpened(0)\n );\n return () => {\n showEvent.remove();\n hideEvent.remove();\n };\n }, []);\n\n return (\n <StyledPressableBackDrop onPress={!frozen ? close : undefined}>\n <BackDropView style={{ backgroundColor: backgroundInterpolation }}>\n <Animated.View\n style={{\n paddingBottom: isLastShown ? getKeyboardHeight(keyboardOpened) : 0,\n opacity: opacityCarrier,\n transform: [{ translateY: translationCarrier }],\n }}\n >\n <Pressable>\n <BoxComponent\n onLayout={handleBoxLayoutChanges}\n style={{ paddingBottom: offset }}\n variant=\"bottom\"\n >\n {showCloseBar && <CloseBar />}\n {children}\n </BoxComponent>\n </Pressable>\n </Animated.View>\n </BackDropView>\n </StyledPressableBackDrop>\n );\n};\n"],"names":["React"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BaseModalView.js","sources":["../../../../../../src/components/atoms/Modal/ui/BaseModalView.tsx"],"sourcesContent":["import { BoxContent } from '@tecsinapse/react-core';\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n Dimensions,\n Easing,\n Keyboard,\n LayoutChangeEvent,\n Pressable,\n StatusBar,\n} from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { BackDropView, CloseBar, StyledPressableBackDrop } from './styled';\nimport { IBaseModal } from './types';\n\nconst BACKDROP_ALPHA = 0.65;\nconst INTERPOLATION_STEPS = 10;\nconst INTERPOLATION_DURATION = 195; //ms\nconst OPACITY_DURATION = 25; //ms\n\nexport const ModalView: FC<IBaseModal> = ({\n children,\n visible,\n BoxComponent = BoxContent,\n frozen,\n isLastShown,\n showCloseBar = true,\n close,\n onClose,\n}) => {\n const { bottom } = useSafeAreaInsets();\n const [ready, setReady] = useState(false);\n const [keyboardOpened, setKeyboardOpened] = useState(0);\n const [boxHeight, setBoxHeight] = useState(0);\n const backgroundCarrier = useRef(new Animated.Value(0)).current;\n const translationCarrier = useRef(new Animated.Value(0)).current;\n const opacityCarrier = useRef(new Animated.Value(0)).current;\n const offset = isLastShown && keyboardOpened > 0 ? 0 : bottom;\n\n const getKeyboardHeight = (keyboard: number) => {\n if (keyboard === 0) return 0;\n\n const wHeight = Math.ceil(Dimensions.get('window').height);\n const sHeight = Math.ceil(Dimensions.get('screen').height);\n if (wHeight !== sHeight) {\n return keyboard + (sHeight - wHeight - (StatusBar.currentHeight || 0));\n }\n return keyboard;\n };\n\n const show = useCallback(() => {\n Animated.sequence([\n Animated.timing(backgroundCarrier, {\n toValue: INTERPOLATION_STEPS,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 1,\n duration: OPACITY_DURATION,\n useNativeDriver: true,\n }),\n Animated.timing(translationCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n ]).start();\n }, []);\n\n const hide = useCallback(\n (to: number) => {\n Animated.sequence([\n Animated.parallel([\n Animated.timing(translationCarrier, {\n toValue: to,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: true,\n }),\n Animated.timing(opacityCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n useNativeDriver: true,\n }),\n ]),\n Animated.timing(backgroundCarrier, {\n toValue: 0,\n duration: INTERPOLATION_DURATION,\n easing: Easing.out(Easing.circle),\n useNativeDriver: false,\n }),\n ]).start(onClose);\n },\n [onClose]\n );\n\n const backgroundInterpolation = backgroundCarrier.interpolate({\n inputRange: [0, INTERPOLATION_STEPS],\n outputRange: ['rgba(0, 0, 0, 0)', `rgba(0, 0, 0, ${BACKDROP_ALPHA})`],\n });\n\n const handleBoxLayoutChanges = useCallback(\n (lce: LayoutChangeEvent) => {\n const boxHeightEvent = lce.nativeEvent.layout.height;\n setBoxHeight(boxHeightEvent);\n\n if (visible && !ready) {\n translationCarrier.setValue(boxHeightEvent);\n setReady(true);\n }\n },\n [show, ready, visible, setReady]\n );\n\n useEffect(() => {\n if (visible && ready) requestAnimationFrame(() => show());\n if (!visible && !ready) {\n Keyboard.dismiss();\n requestAnimationFrame(() => hide(boxHeight));\n }\n if (!visible && ready) setReady(false);\n }, [ready, visible]);\n\n useEffect(() => {\n const showEvent = Keyboard.addListener('keyboardDidShow', e =>\n setKeyboardOpened(e.endCoordinates.height)\n );\n const hideEvent = Keyboard.addListener('keyboardDidHide', () =>\n setKeyboardOpened(0)\n );\n return () => {\n showEvent.remove();\n hideEvent.remove();\n };\n }, []);\n\n return (\n <StyledPressableBackDrop onPress={!frozen ? close : undefined}>\n <BackDropView style={{ backgroundColor: backgroundInterpolation }}>\n <Animated.View\n style={{\n paddingBottom: isLastShown ? getKeyboardHeight(keyboardOpened) : 0,\n opacity: opacityCarrier,\n transform: [{ translateY: translationCarrier }],\n }}\n >\n <Pressable>\n <BoxComponent\n onLayout={handleBoxLayoutChanges}\n style={{ paddingBottom: offset }}\n variant=\"bottom\"\n >\n {showCloseBar && <CloseBar />}\n {children}\n </BoxComponent>\n </Pressable>\n </Animated.View>\n </BackDropView>\n </StyledPressableBackDrop>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../../src/components/atoms/Modal/ui/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { Animated } from 'react-native';\n\nexport const StyledPressableBackDrop = styled.Pressable<Partial<StyleProps>>`\n flex: 1;\n position: absolute;\n width: 100%;\n height: 100%;\n`;\n\nexport const BackDropView = styled(Animated.View)<Partial<StyleProps>>`\n justify-content: flex-end;\n flex: 1;\n`;\n\nexport const CloseBar = styled.View<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.light};\n border-radius: ${RFValueStr('10px')};\n margin: ${`${RFValueStr('5px')} auto`};\n width: ${RFValueStr('42px')};\n height: ${RFValueStr('5px')};\n`;\n"],"names":[],"mappings":";;;;AAIO,MAAM,0BAA0B,MAAO,CAAA,SAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAOjC,MAAA,YAAA,GAAe,MAAO,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAKzC,MAAM,WAAW,MAAO,CAAA,IAAA,CAAA;AAAA,oBAAA,EACT,CAAC,EAAE,KAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../../src/components/atoms/Modal/ui/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { Animated } from 'react-native';\n\nexport const StyledPressableBackDrop = styled.Pressable<Partial<StyleProps>>`\n flex: 1;\n position: absolute;\n width: 100%;\n height: 100%;\n`;\n\nexport const BackDropView = styled(Animated.View)<Partial<StyleProps>>`\n justify-content: flex-end;\n flex: 1;\n`;\n\nexport const CloseBar = styled.View<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.light};\n border-radius: ${RFValueStr('10px')};\n margin: ${`${RFValueStr('5px')} auto`};\n width: ${RFValueStr('42px')};\n height: ${RFValueStr('5px')};\n`;\n"],"names":[],"mappings":";;;;AAIO,MAAM,0BAA0B,MAAO,CAAA,SAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAOjC,MAAA,YAAA,GAAe,MAAO,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAKzC,MAAM,WAAW,MAAO,CAAA,IAAA,CAAA;AAAA,oBAAA,EACT,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,iBAC7C,EAAA,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,UAAA,EACzB,CAAG,EAAA,UAAA,CAAW,KAAK,CAAC,CAAO,KAAA,CAAA,CAAA;AAAA,SAC5B,EAAA,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,UACjB,EAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Skeleton/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { SkeletonProps } from './Skeleton';\n\nexport const Wrapper = styled.View<Partial<StyleProps & SkeletonProps>>`\n width: ${({ width }) => (width ? `${RFValueStr(`${width}px`)}` : '100%')};\n height: ${({ height }) => (height ? `${RFValueStr(`${height}px`)}` : 'auto')};\n border-radius: ${({ theme, radius }: StyleProps & Partial<SkeletonProps>) =>\n radius ? theme.borderRadius[radius] : 0};\n overflow: hidden;\n position: relative;\n`;\n"],"names":[],"mappings":";;;AAIO,MAAM,UAAU,MAAO,CAAA,IAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Skeleton/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { RFValueStr, StyleProps } from '@tecsinapse/react-core';\nimport { SkeletonProps } from './Skeleton';\n\nexport const Wrapper = styled.View<Partial<StyleProps & SkeletonProps>>`\n width: ${({ width }) => (width ? `${RFValueStr(`${width}px`)}` : '100%')};\n height: ${({ height }) => (height ? `${RFValueStr(`${height}px`)}` : 'auto')};\n border-radius: ${({ theme, radius }: StyleProps & Partial<SkeletonProps>) =>\n radius ? theme.borderRadius[radius] : 0};\n overflow: hidden;\n position: relative;\n`;\n"],"names":[],"mappings":";;;AAIO,MAAM,UAAU,MAAO,CAAA,IAAA,CAAA;AAAA,SAAA,EACnB,CAAC,EAAE,KAAM,EAAA,KAAO,KAAQ,GAAA,CAAA,EAAG,UAAW,CAAA,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAA,CAAA,GAAK,MAAO,CAAA;AAAA,UAAA,EAC9D,CAAC,EAAE,MAAO,EAAA,KAAO,MAAS,GAAA,CAAA,EAAG,UAAW,CAAA,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,CAAC,CAAA,CAAA,GAAK,MAAO,CAAA;AAAA,iBAC3D,EAAA,CAAC,EAAE,KAAA,EAAO,MAAO,EAAA,KAChC,SAAS,KAAM,CAAA,YAAA,CAAa,MAAM,CAAA,GAAI,CAAC,CAAA;AAAA;AAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Text/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n FontStackType,\n FontWeightType,\n StyleProps,\n Text,\n} from '@tecsinapse/react-core';\nimport { Platform } from 'react-native';\nimport { TextNativeProps } from './Text';\n\nexport interface Font {\n fontStack?: FontStackType;\n fontWeight?: FontWeightType;\n}\n\nexport const fontStyles = ({\n theme,\n fontStack = 'default',\n fontWeight = 'regular',\n}: Partial<Font & Partial<StyleProps>>) => {\n const fontFamily = theme?.font.stack[fontStack] || '';\n const fontStyle = theme?.font.files[fontWeight];\n return css`\n ${Platform.OS === 'android' ? 'font-weight: normal;' : undefined}\n font-family: ${fontStyle?.replace('{0}', fontFamily)};\n `;\n};\n\nexport const StyledNativeText = styled(Text)<\n Font & Partial<TextNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":[],"mappings":";;;;AAeO,MAAM,aAAa,CAAC;AAAA,EACzB,KAAA;AAAA,EACA,SAAY,GAAA,SAAA;AAAA,EACZ,UAAa,GAAA,SAAA;AACf,CAA2C,KAAA;AACzC,EAAA,MAAM,UAAa,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,SAAS,CAAK,IAAA,EAAA,CAAA;AACnD,EAAA,MAAM,SAAY,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAC9C,EAAO,OAAA,GAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Text/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n FontStackType,\n FontWeightType,\n StyleProps,\n Text,\n} from '@tecsinapse/react-core';\nimport { Platform } from 'react-native';\nimport { TextNativeProps } from './Text';\n\nexport interface Font {\n fontStack?: FontStackType;\n fontWeight?: FontWeightType;\n}\n\nexport const fontStyles = ({\n theme,\n fontStack = 'default',\n fontWeight = 'regular',\n}: Partial<Font & Partial<StyleProps>>) => {\n const fontFamily = theme?.font.stack[fontStack] || '';\n const fontStyle = theme?.font.files[fontWeight];\n return css`\n ${Platform.OS === 'android' ? 'font-weight: normal;' : undefined}\n font-family: ${fontStyle?.replace('{0}', fontFamily)};\n `;\n};\n\nexport const StyledNativeText = styled(Text)<\n Font & Partial<TextNativeProps> & Partial<StyleProps>\n>(fontStyles);\n"],"names":[],"mappings":";;;;AAeO,MAAM,aAAa,CAAC;AAAA,EACzB,KAAA;AAAA,EACA,SAAY,GAAA,SAAA;AAAA,EACZ,UAAa,GAAA,SAAA;AACf,CAA2C,KAAA;AACzC,EAAA,MAAM,UAAa,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,SAAS,CAAK,IAAA,EAAA,CAAA;AACnD,EAAA,MAAM,SAAY,GAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAC9C,EAAO,OAAA,GAAA,CAAA;AAAA,IAAA,EACH,QAAS,CAAA,EAAA,KAAO,SAAY,GAAA,sBAAA,GAAyB,KAAS,CAAA,CAAA;AAAA,iBAAA,EACjD,SAAW,EAAA,OAAA,CAAQ,KAAO,EAAA,UAAU,CAAC,CAAA;AAAA,EAAA,CAAA,CAAA;AAExD,EAAA;AAEO,MAAM,gBAAmB,GAAA,MAAA,CAAO,IAAI,CAAA,CAEzC,UAAU;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DatePicker as DatePicker$1 } from '@tecsinapse/react-core';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { getLocale } from '../../../utils/date.js';
|
|
4
|
-
import '
|
|
4
|
+
import 'react-native';
|
|
5
5
|
import { ModalView } from '../../atoms/Modal/ui/BaseModalView.js';
|
|
6
6
|
import 'uuid';
|
|
7
7
|
import { useLazyModalManager } from '../../atoms/Modal/useLazyModalManager.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/DatePicker/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { BoxContent, StyleProps } from '@tecsinapse/react-core';\n\nexport const CalendarBoxContent = styled(BoxContent)<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.xlight};\n`;\n"],"names":[],"mappings":";;;AAGa,MAAA,kBAAA,GAAqB,OAAO,UAAU,CAAA,CAAA;AAAA,oBAAA,EAC7B,CAAC,EAAE,KAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/DatePicker/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { BoxContent, StyleProps } from '@tecsinapse/react-core';\n\nexport const CalendarBoxContent = styled(BoxContent)<Partial<StyleProps>>`\n background-color: ${({ theme }) => theme.color.secondary.xlight};\n`;\n"],"names":[],"mappings":";;;AAGa,MAAA,kBAAA,GAAqB,OAAO,UAAU,CAAA,CAAA;AAAA,oBAAA,EAC7B,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DateTimePicker as DateTimePicker$1 } from '@tecsinapse/react-core';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { getLocale } from '../../../utils/date.js';
|
|
4
|
-
import '
|
|
4
|
+
import 'react-native';
|
|
5
5
|
import { ModalView } from '../../atoms/Modal/ui/BaseModalView.js';
|
|
6
6
|
import 'uuid';
|
|
7
7
|
import { useLazyModalManager } from '../../atoms/Modal/useLazyModalManager.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sources":["../../../../../src/components/molecules/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { GridItem } from './Item';\nimport { IGrid } from '@tecsinapse/react-core';\n\nexport type IGridNative = IGrid & ViewProps;\n\nconst Grid = ({\n children,\n columns = 12,\n layout,\n style,\n spacing,\n ...rest\n}: IGridNative): JSX.Element => {\n if (layout) {\n const flatLayout = layout.flat();\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => (\n <GridItem\n key={`child-${index}`}\n columns={columns}\n span={flatLayout[index]}\n spacing={spacing}\n >\n {child}\n </GridItem>\n ))}\n </View>\n );\n }\n\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => {\n return React.cloneElement(child, {\n ...child?.props,\n columns,\n spacing: child?.props.spacing ?? spacing,\n key: `child-${index}`,\n });\n })}\n </View>\n );\n};\n\nexport default Grid;\n"],"names":["React"],"mappings":";;;;AAOA,MAAM,OAAO,CAAC;AAAA,EACZ,QAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAgC,KAAA;AAC9B,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,UAAA,GAAa,OAAO,IAAK,EAAA,CAAA;AAC/B,IACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,YACE,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA,KAAA;AAAA,YACf,QAAU,EAAA,MAAA;AAAA,WACZ;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,OAAA;AAAA,MAEHA,eAAM,QAAS,CAAA,GAAA,CAAI,QAAU,EAAA,CAAC,OAAO,KACpC,qBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,
|
|
1
|
+
{"version":3,"file":"Grid.js","sources":["../../../../../src/components/molecules/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { GridItem } from './Item';\nimport { IGrid } from '@tecsinapse/react-core';\n\nexport type IGridNative = IGrid & ViewProps;\n\nconst Grid = ({\n children,\n columns = 12,\n layout,\n style,\n spacing,\n ...rest\n}: IGridNative): JSX.Element => {\n if (layout) {\n const flatLayout = layout.flat();\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => (\n <GridItem\n key={`child-${index}`}\n columns={columns}\n span={flatLayout[index]}\n spacing={spacing}\n >\n {child}\n </GridItem>\n ))}\n </View>\n );\n }\n\n return (\n <View\n style={[\n style,\n {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ]}\n {...rest}\n >\n {React.Children.map(children, (child, index) => {\n return React.cloneElement(child, {\n ...child?.props,\n columns,\n spacing: child?.props.spacing ?? spacing,\n key: `child-${index}`,\n });\n })}\n </View>\n );\n};\n\nexport default Grid;\n"],"names":["React"],"mappings":";;;;AAOA,MAAM,OAAO,CAAC;AAAA,EACZ,QAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAgC,KAAA;AAC9B,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,UAAA,GAAa,OAAO,IAAK,EAAA,CAAA;AAC/B,IACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,YACE,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA,KAAA;AAAA,YACf,QAAU,EAAA,MAAA;AAAA,WACZ;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,OAAA;AAAA,MAEHA,eAAM,QAAS,CAAA,GAAA,CAAI,QAAU,EAAA,CAAC,OAAO,KACpC,qBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,SAAS,KAAK,CAAA,CAAA;AAAA,UACnB,OAAA;AAAA,UACA,IAAA,EAAM,WAAW,KAAK,CAAA;AAAA,UACtB,OAAA;AAAA,SAAA;AAAA,QAEC,KAAA;AAAA,OAEJ,CAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA;AAAA,QACL,KAAA;AAAA,QACA;AAAA,UACE,OAAS,EAAA,MAAA;AAAA,UACT,aAAe,EAAA,KAAA;AAAA,UACf,QAAU,EAAA,MAAA;AAAA,SACZ;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,KAAA;AAAA,IAEHA,eAAM,QAAS,CAAA,GAAA,CAAI,QAAU,EAAA,CAAC,OAAO,KAAU,KAAA;AAC9C,MAAO,OAAAA,cAAA,CAAM,aAAa,KAAO,EAAA;AAAA,QAC/B,GAAG,KAAO,EAAA,KAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA,EAAS,KAAO,EAAA,KAAA,CAAM,OAAW,IAAA,OAAA;AAAA,QACjC,GAAA,EAAK,SAAS,KAAK,CAAA,CAAA;AAAA,OACpB,CAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.js","sources":["../../../../../../src/components/molecules/Grid/Item/Item.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport {\n IGridItem,\n useTheme,\n getGridItemColumSpan,\n getGridItemPadding,\n} from '@tecsinapse/react-core';\n\nexport type IGridItemNative = IGridItem &\n ViewProps & {\n /** Only specify this property if the GridItem will be 'dynamic', adjusting itself to content. Use this with `wrapper` for better result. */\n flexBasis?: string | 'auto';\n };\n\nconst GridItem = ({\n children,\n span,\n columns = 12,\n loadingComponent,\n loading = false,\n spacing: _spacing,\n wrapper = false,\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n flexBasis,\n style,\n ...rest\n}: IGridItemNative): JSX.Element => {\n const { spacing } = useTheme();\n if (!React.Children.only(children)) {\n throw new Error('The number of children in GridItem should be one');\n }\n if (loadingComponent && loading) {\n return loadingComponent;\n }\n\n const _style = {\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n boxSizing: 'border-box',\n flexBasis: flexBasis ?? `${getGridItemColumSpan(columns, span)}%`,\n paddingTop: getGridItemPadding('top', _spacing, spacing),\n paddingBottom: getGridItemPadding('bottom', _spacing, spacing),\n paddingRight: getGridItemPadding('right', _spacing, spacing),\n paddingLeft: getGridItemPadding('left', _spacing, spacing),\n };\n\n const clone = React.cloneElement(children, {\n ...children?.props,\n style: wrapper\n ? children?.props.style\n : { ..._style, ...children?.props.style },\n });\n\n return wrapper ? (\n <View {...rest} style={[style, _style]}>\n {clone}\n </View>\n ) : (\n clone\n );\n};\n\nexport default GridItem;\n"],"names":["React"],"mappings":";;;;AAeA,MAAM,WAAW,CAAC;AAAA,EAChB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,gBAAA;AAAA,EACA,OAAU,GAAA,KAAA;AAAA,EACV,OAAS,EAAA,QAAA;AAAA,EACT,OAAU,GAAA,KAAA;AAAA,EACV,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAoC,KAAA;AAClC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,QAAS,EAAA,CAAA;AAC7B,EAAA,IAAI,CAACA,cAAA,CAAM,QAAS,CAAA,IAAA,CAAK,QAAQ,CAAG,EAAA;AAClC,IAAM,MAAA,IAAI,MAAM,kDAAkD,CAAA,CAAA;AAAA,GACpE;AACA,EAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,IAAO,OAAA,gBAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAW,EAAA,YAAA;AAAA,IACX,
|
|
1
|
+
{"version":3,"file":"Item.js","sources":["../../../../../../src/components/molecules/Grid/Item/Item.tsx"],"sourcesContent":["import React from 'react';\nimport { View, ViewProps } from 'react-native';\nimport {\n IGridItem,\n useTheme,\n getGridItemColumSpan,\n getGridItemPadding,\n} from '@tecsinapse/react-core';\n\nexport type IGridItemNative = IGridItem &\n ViewProps & {\n /** Only specify this property if the GridItem will be 'dynamic', adjusting itself to content. Use this with `wrapper` for better result. */\n flexBasis?: string | 'auto';\n };\n\nconst GridItem = ({\n children,\n span,\n columns = 12,\n loadingComponent,\n loading = false,\n spacing: _spacing,\n wrapper = false,\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n flexBasis,\n style,\n ...rest\n}: IGridItemNative): JSX.Element => {\n const { spacing } = useTheme();\n if (!React.Children.only(children)) {\n throw new Error('The number of children in GridItem should be one');\n }\n if (loadingComponent && loading) {\n return loadingComponent;\n }\n\n const _style = {\n alignContent,\n alignItems,\n alignSelf,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n justifyContent,\n boxSizing: 'border-box',\n flexBasis: flexBasis ?? `${getGridItemColumSpan(columns, span)}%`,\n paddingTop: getGridItemPadding('top', _spacing, spacing),\n paddingBottom: getGridItemPadding('bottom', _spacing, spacing),\n paddingRight: getGridItemPadding('right', _spacing, spacing),\n paddingLeft: getGridItemPadding('left', _spacing, spacing),\n };\n\n const clone = React.cloneElement(children, {\n ...children?.props,\n style: wrapper\n ? children?.props.style\n : { ..._style, ...children?.props.style },\n });\n\n return wrapper ? (\n <View {...rest} style={[style, _style]}>\n {clone}\n </View>\n ) : (\n clone\n );\n};\n\nexport default GridItem;\n"],"names":["React"],"mappings":";;;;AAeA,MAAM,WAAW,CAAC;AAAA,EAChB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAU,GAAA,EAAA;AAAA,EACV,gBAAA;AAAA,EACA,OAAU,GAAA,KAAA;AAAA,EACV,OAAS,EAAA,QAAA;AAAA,EACT,OAAU,GAAA,KAAA;AAAA,EACV,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAoC,KAAA;AAClC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,QAAS,EAAA,CAAA;AAC7B,EAAA,IAAI,CAACA,cAAA,CAAM,QAAS,CAAA,IAAA,CAAK,QAAQ,CAAG,EAAA;AAClC,IAAM,MAAA,IAAI,MAAM,kDAAkD,CAAA,CAAA;AAAA,GACpE;AACA,EAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,IAAO,OAAA,gBAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAW,EAAA,YAAA;AAAA,IACX,WAAW,SAAa,IAAA,CAAA,EAAG,oBAAqB,CAAA,OAAA,EAAS,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,IAC9D,UAAY,EAAA,kBAAA,CAAmB,KAAO,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,IACvD,aAAe,EAAA,kBAAA,CAAmB,QAAU,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,IAC7D,YAAc,EAAA,kBAAA,CAAmB,OAAS,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,IAC3D,WAAa,EAAA,kBAAA,CAAmB,MAAQ,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,GAC3D,CAAA;AAEA,EAAM,MAAA,KAAA,GAAQA,cAAM,CAAA,YAAA,CAAa,QAAU,EAAA;AAAA,IACzC,GAAG,QAAU,EAAA,KAAA;AAAA,IACb,KAAA,EAAO,OACH,GAAA,QAAA,EAAU,KAAM,CAAA,KAAA,GAChB,EAAE,GAAG,MAAQ,EAAA,GAAG,QAAU,EAAA,KAAA,CAAM,KAAM,EAAA;AAAA,GAC3C,CAAA,CAAA;AAED,EAAO,OAAA,OAAA,mBACJA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAM,GAAG,IAAA,EAAM,KAAO,EAAA,CAAC,KAAO,EAAA,MAAM,CAClC,EAAA,EAAA,KACH,CAEA,GAAA,KAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/IconTextButton/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { IconPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { Button } from '../../atoms/Button';\nimport { Text } from '../../atoms/Text';\n\nconst boxedStyle = ({ theme }: Partial<StyleProps>) => `\n padding: ${theme?.spacing.centi};\n aspect-ratio: 1;\n `;\n\nexport const StyledIconTextButton = styled(Button)<\n Partial<StyleProps> & {\n boxed: boolean;\n }\n>`\n ${({ boxed, theme }) => boxed && boxedStyle({ theme })};\n`;\n\nexport const StyledText = styled(Text)<\n Partial<StyleProps> & {\n iconPosition: IconPositionOptions;\n hasIcon?: boolean;\n }\n>`\n ${({ theme, iconPosition, hasIcon = false }) => {\n if (hasIcon && iconPosition === 'left')\n return css`\n margin-left: ${theme?.spacing.mili};\n `;\n else if (hasIcon && iconPosition === 'right')\n return css`\n margin-right: ${theme?.spacing.mili};\n `;\n }}\n`;\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,UAAa,GAAA,CAAC,EAAE,KAAA,EAAiC,KAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/IconTextButton/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { IconPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { Button } from '../../atoms/Button';\nimport { Text } from '../../atoms/Text';\n\nconst boxedStyle = ({ theme }: Partial<StyleProps>) => `\n padding: ${theme?.spacing.centi};\n aspect-ratio: 1;\n `;\n\nexport const StyledIconTextButton = styled(Button)<\n Partial<StyleProps> & {\n boxed: boolean;\n }\n>`\n ${({ boxed, theme }) => boxed && boxedStyle({ theme })};\n`;\n\nexport const StyledText = styled(Text)<\n Partial<StyleProps> & {\n iconPosition: IconPositionOptions;\n hasIcon?: boolean;\n }\n>`\n ${({ theme, iconPosition, hasIcon = false }) => {\n if (hasIcon && iconPosition === 'left')\n return css`\n margin-left: ${theme?.spacing.mili};\n `;\n else if (hasIcon && iconPosition === 'right')\n return css`\n margin-right: ${theme?.spacing.mili};\n `;\n }}\n`;\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,UAAa,GAAA,CAAC,EAAE,KAAA,EAAiC,KAAA,CAAA;AAAA,aACxC,EAAA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAItB,MAAA,oBAAA,GAAuB,OAAO,MAAM,CAAA,CAAA;AAAA,EAK7C,EAAA,CAAC,EAAE,KAAA,EAAO,KAAM,EAAA,KAAM,SAAS,UAAW,CAAA,EAAE,KAAM,EAAC,CAAC,CAAA;AAAA,EAAA;AAG3C,MAAA,UAAA,GAAa,OAAO,IAAI,CAAA,CAAA;AAAA,EAAA,EAMjC,CAAC,EAAE,KAAA,EAAO,YAAc,EAAA,OAAA,GAAU,OAAY,KAAA;AAC9C,EAAA,IAAI,WAAW,YAAiB,KAAA,MAAA;AAC9B,IAAO,OAAA,GAAA,CAAA;AAAA,qBACU,EAAA,KAAA,EAAO,QAAQ,IAAI,CAAA;AAAA,MAAA,CAAA,CAAA;AAAA,OAAA,IAE7B,WAAW,YAAiB,KAAA,OAAA;AACnC,IAAO,OAAA,GAAA,CAAA;AAAA,sBACW,EAAA,KAAA,EAAO,QAAQ,IAAI,CAAA;AAAA,MAAA,CAAA,CAAA;AAEzC,CAAC,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/LabeledSwitch/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { LabelPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { View } from 'react-native';\nimport { Text } from '../../atoms/Text';\n\nexport const StyledView = styled(View)`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const StyledLabel = styled(Text)<\n Partial<StyleProps> & {\n labelPosition: LabelPositionOptions;\n }\n>`\n ${({ theme, labelPosition }) => {\n if (labelPosition === 'right')\n return css`\n margin-left: ${theme?.spacing.centi};\n `;\n else if (labelPosition === 'left')\n return css`\n margin-right: ${theme?.spacing.centi};\n `;\n }}\n`;\n"],"names":[],"mappings":";;;;AAKa,MAAA,UAAA,GAAa,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAMxB,MAAA,WAAA,GAAc,OAAO,IAAI,CAAA,CAAA;AAAA,EAAA,EAKlC,CAAC,EAAE,KAAO,EAAA,aAAA,EAAoB,KAAA;AAC9B,EAAA,IAAI,aAAkB,KAAA,OAAA;AACpB,IAAO,OAAA,GAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/LabeledSwitch/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport { LabelPositionOptions, StyleProps } from '@tecsinapse/react-core';\nimport { View } from 'react-native';\nimport { Text } from '../../atoms/Text';\n\nexport const StyledView = styled(View)`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const StyledLabel = styled(Text)<\n Partial<StyleProps> & {\n labelPosition: LabelPositionOptions;\n }\n>`\n ${({ theme, labelPosition }) => {\n if (labelPosition === 'right')\n return css`\n margin-left: ${theme?.spacing.centi};\n `;\n else if (labelPosition === 'left')\n return css`\n margin-right: ${theme?.spacing.centi};\n `;\n }}\n`;\n"],"names":[],"mappings":";;;;AAKa,MAAA,UAAA,GAAa,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAMxB,MAAA,WAAA,GAAc,OAAO,IAAI,CAAA,CAAA;AAAA,EAAA,EAKlC,CAAC,EAAE,KAAO,EAAA,aAAA,EAAoB,KAAA;AAC9B,EAAA,IAAI,aAAkB,KAAA,OAAA;AACpB,IAAO,OAAA,GAAA,CAAA;AAAA,qBACU,EAAA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,MAAA,CAAA,CAAA;AAAA,OAAA,IAE9B,aAAkB,KAAA,MAAA;AACzB,IAAO,OAAA,GAAA,CAAA;AAAA,sBACW,EAAA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,MAAA,CAAA,CAAA;AAE1C,CAAC,CAAA;AAAA;;;;"}
|
|
@@ -5,7 +5,6 @@ import { Button } from '../../atoms/Button/Button.js';
|
|
|
5
5
|
import Text from '../../atoms/Text/Text.js';
|
|
6
6
|
import Header from '../../atoms/Header/Header.js';
|
|
7
7
|
import Input from '../../atoms/Input/Input.js';
|
|
8
|
-
import '../../atoms/Modal/ModalGroupManager.js';
|
|
9
8
|
import { ModalView } from '../../atoms/Modal/ui/BaseModalView.js';
|
|
10
9
|
import 'uuid';
|
|
11
10
|
import { getStyledModal, TextTitleModal, SearchBarContainer, SelectIcon, FetchIndicator, ModalFooter, ListItem, StyledTextItemSelect } from './styled.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["options","value","selectedValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["options","value","selectedValues"],"mappings":";;;;;;;;;;;AA8BA,MAAM,YAAY,CAAwC;AAAA,EACxD,OAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,yBAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG,MAAA;AACL,CAA8E,KAAA;AAC5E,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,IAAI,KAAM,CAAA,QAAA,CAAiB,EAAE,CAAA,CAAA;AACrE,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAA,iBAAA,CAA0B,IAAI,QAAQ,CAAA,CAAA;AACxE,EAAA,MAAM,iBAAiB,KAAM,CAAA,OAAA;AAAA,IAC3B,MAAM,cAAA,CAAe,kBAAmB,CAAA,IAAI,CAAC,CAAA;AAAA,IAC7C,EAAC;AAAA,GACH,CAAA;AACA,EAAM,MAAA,YAAA,GAAe,eAAe,IAAS,KAAA,QAAA,CAAA;AAI7C,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,iBAAA;AAAA,MACG,QAAS,IAAS,KAAA,OAAA,GAAU,QAAQ,CAAC,KAAK,IAAK,EAAC;AAAA,KACnD,CAAA;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,OAAA,EAAS,iBAAiB,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,UAAU,KAAM,CAAA,WAAA;AAAA,IACpB,CAACA,QAAoB,KAAA;AACnB,MAAA,OAAOA,QAAS,EAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAW,MAAA;AAAA,QACtC,GAAG,MAAA;AAAA,QACH,QACE,EAAA,IAAA,KAAS,OACL,GAAA,CAAC,CAAC,cAAe,CAAA,IAAA;AAAA,UACf,CAAAC,WACE,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAK,IAAA,YAAA,CAAaA,QAAO,KAAK,CAAA;AAAA,SAC5D,GACA,YAAc,CAAA,cAAA,CAAe,CAAC,CAAA,IAAK,EAAC,EAAY,KAAK,CAAA,IACrD,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,OAChC,CAAA,CAAA,CAAA;AAAA,KACJ;AAAA,IACA,CAAC,YAAc,EAAA,cAAA,EAAgB,IAAI,CAAA;AAAA,GACrC,CAAA;AAEA,EAAA,MAAM,OAAO,KAAM,CAAA,OAAA;AAAA,IACjB,MAAO,OAAO,OAAA,KAAY,aAAa,OAAQ,CAAA,OAAO,IAAI,EAAC;AAAA,IAC3D,CAAC,SAAS,OAAO,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,kBAAkB,KAAM,CAAA,WAAA;AAAA,IAC5B,CAAC,MAAiB,KAAA;AAChB,MAAA,iBAAA,CAAkB,CAAAC,eAAkB,KAAA;AAClC,QAAA,IAAI,SAAS,OAAS,EAAA;AACpB,UAAA,MAAM,SAAiB,EAAC,CAAA;AACxB,UAAA,IAAI,KAAQ,GAAA,KAAA,CAAA;AACZ,UAAA,KAAA,MAAWD,UAASC,eAAgB,EAAA;AAClC,YAAA,IAAI,YAAaD,CAAAA,MAAK,CAAK,IAAA,YAAA,CAAa,MAAM,CAAA;AAAG,cAAA,MAAA,CAAO,KAAKA,MAAK,CAAA,CAAA;AAAA;AAC7D,cAAQ,KAAA,GAAA,IAAA,CAAA;AAAA,WACf;AACA,UAAA,IAAI,CAAC,KAAA;AAAO,YAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAC9B,UAAO,OAAA,MAAA,CAAA;AAAA,SACT;AACA,QAAA,OAAO,YAAcC,CAAAA,eAAAA,CAAe,CAAC,CAAA,IAAK,EAAW,CACnD,KAAA,YAAA,CAAa,MAAM,CAAA,GACjB,EAAC,GACD,CAAC,MAAM,CAAA,CAAA;AAAA,OACZ,CAAA,CAAA;AAAA,KACH;AAAA,IACA,CAAC,cAAA,EAAgB,iBAAmB,EAAA,YAAA,EAAc,IAAI,CAAA;AAAA,GACxD,CAAA;AAEA,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,gBAAgB,cAAe,CAAA,CAAC,KAAK,cAAe,CAAA,CAAC,MAAM,KAAO,EAAA;AACpE,MAAc,aAAA,EAAA,CAAA;AAAA,KAChB;AAAA,KACC,CAAC,cAAA,CAAe,CAAC,CAAG,EAAA,KAAA,EAAO,WAAW,CAAC,CAAA,CAAA;AAE1C,EAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,WAAA,CAAY,MAAM;AAG5C,IAAA,QAAA;AAAA,MACG,IAAS,KAAA,QAAA,GAAW,cAAe,CAAA,CAAC,CAAI,GAAA,cAAA;AAAA,KAC3C,CAAA;AACA,IAAQ,KAAA,IAAA,CAAA;AAAA,GACV,EAAG,CAAC,cAAc,CAAC,CAAA,CAAA;AAEnB,EAAA,MAAM,gBAAgB,KAAM,CAAA,WAAA;AAAA,IAC1B,CAAC,EAAE,IAAA,EACD,qBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,IAAA;AAAA,QACA,eAAA;AAAA,QACA,cAAA;AAAA,OAAA;AAAA,KACF;AAAA,IAEF,EAAC;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,aAAa,IAAK,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,CAAE,CAAA,MAAA,CAAA;AACtD,EAAA,MAAM,oBAAoB,IAAK,CAAA,MAAA,CAAA;AAE/B,EAAA,MAAM,mBAAmB,KAAM,CAAA,OAAA;AAAA,IAC7B,sBACE,KAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,YAAA;AAAA,QACA,gBAAkB,EAAA,GAAA;AAAA,QAClB,UAAY,EAAA,aAAA;AAAA,OAAA;AAAA,KACd;AAAA,IAEF,CAAC,cAAgB,EAAA,UAAA,EAAY,iBAAiB,CAAA;AAAA,GAChD,CAAA;AAEA,EAAA,MAAM,iBAAiB,gBACrB,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,UAAW,EAAA,IAAA;AAAA,MACX,UAAW,EAAA,MAAA;AAAA,MACX,aAAe,EAAA,CAAA;AAAA,MACf,KAAO,EAAA,EAAE,QAAU,EAAA,OAAA,CAAQ,GAAG,CAAE,EAAA;AAAA,KAAA;AAAA,IAE/B,gBAAA;AAAA,GAED,GAAA,IAAA,CAAA;AAEJ,EAAM,MAAA,aAAA,GAAgB,4BAClB,yBACA,GAAA,cAAA,CAAA;AAEJ,EAAA,2CACG,SAAW,EAAA,EAAA,GAAG,QAAQ,YAAc,EAAA,cAAA,EAAgB,cAAc,KACjE,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,KAAA;AAAA,QACT,IAAM,EAAA;AAAA,UACJ,IAAM,EAAA,OAAA;AAAA,UACN,IAAM,EAAA,oBAAA;AAAA,UACN,SAAW,EAAA,OAAA;AAAA,SACb;AAAA,OACF;AAAA,KAAA;AAAA,IAEC,aAAA;AAAA,GAGF,EAAA,CAAC,aACA,oBAAA,KAAA,CAAA,aAAA,CAAC,kBACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA,oBAAA;AAAA,MACb,KAAO,EAAA,SAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,aAAA,sCACG,UAAW,EAAA,EAAA,IAAA,EAAK,UAAS,IAAK,EAAA,SAAA,EAAU,MAAK,OAAQ,EAAA,CAAA;AAAA,KAAA;AAAA,GAG5D,CAGD,EAAA,OAAA,oBACE,KAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,WAAW,IAAM,EAAA,KAAA,EAAO,MAAQ,EAAA,IAAA,EAAM,SAAS,CAGhE,EAAA,gBAAA,EAEA,CAAC,YAAA,wCACC,WACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,QAAA;AAAA,MACT,KAAO,EAAA,SAAA;AAAA,MACP,OAAS,EAAA,aAAA;AAAA,MACT,QAAU,EAAA,OAAA;AAAA,KAAA;AAAA,wCAET,IAAK,EAAA,EAAA,SAAA,EAAW,OAAS,EAAA,UAAA,EAAW,UAClC,iBACH,CAAA;AAAA,GAEJ,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AASA,MAAM,iBAAiB,CAAK;AAAA,EAC1B,eAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AACF,CAA+B,KAAA;AAC7B,EAAO,OAAA,KAAA,CAAM,QAAQ,MAAM;AACzB,IAAM,MAAA,KAAA,GAAQ,eAAe,IAAI,CAAA,CAAA;AACjC,IAAA,uBACG,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,OAAS,EAAA,MAAM,eAAgB,CAAA,IAAI,CAC3C,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,aAAA,EAAe,MAClB,EAAA,EAAA,IAAA,KAAS,OACR,mBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEd,KAAA,CAAA,aAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGF,mBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEd,KAAA,CAAA,aAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGN,CACF,CAAA,CAAA;AAAA,GAED,EAAA,CAAC,IAAK,CAAA,QAAQ,CAAC,CAAA,CAAA;AACpB,CAAA,CAAA;AAEO,MAAM,KAAQ,GAAA;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useInputFocus, HintInputContainer } from '@tecsinapse/react-core';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
|
-
import '../../atoms/Modal/ModalGroupManager.js';
|
|
5
4
|
import 'react-native';
|
|
6
5
|
import 'react-native-safe-area-context';
|
|
7
6
|
import '../../atoms/Modal/ui/styled.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[])?.length) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["options"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[])?.length) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["options"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n disabledInputStyles,\n Icon,\n InputContainerProps,\n PressableSurface,\n PressableSurfaceProps,\n RFValue,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { ActivityIndicator, ModalProps, View, ViewProps } from 'react-native';\nimport { Input, InputNativeProps } from '../../atoms/Input';\nimport { Text } from '../../atoms/Text';\n\nexport const getStyledModal = (safeTop = 0) => {\n return styled(View)<ModalProps & Partial<StyleProps>>`\n padding-top: ${`${RFValue(safeTop)}px`};\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n height: 100%;\n `;\n};\n\nexport const StyledSelectionText = styled(Text)(\n (props: Partial<InputContainerProps> & Partial<StyleProps>) => css`\n line-height: ${props.theme?.typography.h5.lineHeight};\n ${disabledInputStyles(props)};\n `\n);\n\nexport const Dummy = styled(View)`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const StyledPressableSurface = styled(\n PressableSurface\n)<PressableSurfaceProps>`\n width: 100%;\n`;\n\nexport const Header = styled(View)<ViewProps & Partial<StyleProps>>`\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: ${({ theme }) => theme.spacing.deca};\n height: ${RFValueStr('75px')};\n`;\n\nexport const CloseButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const SearchBarContainer = styled(View)<ViewProps & Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.deca};\n position: relative;\n`;\n\nexport const SearchBar = styled(Input)<InputNativeProps & Partial<StyleProps>>`\n margin-bottom: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ListItem = styled(PressableSurface)<\n PressableSurfaceProps & Partial<StyleProps>\n>`\n border-bottom-width: ${RFValueStr('1px')};\n border-color: ${({ theme }) => theme.color.secondary.light};\n padding-vertical: ${({ theme }) => theme.spacing.mili};\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ModalFooter = styled(View)<Partial<StyleProps>>`\n width: 100%;\n height: auto;\n bottom: 0;\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n padding: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const SelectIcon = styled(Icon)<Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.centi};\n color: ${({ theme }) => theme.color.secondary.medium};\n`;\n\nexport const FetchIndicator = styled(ActivityIndicator)`\n align-self: center;\n`;\n\nexport const TextTitleModal = styled(Text)<Partial<StyleProps>>`\n text-align: center;\n`;\nexport const StyledTextItemSelect = styled(Text)`\n width: 90%;\n`;\n"],"names":[],"mappings":";;;;;;AAiBa,MAAA,cAAA,GAAiB,CAAC,OAAA,GAAU,CAAM,KAAA;AAC7C,EAAA,OAAO,OAAO,IAAI,CAAA,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.ts"],"sourcesContent":["import styled, { css } from '@emotion/native';\nimport {\n Button,\n ButtonProps,\n disabledInputStyles,\n Icon,\n InputContainerProps,\n PressableSurface,\n PressableSurfaceProps,\n RFValue,\n RFValueStr,\n StyleProps,\n} from '@tecsinapse/react-core';\nimport { ActivityIndicator, ModalProps, View, ViewProps } from 'react-native';\nimport { Input, InputNativeProps } from '../../atoms/Input';\nimport { Text } from '../../atoms/Text';\n\nexport const getStyledModal = (safeTop = 0) => {\n return styled(View)<ModalProps & Partial<StyleProps>>`\n padding-top: ${`${RFValue(safeTop)}px`};\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n height: 100%;\n `;\n};\n\nexport const StyledSelectionText = styled(Text)(\n (props: Partial<InputContainerProps> & Partial<StyleProps>) => css`\n line-height: ${props.theme?.typography.h5.lineHeight};\n ${disabledInputStyles(props)};\n `\n);\n\nexport const Dummy = styled(View)`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const StyledPressableSurface = styled(\n PressableSurface\n)<PressableSurfaceProps>`\n width: 100%;\n`;\n\nexport const Header = styled(View)<ViewProps & Partial<StyleProps>>`\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: ${({ theme }) => theme.spacing.deca};\n height: ${RFValueStr('75px')};\n`;\n\nexport const CloseButton = styled(Button)<ButtonProps & Partial<StyleProps>>`\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const SearchBarContainer = styled(View)<ViewProps & Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.deca};\n position: relative;\n`;\n\nexport const SearchBar = styled(Input)<InputNativeProps & Partial<StyleProps>>`\n margin-bottom: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ListItem = styled(PressableSurface)<\n PressableSurfaceProps & Partial<StyleProps>\n>`\n border-bottom-width: ${RFValueStr('1px')};\n border-color: ${({ theme }) => theme.color.secondary.light};\n padding-vertical: ${({ theme }) => theme.spacing.mili};\n padding-horizontal: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const ModalFooter = styled(View)<Partial<StyleProps>>`\n width: 100%;\n height: auto;\n bottom: 0;\n background-color: ${({ theme }) => theme.miscellaneous.bodyColor};\n padding: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const SelectIcon = styled(Icon)<Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.centi};\n color: ${({ theme }) => theme.color.secondary.medium};\n`;\n\nexport const FetchIndicator = styled(ActivityIndicator)`\n align-self: center;\n`;\n\nexport const TextTitleModal = styled(Text)<Partial<StyleProps>>`\n text-align: center;\n`;\nexport const StyledTextItemSelect = styled(Text)`\n width: 90%;\n`;\n"],"names":[],"mappings":";;;;;;AAiBa,MAAA,cAAA,GAAiB,CAAC,OAAA,GAAU,CAAM,KAAA;AAC7C,EAAA,OAAO,OAAO,IAAI,CAAA,CAAA;AAAA,iBAAA,EACD,CAAG,EAAA,OAAA,CAAQ,OAAO,CAAC,CAAI,EAAA,CAAA,CAAA;AAAA,sBAAA,EAClB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,cAAc,SAAS,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAGpE,EAAA;AAEa,MAAA,mBAAA,GAAsB,OAAO,IAAI,CAAA;AAAA,EAC5C,CAAC,KAA8D,KAAA,GAAA,CAAA;AAAA,iBAAA,EAC9C,KAAM,CAAA,KAAA,EAAO,UAAW,CAAA,EAAA,CAAG,UAAU,CAAA;AAAA,IAClD,EAAA,mBAAA,CAAoB,KAAK,CAAC,CAAA;AAAA,EAAA,CAAA;AAEhC,EAAA;AAEqB,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAKM,MAAA;AAAA,EACpC,gBAAA;AACF,CAAA,CAAA;AAAA;AAAA,EAAA;AAIsB,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAOpB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,UAClC,EAAA,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,EAAA;AAGH,OAAO,MAAM,CAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAK3B,MAAA,kBAAA,GAAqB,OAAO,IAAI,CAAA,CAAA;AAAA,WAAA,EAChC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;AAAA,EAAA;AAIrB,OAAO,KAAK,CAAA,CAAA;AAAA,iBAAA,EAClB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,EAAA;AAGvC,MAAA,QAAA,GAAW,OAAO,gBAAgB,CAAA,CAAA;AAAA,uBAGtB,EAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,gBAAA,EACxB,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,oBAAA,EACtC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,sBAAA,EAC/B,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,EAAA;AAG5C,MAAA,WAAA,GAAc,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,oBAAA,EAIhB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,cAAc,SAAS,CAAA;AAAA,WAAA,EACrD,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,EAAA;AAGjC,MAAA,UAAA,GAAa,OAAO,IAAI,CAAA,CAAA;AAAA,WAAA,EACxB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,SAAA,EACpC,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AAAA,EAAA;AAGzC,MAAA,cAAA,GAAiB,OAAO,iBAAiB,CAAA,CAAA;AAAA;AAAA,EAAA;AAIzC,MAAA,cAAA,GAAiB,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA,EAAA;AAG5B,MAAA,oBAAA,GAAuB,OAAO,IAAI,CAAA,CAAA;AAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Snackbar/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { Snackbar as SnackbarCore, StyleProps } from '@tecsinapse/react-core';\n\nexport const SnackbarStyled = styled(SnackbarCore)<Partial<StyleProps>>`\n left: ${({ theme }) => theme.spacing.deca};\n right: ${({ theme }) => theme.spacing.deca};\n`;\n"],"names":["SnackbarCore"],"mappings":";;;AAGa,MAAA,cAAA,GAAiB,OAAOA,QAAY,CAAA,CAAA;AAAA,QAAA,EACvC,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Snackbar/styled.ts"],"sourcesContent":["import styled from '@emotion/native';\nimport { Snackbar as SnackbarCore, StyleProps } from '@tecsinapse/react-core';\n\nexport const SnackbarStyled = styled(SnackbarCore)<Partial<StyleProps>>`\n left: ${({ theme }) => theme.spacing.deca};\n right: ${({ theme }) => theme.spacing.deca};\n`;\n"],"names":["SnackbarCore"],"mappings":";;;AAGa,MAAA,cAAA,GAAiB,OAAOA,QAAY,CAAA,CAAA;AAAA,QAAA,EACvC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,SAAA,EAChC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tecsinapse/react-native-kit",
|
|
3
3
|
"description": "TecSinapse React Native components",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.4",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
7
7
|
"module": "dist/esm/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@emotion/native": "~11.10.0",
|
|
24
24
|
"@emotion/react": "~11.10.0",
|
|
25
|
-
"@tecsinapse/react-core": "2.0.
|
|
25
|
+
"@tecsinapse/react-core": "2.0.3",
|
|
26
26
|
"react-native-linear-gradient": "~2.6.2"
|
|
27
27
|
},
|
|
28
28
|
"repository": {
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/uuid": "^8.3.3"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "084057983f2c20e5a93fbce93e3fb2aede1c79e2"
|
|
49
49
|
}
|