You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
11 KiB
1 line
11 KiB
{"ast":null,"code":"import * as React from 'react';\nimport View from \"react-native-web/dist/exports/View\";\nvar CSSTransitions = {\n WebkitTransition: 'webkitTransitionEnd',\n Transition: 'transitionEnd',\n MozTransition: 'transitionend',\n MSTransition: 'msTransitionEnd',\n OTransition: 'oTransitionEnd'\n};\nexport function NativeSafeAreaProvider(_ref) {\n var children = _ref.children,\n style = _ref.style,\n onInsetsChange = _ref.onInsetsChange;\n React.useEffect(function () {\n if (typeof document === 'undefined') {\n return;\n }\n var element = createContextElement();\n document.body.appendChild(element);\n var onEnd = function onEnd() {\n var _window$getComputedSt = window.getComputedStyle(element),\n paddingTop = _window$getComputedSt.paddingTop,\n paddingBottom = _window$getComputedSt.paddingBottom,\n paddingLeft = _window$getComputedSt.paddingLeft,\n paddingRight = _window$getComputedSt.paddingRight;\n var insets = {\n top: paddingTop ? parseInt(paddingTop, 10) : 0,\n bottom: paddingBottom ? parseInt(paddingBottom, 10) : 0,\n left: paddingLeft ? parseInt(paddingLeft, 10) : 0,\n right: paddingRight ? parseInt(paddingRight, 10) : 0\n };\n var frame = {\n x: 0,\n y: 0,\n width: document.documentElement.offsetWidth,\n height: document.documentElement.offsetHeight\n };\n onInsetsChange({\n nativeEvent: {\n insets: insets,\n frame: frame\n }\n });\n };\n element.addEventListener(getSupportedTransitionEvent(), onEnd);\n onEnd();\n return function () {\n document.body.removeChild(element);\n element.removeEventListener(getSupportedTransitionEvent(), onEnd);\n };\n }, [onInsetsChange]);\n return React.createElement(View, {\n style: style\n }, children);\n}\nvar _supportedTransitionEvent = null;\nfunction getSupportedTransitionEvent() {\n if (_supportedTransitionEvent != null) {\n return _supportedTransitionEvent;\n }\n var element = document.createElement('invalidtype');\n _supportedTransitionEvent = CSSTransitions.Transition;\n for (var key in CSSTransitions) {\n if (element.style[key] !== undefined) {\n _supportedTransitionEvent = CSSTransitions[key];\n break;\n }\n }\n return _supportedTransitionEvent;\n}\nvar _supportedEnv = null;\nfunction getSupportedEnv() {\n if (_supportedEnv !== null) {\n return _supportedEnv;\n }\n var _window = window,\n CSS = _window.CSS;\n if (CSS && CSS.supports && CSS.supports('top: constant(safe-area-inset-top)')) {\n _supportedEnv = 'constant';\n } else {\n _supportedEnv = 'env';\n }\n return _supportedEnv;\n}\nfunction getInset(side) {\n return getSupportedEnv() + \"(safe-area-inset-\" + side + \")\";\n}\nfunction createContextElement() {\n var element = document.createElement('div');\n var style = element.style;\n style.position = 'fixed';\n style.left = '0';\n style.top = '0';\n style.width = '0';\n style.height = '0';\n style.zIndex = '-1';\n style.overflow = 'hidden';\n style.visibility = 'hidden';\n style.transitionDuration = '0.05s';\n style.transitionProperty = 'padding';\n style.transitionDelay = '0s';\n style.paddingTop = getInset('top');\n style.paddingBottom = getInset('bottom');\n style.paddingLeft = getInset('left');\n style.paddingRight = getInset('right');\n return element;\n}","map":{"version":3,"sources":["NativeSafeAreaProvider.web.tsx"],"names":["React","CSSTransitions","WebkitTransition","Transition","MozTransition","MSTransition","OTransition","NativeSafeAreaProvider","children","style","onInsetsChange","useEffect","document","element","createContextElement","body","appendChild","onEnd","paddingTop","paddingBottom","paddingLeft","paddingRight","window","getComputedStyle","insets","top","parseInt","bottom","left","right","frame","x","y","width","documentElement","offsetWidth","height","offsetHeight","nativeEvent","addEventListener","getSupportedTransitionEvent","removeChild","removeEventListener","_supportedTransitionEvent","createElement","key","undefined","_supportedEnv","getSupportedEnv","CSS","supports","getInset","side","position","zIndex","overflow","visibility","transitionDuration","transitionProperty","transitionDelay"],"mappings":"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","sourceRoot":"../../src","sourcesContent":["/* eslint-env browser */\n\nimport * as React from 'react';\nimport { View } from 'react-native';\n/**\n * TODO:\n * Currently insets and frame are based on the window and are not\n * relative to the provider view. This is inconsistent with iOS and Android.\n * However in most cases if the provider view covers the screen this is not\n * an issue.\n */\n\nconst CSSTransitions = {\n WebkitTransition: 'webkitTransitionEnd',\n Transition: 'transitionEnd',\n MozTransition: 'transitionend',\n MSTransition: 'msTransitionEnd',\n OTransition: 'oTransitionEnd'\n};\nexport function NativeSafeAreaProvider(_ref) {\n let {\n children,\n style,\n onInsetsChange\n } = _ref;\n React.useEffect(() => {\n // Skip for SSR.\n if (typeof document === 'undefined') {\n return;\n }\n const element = createContextElement();\n document.body.appendChild(element);\n const onEnd = () => {\n const {\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight\n } = window.getComputedStyle(element);\n const insets = {\n top: paddingTop ? parseInt(paddingTop, 10) : 0,\n bottom: paddingBottom ? parseInt(paddingBottom, 10) : 0,\n left: paddingLeft ? parseInt(paddingLeft, 10) : 0,\n right: paddingRight ? parseInt(paddingRight, 10) : 0\n };\n const frame = {\n x: 0,\n y: 0,\n width: document.documentElement.offsetWidth,\n height: document.documentElement.offsetHeight\n };\n // @ts-ignore: missing properties\n onInsetsChange({\n nativeEvent: {\n insets,\n frame\n }\n });\n };\n element.addEventListener(getSupportedTransitionEvent(), onEnd);\n onEnd();\n return () => {\n document.body.removeChild(element);\n element.removeEventListener(getSupportedTransitionEvent(), onEnd);\n };\n }, [onInsetsChange]);\n return /*#__PURE__*/React.createElement(View, {\n style: style\n }, children);\n}\nlet _supportedTransitionEvent = null;\nfunction getSupportedTransitionEvent() {\n if (_supportedTransitionEvent != null) {\n return _supportedTransitionEvent;\n }\n const element = document.createElement('invalidtype');\n _supportedTransitionEvent = CSSTransitions.Transition;\n for (const key in CSSTransitions) {\n if (element.style[key] !== undefined) {\n _supportedTransitionEvent = CSSTransitions[key];\n break;\n }\n }\n return _supportedTransitionEvent;\n}\nlet _supportedEnv = null;\nfunction getSupportedEnv() {\n if (_supportedEnv !== null) {\n return _supportedEnv;\n }\n const {\n CSS\n } = window;\n if (CSS && CSS.supports && CSS.supports('top: constant(safe-area-inset-top)')) {\n _supportedEnv = 'constant';\n } else {\n _supportedEnv = 'env';\n }\n return _supportedEnv;\n}\nfunction getInset(side) {\n return `${getSupportedEnv()}(safe-area-inset-${side})`;\n}\nfunction createContextElement() {\n const element = document.createElement('div');\n const {\n style\n } = element;\n style.position = 'fixed';\n style.left = '0';\n style.top = '0';\n style.width = '0';\n style.height = '0';\n style.zIndex = '-1';\n style.overflow = 'hidden';\n style.visibility = 'hidden';\n // Bacon: Anything faster than this and the callback will be invoked too early with the wrong insets\n style.transitionDuration = '0.05s';\n style.transitionProperty = 'padding';\n style.transitionDelay = '0s';\n style.paddingTop = getInset('top');\n style.paddingBottom = getInset('bottom');\n style.paddingLeft = getInset('left');\n style.paddingRight = getInset('right');\n return element;\n}\n//# sourceMappingURL=NativeSafeAreaProvider.web.js.map"]},"metadata":{},"sourceType":"module"} |