/* Metro module 1679; source: unknown; dependencies: [1669, 1662, 1614, 1651, 1635, 1666, 1680, 1696, 1620, 1697, 1698, 1703] */ function _fun18352(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#18352, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:6, offset: 0x00e898d0, size: 203 bytes, params: 8, frame: 18 const env0_0 = require; const getRandomDelay = function() { var r5; var value = 1000; r5 = arguments.length > 0 ? arguments[0] === undefined ? value : arguments[0] : value; var Math = global.Math; var Math2 = global.Math; return Math.floor(Math2.random() * (r5 + 1)) / value; }; const getCallbackFromConfig = function(a0) { return a0.callbackV === undefined ? null : a0.callbackV; }; const getReversedFromConfig = function(a0) { return !!a0.reversed; }; const closure = saveSnapshot; const closure2 = setElementAnimation; const getElementScrollValue = function(a0) { var r2; var r3; var parentElement; var value = a0; var object = {'scrollTopOffset': 0, 'scrollLeftOffset': 0}; if (value) { r2 = value; while (true) { value = r2.scrollTop !== 0; r3 = value && object.scrollTopOffset === 0; if (!r3) { continue; } object.scrollTopOffset = r2.scrollTop; value = r2.scrollLeft !== 0; if (!value) { r3 = value; continue; } value = object.scrollLeftOffset === 0; r3 = value; if (!r3) { continue; } object.scrollLeftOffset = r2.scrollLeft; parentElement = r2.parentElement; if (parentElement) { r2 = parentElement; continue; } break; } } return object; }; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); exports.getReducedMotionFromConfig = getReducedMotionFromConfig; exports.getProcessedConfig = function(a0, a1, a2) { var object = {animationName: a0, animationType: a1}; object.duration = getDurationFromConfig(a2, a0); object.delay = getDelayFromConfig(a2); object.easing = getEasingFromConfig(a2); object.callback = getCallbackFromConfig(a2); object.reversed = getReversedFromConfig(a2); return object; }; exports.maybeModifyStyleForKeyframe = maybeModifyStyleForKeyframe; exports.saveSnapshot = closure; exports.setElementAnimation = closure2; exports.handleLayoutTransition = handleLayoutTransition; exports.handleExitingAnimation = handleExitingAnimation; } function getEasingFromConfig(a0) { // fn#18353, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:43, offset: 0x00e8999b, size: 233 bytes, params: 2, frame: 18 var r0; var property; var value2; var moduleValue; var maybeGetBezierEasing; var value3; let easingV = a0.easingV; var value; if (easingV) { easingV = a0.easingV; property = easingV[(require(1662) /* metro dependency 1662 */).EasingNameSymbol]; value2 = property in (require(1669) /* metro dependency 1669 */).WebEasings; moduleValue = require(1669) /* metro dependency 1669 */; if (value2) { return moduleValue.getEasingByName(property); } maybeGetBezierEasing = moduleValue.maybeGetBezierEasing; easingV = a0.easingV; value3 = Reflect.apply(maybeGetBezierEasing, moduleValue, [easingV]); if (value3) { r0 = value3; } else { (require(1614) /* metro dependency 1614 */).logger.warn('Selected easing is not currently supported on web. Using linear easing instead.'); value = require(1669) /* metro dependency 1669 */; value = value.getEasingByName('linear'); r0 = value; } return r0; } return (require(1669) /* metro dependency 1669 */).getEasingByName('linear'); } function getDelayFromConfig(a0) { // fn#18355, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:562, offset: 0x00e89ae0, size: 82 bytes, params: 2, frame: 13 const randomizeDelay = a0.randomizeDelay; let r0 = randomizeDelay ? getRandomDelay() : 0; r0 = a0.delayV ? randomizeDelay ? getRandomDelay(a0.delayV) : a0.delayV / 1000 : r0; return r0; } function getDurationFromConfig(a0, a1) { // fn#18356, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:697, offset: 0x00e89b32, size: 114 bytes, params: 3, frame: 15 const Animations = (require(1666) /* metro dependency 1666 */).Animations; return a0.durationV === undefined ? a1 in Animations ? Animations[a1].duration : 0.3 : a0.durationV / 1000; } function saveSnapshot(a0) { // fn#18359, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:975, offset: 0x00e89bce, size: 109 bytes, params: 2, frame: 15 const boundingClientRect = a0.getBoundingClientRect(); const object2 = {}; object2.top = boundingClientRect.top; object2.left = boundingClientRect.left; object2.width = boundingClientRect.width; object2.height = boundingClientRect.height; object2.scrollOffsets = getElementScrollValue(a0); (require(1696) /* metro dependency 1696 */).snapshots.set(a0, object2); } function setElementAnimation(a0, a1) { // fn#18360, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:1154, offset: 0x00e89c3b, size: 327 bytes, params: 3, frame: 22 const env0_0 = a0; const env0_1 = a1; let r2 = arguments.length > 2 && arguments[2] !== undefined && arguments[2]; value = null; r2 = arguments.length > 3 ? arguments[3] === undefined ? value : arguments[3] : value; const animationName = a1.animationName; const duration = a1.duration; const delay = a1.delay; const env0_7 = a1.easing; const closure = configureAnimation; const animationType = a1.animationType; const LayoutAnimationType = (require(1635) /* metro dependency 1635 */).LayoutAnimationType; const ENTERING = LayoutAnimationType.ENTERING; if (animationType === ENTERING) { global.requestAnimationFrame(closure); } else { closure(); } a0.onanimationend = onanimationend; a0.onanimationstart = onanimationstart; const Animations = (require(1666) /* metro dependency 1666 */).Animations; if (!(animationName in Animations)) { value = require(1697) /* metro dependency 1697 */; value.scheduleAnimationCleanup(animationName, duration + delay, _fun18367); } } function getReducedMotionFromConfig(a0) { // fn#18369, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:2658, offset: 0x00e8a04f, size: 170 bytes, params: 2, frame: 14 const ReducedMotionManager = (require(1651) /* metro dependency 1651 */).ReducedMotionManager; const ReduceMotion = (require(1635) /* metro dependency 1635 */).ReduceMotion; let reduceMotionV = a0.reduceMotionV; if (reduceMotionV) { reduceMotionV = a0.reduceMotionV; if (ReduceMotion.Never === reduceMotionV) { return false; } if (ReduceMotion.Always === reduceMotionV) { return true; } } return ReducedMotionManager.jsValue; } function maybeModifyStyleForKeyframe(a0, a1) { // fn#18371, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:3211, offset: 0x00e8a15b, size: 168 bytes, params: 3, frame: 17 var r2; var value; var Keyframe; var style; var Object; var values; var definitions; var iterator; var iterator2; var item; var item2; var error; exceptionSkip13: while (true) { exceptionLanding13: while (true) { value = environment; Keyframe = (require(1680) /* metro dependency 1680 */).Keyframe; if (a1 instanceof Keyframe) { style = a0.style; style.animationFillMode = 'forwards'; Object = global.Object; values = Object.values; definitions = a1.definitions; iterator = Reflect.apply(values, Object, [definitions])[Symbol.iterator](); iterator2 = iterator.next; r2 = iterator; loopExit2: while (true) { item2 = Reflect.apply(iterator2, r2, []); item = item2.value; item2 = item2.done ? undefined : r2; if (item2 === undefined) { return undefined; } try { value = 'originX' in item; } catch (error) { break exceptionLanding13; } if (value) { break loopExit2; } try { value = 'originY' in item; } catch (error) { break exceptionLanding13; } if (value) { break loopExit2; } r2 = item2; continue; } try { style = a0.style; } catch (error) { break exceptionLanding13; } try { style.position = 'absolute'; } catch (error) { break exceptionLanding13; } item2.return(); return undefined; } return undefined; break exceptionSkip13; } try { item2.return(); } catch { } throw error; break exceptionSkip13; } } function handleLayoutTransition(a0, a1, a2) { // fn#18372, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:3535, offset: 0x00e8a203, size: 475 bytes, params: 4, frame: 21 const TransitionType = (require(1666) /* metro dependency 1666 */).TransitionType; var value3; const animationName = a1.animationName; const r4 = animationName === 'LinearTransition' ? TransitionType.LINEAR : animationName === 'SequencedTransition' ? TransitionType.SEQUENCED : animationName === 'FadingTransition' ? TransitionType.FADING : animationName === 'JumpingTransition' ? TransitionType.JUMPING : animationName === 'CurvedTransition' ? TransitionType.CURVED : animationName !== 'EntryExitTransition' ? TransitionType.LINEAR : TransitionType.ENTRY_EXIT; const {transitionKeyframeName, dummyTransitionKeyframeName} = (require(1698) /* metro dependency 1698 */).TransitionGenerator(r4, a2); a1.animationName = transitionKeyframeName; const CURVED = TransitionType.CURVED; if (r4 === CURVED) { value3 = (require(1703) /* metro dependency 1703 */).prepareCurvedTransition(a0, a1, a2, dummyTransitionKeyframeName); setElementAnimation(value3.dummy, value3.dummyAnimationConfig); } setElementAnimation(a0, a1); } function handleExitingAnimation(a0, a1) { // fn#18373, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:4293, offset: 0x00e8a3de, size: 391 bytes, params: 3, frame: 21 var appendChild; var top; var left; const env0_0 = a0; const offsetParent = a0.offsetParent; const value = a0.cloneNode(); value.isDummy = true; value.style.animationName = ''; a0.dummyClone = value; a0.style.animationName = ''; const Map = global.Map; const map = new Map(); saveScrollPosition(a0); let firstChild = a0.firstChild; if (firstChild) { reducibleLoop1: while (true) { appendChild = value.appendChild; firstChild = a0.firstChild; Reflect.apply(appendChild, value, [firstChild]); firstChild = a0.firstChild; if (firstChild) { continue reducibleLoop1; } break reducibleLoop1; } } reducibleJoin4: while (true) { if (offsetParent == null) { break reducibleJoin4; } appendChild = offsetParent.appendChild; Reflect.apply(appendChild, offsetParent, [value]); break reducibleJoin4; } restoreScrollPosition(value); const snapshots = (require(1696) /* metro dependency 1696 */).snapshots; const value5 = snapshots.get(a0); const elementScrollValue = getElementScrollValue(a0); const scrollTopOffset = elementScrollValue.scrollTopOffset; const scrollTopOffset2 = value5.scrollOffsets.scrollTopOffset; reducibleJoin6: while (true) { if (scrollTopOffset === scrollTopOffset2) { break reducibleJoin6; } top = value5.top; value5.top = top + (scrollTopOffset2 - scrollTopOffset); break reducibleJoin6; } const scrollLeftOffset = elementScrollValue.scrollLeftOffset; const scrollLeftOffset2 = value5.scrollOffsets.scrollLeftOffset; reducibleJoin8: while (true) { if (scrollLeftOffset === scrollLeftOffset2) { break reducibleJoin8; } left = value5.left; value5.left = left + (scrollLeftOffset2 - scrollLeftOffset); break reducibleJoin8; } snapshots.set(value, value5); (require(1696) /* metro dependency 1696 */).setElementPosition(value, value5); setElementAnimation(value, a1, false, offsetParent); } function configureAnimation() { // fn#18361, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:1366, owner: setElementAnimation.configureAnimation, offset: 0x00e89d82, size: 119 bytes, params: 1, frame: 17 const binding = env0_0; binding.style.animationName = animationName; binding.style.animationDuration = '' + duration + 's'; binding.style.animationDelay = '' + delay + 's'; binding.style.animationTimingFunction = easing; } function maybeRemoveElement() { // fn#18362, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:1610, owner: setElementAnimation.maybeRemoveElement, offset: 0x00e89df9, size: 82 bytes, params: 1, frame: 13 var binding; if (env0_0.isDummy && env0_3 != null && env0_3.contains(env0_0)) { binding = env0_0; binding.removedAfterAnimation = true; env0_3.removeChild(binding); } } function maybeCallCallback(a0) { // fn#18363, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:1729, owner: setElementAnimation.maybeCallCallback, offset: 0x00e89e4b, size: 54 bytes, params: 2, frame: 12 if (!env0_9 && require.callback) { require.callback(a0); } } function onanimationend() { // fn#18364, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:1814, owner: setElementAnimation.onanimationend, offset: 0x00e89e81, size: 77 bytes, params: 1, frame: 14 var value2; if (env0_2) { value2 = environment.__proto__; saveSnapshot(env0_0); } maybeRemoveElement(); maybeCallCallback(true); const binding = env0_0; binding.removeEventListener('animationcancel', animationCancelHandler); } function animationCancelHandler() { // fn#18365, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:1904, owner: setElementAnimation.animationCancelHandler, offset: 0x00e89ece, size: 52 bytes, params: 1, frame: 14 maybeRemoveElement(); maybeCallCallback(false); const binding = env0_0; binding.removeEventListener('animationcancel', animationCancelHandler); } function onanimationstart() { // fn#18366, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:2011, owner: setElementAnimation.onanimationstart, offset: 0x00e89f02, size: 129 bytes, params: 1, frame: 15 const animationType = require.animationType; const LayoutAnimationType = (require(1635) /* metro dependency 1635 */).LayoutAnimationType; const ENTERING = LayoutAnimationType.ENTERING; if (animationType === ENTERING) { (require(1620) /* metro dependency 1620 */)._updatePropsJS({visibility: 'initial'}, env0_0); } const binding = env0_0; binding.addEventListener('animationcancel', animationCancelHandler); } function _fun18367() { // fn#18367, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:2233, offset: 0x00e89f83, size: 99 bytes, params: 1, frame: 17 var value2; var moduleValue; var setElementPosition; var binding; var snapshots; if (env0_2) { value2 = environment.__proto__; moduleValue = require(1696) /* metro dependency 1696 */; setElementPosition = moduleValue.setElementPosition; binding = env0_0; snapshots = (require(1696) /* metro dependency 1696 */).snapshots; Reflect.apply(setElementPosition, moduleValue, [binding, snapshots.get(binding)]); } maybeRemoveElement(); maybeCallCallback(false); } function saveScrollPosition(a0) { // fn#18374, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:4461, owner: handleExitingAnimation.saveScrollPosition, offset: 0x00e8a565, size: 105 bytes, params: 2, frame: 15 var saveScrollPositionBinding; var error; env0_2.set(a0, {top: a0.scrollTop, left: a0.scrollLeft}); const Array = global.Array; const iterator = Array.from(a0.children)[Symbol.iterator](); const iterator2 = iterator.next; let r2 = iterator; let item2 = Reflect.apply(iterator2, r2, []); let item = item2.value; item2 = item2.done ? undefined : r2; reducibleJoin2: while (true) { if (item2 === undefined) { return undefined; } break reducibleJoin2; } reducibleLoop2: while (true) { try { saveScrollPositionBinding = saveScrollPosition; } catch (error) { try { item2.return(); } catch { } throw error; } try { saveScrollPositionBinding(item); } catch (error) { try { item2.return(); } catch { } throw error; } r2 = item2; item2 = Reflect.apply(iterator2, r2, []); item = item2.value; item2 = item2.done ? undefined : r2; if (item2 === undefined) { break reducibleLoop2; } continue reducibleLoop2; } } function restoreScrollPosition(a0) { // fn#18375, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1806:4663, owner: handleExitingAnimation.restoreScrollPosition, offset: 0x00e8a5ce, size: 122 bytes, params: 2, frame: 14 var r1; var binding2; var top; var left; var restoreScrollPositionBinding; var error; const value = a0; const binding = env0_2; const get = binding.get; reducibleJoin2: while (true) { if (value !== env0_1) { r1 = value; break reducibleJoin2; } binding2 = env0_0; r1 = binding2; break reducibleJoin2; } const value3 = Reflect.apply(get, binding, [r1]); reducibleJoin4: while (true) { if (value3) { top = value3.top; value.scrollTop = top; left = value3.left; value.scrollLeft = left; break reducibleJoin4; } break reducibleJoin4; } const Array = global.Array; const iterator = Array.from(value.children)[Symbol.iterator](); const iterator2 = iterator.next; let r2 = iterator; let item2 = Reflect.apply(iterator2, r2, []); let item = item2.value; item2 = item2.done ? undefined : r2; reducibleJoin6: while (true) { if (item2 === undefined) { return undefined; } break reducibleJoin6; } reducibleLoop6: while (true) { try { restoreScrollPositionBinding = restoreScrollPosition; } catch (error) { try { item2.return(); } catch { } throw error; } try { restoreScrollPositionBinding(item); } catch (error) { try { item2.return(); } catch { } throw error; } r2 = item2; item2 = Reflect.apply(iterator2, r2, []); item = item2.value; item2 = item2.done ? undefined : r2; if (item2 === undefined) { break reducibleLoop6; } continue reducibleLoop6; } }