From 2063e716f5c15f6f2f915df695242278e099e4f1 Mon Sep 17 00:00:00 2001 From: akinwale Date: Sun, 11 Mar 2018 16:32:13 +0100 Subject: [PATCH] Splash screen, discover and file Pages (#30) --- .travis.yml | 4 +- app/bundle.sh | 2 +- app/package-lock.json | 7101 +- app/package.json | 17 +- app/patch/ReactNativeRenderer-dev.js.patch | 13009 +++ app/src/component/AppNavigator.js | 84 + app/src/component/featuredCategory/index.js | 7 + app/src/component/featuredCategory/view.js | 27 + app/src/component/fileItem/index.js | 25 + app/src/component/fileItem/view.js | 71 + app/src/component/fileItemMedia/index.js | 7 + app/src/component/fileItemMedia/view.js | 56 + app/src/component/filePrice/index.js | 20 + app/src/component/filePrice/view.js | 120 + app/src/index.js | 116 + app/src/page/discover/index.js | 14 + app/src/page/discover/view.js | 44 + app/src/page/file/index.js | 34 + app/src/page/file/view.js | 79 + app/src/page/splash/index.js | 7 + app/src/page/splash/view.js | 97 + app/src/styles/discover.js | 60 + app/src/styles/fileItemMedia.js | 57 + app/src/styles/filePage.js | 55 + app/src/styles/splash.js | 34 + app/src/utils/redux.js | 15 + build.sh | 2 +- deploy.sh | 6 + .../build/templates/AndroidManifest.tmpl.xml | 2 + src/main/assets/fonts/Feather.ttf | Bin 0 -> 55288 bytes src/main/assets/index.android.bundle | 79974 +++++++++++++++- src/main/assets/index.android.bundle.meta | 2 +- .../java/io/lbry/lbrynet/MainActivity.java | 58 +- ...ctnavigation_src_views_assets_backicon.png | Bin 0 -> 134 bytes ...ctnavigation_src_views_assets_backicon.png | Bin 0 -> 100 bytes ...vigation_src_views_assets_backiconmask.png | Bin 0 -> 1887 bytes ...ctnavigation_src_views_assets_backicon.png | Bin 0 -> 134 bytes ...ctnavigation_src_views_assets_backicon.png | Bin 0 -> 167 bytes ...ctnavigation_src_views_assets_backicon.png | Bin 0 -> 207 bytes 39 files changed, 100386 insertions(+), 820 deletions(-) create mode 100644 app/patch/ReactNativeRenderer-dev.js.patch create mode 100644 app/src/component/AppNavigator.js create mode 100644 app/src/component/featuredCategory/index.js create mode 100644 app/src/component/featuredCategory/view.js create mode 100644 app/src/component/fileItem/index.js create mode 100644 app/src/component/fileItem/view.js create mode 100644 app/src/component/fileItemMedia/index.js create mode 100644 app/src/component/fileItemMedia/view.js create mode 100644 app/src/component/filePrice/index.js create mode 100644 app/src/component/filePrice/view.js create mode 100644 app/src/index.js create mode 100644 app/src/page/discover/index.js create mode 100644 app/src/page/discover/view.js create mode 100644 app/src/page/file/index.js create mode 100644 app/src/page/file/view.js create mode 100644 app/src/page/splash/index.js create mode 100644 app/src/page/splash/view.js create mode 100644 app/src/styles/discover.js create mode 100644 app/src/styles/fileItemMedia.js create mode 100644 app/src/styles/filePage.js create mode 100644 app/src/styles/splash.js create mode 100644 app/src/utils/redux.js create mode 100755 deploy.sh create mode 100755 src/main/assets/fonts/Feather.ttf create mode 100644 src/main/res/drawable-hdpi/node_modules_reactnavigation_src_views_assets_backicon.png create mode 100644 src/main/res/drawable-mdpi/node_modules_reactnavigation_src_views_assets_backicon.png create mode 100644 src/main/res/drawable-mdpi/node_modules_reactnavigation_src_views_assets_backiconmask.png create mode 100644 src/main/res/drawable-xhdpi/node_modules_reactnavigation_src_views_assets_backicon.png create mode 100644 src/main/res/drawable-xxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png create mode 100644 src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png diff --git a/.travis.yml b/.travis.yml index c0134993..3bc67fc7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ install: - sudo pip install --upgrade cython==0.25.2 pip setuptools - git clone https://github.com/akinwale/buildozer.git - cd app - - npm install --silent --save react@16.0.0 react-native + - npm install --silent --save react@16.2.0 react-native@0.52.0 - cd .. - cd buildozer - sudo python setup.py install @@ -34,5 +34,5 @@ install: - mkdir -p ~/.buildozer/android/platform/android-sdk-23/licenses - echo $'\nd56f5187479451eabf01fb78af6dfcb131a6481e' > ~/.buildozer/android/platform/android-sdk-23/licenses/android-sdk-license script: - - buildozer android debug | grep -Fv -e 'working:' -e 'copy' --line-buffered + - ./build.sh | grep -Fv -e 'working:' -e 'copy' --line-buffered - cp bin/*.apk /dev/null \ No newline at end of file diff --git a/app/bundle.sh b/app/bundle.sh index 4a2fa81b..4f3ac742 100755 --- a/app/bundle.sh +++ b/app/bundle.sh @@ -1,2 +1,2 @@ #!/bin/sh -react-native bundle --platform android --dev false --entry-file index.js --bundle-output ../src/main/assets/index.android.bundle --assets-dest ../src/main/res/ +react-native bundle --platform android --dev false --entry-file src/index.js --bundle-output ../src/main/assets/index.android.bundle --assets-dest ../src/main/res/ diff --git a/app/package-lock.json b/app/package-lock.json index 23fb1785..5299504b 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -4,6 +4,24 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@segment/top-domain": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@segment/top-domain/-/top-domain-3.0.0.tgz", + "integrity": "sha1-AuWlpP1CqfbPiGsF6C8QQBKjw6c=", + "requires": { + "component-cookie": "1.1.3", + "component-url": "0.2.1" + } + }, + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, "absolute-path": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", @@ -14,21 +32,43 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", "requires": { - "mime-types": "2.1.17", + "mime-types": "2.1.18", "negotiator": "0.5.3" } }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "amplitude-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-4.1.0.tgz", + "integrity": "sha512-73WmGchBr14bdYz+omSR9HF/B3W9XpNNScIwjeuNIKZTYpf7xcpOQGvI7PYtpjnm6neyoeYa+Xu+jpN7hbeXAg==", + "requires": { + "@segment/top-domain": "3.0.0", + "blueimp-md5": "2.10.0", + "json3": "3.3.2", + "lodash": "4.17.5", + "ua-parser-js": "github:amplitude/ua-parser-js#ed538f16f5c6ecd8357da989b617d4f156dcf35d" + } + }, "ansi": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", @@ -71,42 +111,23 @@ "normalize-path": "2.1.1" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "arch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.0.tgz", + "integrity": "sha1-NhOqRhSQZLPB8GB5Gb8dR4boKIk=" + }, "are-we-there-yet": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - } + "readable-stream": "2.3.5" } }, "arr-diff": { @@ -172,12 +193,17 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" + }, "async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "asynckit": { @@ -211,7 +237,7 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -223,27 +249,49 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", "slash": "1.0.0", "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "requires": { "babel-messages": "6.23.0", "babel-runtime": "6.26.0", "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -285,7 +333,7 @@ "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-explode-assignable-expression": { @@ -344,7 +392,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -410,7 +458,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-3.0.0.tgz", "integrity": "sha512-4vJGddwPiHAOgshzZdGwYy4zRjjIr5SMY7gkOaCyIASjgpcsyLTlZNuB5rHOFoaTvGlhfo8/g4pobXPyHqm/3w==", "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-plugin-syntax-async-functions": { @@ -499,7 +547,7 @@ "babel-template": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-plugin-transform-es2015-classes": { @@ -748,7 +796,7 @@ "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "semver": "5.4.1" + "semver": "5.5.0" } }, "babel-preset-fbjs": { @@ -833,7 +881,7 @@ "babel-runtime": "6.26.0", "core-js": "2.5.3", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -842,6 +890,19 @@ "version": "2.5.3", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + } } } }, @@ -870,7 +931,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -885,8 +946,18 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.3", + "lodash": "4.17.5" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } } }, "babel-types": { @@ -896,7 +967,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -910,10 +981,15 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base62": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.7.tgz", + "integrity": "sha512-ck0nDbXLEq2nD5jIcEzdpk07sYQ5P6z4NMTIgeQCFr5CCRZzmgUPlOes4o0k5pvEUQJnKO/D079ybzjpjIKf2Q==" + }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==" }, "base64-url": { "version": "1.2.1", @@ -954,6 +1030,29 @@ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.26.tgz", "integrity": "sha1-OvFnL6Ytry1eyvrPblqg0l4Cwcg=" }, + "binary-search": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.3.tgz", + "integrity": "sha512-T/jKp3vw1JI+6KQgsyT5R6CcRhMtxlHojeKrA5gX5WG50BQaoujRfoJJKMkuokNuZ0w2S+1wHufEWzw6Qhj30Q==" + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "requires": { + "readable-stream": "2.3.5" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "blueimp-md5": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.10.0.tgz", + "integrity": "sha512-EkNUOi7tpV68TqjpiUz9D9NcT8um2+qtgntmMbi5UKssVX2m/2PLqotcric0RE63pB3HPN/fjf3cKHN2ufGSUQ==" + }, "body-parser": { "version": "1.13.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", @@ -968,7 +1067,7 @@ "on-finished": "2.3.0", "qs": "4.0.0", "raw-body": "2.1.7", - "type-is": "1.6.15" + "type-is": "1.6.16" }, "dependencies": { "debug": { @@ -988,6 +1087,11 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" } } }, @@ -996,7 +1100,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "bplist-creator": { @@ -1016,9 +1120,9 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1079,6 +1183,21 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + }, + "clamp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", + "integrity": "sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ=" + }, + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -1092,6 +1211,15 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "requires": { + "arch": "2.1.0", + "execa": "0.8.0" + } + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -1100,26 +1228,6 @@ "string-width": "1.0.2", "strip-ansi": "3.0.1", "wrap-ansi": "2.1.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } } }, "clone": { @@ -1142,6 +1250,19 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "codemirror": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.35.0.tgz", + "integrity": "sha512-8HQICjZlDfe1ai7bvU6m2uHxuZuFgsUCdDRU9OHVB+2RTRd+FftN1ezVCqbquG0Fyq+wETqyadKhUX46DswSUQ==" + }, + "codemirror-spell-checker": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz", + "integrity": "sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4=", + "requires": { + "typo-js": "1.0.3" + } + }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -1161,24 +1282,53 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "1.0.0" } }, "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", + "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==" + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "requires": { + "commander": "2.15.0", + "detective": "4.7.1", + "glob": "5.0.15", + "graceful-fs": "4.1.11", + "iconv-lite": "0.4.19", + "mkdirp": "0.5.1", + "private": "0.1.8", + "q": "1.5.1", + "recast": "0.11.23" + } + }, + "component-cookie": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/component-cookie/-/component-cookie-1.1.3.tgz", + "integrity": "sha1-BT4Uo713SBVPVXJP05pgwBmU6+0=", + "requires": { + "debug": "3.1.0" + } + }, + "component-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/component-url/-/component-url-0.2.1.tgz", + "integrity": "sha1-Tk9HmcQ+rZ/TzpG1owXSICCP7kc=" }, "compressible": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", - "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "compression": { @@ -1188,7 +1338,7 @@ "requires": { "accepts": "1.2.13", "bytes": "2.1.0", - "compressible": "2.0.12", + "compressible": "2.0.13", "debug": "2.2.0", "on-headers": "1.0.1", "vary": "1.0.1" @@ -1215,42 +1365,13 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "typedarray": "0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "connect": { @@ -1286,7 +1407,7 @@ "serve-favicon": "2.3.2", "serve-index": "1.7.3", "serve-static": "1.10.3", - "type-is": "1.6.15", + "type-is": "1.6.16", "utils-merge": "1.0.0", "vhost": "3.0.2" }, @@ -1303,6 +1424,11 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" } } }, @@ -1332,6 +1458,11 @@ } } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -1361,15 +1492,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "copy-paste": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz", - "integrity": "sha1-p+bEocKP3t8rCB5yuX3y75X0ce0=", - "requires": { - "iconv-lite": "0.4.19", - "sync-exec": "0.6.2" - } - }, "core-js": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", @@ -1386,9 +1508,9 @@ "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo=" }, "create-react-class": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", - "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", "requires": { "fbjs": "0.8.16", "loose-envify": "1.3.1", @@ -1400,7 +1522,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -1418,7 +1540,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } } } @@ -1458,9 +1580,9 @@ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -1470,6 +1592,29 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-diff": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", + "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=" + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1503,6 +1648,25 @@ "repeating": "2.0.1" } }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "requires": { + "acorn": "5.5.3", + "defined": "1.0.0" + } + }, "dom-walk": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", @@ -1514,6 +1678,29 @@ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "requires": { "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } } }, "ecc-jsbn": { @@ -1530,6 +1717,21 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "electron-dl": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.11.0.tgz", + "integrity": "sha512-iL9qHzzWOuL9bus+UT+P72SwrDQcFTV6QHqcbhwgqjCC9/K5jhdRzG0dIMB3TzYlk6rmApanPqh9DvWykwIH1Q==", + "requires": { + "ext-name": "5.0.0", + "pupa": "1.0.0", + "unused-filename": "1.0.0" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, "encoding": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", @@ -1538,24 +1740,48 @@ "iconv-lite": "0.4.19" } }, - "envinfo": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-3.10.0.tgz", - "integrity": "sha512-7m6zSyFfEb3lAjZI217G1XVSAkYeFJHk2EqAVeoncrt+WtHddW4nnft2qPg82Xu1aB/T8nC/DPvkGgUUahli4g==", + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "copy-paste": "1.3.0", + "once": "1.4.0" + } + }, + "envify": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", + "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", + "requires": { + "jstransform": "11.0.3", + "through": "2.3.8" + } + }, + "envinfo": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-3.11.1.tgz", + "integrity": "sha512-hKkh7aKtont6Zuv4RmE4VkOc96TkBj9NXj7Ghsd/qCA9LuJI0Dh+ImwA1N5iORB9Vg+sz5bq9CHJzs51BILNCQ==", + "requires": { + "clipboardy": "1.2.3", "glob": "7.1.2", "minimist": "1.2.0", "os-name": "2.0.1", "which": "1.3.0" - } - }, - "errno": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", - "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", - "requires": { - "prr": "1.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } } }, "error-ex": { @@ -1571,16 +1797,16 @@ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=", "requires": { - "accepts": "1.3.4", + "accepts": "1.3.5", "escape-html": "1.0.3" }, "dependencies": { "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.17", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, @@ -1591,6 +1817,19 @@ } } }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "4.2.4" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1601,6 +1840,11 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=" + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -1616,6 +1860,11 @@ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-1.1.1.tgz", "integrity": "sha1-qG5e5r2qFgVEddp5fM3fDFVphJE=" }, + "eventemitter3": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.0.1.tgz", + "integrity": "sha512-QOCPu979MMWX9XNlfRZoin+Wm+bK1SP7vv3NGUniYwuSJK/+cPA10blMaeRgzg31RvoSFk6FsCDVa4vNryBTGA==" + }, "exec-sh": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", @@ -1625,9 +1874,9 @@ } }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", "requires": { "cross-spawn": "5.1.0", "get-stream": "3.0.0", @@ -1654,6 +1903,11 @@ "fill-range": "2.2.3" } }, + "expand-template": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz", + "integrity": "sha512-kkjwkMqj0h4w/sb32ERCDxCQkREMCAgS39DscDnSwDsbxnwwM1BTZySdC3Bn1lhY7vL08n9GoO/fVTynjDgRyQ==" + }, "express-session": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", @@ -1693,6 +1947,23 @@ } } }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "requires": { + "mime-db": "1.33.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "requires": { + "ext-list": "2.2.2", + "sort-keys-length": "1.0.1" + } + }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", @@ -1721,6 +1992,11 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, "fancy-log": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", @@ -1732,9 +2008,9 @@ } }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -1760,7 +2036,7 @@ "object-assign": "4.1.1", "promise": "7.3.1", "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" + "ua-parser-js": "github:amplitude/ua-parser-js#ed538f16f5c6ecd8357da989b617d4f156dcf35d" } }, "fbjs-scripts": { @@ -1774,7 +2050,7 @@ "cross-spawn": "5.1.0", "gulp-util": "3.0.8", "object-assign": "4.1.1", - "semver": "5.4.1", + "semver": "5.5.0", "through2": "2.0.3" }, "dependencies": { @@ -1849,6 +2125,14 @@ "locate-path": "2.0.0" } }, + "for-each": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", + "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", + "requires": { + "is-function": "1.0.1" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1868,13 +2152,23 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "formik": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/formik/-/formik-0.10.5.tgz", + "integrity": "sha512-Mtzqmu8svQrqlnfuszHqso4SCSLw/huT7fhbJ3kWniYO6eaQSEOoiMVhOYXvuZQFBYNRiTV0287II3NFx/nzWg==", + "requires": { + "lodash.isequal": "4.5.0", + "prop-types": "15.6.1", + "warning": "3.0.0" } }, "fresh": { @@ -1882,6 +2176,15 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=" }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, "fs-extra": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", @@ -1897,16 +2200,808 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "gauge": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", - "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "optional": true, "requires": { - "ansi": "0.3.1", + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", "has-unicode": "2.0.1", - "lodash.pad": "4.5.1", - "lodash.padend": "4.6.1", - "lodash.padstart": "4.6.1" + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, "get-caller-file": { @@ -1927,12 +3022,16 @@ "assert-plus": "1.0.0" } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "requires": { - "fs.realpath": "1.0.0", "inflight": "1.0.6", "inherits": "2.0.3", "minimatch": "3.0.4", @@ -1972,9 +3071,9 @@ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, "glogg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", "requires": { "sparkles": "1.0.0" } @@ -2026,7 +3125,7 @@ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "requires": { - "glogg": "1.0.0" + "glogg": "1.0.1" } }, "har-schema": { @@ -2052,9 +3151,9 @@ } }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-gulplog": { "version": "0.1.0", @@ -2076,14 +3175,19 @@ "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", - "hoek": "4.2.0", + "hoek": "4.2.1", "sntp": "2.1.0" } }, "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + }, + "hoist-non-react-statics": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz", + "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w==" }, "home-or-tmp": { "version": "2.0.0", @@ -2095,9 +3199,9 @@ } }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" }, "http-errors": { "version": "1.3.1", @@ -2128,6 +3232,11 @@ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.2.tgz", "integrity": "sha512-pH3vDzpczdsKHdZ9xxR3O46unSjisgVx0IImay7Zz2EdhRVbCkj+nthx9OuuWEhakx9FAO+fNVGrF0rZ2oMOvw==" }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2147,18 +3256,23 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "requires": { "ansi-escapes": "3.0.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.1.0", "figures": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -2174,21 +3288,35 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.3.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "strip-ansi": { @@ -2200,19 +3328,24 @@ } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } }, + "install": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/install/-/install-0.10.4.tgz", + "integrity": "sha512-+IRyOastuPmLVx9zlVXJoKErSqz1Ma5at9A7S8yfsj3W+Kg95faPoh3bPDtMrZ/grz4PRmXzrswmlzfLlYyLOw==" + }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "requires": { "loose-envify": "1.3.1" } @@ -2227,6 +3360,11 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, + "is-ascii": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-ascii/-/is-ascii-1.0.0.tgz", + "integrity": "sha1-8CrQJZoJIc0Zn/Ic4bCeD2tOOSk=" + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -2272,9 +3410,17 @@ } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" }, "is-glob": { "version": "2.0.1", @@ -2292,6 +3438,11 @@ "kind-of": "3.2.2" } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -2318,9 +3469,9 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -2333,13 +3484,6 @@ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "requires": { "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } } }, "isomorphic-fetch": { @@ -2356,22 +3500,46 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "jayson": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-2.0.5.tgz", + "integrity": "sha512-ktzv96vpLjO0OXxHnlxyw9CIolAWau3InwdFnEfb4ctTD40HeEiLjIJbe3GGMmh3gwN2PjGAzPJuaAPmi8KYpw==", + "requires": { + "JSONStream": "1.3.2", + "commander": "2.15.0", + "es6-promisify": "5.0.0", + "eyes": "0.1.8", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.5" + } + }, "jest-docblock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==" + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.1.0.tgz", + "integrity": "sha512-/+OGgBVRJb5wCbXrB1LQvibQBz2SdrvDdKRNzY1gL+OISQJZCR9MOewbygdT5rVzbbkfhC4AR2x+qWmNUdJfjw==", + "requires": { + "detect-newline": "2.1.0" + } }, "jest-haste-map": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", - "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.1.0.tgz", + "integrity": "sha512-vETdC6GboGlZX6+9SMZkXtYRQSKBbQ47sFF7NGglbMN4eyIZBODply8rlcO01KwBiAeiNCKdjUyfonZzJ93JEg==", "requires": { "fb-watchman": "2.0.0", "graceful-fs": "4.1.11", - "jest-docblock": "21.2.0", + "jest-docblock": "22.1.0", + "jest-worker": "22.1.0", "micromatch": "2.3.11", - "sane": "2.2.0", - "worker-farm": "1.5.2" + "sane": "2.4.1" + } + }, + "jest-worker": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.1.0.tgz", + "integrity": "sha512-ezLueYAQowk5N6g2J7bNZfq4NWZvMNB5Qd24EmOZLcM5SXTdiFvxykZIoNiMj9C98cCbPaojX8tfR7b1LJwNig==", + "requires": { + "merge-stream": "1.0.1" } }, "js-tokens": { @@ -2390,6 +3558,11 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" }, + "jshashes": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/jshashes/-/jshashes-1.0.7.tgz", + "integrity": "sha1-vtjJeg6WMv0FE5FvVfdt1Uhr5Z8=" + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -2413,6 +3586,11 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -2431,6 +3609,11 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -2442,6 +3625,34 @@ "verror": "1.10.0" } }, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", + "requires": { + "base62": "1.2.7", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } + } + }, + "keytar": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-4.2.0.tgz", + "integrity": "sha1-HEPOHf8ROjAMKOZdrnAFZFIO6XI=", + "requires": { + "nan": "2.8.0", + "prebuild-install": "2.5.1" + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -2458,6 +3669,43 @@ "graceful-fs": "4.1.11" } }, + "lbry-redux": { + "version": "github:lbryio/lbry-redux#b081f465bb8ab0d7b178d194961f07976222fc9f", + "requires": { + "amplitude-js": "4.1.0", + "bluebird": "3.5.1", + "classnames": "2.2.5", + "electron-dl": "1.11.0", + "formik": "0.10.5", + "from2": "2.3.0", + "install": "0.10.4", + "jayson": "2.0.5", + "jshashes": "1.0.7", + "keytar": "4.2.0", + "localforage": "1.6.0", + "npm": "5.7.1", + "proxy-polyfill": "0.1.6", + "qrcode.react": "0.7.2", + "rc-progress": "2.2.5", + "react": "16.2.0", + "react-redux": "5.0.7", + "react-simplemde-editor": "3.6.11", + "redux": "3.7.2", + "redux-action-buffer": "1.2.0", + "redux-logger": "3.0.6", + "redux-persist": "4.10.2", + "redux-persist-transform-compress": "4.2.0", + "redux-persist-transform-filter": "0.0.10", + "redux-thunk": "2.2.0", + "render-media": "2.12.0", + "reselect": "3.0.1", + "semver": "5.5.0", + "shapeshift.io": "1.3.1", + "source-map-support": "0.5.3", + "tree-kill": "1.2.0", + "y18n": "4.0.0" + } + }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -2471,6 +3719,14 @@ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=" }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "requires": { + "immediate": "3.0.6" + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -2482,6 +3738,14 @@ "strip-bom": "3.0.0" } }, + "localforage": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.6.0.tgz", + "integrity": "sha1-iwBZvus4dcSBJChsp/2/I9UrjJc=", + "requires": { + "lie": "3.1.1" + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -2492,9 +3756,14 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + }, + "lodash-es": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.7.tgz", + "integrity": "sha512-jzqTi3vk4J5Dxq43cNjB0ekfCjPLHixoY2Sc0WHTo+0r928taLqe/VCt02vY5uQBvg0rdXgL3xWkK4X0MCmZcw==" }, "lodash._basecopy": { "version": "3.0.1", @@ -2549,6 +3818,16 @@ "lodash._root": "3.0.1" } }, + "lodash.forin": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.forin/-/lodash.forin-4.4.0.tgz", + "integrity": "sha1-XT8grlZAEfvog4H32YlJyclRlzE=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -2559,6 +3838,16 @@ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -2584,11 +3873,21 @@ "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" }, + "lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=" + }, "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, "lodash.template": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", @@ -2614,6 +3913,16 @@ "lodash.escape": "3.2.0" } }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, + "lodash.unset": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.unset/-/lodash.unset-4.5.2.tgz", + "integrity": "sha1-Nw0dPoW3Kn4bDN8tJyEhMG8j5O0=" + }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", @@ -2623,14 +3932,19 @@ } }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + }, "macos-release": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", @@ -2644,17 +3958,32 @@ "tmpl": "1.0.4" } }, + "marked": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz", + "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "mediasource": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mediasource/-/mediasource-2.1.3.tgz", + "integrity": "sha1-J6nBqsUb+266lq8tE6hNCyqOrGg=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "to-arraybuffer": "1.0.1" + } + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "merge": { @@ -2667,36 +3996,7 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { - "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - } + "readable-stream": "2.3.5" } }, "method-override": { @@ -2710,6 +4010,14 @@ "vary": "1.1.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -2722,15 +4030,15 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, - "metro-bundler": { - "version": "0.20.3", - "resolved": "https://registry.npmjs.org/metro-bundler/-/metro-bundler-0.20.3.tgz", - "integrity": "sha512-rKhIXSUEYbBUB9Ues30GYlcotM/4hPTmriBJGdNW5D+zdlxQUgJuPEo2Woo7khNM7xRG5tN7IRnMkKlzx43/Nw==", + "metro": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.24.7.tgz", + "integrity": "sha512-9Fr3PDPPCTR3WJUHPLZL2nvyEWyvqyyxH9649OmA2TOF7VEtRzWedZlc6PAcl/rDOzwDOu2/c98NRFxnS1CYlw==", "requires": { "absolute-path": "0.0.0", "async": "2.6.0", "babel-core": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-plugin-external-helpers": "6.22.0", "babel-preset-es2015-node": "6.1.1", "babel-preset-fbjs": "2.1.4", @@ -2738,38 +4046,80 @@ "babel-register": "6.26.0", "babylon": "6.18.0", "chalk": "1.1.3", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", + "connect": "3.6.6", "core-js": "2.5.3", "debug": "2.6.9", "denodeify": "1.2.1", + "eventemitter3": "3.0.1", "fbjs": "0.8.16", + "fs-extra": "1.0.0", "graceful-fs": "4.1.11", "image-size": "0.6.2", - "jest-docblock": "21.2.0", - "jest-haste-map": "21.2.0", + "jest-docblock": "22.1.0", + "jest-haste-map": "22.1.0", + "jest-worker": "22.1.0", "json-stable-stringify": "1.0.1", "json5": "0.4.0", "left-pad": "1.2.0", - "lodash": "4.17.4", + "lodash.throttle": "4.1.1", "merge-stream": "1.0.1", + "metro-core": "0.24.7", + "metro-source-map": "0.24.7", "mime-types": "2.1.11", "mkdirp": "0.5.1", "request": "2.83.0", "rimraf": "2.6.2", + "serialize-error": "2.1.0", "source-map": "0.5.7", "temp": "0.8.3", "throat": "4.1.0", - "uglify-es": "3.3.2", + "uglify-es": "3.3.9", "wordwrap": "1.0.0", "write-file-atomic": "1.3.4", - "xpipe": "1.0.5" + "ws": "1.1.5", + "xpipe": "1.0.5", + "yargs": "9.0.1" }, "dependencies": { + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + } + }, "core-js": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, "json5": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", @@ -2787,6 +4137,44 @@ "requires": { "mime-db": "1.23.0" } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + } + } + }, + "metro-core": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.24.7.tgz", + "integrity": "sha512-Qheab9Wmc8T2m3Ax9COyKUk8LxRb1fHWe13CpoEgPIjwFBd6ILNXaq7ZzoWg0OoAbpMsNzvUOnOJNHvfRuJqJg==", + "requires": { + "lodash.throttle": "4.1.1" + } + }, + "metro-source-map": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.24.7.tgz", + "integrity": "sha512-12WEgolY5CGvHeHkF5QlM2qatdQC1DyjWkXLK9LzCqzd8YhUZww1+ZCM6E67rJwpeuCU9o1Mkiwd1h7dS+RBvA==", + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -2816,22 +4204,27 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=" }, "min-document": { "version": "2.19.0", @@ -2846,7 +4239,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -2869,6 +4262,11 @@ } } }, + "modify-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", + "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=" + }, "morgan": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", @@ -2896,6 +4294,25 @@ } } }, + "mp4-box-encoding": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/mp4-box-encoding/-/mp4-box-encoding-1.1.2.tgz", + "integrity": "sha1-OYUO4FulNwRgBws6KsvQdhbi2DE=", + "requires": { + "uint64be": "1.0.1" + } + }, + "mp4-stream": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mp4-stream/-/mp4-stream-2.0.2.tgz", + "integrity": "sha1-NBYbotm2CHM7SyJH7fN4C6LEfsU=", + "requires": { + "inherits": "2.0.3", + "mp4-box-encoding": "1.1.2", + "next-event": "1.0.0", + "readable-stream": "2.3.5" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2908,6 +4325,29 @@ "requires": { "readable-stream": "1.1.14", "stream-counter": "0.2.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } } }, "multipipe": { @@ -2918,16 +4358,43 @@ "duplexer2": "0.0.2" } }, + "multistream": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.0.tgz", + "integrity": "sha1-YlwmfVxEQkrWKUeItbtNo9yzLx0=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + }, "negotiator": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=" }, + "next-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-event/-/next-event-1.0.0.tgz", + "integrity": "sha1-53eKzeLlWALgrRh5w5z2917aYdg=" + }, + "node-abi": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.3.0.tgz", + "integrity": "sha512-zwm6vU3SsVgw3e9fu48JBaRBCJGIvAgysDsqtf5+vEexFE71bEOtaMWb5zr/zODZNzTPtQlqUUpC79k68Hspow==", + "requires": { + "semver": "5.5.0" + } + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -2943,25 +4410,30 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" }, "node-notifier": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", - "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "requires": { "growly": "1.3.0", - "semver": "5.4.1", + "semver": "5.5.0", "shellwords": "0.1.1", "which": "1.3.0" } }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -2972,6 +4444,3937 @@ "remove-trailing-separator": "1.1.0" } }, + "npm": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-5.7.1.tgz", + "integrity": "sha512-r1grvv6mcEt+nlMzMWPc5n/z5q8NNuBWj0TGFp1PBSFCl6ubnAoUGBsucYsnZYT7MOJn0ha1ptEjmdBoAdJ+SA==", + "requires": { + "JSONStream": "1.3.2", + "abbrev": "1.1.1", + "ansi-regex": "3.0.0", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "aproba": "1.2.0", + "archy": "1.0.0", + "bin-links": "1.1.0", + "bluebird": "3.5.1", + "cacache": "10.0.4", + "call-limit": "1.1.0", + "chownr": "1.0.1", + "cli-table2": "0.2.0", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "config-chain": "1.1.11", + "debuglog": "1.0.1", + "detect-indent": "5.0.0", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "find-npm-prefix": "1.0.2", + "fs-vacuum": "1.2.10", + "fs-write-stream-atomic": "1.0.10", + "gentle-fs": "2.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "has-unicode": "2.0.1", + "hosted-git-info": "2.5.0", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "inflight": "1.0.6", + "inherits": "2.0.3", + "ini": "1.3.5", + "init-package-json": "1.10.1", + "is-cidr": "1.0.0", + "lazy-property": "1.0.0", + "libcipm": "1.3.3", + "libnpx": "9.7.1", + "lockfile": "1.0.3", + "lodash._baseindexof": "3.1.0", + "lodash._baseuniq": "4.6.0", + "lodash._bindcallback": "3.0.1", + "lodash._cacheindexof": "3.0.2", + "lodash._createcache": "3.1.2", + "lodash._getnative": "3.9.1", + "lodash.clonedeep": "4.5.0", + "lodash.restparam": "3.6.1", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "lodash.without": "4.4.0", + "lru-cache": "4.1.1", + "meant": "1.0.1", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "nopt": "4.0.1", + "normalize-package-data": "2.4.0", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "3.0.0", + "npm-lifecycle": "2.0.0", + "npm-package-arg": "6.0.0", + "npm-packlist": "1.1.10", + "npm-profile": "3.0.1", + "npm-registry-client": "8.5.0", + "npm-user-validate": "1.0.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "opener": "1.4.3", + "osenv": "0.1.5", + "pacote": "7.3.3", + "path-is-inside": "1.0.2", + "promise-inflight": "1.0.1", + "qrcode-terminal": "0.11.0", + "query-string": "5.1.0", + "qw": "1.0.1", + "read": "1.0.7", + "read-cmd-shim": "1.0.1", + "read-installed": "4.0.3", + "read-package-json": "2.0.12", + "read-package-tree": "5.1.6", + "readable-stream": "2.3.4", + "readdir-scoped-modules": "1.0.2", + "request": "2.83.0", + "retry": "0.10.1", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "sha": "2.0.1", + "slide": "1.1.6", + "sorted-object": "2.0.1", + "sorted-union-stream": "2.1.3", + "ssri": "5.2.4", + "strip-ansi": "4.0.0", + "tar": "4.3.3", + "text-table": "0.2.0", + "uid-number": "0.0.6", + "umask": "1.1.0", + "unique-filename": "1.1.0", + "unpipe": "1.0.0", + "update-notifier": "2.3.0", + "uuid": "3.2.1", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "3.0.0", + "which": "1.3.0", + "worker-farm": "1.5.2", + "wrappy": "1.0.2", + "write-file-atomic": "2.1.0" + }, + "dependencies": { + "JSONStream": { + "version": "1.3.2", + "bundled": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + }, + "dependencies": { + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + } + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "bin-links": { + "version": "1.1.0", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "cmd-shim": "2.0.2", + "fs-write-stream-atomic": "1.0.10", + "gentle-fs": "2.0.1", + "graceful-fs": "4.1.11", + "slide": "1.1.6" + } + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.2.4", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "bundled": true + } + } + }, + "call-limit": { + "version": "1.1.0", + "bundled": true + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "cli-table2": { + "version": "0.2.0", + "bundled": true, + "requires": { + "colors": "1.1.2", + "lodash": "3.10.1", + "string-width": "1.0.2" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "bundled": true, + "optional": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.1", + "bundled": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + } + } + } + } + }, + "cmd-shim": { + "version": "2.0.2", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1" + } + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "requires": { + "defaults": "1.0.3" + }, + "dependencies": { + "defaults": { + "version": "1.0.3", + "bundled": true, + "requires": { + "clone": "1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.2", + "bundled": true + } + } + } + } + } + } + }, + "config-chain": { + "version": "1.1.11", + "bundled": true, + "requires": { + "ini": "1.3.5", + "proto-list": "1.2.4" + }, + "dependencies": { + "proto-list": { + "version": "1.2.4", + "bundled": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "2.0.5", + "wrappy": "1.0.2" + }, + "dependencies": { + "asap": { + "version": "2.0.5", + "bundled": true + } + } + }, + "editor": { + "version": "1.0.0", + "bundled": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "path-is-inside": "1.0.2", + "rimraf": "2.6.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.4" + } + }, + "gentle-fs": { + "version": "2.0.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "fs-vacuum": "1.2.10", + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "path-is-inside": "1.0.2", + "read-cmd-shim": "1.0.1", + "slide": "1.1.6" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "init-package-json": { + "version": "1.10.1", + "bundled": true, + "requires": { + "glob": "7.1.2", + "npm-package-arg": "5.1.2", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.0.12", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "3.0.0" + }, + "dependencies": { + "npm-package-arg": { + "version": "5.1.2", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "requires": { + "read": "1.0.7" + } + } + } + }, + "is-cidr": { + "version": "1.0.0", + "bundled": true, + "requires": { + "cidr-regex": "1.0.6" + }, + "dependencies": { + "cidr-regex": { + "version": "1.0.6", + "bundled": true + } + } + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true + }, + "libcipm": { + "version": "1.3.3", + "bundled": true, + "requires": { + "bin-links": "1.1.0", + "bluebird": "3.5.1", + "find-npm-prefix": "1.0.2", + "graceful-fs": "4.1.11", + "lock-verify": "2.0.0", + "npm-lifecycle": "2.0.0", + "npm-logical-tree": "1.2.1", + "npm-package-arg": "6.0.0", + "pacote": "7.3.3", + "protoduck": "5.0.0", + "read-package-json": "2.0.12", + "rimraf": "2.6.2", + "worker-farm": "1.5.2" + }, + "dependencies": { + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true + }, + "lock-verify": { + "version": "2.0.0", + "bundled": true, + "requires": { + "npm-package-arg": "5.1.2", + "semver": "5.5.0" + }, + "dependencies": { + "npm-package-arg": { + "version": "5.1.2", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + } + } + }, + "npm-logical-tree": { + "version": "1.2.1", + "bundled": true + }, + "protoduck": { + "version": "5.0.0", + "bundled": true, + "requires": { + "genfun": "4.0.1" + }, + "dependencies": { + "genfun": { + "version": "4.0.1", + "bundled": true + } + } + }, + "worker-farm": { + "version": "1.5.2", + "bundled": true, + "requires": { + "errno": "0.1.7", + "xtend": "4.0.1" + }, + "dependencies": { + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "1.0.1" + }, + "dependencies": { + "prr": { + "version": "1.0.1", + "bundled": true + } + } + }, + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "libnpx": { + "version": "9.7.1", + "bundled": true, + "requires": { + "dotenv": "4.0.0", + "npm-package-arg": "5.1.2", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "update-notifier": "2.3.0", + "which": "1.3.0", + "y18n": "3.2.1", + "yargs": "8.0.2" + }, + "dependencies": { + "dotenv": { + "version": "4.0.0", + "bundled": true + }, + "npm-package-arg": { + "version": "5.1.2", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yargs": { + "version": "8.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.1", + "bundled": true + } + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + } + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + }, + "dependencies": { + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + }, + "dependencies": { + "shebang-regex": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "bundled": true + } + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + } + } + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + }, + "dependencies": { + "invert-kv": { + "version": "1.0.0", + "bundled": true + } + } + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.1.0", + "bundled": true + } + } + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + }, + "dependencies": { + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.1.0" + }, + "dependencies": { + "p-limit": { + "version": "1.1.0", + "bundled": true + } + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + } + } + } + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1" + }, + "dependencies": { + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "bundled": true + } + } + } + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + } + } + }, + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + } + } + } + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + } + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "yargs-parser": { + "version": "7.0.0", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + } + } + }, + "lockfile": { + "version": "1.0.3", + "bundled": true + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "requires": { + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" + }, + "dependencies": { + "lodash._createset": { + "version": "4.0.3", + "bundled": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true + } + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "requires": { + "lodash._getnative": "3.9.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + }, + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + } + } + }, + "meant": { + "version": "1.0.1", + "bundled": true + }, + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "requires": { + "aproba": "1.2.0" + } + } + } + }, + "node-gyp": { + "version": "3.6.2", + "bundled": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + }, + "dependencies": { + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + } + } + } + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" + }, + "dependencies": { + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1" + }, + "dependencies": { + "builtin-modules": { + "version": "1.1.1", + "bundled": true + } + } + } + } + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true + }, + "npm-install-checks": { + "version": "3.0.0", + "bundled": true, + "requires": { + "semver": "5.5.0" + } + }, + "npm-lifecycle": { + "version": "2.0.0", + "bundled": true, + "requires": { + "byline": "5.0.0", + "graceful-fs": "4.1.11", + "node-gyp": "3.6.2", + "resolve-from": "4.0.0", + "slide": "1.1.6", + "uid-number": "0.0.6", + "umask": "1.1.0", + "which": "1.3.0" + }, + "dependencies": { + "byline": { + "version": "5.0.0", + "bundled": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true + } + } + }, + "npm-package-arg": { + "version": "6.0.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + }, + "dependencies": { + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + } + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + } + } + }, + "npm-profile": { + "version": "3.0.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "make-fetch-happen": "2.6.0" + }, + "dependencies": { + "make-fetch-happen": { + "version": "2.6.0", + "bundled": true, + "requires": { + "agentkeepalive": "3.3.0", + "cacache": "10.0.4", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.0.0", + "https-proxy-agent": "2.1.1", + "lru-cache": "4.1.1", + "mississippi": "1.3.1", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "3.0.1", + "ssri": "5.2.4" + }, + "dependencies": { + "agentkeepalive": { + "version": "3.3.0", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + }, + "dependencies": { + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "2.6.9" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "https-proxy-agent": { + "version": "2.1.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "mississippi": { + "version": "1.3.1", + "bundled": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "1.0.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.1", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.19" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.19", + "bundled": true + } + } + }, + "json-parse-better-errors": { + "version": "1.0.1", + "bundled": true + } + } + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "bundled": true + } + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "socks": "1.1.10" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "bundled": true + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true + } + } + } + } + } + } + } + } + }, + "npm-registry-client": { + "version": "8.5.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.0", + "graceful-fs": "4.1.11", + "normalize-package-data": "2.4.0", + "npm-package-arg": "5.1.2", + "npmlog": "4.1.2", + "once": "1.4.0", + "request": "2.83.0", + "retry": "0.10.1", + "semver": "5.5.0", + "slide": "1.1.6", + "ssri": "4.1.6" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "npm-package-arg": { + "version": "5.1.2", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "ssri": { + "version": "4.1.6", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "npm-user-validate": { + "version": "1.0.0", + "bundled": true + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.4" + }, + "dependencies": { + "delegates": { + "version": "1.0.0", + "bundled": true + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.1", + "bundled": true + } + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "1.0.2" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + } + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opener": { + "version": "1.4.3", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + }, + "dependencies": { + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + } + } + }, + "pacote": { + "version": "7.3.3", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "cacache": "10.0.4", + "get-stream": "3.0.0", + "glob": "7.1.2", + "lru-cache": "4.1.1", + "make-fetch-happen": "2.6.0", + "minimatch": "3.0.4", + "mississippi": "2.0.0", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.0.0", + "npm-packlist": "1.1.10", + "npm-pick-manifest": "2.1.0", + "osenv": "0.1.5", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "5.0.0", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "ssri": "5.2.4", + "tar": "4.3.3", + "unique-filename": "1.1.0", + "which": "1.3.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "make-fetch-happen": { + "version": "2.6.0", + "bundled": true, + "requires": { + "agentkeepalive": "3.3.0", + "cacache": "10.0.4", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.0.0", + "https-proxy-agent": "2.1.1", + "lru-cache": "4.1.1", + "mississippi": "1.3.1", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "3.0.1", + "ssri": "5.2.4" + }, + "dependencies": { + "agentkeepalive": { + "version": "3.3.0", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + }, + "dependencies": { + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "2.6.9" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "https-proxy-agent": { + "version": "2.1.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "mississippi": { + "version": "1.3.1", + "bundled": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "1.0.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.1", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.19" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.19", + "bundled": true + } + } + }, + "json-parse-better-errors": { + "version": "1.0.1", + "bundled": true + } + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "socks": "1.1.10" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "bundled": true + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true + } + } + } + } + } + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + }, + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "npm-pick-manifest": { + "version": "2.1.0", + "bundled": true, + "requires": { + "npm-package-arg": "6.0.0", + "semver": "5.5.0" + } + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "bundled": true + } + } + }, + "protoduck": { + "version": "5.0.0", + "bundled": true, + "requires": { + "genfun": "4.0.1" + }, + "dependencies": { + "genfun": { + "version": "4.0.1", + "bundled": true + } + } + }, + "semver": { + "version": "5.5.0", + "bundled": true + } + } + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "qrcode-terminal": { + "version": "0.11.0", + "bundled": true + }, + "query-string": { + "version": "5.1.0", + "bundled": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + }, + "dependencies": { + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "bundled": true + } + } + }, + "qw": { + "version": "1.0.1", + "bundled": true + }, + "read": { + "version": "1.0.7", + "bundled": true, + "requires": { + "mute-stream": "0.0.7" + }, + "dependencies": { + "mute-stream": { + "version": "0.0.7", + "bundled": true + } + } + }, + "read-cmd-shim": { + "version": "1.0.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "graceful-fs": "4.1.11", + "read-package-json": "2.0.12", + "readdir-scoped-modules": "1.0.2", + "semver": "5.5.0", + "slide": "1.1.6", + "util-extend": "1.0.3" + }, + "dependencies": { + "util-extend": { + "version": "1.0.3", + "bundled": true + } + } + }, + "read-package-json": { + "version": "2.0.12", + "bundled": true, + "requires": { + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "json-parse-better-errors": "1.0.1", + "normalize-package-data": "2.4.0", + "slash": "1.0.0" + }, + "dependencies": { + "json-parse-better-errors": { + "version": "1.0.1", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + } + } + }, + "read-package-tree": { + "version": "5.1.6", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "once": "1.4.0", + "read-package-json": "2.0.12", + "readdir-scoped-modules": "1.0.2" + } + }, + "readable-stream": { + "version": "2.3.4", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + } + } + }, + "readdir-scoped-modules": { + "version": "1.0.2", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "graceful-fs": "4.1.11", + "once": "1.4.0" + } + }, + "request": { + "version": "2.83.0", + "bundled": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + }, + "dependencies": { + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + }, + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "bundled": true + } + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.1", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + }, + "dependencies": { + "asynckit": { + "version": "0.4.0", + "bundled": true + } + } + }, + "har-validator": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ajv": "5.2.3", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.2.3", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + }, + "dependencies": { + "co": { + "version": "4.6.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + }, + "dependencies": { + "jsonify": { + "version": "0.0.0", + "bundled": true + } + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + } + } + }, + "hawk": { + "version": "6.0.2", + "bundled": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.0.2" + }, + "dependencies": { + "boom": { + "version": "4.3.1", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "bundled": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "hoek": { + "version": "4.2.0", + "bundled": true + }, + "sntp": { + "version": "2.0.2", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true + } + } + } + } + }, + "sshpk": { + "version": "1.13.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + } + } + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + }, + "dependencies": { + "mime-db": { + "version": "1.30.0", + "bundled": true + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, + "tough-cookie": { + "version": "2.3.3", + "bundled": true, + "requires": { + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "bundled": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "retry": { + "version": "0.10.1", + "bundled": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "sha": { + "version": "2.0.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "readable-stream": "2.3.4" + } + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "requires": { + "from2": "1.3.0", + "stream-iterate": "1.2.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "1.1.14" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "0.0.1", + "bundled": true + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + } + } + } + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "requires": { + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "ssri": { + "version": "5.2.4", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + } + } + }, + "tar": { + "version": "4.3.3", + "bundled": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.1", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "yallist": "3.0.2" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "2.2.1" + } + }, + "minipass": { + "version": "2.2.1", + "bundled": true, + "requires": { + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "requires": { + "minipass": "2.2.1" + } + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, + "umask": { + "version": "1.1.0", + "bundled": true + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "requires": { + "unique-slug": "2.0.0" + }, + "dependencies": { + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "requires": { + "imurmurhash": "0.1.4" + } + } + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "update-notifier": { + "version": "2.3.0", + "bundled": true, + "requires": { + "boxen": "1.2.1", + "chalk": "2.1.0", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "boxen": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.1.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "1.0.0" + }, + "dependencies": { + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1" + } + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + } + } + }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "requires": { + "execa": "0.7.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + }, + "dependencies": { + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + }, + "dependencies": { + "shebang-regex": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "bundled": true + } + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "widest-line": { + "version": "1.0.0", + "bundled": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.1", + "bundled": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + } + } + } + } + } + } + }, + "chalk": { + "version": "2.1.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "bundled": true, + "requires": { + "color-convert": "1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.0", + "bundled": true, + "requires": { + "color-name": "1.1.3" + }, + "dependencies": { + "color-name": { + "version": "1.1.3", + "bundled": true + } + } + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "supports-color": { + "version": "4.4.0", + "bundled": true, + "requires": { + "has-flag": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "configstore": { + "version": "3.1.1", + "bundled": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.0.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.1.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "requires": { + "is-obj": "1.0.1" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "bundled": true + } + } + }, + "make-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "requires": { + "crypto-random-string": "1.0.0" + }, + "dependencies": { + "crypto-random-string": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "requires": { + "global-dirs": "0.1.0", + "is-path-inside": "1.0.0" + }, + "dependencies": { + "global-dirs": { + "version": "0.1.0", + "bundled": true, + "requires": { + "ini": "1.3.5" + } + }, + "is-path-inside": { + "version": "1.0.0", + "bundled": true, + "requires": { + "path-is-inside": "1.0.2" + } + } + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "requires": { + "package-json": "4.0.1" + }, + "dependencies": { + "package-json": { + "version": "4.0.1", + "bundled": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.5.0" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "bundled": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + }, + "dependencies": { + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "requires": { + "capture-stack-trace": "1.0.0" + }, + "dependencies": { + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true + } + } + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "1.0.4" + }, + "dependencies": { + "prepend-http": { + "version": "1.0.4", + "bundled": true + } + } + } + } + }, + "registry-auth-token": { + "version": "3.3.1", + "bundled": true, + "requires": { + "rc": "1.2.1", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "rc": { + "version": "1.2.1", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + } + } + } + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "requires": { + "rc": "1.2.1" + }, + "dependencies": { + "rc": { + "version": "1.2.1", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + } + } + } + } + } + } + } + } + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "requires": { + "semver": "5.5.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true + } + } + }, + "uuid": { + "version": "3.2.1", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + }, + "dependencies": { + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "requires": { + "spdx-license-ids": "1.2.2" + }, + "dependencies": { + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true + } + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true + } + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "requires": { + "builtins": "1.0.3" + }, + "dependencies": { + "builtins": { + "version": "1.0.3", + "bundled": true + } + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + }, + "dependencies": { + "isexe": { + "version": "2.0.0", + "bundled": true + } + } + }, + "worker-farm": { + "version": "1.5.2", + "bundled": true, + "requires": { + "errno": "0.1.7", + "xtend": "4.0.1" + }, + "dependencies": { + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "1.0.1" + }, + "dependencies": { + "prr": { + "version": "1.0.1", + "bundled": true + } + } + }, + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + } + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -2981,13 +8384,14 @@ } }, "npmlog": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", - "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { - "ansi": "0.3.1", "are-we-there-yet": "1.1.4", - "gauge": "1.2.7" + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { @@ -3040,7 +8444,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "opn": { @@ -3090,6 +8494,22 @@ "execa": "0.7.0", "lcid": "1.0.0", "mem": "1.1.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + } } }, "os-name": { @@ -3112,18 +8532,26 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -3135,6 +8563,15 @@ "is-glob": "2.0.1" } }, + "parse-headers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", + "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "requires": { + "for-each": "0.3.2", + "trim": "0.0.1" + } + }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -3163,6 +8600,21 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -3209,6 +8661,28 @@ } } }, + "prebuild-install": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.1.tgz", + "integrity": "sha512-3DX9L6pzwc1m1ksMkW3Ky2WLgPQUBiySOfXVl3WZyAeJSyJb4wtoH9OmeRGcubAWsMlLiL8BTHbwfm/jPQE9Ag==", + "requires": { + "detect-libc": "1.0.3", + "expand-template": "1.1.0", + "github-from-package": "0.0.0", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "node-abi": "2.3.0", + "noop-logger": "0.1.1", + "npmlog": "4.1.2", + "os-homedir": "1.0.2", + "pump": "2.0.1", + "rc": "1.2.5", + "simple-get": "2.7.0", + "tar-fs": "1.16.0", + "tunnel-agent": "0.6.0", + "which-pm-runs": "1.0.0" + } + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -3230,9 +8704,9 @@ "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "promise": { "version": "7.3.1", @@ -3243,34 +8717,67 @@ } }, "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", + "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", "requires": { "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + "proxy-polyfill": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/proxy-polyfill/-/proxy-polyfill-0.1.6.tgz", + "integrity": "sha1-70HsbGb1NNsV2zbFRJOmLRhLNk4=" }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, + "pupa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz", + "integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qr.js": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", + "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" + }, + "qrcode.react": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-0.7.2.tgz", + "integrity": "sha512-s1x+E3bsp0ojI8cHQ+czr+aG3huLZegH+tqAuRsXh6oXvzNfC+9L2PeFRBBu8eRBiejMRrRzSH7iwi5LDyWfRg==", + "requires": { + "prop-types": "15.6.1", + "qr.js": "0.0.0" + } + }, "qs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", - "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "random-bytes": { "version": "1.0.0", @@ -3319,6 +8826,15 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=" }, + "range-slice-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-slice-stream/-/range-slice-stream-1.2.0.tgz", + "integrity": "sha1-AbqVQnYFK3g5AOY9YRjY/POHXX8=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, "raw-body": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", @@ -3341,6 +8857,26 @@ } } }, + "rc": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", + "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + } + }, + "rc-progress": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-2.2.5.tgz", + "integrity": "sha1-5h0FRL+dQgjlujL8UJYhWef5UqM=", + "requires": { + "babel-runtime": "6.26.0", + "prop-types": "15.6.1" + } + }, "react": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", @@ -3349,7 +8885,7 @@ "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "react-clone-referenced-element": { @@ -3363,9 +8899,9 @@ "integrity": "sha1-vNMUeAJ7ZLMznxCJIatSC0MT3Cw=" }, "react-devtools-core": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-2.5.2.tgz", - "integrity": "sha1-+XvsWvrl2TGNFneAZeDCFMTVcUw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.0.0.tgz", + "integrity": "sha512-24oLTwNqZJceQXfAfKRp3PwCyg2agXAQhgGwe/x6V6CvjLmnMmba4/ut9S8JTIJq7pS9fpPaRDGo5u3923RLFA==", "requires": { "shell-quote": "1.6.1", "ws": "2.3.1" @@ -3376,6 +8912,11 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, "ws": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", @@ -3388,9 +8929,9 @@ } }, "react-native": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.51.0.tgz", - "integrity": "sha512-XpLmz3C7DOds5TUwIOpQBEXqoFDtU2/HmMBzVItGlHtowXpcHoQxJYSxL4Z9u8B4EeDfSvGfU2TFHq0sV3xd3Q==", + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.52.0.tgz", + "integrity": "sha512-2Z/1IIA+0PhgzW/r2qfTIWuDWpA8i+pKud/Ygp6JqoMnbFK79JYPkYSAMEkL7uz+oiQ+4bkKqbbUbVkwgF9ZOg==", "requires": { "absolute-path": "0.0.0", "art": "0.10.1", @@ -3403,14 +8944,14 @@ "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-register": "6.26.0", "babel-runtime": "6.26.0", - "base64-js": "1.2.1", + "base64-js": "1.2.3", "chalk": "1.1.3", - "commander": "2.12.2", + "commander": "2.15.0", "connect": "2.30.2", - "create-react-class": "15.6.2", + "create-react-class": "15.6.3", "debug": "2.6.9", "denodeify": "1.2.1", - "envinfo": "3.10.0", + "envinfo": "3.11.1", "event-target-shim": "1.1.1", "fbjs": "0.8.16", "fbjs-scripts": "0.8.1", @@ -3418,26 +8959,27 @@ "glob": "7.1.2", "graceful-fs": "4.1.11", "inquirer": "3.3.0", - "lodash": "4.17.4", - "metro-bundler": "0.20.3", + "lodash": "4.17.5", + "metro": "0.24.7", + "metro-core": "0.24.7", "mime": "1.6.0", "minimist": "1.2.0", "mkdirp": "0.5.1", "node-fetch": "1.7.3", - "node-notifier": "5.1.2", + "node-notifier": "5.2.1", "npmlog": "2.0.4", "opn": "3.0.3", "optimist": "0.6.1", "plist": "1.2.0", "pretty-format": "4.3.1", "promise": "7.3.1", - "prop-types": "15.6.0", + "prop-types": "15.6.1", "react-clone-referenced-element": "1.0.1", - "react-devtools-core": "2.5.2", + "react-devtools-core": "3.0.0", "react-timer-mixin": "0.13.3", "regenerator-runtime": "0.11.1", "rimraf": "2.6.2", - "semver": "5.4.1", + "semver": "5.5.0", "shell-quote": "1.6.1", "stacktrace-parser": "0.1.4", "whatwg-fetch": "1.1.1", @@ -3447,6 +8989,49 @@ "yargs": "9.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", + "requires": { + "ansi": "0.3.1", + "has-unicode": "2.0.1", + "lodash.pad": "4.5.1", + "lodash.padend": "4.6.1", + "lodash.padstart": "4.6.1" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "npmlog": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", + "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=", + "requires": { + "ansi": "0.3.1", + "are-we-there-yet": "1.1.4", + "gauge": "1.2.7" + } + }, "whatwg-fetch": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz", @@ -3454,15 +9039,188 @@ } } }, + "react-native-dismiss-keyboard": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-native-dismiss-keyboard/-/react-native-dismiss-keyboard-1.0.0.tgz", + "integrity": "sha1-MohiQrPyMX4SHzrrmwpYXiuHm0k=" + }, + "react-native-drawer-layout": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/react-native-drawer-layout/-/react-native-drawer-layout-1.3.2.tgz", + "integrity": "sha512-fjO0scqbJUfNu2wuEpvywL7DYLXuCXJ2W/zYhWz986rdLytidbys1QGVvkaszHrb4Y7OqO96mTkgpOcP8KWevw==", + "requires": { + "react-native-dismiss-keyboard": "1.0.0" + } + }, + "react-native-drawer-layout-polyfill": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/react-native-drawer-layout-polyfill/-/react-native-drawer-layout-polyfill-1.3.2.tgz", + "integrity": "sha512-XzPhfLDJrYHru+e8+dFwhf0FtTeAp7JXPpFYezYV6P1nTeA1Tia/kDpFT+O2DWTrBKBEI8FGhZnThrroZmHIxg==", + "requires": { + "react-native-drawer-layout": "1.3.2" + } + }, + "react-native-safe-area-view": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.7.0.tgz", + "integrity": "sha512-SjLdW/Th0WVMhyngH4O6yC21S+O4U4AAG3QxBr7fZ2ftgjXSpKbDHAhEpxBdFwei6HsnsC2h9oYMtPpaW9nfGg==", + "requires": { + "hoist-non-react-statics": "2.5.0" + } + }, + "react-native-tab-view": { + "version": "0.0.74", + "resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-0.0.74.tgz", + "integrity": "sha512-aCrLugxt5LqdSk0pHqu/nDGZMIM3NvxVcXb464coY7ecWgem6IxQ8riO3QXPJhXZ7HaayfofBJF9w4uIWt/AoQ==", + "requires": { + "prop-types": "15.6.1" + } + }, + "react-native-vector-icons": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-4.5.0.tgz", + "integrity": "sha512-A2HdvmYxAohZ3w8FgdMi5kl3pUEXOz9sR3zsfpejIdispqAh6NRAHCqsI6DMRcymNgwWzmqLowPqp9eg5zqWLA==", + "requires": { + "lodash": "4.17.5", + "prop-types": "15.6.1", + "yargs": "8.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + } + } + }, + "react-navigation": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/react-navigation/-/react-navigation-1.5.1.tgz", + "integrity": "sha512-ehUlvsvIiS5wD/l0p1D2qef/h3bY/t9WysxE7DsSDAFsOmx7Mbhd0XxXMqjgZItrmNUCmCksnglmdp6wNkXAgA==", + "requires": { + "clamp": "1.0.1", + "hoist-non-react-statics": "2.5.0", + "path-to-regexp": "1.7.0", + "prop-types": "15.6.1", + "react-native-drawer-layout-polyfill": "1.3.2", + "react-native-safe-area-view": "0.7.0", + "react-native-tab-view": "0.0.74" + } + }, + "react-navigation-redux-helpers": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-navigation-redux-helpers/-/react-navigation-redux-helpers-1.0.3.tgz", + "integrity": "sha512-A+gu/ma0b1hi7myb6xZEmnVv239/AEoBbE+Q+68Y90KeQSMlCclIeDEQ0bfAXfAHD3YHZlTrzk9d0JTrOytrBQ==", + "requires": { + "invariant": "2.2.3" + } + }, "react-proxy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", "requires": { - "lodash": "4.17.4", + "lodash": "4.17.5", "react-deep-force-update": "1.1.1" } }, + "react-redux": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz", + "integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==", + "requires": { + "hoist-non-react-statics": "2.5.0", + "invariant": "2.2.3", + "lodash": "4.17.5", + "lodash-es": "4.17.7", + "loose-envify": "1.3.1", + "prop-types": "15.6.1" + } + }, + "react-simplemde-editor": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/react-simplemde-editor/-/react-simplemde-editor-3.6.11.tgz", + "integrity": "sha1-S54Tb21NACGOjs49h5SeI7FOIdw=", + "requires": { + "react": "0.14.9", + "simplemde": "1.11.2" + }, + "dependencies": { + "fbjs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz", + "integrity": "sha1-lja3cF9bqWhNRLcveDISVK/IYPc=", + "requires": { + "core-js": "1.2.7", + "loose-envify": "1.3.1", + "promise": "7.3.1", + "ua-parser-js": "github:amplitude/ua-parser-js#ed538f16f5c6ecd8357da989b617d4f156dcf35d", + "whatwg-fetch": "0.9.0" + } + }, + "react": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react/-/react-0.14.9.tgz", + "integrity": "sha1-kRCmSXxJ1EuhwO3TF67CnC4NkdE=", + "requires": { + "envify": "3.4.1", + "fbjs": "0.6.1" + } + }, + "whatwg-fetch": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", + "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=" + } + } + }, "react-timer-mixin": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz", @@ -3497,16 +9255,103 @@ } }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" } }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "requires": { + "lodash": "4.17.5", + "lodash-es": "4.17.7", + "loose-envify": "1.3.1", + "symbol-observable": "1.2.0" + } + }, + "redux-action-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redux-action-buffer/-/redux-action-buffer-1.2.0.tgz", + "integrity": "sha1-LsCh2JnMn29EzN60Me5SrUHdl1U=" + }, + "redux-logger": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", + "integrity": "sha1-91VZZvMJjzyIYExEnPC69XeCdL8=", + "requires": { + "deep-diff": "0.3.8" + } + }, + "redux-persist": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-4.10.2.tgz", + "integrity": "sha512-U+e0ieMGC69Zr72929iJW40dEld7Mflh6mu0eJtVMLGfMq/aJqjxUM1hzyUWMR1VUyAEEdPHuQmeq5ti9krIgg==", + "requires": { + "json-stringify-safe": "5.0.1", + "lodash": "4.17.5", + "lodash-es": "4.17.7" + } + }, + "redux-persist-transform-compress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/redux-persist-transform-compress/-/redux-persist-transform-compress-4.2.0.tgz", + "integrity": "sha1-UInimd9xMIePykX5f/6CiIugJpA=", + "requires": { + "json-stringify-safe": "5.0.1", + "lz-string": "1.4.4" + } + }, + "redux-persist-transform-filter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/redux-persist-transform-filter/-/redux-persist-transform-filter-0.0.10.tgz", + "integrity": "sha1-mjsQbOiTnSy79SEsdH7Rd//xQoA=", + "requires": { + "lodash.forin": "4.4.0", + "lodash.get": "4.4.2", + "lodash.isempty": "4.4.0", + "lodash.pickby": "4.6.0", + "lodash.set": "4.3.2", + "lodash.unset": "4.5.2" + } + }, + "redux-thunk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.2.0.tgz", + "integrity": "sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU=" + }, "regenerate": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", @@ -3570,6 +9415,18 @@ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, + "render-media": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/render-media/-/render-media-2.12.0.tgz", + "integrity": "sha512-fgHc//6ClJMywYVlU1yPMl5+QAmGrNvkuUpIn7p2JZJI1uB7DIxwpDts216ubFf2yyH0lihPOs9oY2egKksbfA==", + "requires": { + "debug": "3.1.0", + "is-ascii": "1.0.0", + "mediasource": "2.1.3", + "stream-to-blob-url": "2.1.0", + "videostream": "2.4.2" + } + }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", @@ -3601,32 +9458,25 @@ "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.3.1", + "form-data": "2.3.2", "har-validator": "5.0.3", "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - }, - "dependencies": { - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - } + "uuid": "3.2.1" } }, "require-directory": { @@ -3639,19 +9489,24 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=" + }, "response-time": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz", "integrity": "sha1-/6cbq5UtYvfB1Jt0NDVfvGjf/Fo=", "requires": { - "depd": "1.1.1", + "depd": "1.1.2", "on-headers": "1.0.1" }, "dependencies": { "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" } } }, @@ -3670,6 +9525,21 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } } }, "rndm": { @@ -3704,13 +9574,14 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "sane": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", - "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.4.1.tgz", + "integrity": "sha512-fW9svvNd81XzHDZyis9/tEY1bZikDGryy8Hi1BErPyNPYv47CdLseUN+tI5FBHWXEENRtj1SWtX/jBnggLaP0w==", "requires": { "anymatch": "1.3.2", "exec-sh": "0.2.1", "fb-watchman": "2.0.0", + "fsevents": "1.1.3", "minimatch": "3.0.4", "minimist": "1.2.0", "walker": "1.0.7", @@ -3723,9 +9594,9 @@ "integrity": "sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=" }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "send": { "version": "0.13.2", @@ -3733,7 +9604,7 @@ "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", "requires": { "debug": "2.2.0", - "depd": "1.1.1", + "depd": "1.1.2", "destroy": "1.0.4", "escape-html": "1.0.3", "etag": "1.7.0", @@ -3755,9 +9626,9 @@ } }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "mime": { "version": "1.3.4", @@ -3776,6 +9647,11 @@ } } }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=" + }, "serve-favicon": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz", @@ -3804,7 +9680,7 @@ "debug": "2.2.0", "escape-html": "1.0.3", "http-errors": "1.3.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "parseurl": "1.3.2" }, "dependencies": { @@ -3843,6 +9719,15 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, + "shapeshift.io": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/shapeshift.io/-/shapeshift.io-1.3.1.tgz", + "integrity": "sha1-k599ieapP61LVWVn0/zatF1cwCE=", + "requires": { + "request": "2.83.0", + "xhr": "2.4.1" + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -3877,6 +9762,21 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "simple-get": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.7.0.tgz", + "integrity": "sha512-RkE9rGPHcxYZ/baYmgJtOSM63vH0Vyq+ma5TijBcLla41SWlh8t6XYIGMR/oeZcmr+/G8k+zrClkkVrtnQ0esg==", + "requires": { + "decompress-response": "3.3.0", + "once": "1.4.0", + "simple-concat": "1.0.0" + } + }, "simple-plist": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz", @@ -3909,6 +9809,16 @@ } } }, + "simplemde": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/simplemde/-/simplemde-1.11.2.tgz", + "integrity": "sha1-ojo12XjSxA7wfewAjJLwcNjggOM=", + "requires": { + "codemirror": "5.35.0", + "codemirror-spell-checker": "1.1.2", + "marked": "0.3.17" + } + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -3924,20 +9834,46 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "requires": { + "sort-keys": "1.1.2" } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } }, "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "sparkles": { @@ -3946,22 +9882,32 @@ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + }, "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" }, "sshpk": { "version": "1.13.1", @@ -3999,36 +9945,64 @@ "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=", "requires": { "readable-stream": "1.1.14" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "ansi-regex": "3.0.0" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, + "stream-to-blob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-to-blob/-/stream-to-blob-1.0.0.tgz", + "integrity": "sha1-n3oa2jnhbqKC67fkzaMH7aveZY0=", + "requires": { + "once": "1.4.0" + } + }, + "stream-to-blob-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/stream-to-blob-url/-/stream-to-blob-url-2.1.0.tgz", + "integrity": "sha1-w0HRBQLsUSUGBzJyWOwvWGsH1iY=", + "requires": { + "stream-to-blob": "1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } }, "stringstream": { "version": "0.0.5", @@ -4053,16 +10027,53 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, - "sync-exec": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz", - "integrity": "sha1-cX0izFPwzh3vVZQ2LzqJouu5EQU=", - "optional": true + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "tar-fs": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", + "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", + "requires": { + "chownr": "1.0.1", + "mkdirp": "0.5.1", + "pump": "1.0.3", + "tar-stream": "1.5.5" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.1", + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } }, "temp": { "version": "0.8.3", @@ -4095,37 +10106,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "time-stamp": { @@ -4146,19 +10128,34 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "1.4.1" } }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==" + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -4184,12 +10181,12 @@ "optional": true }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "2.1.18" } }, "typedarray": { @@ -4197,20 +10194,28 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typo-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.0.3.tgz", + "integrity": "sha1-VNjrx5SfGngQkItgAsaEFSbJnVo=" + }, "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + "version": "github:amplitude/ua-parser-js#ed538f16f5c6ecd8357da989b617d4f156dcf35d" }, "uglify-es": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.2.tgz", - "integrity": "sha512-g7rGvx7YiFROLXKUtFMTw+YpTVV/XXPNvDUQfzwDTcB3vINwLUr3qXnkcPCu8VCIVjxI2EqaZ+sHoAxcYE/98w==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "requires": { - "commander": "2.12.2", + "commander": "2.13.0", "source-map": "0.6.1" }, "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4226,16 +10231,30 @@ "random-bytes": "1.0.0" } }, + "uint64be": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-1.0.1.tgz", + "integrity": "sha1-H3FUIC8qG4rzU4cd2mUb80zpPpU=" + }, "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unused-filename": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-1.0.0.tgz", + "integrity": "sha1-00CID3GuIRXrqhMlvvBcxmhEacY=", + "requires": { + "modify-filename": "1.1.0", + "path-exists": "3.0.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4247,17 +10266,17 @@ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "vary": { @@ -4280,6 +10299,32 @@ "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU=" }, + "videostream": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/videostream/-/videostream-2.4.2.tgz", + "integrity": "sha1-lWAlTQD6vcQJVcGjwoIFfY2x0RU=", + "requires": { + "binary-search": "1.3.3", + "inherits": "2.0.3", + "mediasource": "2.1.3", + "mp4-box-encoding": "1.1.2", + "mp4-stream": "2.0.2", + "multistream": "2.1.0", + "pump": "1.0.3", + "range-slice-stream": "1.2.0" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, "vinyl": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", @@ -4298,6 +10343,14 @@ "makeerror": "1.0.11" } }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "1.3.1" + } + }, "watch": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", @@ -4325,12 +10378,25 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "requires": { + "string-width": "1.0.2" + } + }, "win-release": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "requires": { - "semver": "5.4.1" + "semver": "5.5.0" } }, "wordwrap": { @@ -4338,15 +10404,6 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, - "worker-farm": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", - "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", - "requires": { - "errno": "0.1.6", - "xtend": "4.0.1" - } - }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -4354,26 +10411,6 @@ "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } } }, "wrappy": { @@ -4398,13 +10435,6 @@ "requires": { "options": "0.0.6", "ultron": "1.0.2" - }, - "dependencies": { - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" - } } }, "xcode": { @@ -4424,6 +10454,17 @@ } } }, + "xhr": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.1.tgz", + "integrity": "sha512-pAIU5vBr9Hiy5cpFIbPnwf0C18ZF86DBsZKrlsf87N5De/JbA6RJ83UP/cv+aljl4S40iRVMqP4pr4sF9Dnj0A==", + "requires": { + "global": "4.3.2", + "is-function": "1.0.1", + "parse-headers": "2.0.1", + "xtend": "4.0.1" + } + }, "xmlbuilder": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz", @@ -4463,9 +10504,9 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "2.1.2", @@ -4490,6 +10531,40 @@ "which-module": "2.0.0", "y18n": "3.2.1", "yargs-parser": "7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + } } }, "yargs-parser": { diff --git a/app/package.json b/app/package.json index a798654e..8f72fc2f 100644 --- a/app/package.json +++ b/app/package.json @@ -3,10 +3,21 @@ "version": "0.0.1", "private": "true", "scripts": { - "start": "node node_modules/react-native/local-cli/cli.js start" + "start": "node node_modules/react-native/local-cli/cli.js start", + "postinstall": "cp ./patch/ReactNativeRenderer-dev.js.patch ./node_modules/react-native/Libraries/Renderer/ReactNativeRenderer-dev.js; rm ./node_modules/react-native/local-cli/core/__fixtures__/files/package.json" }, "dependencies": { - "react": "^16.0.0", - "react-native": "^0.51.0" + "lbry-redux": "lbryio/lbry-redux#common-components-refactor", + "react": "16.2.0", + "react-native": "0.52.0", + "react-native-vector-icons": "^4.5.0", + "react-navigation": "^1.0.3", + "react-navigation-redux-helpers": "^1.0.1", + "react-redux": "^5.0.3", + "redux": "^3.6.0", + "redux-persist": "^4.8.0", + "redux-persist-transform-compress": "^4.2.0", + "redux-persist-transform-filter": "0.0.10", + "redux-thunk": "^2.2.0" } } diff --git a/app/patch/ReactNativeRenderer-dev.js.patch b/app/patch/ReactNativeRenderer-dev.js.patch new file mode 100644 index 00000000..a9c9a93a --- /dev/null +++ b/app/patch/ReactNativeRenderer-dev.js.patch @@ -0,0 +1,13009 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @noflow + * @providesModule ReactNativeRenderer-dev + * @preventMunge + */ + +'use strict'; + +if (__DEV__) { + (function() { +"use strict"; + +require("InitializeCore"); +var invariant = require("fbjs/lib/invariant"); +var warning = require("fbjs/lib/warning"); +var emptyFunction = require("fbjs/lib/emptyFunction"); +var RCTEventEmitter = require("RCTEventEmitter"); +var UIManager = require("UIManager"); +var React = require("react"); +var ExceptionsManager = require("ExceptionsManager"); +var TextInputState = require("TextInputState"); +var deepDiffer = require("deepDiffer"); +var flattenStyle = require("flattenStyle"); +var emptyObject = require("fbjs/lib/emptyObject"); +var checkPropTypes = require("prop-types/checkPropTypes"); +var shallowEqual = require("fbjs/lib/shallowEqual"); +var deepFreezeAndThrowOnMutationInDev = require("deepFreezeAndThrowOnMutationInDev"); + +var ReactErrorUtils = { + // Used by Fiber to simulate a try-catch. + _caughtError: null, + _hasCaughtError: false, + + // Used by event system to capture/rethrow the first error. + _rethrowError: null, + _hasRethrowError: false, + + injection: { + injectErrorUtils: function(injectedErrorUtils) { + invariant( + typeof injectedErrorUtils.invokeGuardedCallback === "function", + "Injected invokeGuardedCallback() must be a function." + ); + invokeGuardedCallback = injectedErrorUtils.invokeGuardedCallback; + } + }, + + /** + * Call a function while guarding against errors that happens within it. + * Returns an error if it throws, otherwise null. + * + * In production, this is implemented using a try-catch. The reason we don't + * use a try-catch directly is so that we can swap out a different + * implementation in DEV mode. + * + * @param {String} name of the guard to use for logging or debugging + * @param {Function} func The function to invoke + * @param {*} context The context to use when calling the function + * @param {...*} args Arguments for function + */ + invokeGuardedCallback: function(name, func, context, a, b, c, d, e, f) { + invokeGuardedCallback.apply(ReactErrorUtils, arguments); + }, + + /** + * Same as invokeGuardedCallback, but instead of returning an error, it stores + * it in a global so it can be rethrown by `rethrowCaughtError` later. + * TODO: See if _caughtError and _rethrowError can be unified. + * + * @param {String} name of the guard to use for logging or debugging + * @param {Function} func The function to invoke + * @param {*} context The context to use when calling the function + * @param {...*} args Arguments for function + */ + invokeGuardedCallbackAndCatchFirstError: function( + name, + func, + context, + a, + b, + c, + d, + e, + f + ) { + ReactErrorUtils.invokeGuardedCallback.apply(this, arguments); + if (ReactErrorUtils.hasCaughtError()) { + var error = ReactErrorUtils.clearCaughtError(); + if (!ReactErrorUtils._hasRethrowError) { + ReactErrorUtils._hasRethrowError = true; + ReactErrorUtils._rethrowError = error; + } + } + }, + + /** + * During execution of guarded functions we will capture the first error which + * we will rethrow to be handled by the top level error handler. + */ + rethrowCaughtError: function() { + return rethrowCaughtError.apply(ReactErrorUtils, arguments); + }, + + hasCaughtError: function() { + return ReactErrorUtils._hasCaughtError; + }, + + clearCaughtError: function() { + if (ReactErrorUtils._hasCaughtError) { + var error = ReactErrorUtils._caughtError; + ReactErrorUtils._caughtError = null; + ReactErrorUtils._hasCaughtError = false; + return error; + } else { + invariant( + false, + "clearCaughtError was called but no error was captured. This error " + + "is likely caused by a bug in React. Please file an issue." + ); + } + } +}; + +var invokeGuardedCallback = function(name, func, context, a, b, c, d, e, f) { + ReactErrorUtils._hasCaughtError = false; + ReactErrorUtils._caughtError = null; + var funcArgs = Array.prototype.slice.call(arguments, 3); + try { + func.apply(context, funcArgs); + } catch (error) { + ReactErrorUtils._caughtError = error; + ReactErrorUtils._hasCaughtError = true; + } +}; + +{ + // In DEV mode, we swap out invokeGuardedCallback for a special version + // that plays more nicely with the browser's DevTools. The idea is to preserve + // "Pause on exceptions" behavior. Because React wraps all user-provided + // functions in invokeGuardedCallback, and the production version of + // invokeGuardedCallback uses a try-catch, all user exceptions are treated + // like caught exceptions, and the DevTools won't pause unless the developer + // takes the extra step of enabling pause on caught exceptions. This is + // untintuitive, though, because even though React has caught the error, from + // the developer's perspective, the error is uncaught. + // + // To preserve the expected "Pause on exceptions" behavior, we don't use a + // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake + // DOM node, and call the user-provided callback from inside an event handler + // for that fake event. If the callback throws, the error is "captured" using + // a global event handler. But because the error happens in a different + // event loop context, it does not interrupt the normal program flow. + // Effectively, this gives us try-catch behavior without actually using + // try-catch. Neat! + + // Check that the browser supports the APIs we need to implement our special + // DEV version of invokeGuardedCallback + if ( + typeof window !== "undefined" && + typeof window.dispatchEvent === "function" && + typeof document !== "undefined" && + typeof document.createEvent === "function" + ) { + var fakeNode = document.createElement("react"); + + var invokeGuardedCallbackDev = function( + name, + func, + context, + a, + b, + c, + d, + e, + f + ) { + // If document doesn't exist we know for sure we will crash in this method + // when we call document.createEvent(). However this can cause confusing + // errors: https://github.com/facebookincubator/create-react-app/issues/3482 + // So we preemptively throw with a better message instead. + invariant( + typeof document !== "undefined", + "The `document` global was defined when React was initialized, but is not " + + "defined anymore. This can happen in a test environment if a component " + + "schedules an update from an asynchronous callback, but the test has already " + + "finished running. To solve this, you can either unmount the component at " + + "the end of your test (and ensure that any asynchronous operations get " + + "canceled in `componentWillUnmount`), or you can change the test itself " + + "to be asynchronous." + ); + var evt = document.createEvent("Event"); + + // Keeps track of whether the user-provided callback threw an error. We + // set this to true at the beginning, then set it to false right after + // calling the function. If the function errors, `didError` will never be + // set to false. This strategy works even if the browser is flaky and + // fails to call our global error handler, because it doesn't rely on + // the error event at all. + var didError = true; + + // Create an event handler for our fake event. We will synchronously + // dispatch our fake event using `dispatchEvent`. Inside the handler, we + // call the user-provided callback. + var funcArgs = Array.prototype.slice.call(arguments, 3); + function callCallback() { + // We immediately remove the callback from event listeners so that + // nested `invokeGuardedCallback` calls do not clash. Otherwise, a + // nested call would trigger the fake event handlers of any call higher + // in the stack. + fakeNode.removeEventListener(evtType, callCallback, false); + func.apply(context, funcArgs); + didError = false; + } + + // Create a global error event handler. We use this to capture the value + // that was thrown. It's possible that this error handler will fire more + // than once; for example, if non-React code also calls `dispatchEvent` + // and a handler for that event throws. We should be resilient to most of + // those cases. Even if our error event handler fires more than once, the + // last error event is always used. If the callback actually does error, + // we know that the last error event is the correct one, because it's not + // possible for anything else to have happened in between our callback + // erroring and the code that follows the `dispatchEvent` call below. If + // the callback doesn't error, but the error event was fired, we know to + // ignore it because `didError` will be false, as described above. + var error = void 0; + // Use this to track whether the error event is ever called. + var didSetError = false; + var isCrossOriginError = false; + + function onError(event) { + error = event.error; + didSetError = true; + if (error === null && event.colno === 0 && event.lineno === 0) { + isCrossOriginError = true; + } + } + + // Create a fake event type. + var evtType = "react-" + (name ? name : "invokeguardedcallback"); + + // Attach our event handlers + window.addEventListener("error", onError); + fakeNode.addEventListener(evtType, callCallback, false); + + // Synchronously dispatch our fake event. If the user-provided function + // errors, it will trigger our global error handler. + evt.initEvent(evtType, false, false); + fakeNode.dispatchEvent(evt); + + if (didError) { + if (!didSetError) { + // The callback errored, but the error event never fired. + error = new Error( + "An error was thrown inside one of your components, but React " + + "doesn't know what it was. This is likely due to browser " + + 'flakiness. React does its best to preserve the "Pause on ' + + 'exceptions" behavior of the DevTools, which requires some ' + + "DEV-mode only tricks. It's possible that these don't work in " + + "your browser. Try triggering the error in production mode, " + + "or switching to a modern browser. If you suspect that this is " + + "actually an issue with React, please file an issue." + ); + } else if (isCrossOriginError) { + error = new Error( + "A cross-origin error was thrown. React doesn't have access to " + + "the actual error object in development. " + + "See https://fb.me/react-crossorigin-error for more information." + ); + } + ReactErrorUtils._hasCaughtError = true; + ReactErrorUtils._caughtError = error; + } else { + ReactErrorUtils._hasCaughtError = false; + ReactErrorUtils._caughtError = null; + } + + // Remove our event listeners + window.removeEventListener("error", onError); + }; + + invokeGuardedCallback = invokeGuardedCallbackDev; + } +} + +var rethrowCaughtError = function() { + if (ReactErrorUtils._hasRethrowError) { + var error = ReactErrorUtils._rethrowError; + ReactErrorUtils._rethrowError = null; + ReactErrorUtils._hasRethrowError = false; + throw error; + } +}; + +/** + * Injectable ordering of event plugins. + */ +var eventPluginOrder = null; + +/** + * Injectable mapping from names to event plugin modules. + */ +var namesToPlugins = {}; + +/** + * Recomputes the plugin list using the injected plugins and plugin ordering. + * + * @private + */ +function recomputePluginOrdering() { + if (!eventPluginOrder) { + // Wait until an `eventPluginOrder` is injected. + return; + } + for (var pluginName in namesToPlugins) { + var pluginModule = namesToPlugins[pluginName]; + var pluginIndex = eventPluginOrder.indexOf(pluginName); + invariant( + pluginIndex > -1, + "EventPluginRegistry: Cannot inject event plugins that do not exist in " + + "the plugin ordering, `%s`.", + pluginName + ); + if (plugins[pluginIndex]) { + continue; + } + invariant( + pluginModule.extractEvents, + "EventPluginRegistry: Event plugins must implement an `extractEvents` " + + "method, but `%s` does not.", + pluginName + ); + plugins[pluginIndex] = pluginModule; + var publishedEvents = pluginModule.eventTypes; + for (var eventName in publishedEvents) { + invariant( + publishEventForPlugin( + publishedEvents[eventName], + pluginModule, + eventName + ), + "EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.", + eventName, + pluginName + ); + } + } +} + +/** + * Publishes an event so that it can be dispatched by the supplied plugin. + * + * @param {object} dispatchConfig Dispatch configuration for the event. + * @param {object} PluginModule Plugin publishing the event. + * @return {boolean} True if the event was successfully published. + * @private + */ +function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { + invariant( + !eventNameDispatchConfigs.hasOwnProperty(eventName), + "EventPluginHub: More than one plugin attempted to publish the same " + + "event name, `%s`.", + eventName + ); + eventNameDispatchConfigs[eventName] = dispatchConfig; + + var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; + if (phasedRegistrationNames) { + for (var phaseName in phasedRegistrationNames) { + if (phasedRegistrationNames.hasOwnProperty(phaseName)) { + var phasedRegistrationName = phasedRegistrationNames[phaseName]; + publishRegistrationName( + phasedRegistrationName, + pluginModule, + eventName + ); + } + } + return true; + } else if (dispatchConfig.registrationName) { + publishRegistrationName( + dispatchConfig.registrationName, + pluginModule, + eventName + ); + return true; + } + return false; +} + +/** + * Publishes a registration name that is used to identify dispatched events. + * + * @param {string} registrationName Registration name to add. + * @param {object} PluginModule Plugin publishing the event. + * @private + */ +function publishRegistrationName(registrationName, pluginModule, eventName) { + invariant( + !registrationNameModules[registrationName], + "EventPluginHub: More than one plugin attempted to publish the same " + + "registration name, `%s`.", + registrationName + ); + registrationNameModules[registrationName] = pluginModule; + registrationNameDependencies[registrationName] = + pluginModule.eventTypes[eventName].dependencies; + + { + var lowerCasedName = registrationName.toLowerCase(); + } +} + +/** + * Registers plugins so that they can extract and dispatch events. + * + * @see {EventPluginHub} + */ + +/** + * Ordered list of injected plugins. + */ +var plugins = []; + +/** + * Mapping from event name to dispatch config + */ +var eventNameDispatchConfigs = {}; + +/** + * Mapping from registration name to plugin module + */ +var registrationNameModules = {}; + +/** + * Mapping from registration name to event name + */ +var registrationNameDependencies = {}; + +/** + * Mapping from lowercase registration names to the properly cased version, + * used to warn in the case of missing event handlers. Available + * only in true. + * @type {Object} + */ + +// Trust the developer to only use possibleRegistrationNames in true + +/** + * Injects an ordering of plugins (by plugin name). This allows the ordering + * to be decoupled from injection of the actual plugins so that ordering is + * always deterministic regardless of packaging, on-the-fly injection, etc. + * + * @param {array} InjectedEventPluginOrder + * @internal + * @see {EventPluginHub.injection.injectEventPluginOrder} + */ +function injectEventPluginOrder(injectedEventPluginOrder) { + invariant( + !eventPluginOrder, + "EventPluginRegistry: Cannot inject event plugin ordering more than " + + "once. You are likely trying to load more than one copy of React." + ); + // Clone the ordering so it cannot be dynamically mutated. + eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); + recomputePluginOrdering(); +} + +/** + * Injects plugins to be used by `EventPluginHub`. The plugin names must be + * in the ordering injected by `injectEventPluginOrder`. + * + * Plugins can be injected as part of page initialization or on-the-fly. + * + * @param {object} injectedNamesToPlugins Map from names to plugin modules. + * @internal + * @see {EventPluginHub.injection.injectEventPluginsByName} + */ +function injectEventPluginsByName(injectedNamesToPlugins) { + var isOrderingDirty = false; + for (var pluginName in injectedNamesToPlugins) { + if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { + continue; + } + var pluginModule = injectedNamesToPlugins[pluginName]; + if ( + !namesToPlugins.hasOwnProperty(pluginName) || + namesToPlugins[pluginName] !== pluginModule + ) { + invariant( + !namesToPlugins[pluginName], + "EventPluginRegistry: Cannot inject two different event plugins " + + "using the same name, `%s`.", + pluginName + ); + namesToPlugins[pluginName] = pluginModule; + isOrderingDirty = true; + } + } + if (isOrderingDirty) { + recomputePluginOrdering(); + } +} + +var getFiberCurrentPropsFromNode = null; +var getInstanceFromNode = null; +var getNodeFromInstance = null; + +var injection$1 = { + injectComponentTree: function(Injected) { + getFiberCurrentPropsFromNode = Injected.getFiberCurrentPropsFromNode; + getInstanceFromNode = Injected.getInstanceFromNode; + getNodeFromInstance = Injected.getNodeFromInstance; + + { + warning( + getNodeFromInstance && getInstanceFromNode, + "EventPluginUtils.injection.injectComponentTree(...): Injected " + + "module is missing getNodeFromInstance or getInstanceFromNode." + ); + } + } +}; + +function isEndish(topLevelType) { + return ( + topLevelType === "topMouseUp" || + topLevelType === "topTouchEnd" || + topLevelType === "topTouchCancel" + ); +} + +function isMoveish(topLevelType) { + return topLevelType === "topMouseMove" || topLevelType === "topTouchMove"; +} +function isStartish(topLevelType) { + return topLevelType === "topMouseDown" || topLevelType === "topTouchStart"; +} + +var validateEventDispatches; +{ + validateEventDispatches = function(event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + + var listenersIsArr = Array.isArray(dispatchListeners); + var listenersLen = listenersIsArr + ? dispatchListeners.length + : dispatchListeners ? 1 : 0; + + var instancesIsArr = Array.isArray(dispatchInstances); + var instancesLen = instancesIsArr + ? dispatchInstances.length + : dispatchInstances ? 1 : 0; + + warning( + instancesIsArr === listenersIsArr && instancesLen === listenersLen, + "EventPluginUtils: Invalid `event`." + ); + }; +} + +/** + * Dispatch the event to the listener. + * @param {SyntheticEvent} event SyntheticEvent to handle + * @param {boolean} simulated If the event is simulated (changes exn behavior) + * @param {function} listener Application-level callback + * @param {*} inst Internal component instance + */ +function executeDispatch(event, simulated, listener, inst) { + var type = event.type || "unknown-event"; + event.currentTarget = getNodeFromInstance(inst); + ReactErrorUtils.invokeGuardedCallbackAndCatchFirstError( + type, + listener, + undefined, + event + ); + event.currentTarget = null; +} + +/** + * Standard/simple iteration through an event's collected dispatches. + */ +function executeDispatchesInOrder(event, simulated) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + { + validateEventDispatches(event); + } + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + // Listeners and Instances are two parallel arrays that are always in sync. + executeDispatch( + event, + simulated, + dispatchListeners[i], + dispatchInstances[i] + ); + } + } else if (dispatchListeners) { + executeDispatch(event, simulated, dispatchListeners, dispatchInstances); + } + event._dispatchListeners = null; + event._dispatchInstances = null; +} + +/** + * Standard/simple iteration through an event's collected dispatches, but stops + * at the first dispatch execution returning true, and returns that id. + * + * @return {?string} id of the first dispatch execution who's listener returns + * true, or null if no listener returned true. + */ +function executeDispatchesInOrderStopAtTrueImpl(event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + { + validateEventDispatches(event); + } + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + // Listeners and Instances are two parallel arrays that are always in sync. + if (dispatchListeners[i](event, dispatchInstances[i])) { + return dispatchInstances[i]; + } + } + } else if (dispatchListeners) { + if (dispatchListeners(event, dispatchInstances)) { + return dispatchInstances; + } + } + return null; +} + +/** + * @see executeDispatchesInOrderStopAtTrueImpl + */ +function executeDispatchesInOrderStopAtTrue(event) { + var ret = executeDispatchesInOrderStopAtTrueImpl(event); + event._dispatchInstances = null; + event._dispatchListeners = null; + return ret; +} + +/** + * Execution of a "direct" dispatch - there must be at most one dispatch + * accumulated on the event or it is considered an error. It doesn't really make + * sense for an event with multiple dispatches (bubbled) to keep track of the + * return values at each dispatch execution, but it does tend to make sense when + * dealing with "direct" dispatches. + * + * @return {*} The return value of executing the single dispatch. + */ +function executeDirectDispatch(event) { + { + validateEventDispatches(event); + } + var dispatchListener = event._dispatchListeners; + var dispatchInstance = event._dispatchInstances; + invariant( + !Array.isArray(dispatchListener), + "executeDirectDispatch(...): Invalid `event`." + ); + event.currentTarget = dispatchListener + ? getNodeFromInstance(dispatchInstance) + : null; + var res = dispatchListener ? dispatchListener(event) : null; + event.currentTarget = null; + event._dispatchListeners = null; + event._dispatchInstances = null; + return res; +} + +/** + * @param {SyntheticEvent} event + * @return {boolean} True iff number of dispatches accumulated is greater than 0. + */ +function hasDispatches(event) { + return !!event._dispatchListeners; +} + +/** + * Accumulates items that must not be null or undefined into the first one. This + * is used to conserve memory by avoiding array allocations, and thus sacrifices + * API cleanness. Since `current` can be null before being passed in and not + * null after this function, make sure to assign it back to `current`: + * + * `a = accumulateInto(a, b);` + * + * This API should be sparingly used. Try `accumulate` for something cleaner. + * + * @return {*|array<*>} An accumulation of items. + */ + +function accumulateInto(current, next) { + invariant( + next != null, + "accumulateInto(...): Accumulated items must not be null or undefined." + ); + + if (current == null) { + return next; + } + + // Both are not empty. Warning: Never call x.concat(y) when you are not + // certain that x is an Array (x could be a string with concat method). + if (Array.isArray(current)) { + if (Array.isArray(next)) { + current.push.apply(current, next); + return current; + } + current.push(next); + return current; + } + + if (Array.isArray(next)) { + // A bit too dangerous to mutate `next`. + return [current].concat(next); + } + + return [current, next]; +} + +/** + * @param {array} arr an "accumulation" of items which is either an Array or + * a single item. Useful when paired with the `accumulate` module. This is a + * simple utility that allows us to reason about a collection of items, but + * handling the case when there is exactly one item (and we do not need to + * allocate an array). + * @param {function} cb Callback invoked with each element or a collection. + * @param {?} [scope] Scope used as `this` in a callback. + */ +function forEachAccumulated(arr, cb, scope) { + if (Array.isArray(arr)) { + arr.forEach(cb, scope); + } else if (arr) { + cb.call(scope, arr); + } +} + +/** + * Internal queue of events that have accumulated their dispatches and are + * waiting to have their dispatches executed. + */ +var eventQueue = null; + +/** + * Dispatches an event and releases it back into the pool, unless persistent. + * + * @param {?object} event Synthetic event to be dispatched. + * @param {boolean} simulated If the event is simulated (changes exn behavior) + * @private + */ +var executeDispatchesAndRelease = function(event, simulated) { + if (event) { + executeDispatchesInOrder(event, simulated); + + if (!event.isPersistent()) { + event.constructor.release(event); + } + } +}; +var executeDispatchesAndReleaseSimulated = function(e) { + return executeDispatchesAndRelease(e, true); +}; +var executeDispatchesAndReleaseTopLevel = function(e) { + return executeDispatchesAndRelease(e, false); +}; + +function isInteractive(tag) { + return ( + tag === "button" || + tag === "input" || + tag === "select" || + tag === "textarea" + ); +} + +function shouldPreventMouseEvent(name, type, props) { + switch (name) { + case "onClick": + case "onClickCapture": + case "onDoubleClick": + case "onDoubleClickCapture": + case "onMouseDown": + case "onMouseDownCapture": + case "onMouseMove": + case "onMouseMoveCapture": + case "onMouseUp": + case "onMouseUpCapture": + return !!(props.disabled && isInteractive(type)); + default: + return false; + } +} + +/** + * This is a unified interface for event plugins to be installed and configured. + * + * Event plugins can implement the following properties: + * + * `extractEvents` {function(string, DOMEventTarget, string, object): *} + * Required. When a top-level event is fired, this method is expected to + * extract synthetic events that will in turn be queued and dispatched. + * + * `eventTypes` {object} + * Optional, plugins that fire events must publish a mapping of registration + * names that are used to register listeners. Values of this mapping must + * be objects that contain `registrationName` or `phasedRegistrationNames`. + * + * `executeDispatch` {function(object, function, string)} + * Optional, allows plugins to override how an event gets dispatched. By + * default, the listener is simply invoked. + * + * Each plugin that is injected into `EventsPluginHub` is immediately operable. + * + * @public + */ + +/** + * Methods for injecting dependencies. + */ +var injection = { + /** + * @param {array} InjectedEventPluginOrder + * @public + */ + injectEventPluginOrder: injectEventPluginOrder, + + /** + * @param {object} injectedNamesToPlugins Map from names to plugin modules. + */ + injectEventPluginsByName: injectEventPluginsByName +}; + +/** + * @param {object} inst The instance, which is the source of events. + * @param {string} registrationName Name of listener (e.g. `onClick`). + * @return {?function} The stored callback. + */ +function getListener(inst, registrationName) { + var listener; + + // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not + // live here; needs to be moved to a better place soon + var stateNode = inst.stateNode; + if (!stateNode) { + // Work in progress (ex: onload events in incremental mode). + return null; + } + var props = getFiberCurrentPropsFromNode(stateNode); + if (!props) { + // Work in progress. + return null; + } + listener = props[registrationName]; + if (shouldPreventMouseEvent(registrationName, inst.type, props)) { + return null; + } + invariant( + !listener || typeof listener === "function", + "Expected `%s` listener to be a function, instead got a value of `%s` type.", + registrationName, + typeof listener + ); + return listener; +} + +/** + * Allows registered plugins an opportunity to extract events from top-level + * native browser events. + * + * @return {*} An accumulation of synthetic events. + * @internal + */ +function extractEvents( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget +) { + var events; + for (var i = 0; i < plugins.length; i++) { + // Not every plugin in the ordering may be loaded at runtime. + var possiblePlugin = plugins[i]; + if (possiblePlugin) { + var extractedEvents = possiblePlugin.extractEvents( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget + ); + if (extractedEvents) { + events = accumulateInto(events, extractedEvents); + } + } + } + return events; +} + +/** + * Enqueues a synthetic event that should be dispatched when + * `processEventQueue` is invoked. + * + * @param {*} events An accumulation of synthetic events. + * @internal + */ +function enqueueEvents(events) { + if (events) { + eventQueue = accumulateInto(eventQueue, events); + } +} + +/** + * Dispatches all synthetic events on the event queue. + * + * @internal + */ +function processEventQueue(simulated) { + // Set `eventQueue` to null before processing it so that we can tell if more + // events get enqueued while processing. + var processingEventQueue = eventQueue; + eventQueue = null; + + if (!processingEventQueue) { + return; + } + + if (simulated) { + forEachAccumulated( + processingEventQueue, + executeDispatchesAndReleaseSimulated + ); + } else { + forEachAccumulated( + processingEventQueue, + executeDispatchesAndReleaseTopLevel + ); + } + invariant( + !eventQueue, + "processEventQueue(): Additional events were enqueued while processing " + + "an event queue. Support for this has not yet been implemented." + ); + // This would be a good time to rethrow if any of the event handlers threw. + ReactErrorUtils.rethrowCaughtError(); +} + +var IndeterminateComponent = 0; // Before we know whether it is functional or class +var FunctionalComponent = 1; +var ClassComponent = 2; +var HostRoot = 3; // Root of a host tree. Could be nested inside another node. +var HostPortal = 4; // A subtree. Could be an entry point to a different renderer. +var HostComponent = 5; +var HostText = 6; +var CallComponent = 7; +var CallHandlerPhase = 8; +var ReturnComponent = 9; +var Fragment = 10; + +function getParent(inst) { + do { + inst = inst["return"]; + // TODO: If this is a HostRoot we might want to bail out. + // That is depending on if we want nested subtrees (layers) to bubble + // events to their parent. We could also go through parentNode on the + // host node but that wouldn't work for React Native and doesn't let us + // do the portal feature. + } while (inst && inst.tag !== HostComponent); + if (inst) { + return inst; + } + return null; +} + +/** + * Return the lowest common ancestor of A and B, or null if they are in + * different trees. + */ +function getLowestCommonAncestor(instA, instB) { + var depthA = 0; + for (var tempA = instA; tempA; tempA = getParent(tempA)) { + depthA++; + } + var depthB = 0; + for (var tempB = instB; tempB; tempB = getParent(tempB)) { + depthB++; + } + + // If A is deeper, crawl up. + while (depthA - depthB > 0) { + instA = getParent(instA); + depthA--; + } + + // If B is deeper, crawl up. + while (depthB - depthA > 0) { + instB = getParent(instB); + depthB--; + } + + // Walk in lockstep until we find a match. + var depth = depthA; + while (depth--) { + if (instA === instB || instA === instB.alternate) { + return instA; + } + instA = getParent(instA); + instB = getParent(instB); + } + return null; +} + +/** + * Return if A is an ancestor of B. + */ +function isAncestor(instA, instB) { + while (instB) { + if (instA === instB || instA === instB.alternate) { + return true; + } + instB = getParent(instB); + } + return false; +} + +/** + * Return the parent instance of the passed-in instance. + */ +function getParentInstance(inst) { + return getParent(inst); +} + +/** + * Simulates the traversal of a two-phase, capture/bubble event dispatch. + */ +function traverseTwoPhase(inst, fn, arg) { + var path = []; + while (inst) { + path.push(inst); + inst = getParent(inst); + } + var i; + for (i = path.length; i-- > 0; ) { + fn(path[i], "captured", arg); + } + for (i = 0; i < path.length; i++) { + fn(path[i], "bubbled", arg); + } +} + +/** + * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that + * should would receive a `mouseEnter` or `mouseLeave` event. + * + * Does not invoke the callback on the nearest common ancestor because nothing + * "entered" or "left" that element. + */ + +/** + * Some event types have a notion of different registration names for different + * "phases" of propagation. This finds listeners by a given phase. + */ +function listenerAtPhase(inst, event, propagationPhase) { + var registrationName = + event.dispatchConfig.phasedRegistrationNames[propagationPhase]; + return getListener(inst, registrationName); +} + +/** + * A small set of propagation patterns, each of which will accept a small amount + * of information, and generate a set of "dispatch ready event objects" - which + * are sets of events that have already been annotated with a set of dispatched + * listener functions/ids. The API is designed this way to discourage these + * propagation strategies from actually executing the dispatches, since we + * always want to collect the entire set of dispatches before executing even a + * single one. + */ + +/** + * Tags a `SyntheticEvent` with dispatched listeners. Creating this function + * here, allows us to not have to bind or create functions for each event. + * Mutating the event's members allows us to not have to create a wrapping + * "dispatch" object that pairs the event with the listener. + */ +function accumulateDirectionalDispatches(inst, phase, event) { + { + warning(inst, "Dispatching inst must not be null"); + } + var listener = listenerAtPhase(inst, event, phase); + if (listener) { + event._dispatchListeners = accumulateInto( + event._dispatchListeners, + listener + ); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } +} + +/** + * Collect dispatches (must be entirely collected before dispatching - see unit + * tests). Lazily allocate the array to conserve memory. We must loop through + * each event and perform the traversal for each one. We cannot perform a + * single traversal for the entire collection of events because each event may + * have a different target. + */ +function accumulateTwoPhaseDispatchesSingle(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); + } +} + +/** + * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID. + */ +function accumulateTwoPhaseDispatchesSingleSkipTarget(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + var targetInst = event._targetInst; + var parentInst = targetInst ? getParentInstance(targetInst) : null; + traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event); + } +} + +/** + * Accumulates without regard to direction, does not look for phased + * registration names. Same as `accumulateDirectDispatchesSingle` but without + * requiring that the `dispatchMarker` be the same as the dispatched ID. + */ +function accumulateDispatches(inst, ignoredDirection, event) { + if (inst && event && event.dispatchConfig.registrationName) { + var registrationName = event.dispatchConfig.registrationName; + var listener = getListener(inst, registrationName); + if (listener) { + event._dispatchListeners = accumulateInto( + event._dispatchListeners, + listener + ); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } + } +} + +/** + * Accumulates dispatches on an `SyntheticEvent`, but only for the + * `dispatchMarker`. + * @param {SyntheticEvent} event + */ +function accumulateDirectDispatchesSingle(event) { + if (event && event.dispatchConfig.registrationName) { + accumulateDispatches(event._targetInst, null, event); + } +} + +function accumulateTwoPhaseDispatches(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle); +} + +function accumulateTwoPhaseDispatchesSkipTarget(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget); +} + +function accumulateDirectDispatches(events) { + forEachAccumulated(events, accumulateDirectDispatchesSingle); +} + +/* eslint valid-typeof: 0 */ + +var didWarnForAddedNewProperty = false; +var isProxySupported = typeof Proxy === 'function' && !Object.isSealed(new Proxy({}, {})); +var EVENT_POOL_SIZE = 10; + +var shouldBeReleasedProperties = [ + "dispatchConfig", + "_targetInst", + "nativeEvent", + "isDefaultPrevented", + "isPropagationStopped", + "_dispatchListeners", + "_dispatchInstances" +]; + +/** + * @interface Event + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var EventInterface = { + type: null, + target: null, + // currentTarget is set when dispatching; no use in copying it here + currentTarget: emptyFunction.thatReturnsNull, + eventPhase: null, + bubbles: null, + cancelable: null, + timeStamp: function(event) { + return event.timeStamp || Date.now(); + }, + defaultPrevented: null, + isTrusted: null +}; + +/** + * Synthetic events are dispatched by event plugins, typically in response to a + * top-level event delegation handler. + * + * These systems should generally use pooling to reduce the frequency of garbage + * collection. The system should check `isPersistent` to determine whether the + * event should be released into the pool after being dispatched. Users that + * need a persisted event should invoke `persist`. + * + * Synthetic events (and subclasses) implement the DOM Level 3 Events API by + * normalizing browser quirks. Subclasses do not necessarily have to implement a + * DOM interface; custom application-specific events can also subclass this. + * + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {*} targetInst Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @param {DOMEventTarget} nativeEventTarget Target node. + */ +function SyntheticEvent( + dispatchConfig, + targetInst, + nativeEvent, + nativeEventTarget +) { + { + // these have a getter/setter for warnings + delete this.nativeEvent; + delete this.preventDefault; + delete this.stopPropagation; + } + + this.dispatchConfig = dispatchConfig; + this._targetInst = targetInst; + this.nativeEvent = nativeEvent; + + var Interface = this.constructor.Interface; + for (var propName in Interface) { + if (!Interface.hasOwnProperty(propName)) { + continue; + } + { + delete this[propName]; // this has a getter/setter for warnings + } + var normalize = Interface[propName]; + if (normalize) { + this[propName] = normalize(nativeEvent); + } else { + if (propName === "target") { + this.target = nativeEventTarget; + } else { + this[propName] = nativeEvent[propName]; + } + } + } + + var defaultPrevented = + nativeEvent.defaultPrevented != null + ? nativeEvent.defaultPrevented + : nativeEvent.returnValue === false; + if (defaultPrevented) { + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + } else { + this.isDefaultPrevented = emptyFunction.thatReturnsFalse; + } + this.isPropagationStopped = emptyFunction.thatReturnsFalse; + return this; +} + +Object.assign(SyntheticEvent.prototype, { + preventDefault: function() { + this.defaultPrevented = true; + var event = this.nativeEvent; + if (!event) { + return; + } + + if (event.preventDefault) { + event.preventDefault(); + } else if (typeof event.returnValue !== "unknown") { + event.returnValue = false; + } + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + }, + + stopPropagation: function() { + var event = this.nativeEvent; + if (!event) { + return; + } + + if (event.stopPropagation) { + event.stopPropagation(); + } else if (typeof event.cancelBubble !== "unknown") { + // The ChangeEventPlugin registers a "propertychange" event for + // IE. This event does not support bubbling or cancelling, and + // any references to cancelBubble throw "Member not found". A + // typeof check of "unknown" circumvents this issue (and is also + // IE specific). + event.cancelBubble = true; + } + + this.isPropagationStopped = emptyFunction.thatReturnsTrue; + }, + + /** + * We release all dispatched `SyntheticEvent`s after each event loop, adding + * them back into the pool. This allows a way to hold onto a reference that + * won't be added back into the pool. + */ + persist: function() { + this.isPersistent = emptyFunction.thatReturnsTrue; + }, + + /** + * Checks if this event should be released back into the pool. + * + * @return {boolean} True if this should not be released, false otherwise. + */ + isPersistent: emptyFunction.thatReturnsFalse, + + /** + * `PooledClass` looks for `destructor` on each instance it releases. + */ + destructor: function() { + var Interface = this.constructor.Interface; + for (var propName in Interface) { + { + Object.defineProperty( + this, + propName, + getPooledWarningPropertyDefinition(propName, Interface[propName]) + ); + } + } + for (var i = 0; i < shouldBeReleasedProperties.length; i++) { + this[shouldBeReleasedProperties[i]] = null; + } + { + Object.defineProperty( + this, + "nativeEvent", + getPooledWarningPropertyDefinition("nativeEvent", null) + ); + Object.defineProperty( + this, + "preventDefault", + getPooledWarningPropertyDefinition("preventDefault", emptyFunction) + ); + Object.defineProperty( + this, + "stopPropagation", + getPooledWarningPropertyDefinition("stopPropagation", emptyFunction) + ); + } + } +}); + +SyntheticEvent.Interface = EventInterface; + +/** + * Helper to reduce boilerplate when creating subclasses. + * + * @param {function} Class + * @param {?object} Interface + */ +SyntheticEvent.augmentClass = function(Class, Interface) { + var Super = this; + + var E = function() {}; + E.prototype = Super.prototype; + var prototype = new E(); + + Object.assign(prototype, Class.prototype); + Class.prototype = prototype; + Class.prototype.constructor = Class; + + Class.Interface = Object.assign({}, Super.Interface, Interface); + Class.augmentClass = Super.augmentClass; + addEventPoolingTo(Class); +}; + +/** Proxying after everything set on SyntheticEvent + * to resolve Proxy issue on some WebKit browsers + * in which some Event properties are set to undefined (GH#10010) + */ +{ + if (isProxySupported) { + /*eslint-disable no-func-assign */ + SyntheticEvent = new Proxy(SyntheticEvent, { + construct: function(target, args) { + return this.apply(target, Object.create(target.prototype), args); + }, + apply: function(constructor, that, args) { + return new Proxy(constructor.apply(that, args), { + set: function(target, prop, value) { + if ( + prop !== "isPersistent" && + !target.constructor.Interface.hasOwnProperty(prop) && + shouldBeReleasedProperties.indexOf(prop) === -1 + ) { + warning( + didWarnForAddedNewProperty || target.isPersistent(), + "This synthetic event is reused for performance reasons. If you're " + + "seeing this, you're adding a new property in the synthetic event object. " + + "The property is never released. See " + + "https://fb.me/react-event-pooling for more information." + ); + didWarnForAddedNewProperty = true; + } + target[prop] = value; + return true; + } + }); + } + }); + /*eslint-enable no-func-assign */ + } +} + +addEventPoolingTo(SyntheticEvent); + +/** + * Helper to nullify syntheticEvent instance properties when destructing + * + * @param {String} propName + * @param {?object} getVal + * @return {object} defineProperty object + */ +function getPooledWarningPropertyDefinition(propName, getVal) { + var isFunction = typeof getVal === "function"; + return { + configurable: true, + set: set, + get: get + }; + + function set(val) { + var action = isFunction ? "setting the method" : "setting the property"; + warn(action, "This is effectively a no-op"); + return val; + } + + function get() { + var action = isFunction ? "accessing the method" : "accessing the property"; + var result = isFunction + ? "This is a no-op function" + : "This is set to null"; + warn(action, result); + return getVal; + } + + function warn(action, result) { + var warningCondition = false; + warning( + warningCondition, + "This synthetic event is reused for performance reasons. If you're seeing this, " + + "you're %s `%s` on a released/nullified synthetic event. %s. " + + "If you must keep the original synthetic event around, use event.persist(). " + + "See https://fb.me/react-event-pooling for more information.", + action, + propName, + result + ); + } +} + +function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) { + var EventConstructor = this; + if (EventConstructor.eventPool.length) { + var instance = EventConstructor.eventPool.pop(); + EventConstructor.call( + instance, + dispatchConfig, + targetInst, + nativeEvent, + nativeInst + ); + return instance; + } + return new EventConstructor( + dispatchConfig, + targetInst, + nativeEvent, + nativeInst + ); +} + +function releasePooledEvent(event) { + var EventConstructor = this; + invariant( + event instanceof EventConstructor, + "Trying to release an event instance into a pool of a different type." + ); + event.destructor(); + if (EventConstructor.eventPool.length < EVENT_POOL_SIZE) { + EventConstructor.eventPool.push(event); + } +} + +function addEventPoolingTo(EventConstructor) { + EventConstructor.eventPool = []; + EventConstructor.getPooled = getPooledEvent; + EventConstructor.release = releasePooledEvent; +} + +var SyntheticEvent$1 = SyntheticEvent; + +/** + * `touchHistory` isn't actually on the native event, but putting it in the + * interface will ensure that it is cleaned up when pooled/destroyed. The + * `ResponderEventPlugin` will populate it appropriately. + */ +var ResponderEventInterface = { + touchHistory: function(nativeEvent) { + return null; // Actually doesn't even look at the native event. + } +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native event. + * @extends {SyntheticEvent} + */ +function ResponderSyntheticEvent( + dispatchConfig, + dispatchMarker, + nativeEvent, + nativeEventTarget +) { + return SyntheticEvent$1.call( + this, + dispatchConfig, + dispatchMarker, + nativeEvent, + nativeEventTarget + ); +} + +SyntheticEvent$1.augmentClass(ResponderSyntheticEvent, ResponderEventInterface); + +/** + * Tracks the position and time of each active touch by `touch.identifier`. We + * should typically only see IDs in the range of 1-20 because IDs get recycled + * when touches end and start again. + */ + +var MAX_TOUCH_BANK = 20; +var touchBank = []; +var touchHistory = { + touchBank: touchBank, + numberActiveTouches: 0, + // If there is only one active touch, we remember its location. This prevents + // us having to loop through all of the touches all the time in the most + // common case. + indexOfSingleActiveTouch: -1, + mostRecentTimeStamp: 0 +}; + +function timestampForTouch(touch) { + // The legacy internal implementation provides "timeStamp", which has been + // renamed to "timestamp". Let both work for now while we iron it out + // TODO (evv): rename timeStamp to timestamp in internal code + return touch.timeStamp || touch.timestamp; +} + +/** + * TODO: Instead of making gestures recompute filtered velocity, we could + * include a built in velocity computation that can be reused globally. + */ +function createTouchRecord(touch) { + return { + touchActive: true, + startPageX: touch.pageX, + startPageY: touch.pageY, + startTimeStamp: timestampForTouch(touch), + currentPageX: touch.pageX, + currentPageY: touch.pageY, + currentTimeStamp: timestampForTouch(touch), + previousPageX: touch.pageX, + previousPageY: touch.pageY, + previousTimeStamp: timestampForTouch(touch) + }; +} + +function resetTouchRecord(touchRecord, touch) { + touchRecord.touchActive = true; + touchRecord.startPageX = touch.pageX; + touchRecord.startPageY = touch.pageY; + touchRecord.startTimeStamp = timestampForTouch(touch); + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchRecord.previousPageX = touch.pageX; + touchRecord.previousPageY = touch.pageY; + touchRecord.previousTimeStamp = timestampForTouch(touch); +} + +function getTouchIdentifier(_ref) { + var identifier = _ref.identifier; + + invariant(identifier != null, "Touch object is missing identifier."); + { + warning( + identifier <= MAX_TOUCH_BANK, + "Touch identifier %s is greater than maximum supported %s which causes " + + "performance issues backfilling array locations for all of the indices.", + identifier, + MAX_TOUCH_BANK + ); + } + return identifier; +} + +function recordTouchStart(touch) { + var identifier = getTouchIdentifier(touch); + var touchRecord = touchBank[identifier]; + if (touchRecord) { + resetTouchRecord(touchRecord, touch); + } else { + touchBank[identifier] = createTouchRecord(touch); + } + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); +} + +function recordTouchMove(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + if (touchRecord) { + touchRecord.touchActive = true; + touchRecord.previousPageX = touchRecord.currentPageX; + touchRecord.previousPageY = touchRecord.currentPageY; + touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } else { + console.error( + "Cannot record touch move without a touch start.\n" + "Touch Move: %s\n", + "Touch Bank: %s", + printTouch(touch), + printTouchBank() + ); + } +} + +function recordTouchEnd(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + if (touchRecord) { + touchRecord.touchActive = false; + touchRecord.previousPageX = touchRecord.currentPageX; + touchRecord.previousPageY = touchRecord.currentPageY; + touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } else { + console.error( + "Cannot record touch end without a touch start.\n" + "Touch End: %s\n", + "Touch Bank: %s", + printTouch(touch), + printTouchBank() + ); + } +} + +function printTouch(touch) { + return JSON.stringify({ + identifier: touch.identifier, + pageX: touch.pageX, + pageY: touch.pageY, + timestamp: timestampForTouch(touch) + }); +} + +function printTouchBank() { + var printed = JSON.stringify(touchBank.slice(0, MAX_TOUCH_BANK)); + if (touchBank.length > MAX_TOUCH_BANK) { + printed += " (original size: " + touchBank.length + ")"; + } + return printed; +} + +var ResponderTouchHistoryStore = { + recordTouchTrack: function(topLevelType, nativeEvent) { + if (isMoveish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchMove); + } else if (isStartish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchStart); + touchHistory.numberActiveTouches = nativeEvent.touches.length; + if (touchHistory.numberActiveTouches === 1) { + touchHistory.indexOfSingleActiveTouch = + nativeEvent.touches[0].identifier; + } + } else if (isEndish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchEnd); + touchHistory.numberActiveTouches = nativeEvent.touches.length; + if (touchHistory.numberActiveTouches === 1) { + for (var i = 0; i < touchBank.length; i++) { + var touchTrackToCheck = touchBank[i]; + if (touchTrackToCheck != null && touchTrackToCheck.touchActive) { + touchHistory.indexOfSingleActiveTouch = i; + break; + } + } + { + var activeRecord = touchBank[touchHistory.indexOfSingleActiveTouch]; + warning( + activeRecord != null && activeRecord.touchActive, + "Cannot find single active touch." + ); + } + } + } + }, + + touchHistory: touchHistory +}; + +/** + * Accumulates items that must not be null or undefined. + * + * This is used to conserve memory by avoiding array allocations. + * + * @return {*|array<*>} An accumulation of items. + */ +function accumulate(current, next) { + invariant( + next != null, + "accumulate(...): Accumulated items must be not be null or undefined." + ); + + if (current == null) { + return next; + } + + // Both are not empty. Warning: Never call x.concat(y) when you are not + // certain that x is an Array (x could be a string with concat method). + if (Array.isArray(current)) { + return current.concat(next); + } + + if (Array.isArray(next)) { + return [current].concat(next); + } + + return [current, next]; +} + +/** + * Instance of element that should respond to touch/move types of interactions, + * as indicated explicitly by relevant callbacks. + */ +var responderInst = null; + +/** + * Count of current touches. A textInput should become responder iff the + * selection changes while there is a touch on the screen. + */ +var trackedTouchCount = 0; + +/** + * Last reported number of active touches. + */ +var previousActiveTouches = 0; + +var changeResponder = function(nextResponderInst, blockHostResponder) { + var oldResponderInst = responderInst; + responderInst = nextResponderInst; + if (ResponderEventPlugin.GlobalResponderHandler !== null) { + ResponderEventPlugin.GlobalResponderHandler.onChange( + oldResponderInst, + nextResponderInst, + blockHostResponder + ); + } +}; + +var eventTypes = { + /** + * On a `touchStart`/`mouseDown`, is it desired that this element become the + * responder? + */ + startShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onStartShouldSetResponder", + captured: "onStartShouldSetResponderCapture" + } + }, + + /** + * On a `scroll`, is it desired that this element become the responder? This + * is usually not needed, but should be used to retroactively infer that a + * `touchStart` had occurred during momentum scroll. During a momentum scroll, + * a touch start will be immediately followed by a scroll event if the view is + * currently scrolling. + * + * TODO: This shouldn't bubble. + */ + scrollShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onScrollShouldSetResponder", + captured: "onScrollShouldSetResponderCapture" + } + }, + + /** + * On text selection change, should this element become the responder? This + * is needed for text inputs or other views with native selection, so the + * JS view can claim the responder. + * + * TODO: This shouldn't bubble. + */ + selectionChangeShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onSelectionChangeShouldSetResponder", + captured: "onSelectionChangeShouldSetResponderCapture" + } + }, + + /** + * On a `touchMove`/`mouseMove`, is it desired that this element become the + * responder? + */ + moveShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onMoveShouldSetResponder", + captured: "onMoveShouldSetResponderCapture" + } + }, + + /** + * Direct responder events dispatched directly to responder. Do not bubble. + */ + responderStart: { registrationName: "onResponderStart" }, + responderMove: { registrationName: "onResponderMove" }, + responderEnd: { registrationName: "onResponderEnd" }, + responderRelease: { registrationName: "onResponderRelease" }, + responderTerminationRequest: { + registrationName: "onResponderTerminationRequest" + }, + responderGrant: { registrationName: "onResponderGrant" }, + responderReject: { registrationName: "onResponderReject" }, + responderTerminate: { registrationName: "onResponderTerminate" } +}; + +/** + * + * Responder System: + * ---------------- + * + * - A global, solitary "interaction lock" on a view. + * - If a node becomes the responder, it should convey visual feedback + * immediately to indicate so, either by highlighting or moving accordingly. + * - To be the responder means, that touches are exclusively important to that + * responder view, and no other view. + * - While touches are still occurring, the responder lock can be transferred to + * a new view, but only to increasingly "higher" views (meaning ancestors of + * the current responder). + * + * Responder being granted: + * ------------------------ + * + * - Touch starts, moves, and scrolls can cause an ID to become the responder. + * - We capture/bubble `startShouldSetResponder`/`moveShouldSetResponder` to + * the "appropriate place". + * - If nothing is currently the responder, the "appropriate place" is the + * initiating event's `targetID`. + * - If something *is* already the responder, the "appropriate place" is the + * first common ancestor of the event target and the current `responderInst`. + * - Some negotiation happens: See the timing diagram below. + * - Scrolled views automatically become responder. The reasoning is that a + * platform scroll view that isn't built on top of the responder system has + * began scrolling, and the active responder must now be notified that the + * interaction is no longer locked to it - the system has taken over. + * + * - Responder being released: + * As soon as no more touches that *started* inside of descendants of the + * *current* responderInst, an `onResponderRelease` event is dispatched to the + * current responder, and the responder lock is released. + * + * TODO: + * - on "end", a callback hook for `onResponderEndShouldRemainResponder` that + * determines if the responder lock should remain. + * - If a view shouldn't "remain" the responder, any active touches should by + * default be considered "dead" and do not influence future negotiations or + * bubble paths. It should be as if those touches do not exist. + * -- For multitouch: Usually a translate-z will choose to "remain" responder + * after one out of many touches ended. For translate-y, usually the view + * doesn't wish to "remain" responder after one of many touches end. + * - Consider building this on top of a `stopPropagation` model similar to + * `W3C` events. + * - Ensure that `onResponderTerminate` is called on touch cancels, whether or + * not `onResponderTerminationRequest` returns `true` or `false`. + * + */ + +/* Negotiation Performed + +-----------------------+ + / \ +Process low level events to + Current Responder + wantsResponderID +determine who to perform negot-| (if any exists at all) | +iation/transition | Otherwise just pass through| +-------------------------------+----------------------------+------------------+ +Bubble to find first ID | | +to return true:wantsResponderID| | + | | + +-------------+ | | + | onTouchStart| | | + +------+------+ none | | + | return| | ++-----------v-------------+true| +------------------------+ | +|onStartShouldSetResponder|----->|onResponderStart (cur) |<-----------+ ++-----------+-------------+ | +------------------------+ | | + | | | +--------+-------+ + | returned true for| false:REJECT +-------->|onResponderReject + | wantsResponderID | | | +----------------+ + | (now attempt | +------------------+-----+ | + | handoff) | | onResponder | | + +------------------->| TerminationRequest| | + | +------------------+-----+ | + | | | +----------------+ + | true:GRANT +-------->|onResponderGrant| + | | +--------+-------+ + | +------------------------+ | | + | | onResponderTerminate |<-----------+ + | +------------------+-----+ | + | | | +----------------+ + | +-------->|onResponderStart| + | | +----------------+ +Bubble to find first ID | | +to return true:wantsResponderID| | + | | + +-------------+ | | + | onTouchMove | | | + +------+------+ none | | + | return| | ++-----------v-------------+true| +------------------------+ | +|onMoveShouldSetResponder |----->|onResponderMove (cur) |<-----------+ ++-----------+-------------+ | +------------------------+ | | + | | | +--------+-------+ + | returned true for| false:REJECT +-------->|onResponderRejec| + | wantsResponderID | | | +----------------+ + | (now attempt | +------------------+-----+ | + | handoff) | | onResponder | | + +------------------->| TerminationRequest| | + | +------------------+-----+ | + | | | +----------------+ + | true:GRANT +-------->|onResponderGrant| + | | +--------+-------+ + | +------------------------+ | | + | | onResponderTerminate |<-----------+ + | +------------------+-----+ | + | | | +----------------+ + | +-------->|onResponderMove | + | | +----------------+ + | | + | | + Some active touch started| | + inside current responder | +------------------------+ | + +------------------------->| onResponderEnd | | + | | +------------------------+ | + +---+---------+ | | + | onTouchEnd | | | + +---+---------+ | | + | | +------------------------+ | + +------------------------->| onResponderEnd | | + No active touches started| +-----------+------------+ | + inside current responder | | | + | v | + | +------------------------+ | + | | onResponderRelease | | + | +------------------------+ | + | | + + + */ + +/** + * A note about event ordering in the `EventPluginHub`. + * + * Suppose plugins are injected in the following order: + * + * `[R, S, C]` + * + * To help illustrate the example, assume `S` is `SimpleEventPlugin` (for + * `onClick` etc) and `R` is `ResponderEventPlugin`. + * + * "Deferred-Dispatched Events": + * + * - The current event plugin system will traverse the list of injected plugins, + * in order, and extract events by collecting the plugin's return value of + * `extractEvents()`. + * - These events that are returned from `extractEvents` are "deferred + * dispatched events". + * - When returned from `extractEvents`, deferred-dispatched events contain an + * "accumulation" of deferred dispatches. + * - These deferred dispatches are accumulated/collected before they are + * returned, but processed at a later time by the `EventPluginHub` (hence the + * name deferred). + * + * In the process of returning their deferred-dispatched events, event plugins + * themselves can dispatch events on-demand without returning them from + * `extractEvents`. Plugins might want to do this, so that they can use event + * dispatching as a tool that helps them decide which events should be extracted + * in the first place. + * + * "On-Demand-Dispatched Events": + * + * - On-demand-dispatched events are not returned from `extractEvents`. + * - On-demand-dispatched events are dispatched during the process of returning + * the deferred-dispatched events. + * - They should not have side effects. + * - They should be avoided, and/or eventually be replaced with another + * abstraction that allows event plugins to perform multiple "rounds" of event + * extraction. + * + * Therefore, the sequence of event dispatches becomes: + * + * - `R`s on-demand events (if any) (dispatched by `R` on-demand) + * - `S`s on-demand events (if any) (dispatched by `S` on-demand) + * - `C`s on-demand events (if any) (dispatched by `C` on-demand) + * - `R`s extracted events (if any) (dispatched by `EventPluginHub`) + * - `S`s extracted events (if any) (dispatched by `EventPluginHub`) + * - `C`s extracted events (if any) (dispatched by `EventPluginHub`) + * + * In the case of `ResponderEventPlugin`: If the `startShouldSetResponder` + * on-demand dispatch returns `true` (and some other details are satisfied) the + * `onResponderGrant` deferred dispatched event is returned from + * `extractEvents`. The sequence of dispatch executions in this case + * will appear as follows: + * + * - `startShouldSetResponder` (`ResponderEventPlugin` dispatches on-demand) + * - `touchStartCapture` (`EventPluginHub` dispatches as usual) + * - `touchStart` (`EventPluginHub` dispatches as usual) + * - `responderGrant/Reject` (`EventPluginHub` dispatches as usual) + */ + +function setResponderAndExtractTransfer( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget +) { + var shouldSetEventType = isStartish(topLevelType) + ? eventTypes.startShouldSetResponder + : isMoveish(topLevelType) + ? eventTypes.moveShouldSetResponder + : topLevelType === "topSelectionChange" + ? eventTypes.selectionChangeShouldSetResponder + : eventTypes.scrollShouldSetResponder; + + // TODO: stop one short of the current responder. + var bubbleShouldSetFrom = !responderInst + ? targetInst + : getLowestCommonAncestor(responderInst, targetInst); + + // When capturing/bubbling the "shouldSet" event, we want to skip the target + // (deepest ID) if it happens to be the current responder. The reasoning: + // It's strange to get an `onMoveShouldSetResponder` when you're *already* + // the responder. + var skipOverBubbleShouldSetFrom = bubbleShouldSetFrom === responderInst; + var shouldSetEvent = ResponderSyntheticEvent.getPooled( + shouldSetEventType, + bubbleShouldSetFrom, + nativeEvent, + nativeEventTarget + ); + shouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + if (skipOverBubbleShouldSetFrom) { + accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent); + } else { + accumulateTwoPhaseDispatches(shouldSetEvent); + } + var wantsResponderInst = executeDispatchesInOrderStopAtTrue(shouldSetEvent); + if (!shouldSetEvent.isPersistent()) { + shouldSetEvent.constructor.release(shouldSetEvent); + } + + if (!wantsResponderInst || wantsResponderInst === responderInst) { + return null; + } + var extracted; + var grantEvent = ResponderSyntheticEvent.getPooled( + eventTypes.responderGrant, + wantsResponderInst, + nativeEvent, + nativeEventTarget + ); + grantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + + accumulateDirectDispatches(grantEvent); + var blockHostResponder = executeDirectDispatch(grantEvent) === true; + if (responderInst) { + var terminationRequestEvent = ResponderSyntheticEvent.getPooled( + eventTypes.responderTerminationRequest, + responderInst, + nativeEvent, + nativeEventTarget + ); + terminationRequestEvent.touchHistory = + ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(terminationRequestEvent); + var shouldSwitch = + !hasDispatches(terminationRequestEvent) || + executeDirectDispatch(terminationRequestEvent); + if (!terminationRequestEvent.isPersistent()) { + terminationRequestEvent.constructor.release(terminationRequestEvent); + } + + if (shouldSwitch) { + var terminateEvent = ResponderSyntheticEvent.getPooled( + eventTypes.responderTerminate, + responderInst, + nativeEvent, + nativeEventTarget + ); + terminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(terminateEvent); + extracted = accumulate(extracted, [grantEvent, terminateEvent]); + changeResponder(wantsResponderInst, blockHostResponder); + } else { + var rejectEvent = ResponderSyntheticEvent.getPooled( + eventTypes.responderReject, + wantsResponderInst, + nativeEvent, + nativeEventTarget + ); + rejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(rejectEvent); + extracted = accumulate(extracted, rejectEvent); + } + } else { + extracted = accumulate(extracted, grantEvent); + changeResponder(wantsResponderInst, blockHostResponder); + } + return extracted; +} + +/** + * A transfer is a negotiation between a currently set responder and the next + * element to claim responder status. Any start event could trigger a transfer + * of responderInst. Any move event could trigger a transfer. + * + * @param {string} topLevelType Record from `BrowserEventConstants`. + * @return {boolean} True if a transfer of responder could possibly occur. + */ +function canTriggerTransfer(topLevelType, topLevelInst, nativeEvent) { + return ( + topLevelInst && + // responderIgnoreScroll: We are trying to migrate away from specifically + // tracking native scroll events here and responderIgnoreScroll indicates we + // will send topTouchCancel to handle canceling touch events instead + ((topLevelType === "topScroll" && !nativeEvent.responderIgnoreScroll) || + (trackedTouchCount > 0 && topLevelType === "topSelectionChange") || + isStartish(topLevelType) || + isMoveish(topLevelType)) + ); +} + +/** + * Returns whether or not this touch end event makes it such that there are no + * longer any touches that started inside of the current `responderInst`. + * + * @param {NativeEvent} nativeEvent Native touch end event. + * @return {boolean} Whether or not this touch end event ends the responder. + */ +function noResponderTouches(nativeEvent) { + var touches = nativeEvent.touches; + if (!touches || touches.length === 0) { + return true; + } + for (var i = 0; i < touches.length; i++) { + var activeTouch = touches[i]; + var target = activeTouch.target; + if (target !== null && target !== undefined && target !== 0) { + // Is the original touch location inside of the current responder? + var targetInst = getInstanceFromNode(target); + if (isAncestor(responderInst, targetInst)) { + return false; + } + } + } + return true; +} + +var ResponderEventPlugin = { + /* For unit testing only */ + _getResponder: function() { + return responderInst; + }, + + eventTypes: eventTypes, + + /** + * We must be resilient to `targetInst` being `null` on `touchMove` or + * `touchEnd`. On certain platforms, this means that a native scroll has + * assumed control and the original touch targets are destroyed. + */ + extractEvents: function( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget + ) { + if (isStartish(topLevelType)) { + trackedTouchCount += 1; + } else if (isEndish(topLevelType)) { + if (trackedTouchCount >= 0) { + trackedTouchCount -= 1; + } else { + console.error( + "Ended a touch event which was not counted in `trackedTouchCount`." + ); + return null; + } + } + + ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent); + + var extracted = canTriggerTransfer(topLevelType, targetInst, nativeEvent) + ? setResponderAndExtractTransfer( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget + ) + : null; + // Responder may or may not have transferred on a new touch start/move. + // Regardless, whoever is the responder after any potential transfer, we + // direct all touch start/move/ends to them in the form of + // `onResponderMove/Start/End`. These will be called for *every* additional + // finger that move/start/end, dispatched directly to whoever is the + // current responder at that moment, until the responder is "released". + // + // These multiple individual change touch events are are always bookended + // by `onResponderGrant`, and one of + // (`onResponderRelease/onResponderTerminate`). + var isResponderTouchStart = responderInst && isStartish(topLevelType); + var isResponderTouchMove = responderInst && isMoveish(topLevelType); + var isResponderTouchEnd = responderInst && isEndish(topLevelType); + var incrementalTouch = isResponderTouchStart + ? eventTypes.responderStart + : isResponderTouchMove + ? eventTypes.responderMove + : isResponderTouchEnd ? eventTypes.responderEnd : null; + + if (incrementalTouch) { + var gesture = ResponderSyntheticEvent.getPooled( + incrementalTouch, + responderInst, + nativeEvent, + nativeEventTarget + ); + gesture.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(gesture); + extracted = accumulate(extracted, gesture); + } + + var isResponderTerminate = + responderInst && topLevelType === "topTouchCancel"; + var isResponderRelease = + responderInst && + !isResponderTerminate && + isEndish(topLevelType) && + noResponderTouches(nativeEvent); + var finalTouch = isResponderTerminate + ? eventTypes.responderTerminate + : isResponderRelease ? eventTypes.responderRelease : null; + if (finalTouch) { + var finalEvent = ResponderSyntheticEvent.getPooled( + finalTouch, + responderInst, + nativeEvent, + nativeEventTarget + ); + finalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(finalEvent); + extracted = accumulate(extracted, finalEvent); + changeResponder(null); + } + + var numberActiveTouches = + ResponderTouchHistoryStore.touchHistory.numberActiveTouches; + if ( + ResponderEventPlugin.GlobalInteractionHandler && + numberActiveTouches !== previousActiveTouches + ) { + ResponderEventPlugin.GlobalInteractionHandler.onChange( + numberActiveTouches + ); + } + previousActiveTouches = numberActiveTouches; + + return extracted; + }, + + GlobalResponderHandler: null, + GlobalInteractionHandler: null, + + injection: { + /** + * @param {{onChange: (ReactID, ReactID) => void} GlobalResponderHandler + * Object that handles any change in responder. Use this to inject + * integration with an existing touch handling system etc. + */ + injectGlobalResponderHandler: function(GlobalResponderHandler) { + ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler; + }, + + /** + * @param {{onChange: (numberActiveTouches) => void} GlobalInteractionHandler + * Object that handles any change in the number of active touches. + */ + injectGlobalInteractionHandler: function(GlobalInteractionHandler) { + ResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler; + } + } +}; + +var customBubblingEventTypes = {}; +var customDirectEventTypes = {}; + +var ReactNativeBridgeEventPlugin = { + eventTypes: {}, + + /** + * @see {EventPluginHub.extractEvents} + */ + extractEvents: function( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget + ) { + var bubbleDispatchConfig = customBubblingEventTypes[topLevelType]; + var directDispatchConfig = customDirectEventTypes[topLevelType]; + invariant( + bubbleDispatchConfig || directDispatchConfig, + 'Unsupported top level event type "%s" dispatched', + topLevelType + ); + var event = SyntheticEvent$1.getPooled( + bubbleDispatchConfig || directDispatchConfig, + targetInst, + nativeEvent, + nativeEventTarget + ); + if (bubbleDispatchConfig) { + accumulateTwoPhaseDispatches(event); + } else if (directDispatchConfig) { + accumulateDirectDispatches(event); + } else { + return null; + } + return event; + }, + + processEventTypes: function(viewConfig) { + var bubblingEventTypes = viewConfig.bubblingEventTypes, + directEventTypes = viewConfig.directEventTypes; + + { + if (bubblingEventTypes != null && directEventTypes != null) { + for (var topLevelType in directEventTypes) { + invariant( + bubblingEventTypes[topLevelType] == null, + "Event cannot be both direct and bubbling: %s", + topLevelType + ); + } + } + } + + if (bubblingEventTypes != null) { + for (var _topLevelType in bubblingEventTypes) { + if (customBubblingEventTypes[_topLevelType] == null) { + ReactNativeBridgeEventPlugin.eventTypes[ + _topLevelType + ] = customBubblingEventTypes[_topLevelType] = + bubblingEventTypes[_topLevelType]; + } + } + } + + if (directEventTypes != null) { + for (var _topLevelType2 in directEventTypes) { + if (customDirectEventTypes[_topLevelType2] == null) { + ReactNativeBridgeEventPlugin.eventTypes[ + _topLevelType2 + ] = customDirectEventTypes[_topLevelType2] = + directEventTypes[_topLevelType2]; + } + } + } + } +}; + +var instanceCache = {}; +var instanceProps = {}; + +function precacheFiberNode(hostInst, tag) { + instanceCache[tag] = hostInst; +} + +function uncacheFiberNode(tag) { + delete instanceCache[tag]; + delete instanceProps[tag]; +} + +function getInstanceFromTag(tag) { + return instanceCache[tag] || null; +} + +function getTagFromInstance(inst) { + var tag = inst.stateNode._nativeTag; + invariant(tag, "All native instances should have a tag."); + return tag; +} + +function getFiberCurrentPropsFromNode$1(stateNode) { + return instanceProps[stateNode._nativeTag] || null; +} + +function updateFiberProps(tag, props) { + instanceProps[tag] = props; +} + +var ReactNativeComponentTree = Object.freeze({ + precacheFiberNode: precacheFiberNode, + uncacheFiberNode: uncacheFiberNode, + getClosestInstanceFromNode: getInstanceFromTag, + getInstanceFromNode: getInstanceFromTag, + getNodeFromInstance: getTagFromInstance, + getFiberCurrentPropsFromNode: getFiberCurrentPropsFromNode$1, + updateFiberProps: updateFiberProps +}); + +// Use to restore controlled state after a change event has fired. + +var fiberHostComponent = null; + +var restoreTarget = null; +var restoreQueue = null; + +function restoreStateOfTarget(target) { + // We perform this translation at the end of the event loop so that we + // always receive the correct fiber here + var internalInstance = getInstanceFromNode(target); + if (!internalInstance) { + // Unmounted + return; + } + invariant( + fiberHostComponent && + typeof fiberHostComponent.restoreControlledState === "function", + "Fiber needs to be injected to handle a fiber target for controlled " + + "events. This error is likely caused by a bug in React. Please file an issue." + ); + var props = getFiberCurrentPropsFromNode(internalInstance.stateNode); + fiberHostComponent.restoreControlledState( + internalInstance.stateNode, + internalInstance.type, + props + ); +} + +function restoreStateIfNeeded() { + if (!restoreTarget) { + return; + } + var target = restoreTarget; + var queuedTargets = restoreQueue; + restoreTarget = null; + restoreQueue = null; + + restoreStateOfTarget(target); + if (queuedTargets) { + for (var i = 0; i < queuedTargets.length; i++) { + restoreStateOfTarget(queuedTargets[i]); + } + } +} + +// Used as a way to call batchedUpdates when we don't have a reference to +// the renderer. Such as when we're dispatching events or if third party +// libraries need to call batchedUpdates. Eventually, this API will go away when +// everything is batched by default. We'll then have a similar API to opt-out of +// scheduled work and instead do synchronous work. + +// Defaults +var fiberBatchedUpdates = function(fn, bookkeeping) { + return fn(bookkeeping); +}; + +var isNestingBatched = false; +function batchedUpdates(fn, bookkeeping) { + if (isNestingBatched) { + // If we are currently inside another batch, we need to wait until it + // fully completes before restoring state. Therefore, we add the target to + // a queue of work. + return fiberBatchedUpdates(fn, bookkeeping); + } + isNestingBatched = true; + try { + return fiberBatchedUpdates(fn, bookkeeping); + } finally { + // Here we wait until all updates have propagated, which is important + // when using controlled components within layers: + // https://github.com/facebook/react/issues/1698 + // Then we restore state of any controlled component. + isNestingBatched = false; + restoreStateIfNeeded(); + } +} + +var ReactGenericBatchingInjection = { + injectFiberBatchedUpdates: function(_batchedUpdates) { + fiberBatchedUpdates = _batchedUpdates; + } +}; + +var injection$2 = ReactGenericBatchingInjection; + +function runEventQueueInBatch(events) { + enqueueEvents(events); + processEventQueue(false); +} + +/** + * Streams a fired top-level event to `EventPluginHub` where plugins have the + * opportunity to create `ReactEvent`s to be dispatched. + */ +function handleTopLevel( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget +) { + var events = extractEvents( + topLevelType, + targetInst, + nativeEvent, + nativeEventTarget + ); + runEventQueueInBatch(events); +} + +/** + * Keeps track of allocating and associating native "tags" which are numeric, + * unique view IDs. All the native tags are negative numbers, to avoid + * collisions, but in the JS we keep track of them as positive integers to store + * them effectively in Arrays. So we must refer to them as "inverses" of the + * native tags (that are * normally negative). + * + * It *must* be the case that every `rootNodeID` always maps to the exact same + * `tag` forever. The easiest way to accomplish this is to never delete + * anything from this table. + * Why: Because `dangerouslyReplaceNodeWithMarkupByID` relies on being able to + * unmount a component with a `rootNodeID`, then mount a new one in its place, + */ +var INITIAL_TAG_COUNT = 1; +var ReactNativeTagHandles = { + tagsStartAt: INITIAL_TAG_COUNT, + tagCount: INITIAL_TAG_COUNT, + + allocateTag: function() { + // Skip over root IDs as those are reserved for native + while (this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) { + ReactNativeTagHandles.tagCount++; + } + var tag = ReactNativeTagHandles.tagCount; + ReactNativeTagHandles.tagCount++; + return tag; + }, + + assertRootTag: function(tag) { + invariant( + this.reactTagIsNativeTopRootID(tag), + "Expect a native root tag, instead got %s", + tag + ); + }, + + reactTagIsNativeTopRootID: function(reactTag) { + // We reserve all tags that are 1 mod 10 for native root views + return reactTag % 10 === 1; + } +}; + +/** + * Version of `ReactBrowserEventEmitter` that works on the receiving side of a + * serialized worker boundary. + */ + +// Shared default empty native event - conserve memory. +var EMPTY_NATIVE_EVENT = {}; + +/** + * Selects a subsequence of `Touch`es, without destroying `touches`. + * + * @param {Array} touches Deserialized touch objects. + * @param {Array} indices Indices by which to pull subsequence. + * @return {Array} Subsequence of touch objects. + */ +var touchSubsequence = function(touches, indices) { + var ret = []; + for (var i = 0; i < indices.length; i++) { + ret.push(touches[indices[i]]); + } + return ret; +}; + +/** + * TODO: Pool all of this. + * + * Destroys `touches` by removing touch objects at indices `indices`. This is + * to maintain compatibility with W3C touch "end" events, where the active + * touches don't include the set that has just been "ended". + * + * @param {Array} touches Deserialized touch objects. + * @param {Array} indices Indices to remove from `touches`. + * @return {Array} Subsequence of removed touch objects. + */ +var removeTouchesAtIndices = function(touches, indices) { + var rippedOut = []; + // use an unsafe downcast to alias to nullable elements, + // so we can delete and then compact. + var temp = touches; + for (var i = 0; i < indices.length; i++) { + var index = indices[i]; + rippedOut.push(touches[index]); + temp[index] = null; + } + var fillAt = 0; + for (var j = 0; j < temp.length; j++) { + var cur = temp[j]; + if (cur !== null) { + temp[fillAt++] = cur; + } + } + temp.length = fillAt; + return rippedOut; +}; + +/** + * Internal version of `receiveEvent` in terms of normalized (non-tag) + * `rootNodeID`. + * + * @see receiveEvent. + * + * @param {rootNodeID} rootNodeID React root node ID that event occurred on. + * @param {TopLevelType} topLevelType Top level type of event. + * @param {?object} nativeEventParam Object passed from native. + */ +function _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam) { + var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT; + var inst = getInstanceFromTag(rootNodeID); + batchedUpdates(function() { + handleTopLevel(topLevelType, inst, nativeEvent, nativeEvent.target); + }); + // React Native doesn't use ReactControlledComponent but if it did, here's + // where it would do it. +} + +/** + * Publicly exposed method on module for native objc to invoke when a top + * level event is extracted. + * @param {rootNodeID} rootNodeID React root node ID that event occurred on. + * @param {TopLevelType} topLevelType Top level type of event. + * @param {object} nativeEventParam Object passed from native. + */ +function receiveEvent(rootNodeID, topLevelType, nativeEventParam) { + _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam); +} + +/** + * Simple multi-wrapper around `receiveEvent` that is intended to receive an + * efficient representation of `Touch` objects, and other information that + * can be used to construct W3C compliant `Event` and `Touch` lists. + * + * This may create dispatch behavior that differs than web touch handling. We + * loop through each of the changed touches and receive it as a single event. + * So two `touchStart`/`touchMove`s that occur simultaneously are received as + * two separate touch event dispatches - when they arguably should be one. + * + * This implementation reuses the `Touch` objects themselves as the `Event`s + * since we dispatch an event for each touch (though that might not be spec + * compliant). The main purpose of reusing them is to save allocations. + * + * TODO: Dispatch multiple changed touches in one event. The bubble path + * could be the first common ancestor of all the `changedTouches`. + * + * One difference between this behavior and W3C spec: cancelled touches will + * not appear in `.touches`, or in any future `.touches`, though they may + * still be "actively touching the surface". + * + * Web desktop polyfills only need to construct a fake touch event with + * identifier 0, also abandoning traditional click handlers. + */ +function receiveTouches(eventTopLevelType, touches, changedIndices) { + var changedTouches = + eventTopLevelType === "topTouchEnd" || + eventTopLevelType === "topTouchCancel" + ? removeTouchesAtIndices(touches, changedIndices) + : touchSubsequence(touches, changedIndices); + + for (var jj = 0; jj < changedTouches.length; jj++) { + var touch = changedTouches[jj]; + // Touch objects can fulfill the role of `DOM` `Event` objects if we set + // the `changedTouches`/`touches`. This saves allocations. + touch.changedTouches = changedTouches; + touch.touches = touches; + var nativeEvent = touch; + var rootNodeID = null; + var target = nativeEvent.target; + if (target !== null && target !== undefined) { + if (target < ReactNativeTagHandles.tagsStartAt) { + { + warning( + false, + "A view is reporting that a touch occurred on tag zero." + ); + } + } else { + rootNodeID = target; + } + } + // $FlowFixMe Shouldn't we *not* call it if rootNodeID is null? + _receiveRootNodeIDEvent(rootNodeID, eventTopLevelType, nativeEvent); + } +} + +var ReactNativeEventEmitter = Object.freeze({ + getListener: getListener, + registrationNames: registrationNameModules, + _receiveRootNodeIDEvent: _receiveRootNodeIDEvent, + receiveEvent: receiveEvent, + receiveTouches: receiveTouches, + handleTopLevel: handleTopLevel +}); + +var ReactNativeEventPluginOrder = [ + "ResponderEventPlugin", + "ReactNativeBridgeEventPlugin" +]; + +// Module provided by RN: +var ReactNativeGlobalResponderHandler = { + onChange: function(from, to, blockNativeResponder) { + if (to !== null) { + var tag = to.stateNode._nativeTag; + UIManager.setJSResponder(tag, blockNativeResponder); + } else { + UIManager.clearJSResponder(); + } + } +}; + +/** + * Make sure essential globals are available and are patched correctly. Please don't remove this + * line. Bundles created by react-packager `require` it before executing any application code. This + * ensures it exists in the dependency graph and can be `require`d. + * TODO: require this in packager, not in React #10932517 + */ +// Module provided by RN: +// Module provided by RN: +/** + * Register the event emitter with the native bridge + */ +RCTEventEmitter.register(ReactNativeEventEmitter); + +/** + * Inject module for resolving DOM hierarchy and plugin ordering. + */ +injection.injectEventPluginOrder(ReactNativeEventPluginOrder); +injection$1.injectComponentTree(ReactNativeComponentTree); + +ResponderEventPlugin.injection.injectGlobalResponderHandler( + ReactNativeGlobalResponderHandler +); + +/** + * Some important event plugins included by default (without having to require + * them). + */ +injection.injectEventPluginsByName({ + ResponderEventPlugin: ResponderEventPlugin, + ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin +}); + +var defaultShowDialog = function(capturedError) { + return true; +}; + +var showDialog = defaultShowDialog; + +function logCapturedError(capturedError) { + var logError = showDialog(capturedError); + + // Allow injected showDialog() to prevent default console.error logging. + // This enables renderers like ReactNative to better manage redbox behavior. + if (logError === false) { + return; + } + + var error = capturedError.error; + var suppressLogging = error && error.suppressReactErrorLogging; + if (suppressLogging) { + return; + } + + { + var componentName = capturedError.componentName, + componentStack = capturedError.componentStack, + errorBoundaryName = capturedError.errorBoundaryName, + errorBoundaryFound = capturedError.errorBoundaryFound, + willRetry = capturedError.willRetry; + + var componentNameMessage = componentName + ? "The above error occurred in the <" + componentName + "> component:" + : "The above error occurred in one of your React components:"; + + var errorBoundaryMessage = void 0; + // errorBoundaryFound check is sufficient; errorBoundaryName check is to satisfy Flow. + if (errorBoundaryFound && errorBoundaryName) { + if (willRetry) { + errorBoundaryMessage = + "React will try to recreate this component tree from scratch " + + ("using the error boundary you provided, " + errorBoundaryName + "."); + } else { + errorBoundaryMessage = + "This error was initially handled by the error boundary " + + errorBoundaryName + + ".\n" + + "Recreating the tree from scratch failed so React will unmount the tree."; + } + } else { + errorBoundaryMessage = + "Consider adding an error boundary to your tree to customize error handling behavior.\n" + + "Visit https://fb.me/react-error-boundaries to learn more about error boundaries."; + } + var combinedMessage = + "" + + componentNameMessage + + componentStack + + "\n\n" + + ("" + errorBoundaryMessage); + + // In development, we provide our own message with just the component stack. + // We don't include the original error message and JS stack because the browser + // has already printed it. Even if the application swallows the error, it is still + // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils. + console.error(combinedMessage); + } +} + +var injection$4 = { + /** + * Display custom dialog for lifecycle errors. + * Return false to prevent default behavior of logging to console.error. + */ + injectDialog: function(fn) { + invariant( + showDialog === defaultShowDialog, + "The custom dialog was already injected." + ); + invariant( + typeof fn === "function", + "Injected showDialog() must be a function." + ); + showDialog = fn; + } +}; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === "function" && Symbol["for"]; + +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol["for"]("react.element") : 0xeac7; +var REACT_CALL_TYPE = hasSymbol ? Symbol["for"]("react.call") : 0xeac8; +var REACT_RETURN_TYPE = hasSymbol ? Symbol["for"]("react.return") : 0xeac9; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol["for"]("react.portal") : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol["for"]("react.fragment") : 0xeacb; + +var MAYBE_ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator; +var FAUX_ITERATOR_SYMBOL = "@@iterator"; + +function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable === "undefined") { + return null; + } + var maybeIterator = + (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) || + maybeIterable[FAUX_ITERATOR_SYMBOL]; + if (typeof maybeIterator === "function") { + return maybeIterator; + } + return null; +} + +function createPortal( + children, + containerInfo, + // TODO: figure out the API for cross-renderer implementation. + implementation +) { + var key = + arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + + return { + // This tag allow us to uniquely identify this as a React Portal + $$typeof: REACT_PORTAL_TYPE, + key: key == null ? null : "" + key, + children: children, + containerInfo: containerInfo, + implementation: implementation + }; +} + +var TouchHistoryMath = { + /** + * This code is optimized and not intended to look beautiful. This allows + * computing of touch centroids that have moved after `touchesChangedAfter` + * timeStamp. You can compute the current centroid involving all touches + * moves after `touchesChangedAfter`, or you can compute the previous + * centroid of all touches that were moved after `touchesChangedAfter`. + * + * @param {TouchHistoryMath} touchHistory Standard Responder touch track + * data. + * @param {number} touchesChangedAfter timeStamp after which moved touches + * are considered "actively moving" - not just "active". + * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension. + * @param {boolean} ofCurrent Compute current centroid for actively moving + * touches vs. previous centroid of now actively moving touches. + * @return {number} value of centroid in specified dimension. + */ + centroidDimension: function( + touchHistory, + touchesChangedAfter, + isXAxis, + ofCurrent + ) { + var touchBank = touchHistory.touchBank; + var total = 0; + var count = 0; + + var oneTouchData = + touchHistory.numberActiveTouches === 1 + ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] + : null; + + if (oneTouchData !== null) { + if ( + oneTouchData.touchActive && + oneTouchData.currentTimeStamp > touchesChangedAfter + ) { + total += + ofCurrent && isXAxis + ? oneTouchData.currentPageX + : ofCurrent && !isXAxis + ? oneTouchData.currentPageY + : !ofCurrent && isXAxis + ? oneTouchData.previousPageX + : oneTouchData.previousPageY; + count = 1; + } + } else { + for (var i = 0; i < touchBank.length; i++) { + var touchTrack = touchBank[i]; + if ( + touchTrack !== null && + touchTrack !== undefined && + touchTrack.touchActive && + touchTrack.currentTimeStamp >= touchesChangedAfter + ) { + var toAdd; // Yuck, program temporarily in invalid state. + if (ofCurrent && isXAxis) { + toAdd = touchTrack.currentPageX; + } else if (ofCurrent && !isXAxis) { + toAdd = touchTrack.currentPageY; + } else if (!ofCurrent && isXAxis) { + toAdd = touchTrack.previousPageX; + } else { + toAdd = touchTrack.previousPageY; + } + total += toAdd; + count++; + } + } + } + return count > 0 ? total / count : TouchHistoryMath.noCentroid; + }, + + currentCentroidXOfTouchesChangedAfter: function( + touchHistory, + touchesChangedAfter + ) { + return TouchHistoryMath.centroidDimension( + touchHistory, + touchesChangedAfter, + true, // isXAxis + true + ); + }, + + currentCentroidYOfTouchesChangedAfter: function( + touchHistory, + touchesChangedAfter + ) { + return TouchHistoryMath.centroidDimension( + touchHistory, + touchesChangedAfter, + false, // isXAxis + true + ); + }, + + previousCentroidXOfTouchesChangedAfter: function( + touchHistory, + touchesChangedAfter + ) { + return TouchHistoryMath.centroidDimension( + touchHistory, + touchesChangedAfter, + true, // isXAxis + false + ); + }, + + previousCentroidYOfTouchesChangedAfter: function( + touchHistory, + touchesChangedAfter + ) { + return TouchHistoryMath.centroidDimension( + touchHistory, + touchesChangedAfter, + false, // isXAxis + false + ); + }, + + currentCentroidX: function(touchHistory) { + return TouchHistoryMath.centroidDimension( + touchHistory, + 0, // touchesChangedAfter + true, // isXAxis + true + ); + }, + + currentCentroidY: function(touchHistory) { + return TouchHistoryMath.centroidDimension( + touchHistory, + 0, // touchesChangedAfter + false, // isXAxis + true + ); + }, + + noCentroid: -1 +}; + +var ReactInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + +var ReactCurrentOwner = ReactInternals.ReactCurrentOwner; +var ReactDebugCurrentFrame = ReactInternals.ReactDebugCurrentFrame; + +var ReactGlobalSharedState = Object.freeze({ + ReactCurrentOwner: ReactCurrentOwner, + ReactDebugCurrentFrame: ReactDebugCurrentFrame +}); + +// TODO: this is special because it gets imported during build. + +var ReactVersion = "16.2.0"; + +// Module provided by RN: +/** + * Intercept lifecycle errors and ensure they are shown with the correct stack + * trace within the native redbox component. + */ +function showDialog$1(capturedError) { + var componentStack = capturedError.componentStack, + error = capturedError.error; + + var errorToHandle = void 0; + + // Typically Errors are thrown but eg strings or null can be thrown as well. + if (error instanceof Error) { + var message = error.message, + name = error.name; + + var summary = message ? name + ": " + message : name; + + errorToHandle = error; + + try { + errorToHandle.message = + summary + "\n\nThis error is located at:" + componentStack; + } catch (e) {} + } else if (typeof error === "string") { + errorToHandle = new Error( + error + "\n\nThis error is located at:" + componentStack + ); + } else { + errorToHandle = new Error("Unspecified error at:" + componentStack); + } + + ExceptionsManager.handleException(errorToHandle, false); + + // Return false here to prevent ReactFiberErrorLogger default behavior of + // logging error details to console.error. Calls to console.error are + // automatically routed to the native redbox controller, which we've already + // done above by calling ExceptionsManager. + return false; +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +var objects = {}; +var uniqueID = 1; +var emptyObject$2 = {}; + +var ReactNativePropRegistry = (function() { + function ReactNativePropRegistry() { + _classCallCheck(this, ReactNativePropRegistry); + } + + ReactNativePropRegistry.register = function register(object) { + var id = ++uniqueID; + { + Object.freeze(object); + } + objects[id] = object; + return id; + }; + + ReactNativePropRegistry.getByID = function getByID(id) { + if (!id) { + // Used in the style={[condition && id]} pattern, + // we want it to be a no-op when the value is false or null + return emptyObject$2; + } + + var object = objects[id]; + if (!object) { + console.warn("Invalid style with id `" + id + "`. Skipping ..."); + return emptyObject$2; + } + return object; + }; + + return ReactNativePropRegistry; +})(); + +// Modules provided by RN: +var emptyObject$1 = {}; + +/** + * Create a payload that contains all the updates between two sets of props. + * + * These helpers are all encapsulated into a single module, because they use + * mutation as a performance optimization which leads to subtle shared + * dependencies between the code paths. To avoid this mutable state leaking + * across modules, I've kept them isolated to this module. + */ + +// Tracks removed keys +var removedKeys = null; +var removedKeyCount = 0; + +function defaultDiffer(prevProp, nextProp) { + if (typeof nextProp !== "object" || nextProp === null) { + // Scalars have already been checked for equality + return true; + } else { + // For objects and arrays, the default diffing algorithm is a deep compare + return deepDiffer(prevProp, nextProp); + } +} + +function resolveObject(idOrObject) { + if (typeof idOrObject === "number") { + return ReactNativePropRegistry.getByID(idOrObject); + } + return idOrObject; +} + +function restoreDeletedValuesInNestedArray( + updatePayload, + node, + validAttributes +) { + if (Array.isArray(node)) { + var i = node.length; + while (i-- && removedKeyCount > 0) { + restoreDeletedValuesInNestedArray( + updatePayload, + node[i], + validAttributes + ); + } + } else if (node && removedKeyCount > 0) { + var obj = resolveObject(node); + for (var propKey in removedKeys) { + if (!removedKeys[propKey]) { + continue; + } + var nextProp = obj[propKey]; + if (nextProp === undefined) { + continue; + } + + var attributeConfig = validAttributes[propKey]; + if (!attributeConfig) { + continue; // not a valid native prop + } + + if (typeof nextProp === "function") { + nextProp = true; + } + if (typeof nextProp === "undefined") { + nextProp = null; + } + + if (typeof attributeConfig !== "object") { + // case: !Object is the default case + updatePayload[propKey] = nextProp; + } else if ( + typeof attributeConfig.diff === "function" || + typeof attributeConfig.process === "function" + ) { + // case: CustomAttributeConfiguration + var nextValue = + typeof attributeConfig.process === "function" + ? attributeConfig.process(nextProp) + : nextProp; + updatePayload[propKey] = nextValue; + } + removedKeys[propKey] = false; + removedKeyCount--; + } + } +} + +function diffNestedArrayProperty( + updatePayload, + prevArray, + nextArray, + validAttributes +) { + var minLength = + prevArray.length < nextArray.length ? prevArray.length : nextArray.length; + var i; + for (i = 0; i < minLength; i++) { + // Diff any items in the array in the forward direction. Repeated keys + // will be overwritten by later values. + updatePayload = diffNestedProperty( + updatePayload, + prevArray[i], + nextArray[i], + validAttributes + ); + } + for (; i < prevArray.length; i++) { + // Clear out all remaining properties. + updatePayload = clearNestedProperty( + updatePayload, + prevArray[i], + validAttributes + ); + } + for (; i < nextArray.length; i++) { + // Add all remaining properties. + updatePayload = addNestedProperty( + updatePayload, + nextArray[i], + validAttributes + ); + } + return updatePayload; +} + +function diffNestedProperty( + updatePayload, + prevProp, + nextProp, + validAttributes +) { + if (!updatePayload && prevProp === nextProp) { + // If no properties have been added, then we can bail out quickly on object + // equality. + return updatePayload; + } + + if (!prevProp || !nextProp) { + if (nextProp) { + return addNestedProperty(updatePayload, nextProp, validAttributes); + } + if (prevProp) { + return clearNestedProperty(updatePayload, prevProp, validAttributes); + } + return updatePayload; + } + + if (!Array.isArray(prevProp) && !Array.isArray(nextProp)) { + // Both are leaves, we can diff the leaves. + return diffProperties( + updatePayload, + resolveObject(prevProp), + resolveObject(nextProp), + validAttributes + ); + } + + if (Array.isArray(prevProp) && Array.isArray(nextProp)) { + // Both are arrays, we can diff the arrays. + return diffNestedArrayProperty( + updatePayload, + prevProp, + nextProp, + validAttributes + ); + } + + if (Array.isArray(prevProp)) { + return diffProperties( + updatePayload, + // $FlowFixMe - We know that this is always an object when the input is. + flattenStyle(prevProp), + // $FlowFixMe - We know that this isn't an array because of above flow. + resolveObject(nextProp), + validAttributes + ); + } + + return diffProperties( + updatePayload, + resolveObject(prevProp), + // $FlowFixMe - We know that this is always an object when the input is. + flattenStyle(nextProp), + validAttributes + ); +} + +/** + * addNestedProperty takes a single set of props and valid attribute + * attribute configurations. It processes each prop and adds it to the + * updatePayload. + */ +function addNestedProperty(updatePayload, nextProp, validAttributes) { + if (!nextProp) { + return updatePayload; + } + + if (!Array.isArray(nextProp)) { + // Add each property of the leaf. + return addProperties( + updatePayload, + resolveObject(nextProp), + validAttributes + ); + } + + for (var i = 0; i < nextProp.length; i++) { + // Add all the properties of the array. + updatePayload = addNestedProperty( + updatePayload, + nextProp[i], + validAttributes + ); + } + + return updatePayload; +} + +/** + * clearNestedProperty takes a single set of props and valid attributes. It + * adds a null sentinel to the updatePayload, for each prop key. + */ +function clearNestedProperty(updatePayload, prevProp, validAttributes) { + if (!prevProp) { + return updatePayload; + } + + if (!Array.isArray(prevProp)) { + // Add each property of the leaf. + return clearProperties( + updatePayload, + resolveObject(prevProp), + validAttributes + ); + } + + for (var i = 0; i < prevProp.length; i++) { + // Add all the properties of the array. + updatePayload = clearNestedProperty( + updatePayload, + prevProp[i], + validAttributes + ); + } + return updatePayload; +} + +/** + * diffProperties takes two sets of props and a set of valid attributes + * and write to updatePayload the values that changed or were deleted. + * If no updatePayload is provided, a new one is created and returned if + * anything changed. + */ +function diffProperties(updatePayload, prevProps, nextProps, validAttributes) { + var attributeConfig; + var nextProp; + var prevProp; + + for (var propKey in nextProps) { + attributeConfig = validAttributes[propKey]; + if (!attributeConfig) { + continue; // not a valid native prop + } + + prevProp = prevProps[propKey]; + nextProp = nextProps[propKey]; + + // functions are converted to booleans as markers that the associated + // events should be sent from native. + if (typeof nextProp === "function") { + nextProp = true; + // If nextProp is not a function, then don't bother changing prevProp + // since nextProp will win and go into the updatePayload regardless. + if (typeof prevProp === "function") { + prevProp = true; + } + } + + // An explicit value of undefined is treated as a null because it overrides + // any other preceding value. + if (typeof nextProp === "undefined") { + nextProp = null; + if (typeof prevProp === "undefined") { + prevProp = null; + } + } + + if (removedKeys) { + removedKeys[propKey] = false; + } + + if (updatePayload && updatePayload[propKey] !== undefined) { + // Something else already triggered an update to this key because another + // value diffed. Since we're now later in the nested arrays our value is + // more important so we need to calculate it and override the existing + // value. It doesn't matter if nothing changed, we'll set it anyway. + + // Pattern match on: attributeConfig + if (typeof attributeConfig !== "object") { + // case: !Object is the default case + updatePayload[propKey] = nextProp; + } else if ( + typeof attributeConfig.diff === "function" || + typeof attributeConfig.process === "function" + ) { + // case: CustomAttributeConfiguration + var nextValue = + typeof attributeConfig.process === "function" + ? attributeConfig.process(nextProp) + : nextProp; + updatePayload[propKey] = nextValue; + } + continue; + } + + if (prevProp === nextProp) { + continue; // nothing changed + } + + // Pattern match on: attributeConfig + if (typeof attributeConfig !== "object") { + // case: !Object is the default case + if (defaultDiffer(prevProp, nextProp)) { + // a normal leaf has changed + (updatePayload || (updatePayload = {}))[propKey] = nextProp; + } + } else if ( + typeof attributeConfig.diff === "function" || + typeof attributeConfig.process === "function" + ) { + // case: CustomAttributeConfiguration + var shouldUpdate = + prevProp === undefined || + (typeof attributeConfig.diff === "function" + ? attributeConfig.diff(prevProp, nextProp) + : defaultDiffer(prevProp, nextProp)); + if (shouldUpdate) { + nextValue = + typeof attributeConfig.process === "function" + ? attributeConfig.process(nextProp) + : nextProp; + (updatePayload || (updatePayload = {}))[propKey] = nextValue; + } + } else { + // default: fallthrough case when nested properties are defined + removedKeys = null; + removedKeyCount = 0; + // We think that attributeConfig is not CustomAttributeConfiguration at + // this point so we assume it must be AttributeConfiguration. + updatePayload = diffNestedProperty( + updatePayload, + prevProp, + nextProp, + attributeConfig + ); + if (removedKeyCount > 0 && updatePayload) { + restoreDeletedValuesInNestedArray( + updatePayload, + nextProp, + attributeConfig + ); + removedKeys = null; + } + } + } + + // Also iterate through all the previous props to catch any that have been + // removed and make sure native gets the signal so it can reset them to the + // default. + for (propKey in prevProps) { + if (nextProps[propKey] !== undefined) { + continue; // we've already covered this key in the previous pass + } + attributeConfig = validAttributes[propKey]; + if (!attributeConfig) { + continue; // not a valid native prop + } + + if (updatePayload && updatePayload[propKey] !== undefined) { + // This was already updated to a diff result earlier. + continue; + } + + prevProp = prevProps[propKey]; + if (prevProp === undefined) { + continue; // was already empty anyway + } + // Pattern match on: attributeConfig + if ( + typeof attributeConfig !== "object" || + typeof attributeConfig.diff === "function" || + typeof attributeConfig.process === "function" + ) { + // case: CustomAttributeConfiguration | !Object + // Flag the leaf property for removal by sending a sentinel. + (updatePayload || (updatePayload = {}))[propKey] = null; + if (!removedKeys) { + removedKeys = {}; + } + if (!removedKeys[propKey]) { + removedKeys[propKey] = true; + removedKeyCount++; + } + } else { + // default: + // This is a nested attribute configuration where all the properties + // were removed so we need to go through and clear out all of them. + updatePayload = clearNestedProperty( + updatePayload, + prevProp, + attributeConfig + ); + } + } + return updatePayload; +} + +/** + * addProperties adds all the valid props to the payload after being processed. + */ +function addProperties(updatePayload, props, validAttributes) { + // TODO: Fast path + return diffProperties(updatePayload, emptyObject$1, props, validAttributes); +} + +/** + * clearProperties clears all the previous props by adding a null sentinel + * to the payload for each valid key. + */ +function clearProperties(updatePayload, prevProps, validAttributes) { + // TODO: Fast path + return diffProperties( + updatePayload, + prevProps, + emptyObject$1, + validAttributes + ); +} + +function create(props, validAttributes) { + return addProperties( + null, // updatePayload + props, + validAttributes + ); +} + +function diff(prevProps, nextProps, validAttributes) { + return diffProperties( + null, // updatePayload + prevProps, + nextProps, + validAttributes + ); +} + +/** + * In the future, we should cleanup callbacks by cancelling them instead of + * using this. + */ +function mountSafeCallback(context, callback) { + return function() { + if (!callback) { + return undefined; + } + if (typeof context.__isMounted === "boolean") { + // TODO(gaearon): this is gross and should be removed. + // It is currently necessary because View uses createClass, + // and so any measure() calls on View (which are done by React + // DevTools) trigger the isMounted() deprecation warning. + if (!context.__isMounted) { + return undefined; + } + // The else branch is important so that we don't + // trigger the deprecation warning by calling isMounted. + } else if (typeof context.isMounted === "function") { + if (!context.isMounted()) { + return undefined; + } + } + return callback.apply(context, arguments); + }; +} + +function throwOnStylesProp(component, props) { + if (props.styles !== undefined) { + var owner = component._owner || null; + var name = component.constructor.displayName; + var msg = + "`styles` is not a supported property of `" + + name + + "`, did " + + "you mean `style` (singular)?"; + if (owner && owner.constructor && owner.constructor.displayName) { + msg += + "\n\nCheck the `" + + owner.constructor.displayName + + "` parent " + + " component."; + } + throw new Error(msg); + } +} + +function warnForStyleProps(props, validAttributes) { + for (var key in validAttributes.style) { + if (!(validAttributes[key] || props[key] === undefined)) { + console.error( + "You are setting the style `{ " + + key + + ": ... }` as a prop. You " + + "should nest it in a style object. " + + "E.g. `{ style: { " + + key + + ": ... } }`" + ); + } + } +} + +/** + * `ReactInstanceMap` maintains a mapping from a public facing stateful + * instance (key) and the internal representation (value). This allows public + * methods to accept the user facing instance as an argument and map them back + * to internal methods. + * + * Note that this module is currently shared and assumed to be stateless. + * If this becomes an actual Map, that will break. + */ + +/** + * This API should be called `delete` but we'd have to make sure to always + * transform these to strings for IE support. When this transform is fully + * supported we can rename it. + */ + +function get(key) { + return key._reactInternalFiber; +} + +function set(key, value) { + key._reactInternalFiber = value; +} + +function getComponentName(fiber) { + var type = fiber.type; + + if (typeof type === "string") { + return type; + } + if (typeof type === "function") { + return type.displayName || type.name; + } + return null; +} + +// Re-export dynamic flags from the fbsource version. +var _require = require("ReactFeatureFlags"); + +var debugRenderPhaseSideEffects = _require.debugRenderPhaseSideEffects; + +var enableAsyncSubtreeAPI = true; + +var enableUserTimingAPI = true; +var enableMutatingReconciler = true; +var enableNoopReconciler = false; +var enablePersistentReconciler = false; + +// Only used in www builds. + +// Don't change these two values: +var NoEffect = 0; // 0b00000000 +var PerformedWork = 1; // 0b00000001 + +// You can change the rest (and add more). +var Placement = 2; // 0b00000010 +var Update = 4; // 0b00000100 +var PlacementAndUpdate = 6; // 0b00000110 +var Deletion = 8; // 0b00001000 +var ContentReset = 16; // 0b00010000 +var Callback = 32; // 0b00100000 +var Err = 64; // 0b01000000 +var Ref = 128; // 0b10000000 + +var MOUNTING = 1; +var MOUNTED = 2; +var UNMOUNTED = 3; + +function isFiberMountedImpl(fiber) { + var node = fiber; + if (!fiber.alternate) { + // If there is no alternate, this might be a new tree that isn't inserted + // yet. If it is, then it will have a pending insertion effect on it. + if ((node.effectTag & Placement) !== NoEffect) { + return MOUNTING; + } + while (node["return"]) { + node = node["return"]; + if ((node.effectTag & Placement) !== NoEffect) { + return MOUNTING; + } + } + } else { + while (node["return"]) { + node = node["return"]; + } + } + if (node.tag === HostRoot) { + // TODO: Check if this was a nested HostRoot when used with + // renderContainerIntoSubtree. + return MOUNTED; + } + // If we didn't hit the root, that means that we're in an disconnected tree + // that has been unmounted. + return UNMOUNTED; +} + +function isFiberMounted(fiber) { + return isFiberMountedImpl(fiber) === MOUNTED; +} + +function isMounted(component) { + { + var owner = ReactCurrentOwner.current; + if (owner !== null && owner.tag === ClassComponent) { + var ownerFiber = owner; + var instance = ownerFiber.stateNode; + warning( + instance._warnedAboutRefsInRender, + "%s is accessing isMounted inside its render() function. " + + "render() should be a pure function of props and state. It should " + + "never access something that requires stale data from the previous " + + "render, such as refs. Move this logic to componentDidMount and " + + "componentDidUpdate instead.", + getComponentName(ownerFiber) || "A component" + ); + instance._warnedAboutRefsInRender = true; + } + } + + var fiber = get(component); + if (!fiber) { + return false; + } + return isFiberMountedImpl(fiber) === MOUNTED; +} + +function assertIsMounted(fiber) { + invariant( + isFiberMountedImpl(fiber) === MOUNTED, + "Unable to find node on an unmounted component." + ); +} + +function findCurrentFiberUsingSlowPath(fiber) { + var alternate = fiber.alternate; + if (!alternate) { + // If there is no alternate, then we only need to check if it is mounted. + var state = isFiberMountedImpl(fiber); + invariant( + state !== UNMOUNTED, + "Unable to find node on an unmounted component." + ); + if (state === MOUNTING) { + return null; + } + return fiber; + } + // If we have two possible branches, we'll walk backwards up to the root + // to see what path the root points to. On the way we may hit one of the + // special cases and we'll deal with them. + var a = fiber; + var b = alternate; + while (true) { + var parentA = a["return"]; + var parentB = parentA ? parentA.alternate : null; + if (!parentA || !parentB) { + // We're at the root. + break; + } + + // If both copies of the parent fiber point to the same child, we can + // assume that the child is current. This happens when we bailout on low + // priority: the bailed out fiber's child reuses the current child. + if (parentA.child === parentB.child) { + var child = parentA.child; + while (child) { + if (child === a) { + // We've determined that A is the current branch. + assertIsMounted(parentA); + return fiber; + } + if (child === b) { + // We've determined that B is the current branch. + assertIsMounted(parentA); + return alternate; + } + child = child.sibling; + } + // We should never have an alternate for any mounting node. So the only + // way this could possibly happen is if this was unmounted, if at all. + invariant(false, "Unable to find node on an unmounted component."); + } + + if (a["return"] !== b["return"]) { + // The return pointer of A and the return pointer of B point to different + // fibers. We assume that return pointers never criss-cross, so A must + // belong to the child set of A.return, and B must belong to the child + // set of B.return. + a = parentA; + b = parentB; + } else { + // The return pointers point to the same fiber. We'll have to use the + // default, slow path: scan the child sets of each parent alternate to see + // which child belongs to which set. + // + // Search parent A's child set + var didFindChild = false; + var _child = parentA.child; + while (_child) { + if (_child === a) { + didFindChild = true; + a = parentA; + b = parentB; + break; + } + if (_child === b) { + didFindChild = true; + b = parentA; + a = parentB; + break; + } + _child = _child.sibling; + } + if (!didFindChild) { + // Search parent B's child set + _child = parentB.child; + while (_child) { + if (_child === a) { + didFindChild = true; + a = parentB; + b = parentA; + break; + } + if (_child === b) { + didFindChild = true; + b = parentB; + a = parentA; + break; + } + _child = _child.sibling; + } + invariant( + didFindChild, + "Child was not found in either parent set. This indicates a bug " + + "in React related to the return pointer. Please file an issue." + ); + } + } + + invariant( + a.alternate === b, + "Return fibers should always be each others' alternates. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + } + // If the root is not a host container, we're in a disconnected tree. I.e. + // unmounted. + invariant( + a.tag === HostRoot, + "Unable to find node on an unmounted component." + ); + if (a.stateNode.current === a) { + // We've determined that A is the current branch. + return fiber; + } + // Otherwise B has to be current branch. + return alternate; +} + +function findCurrentHostFiber(parent) { + var currentParent = findCurrentFiberUsingSlowPath(parent); + if (!currentParent) { + return null; + } + + // Next we'll drill down this component to find the first HostComponent/Text. + var node = currentParent; + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + return node; + } else if (node.child) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === currentParent) { + return null; + } + while (!node.sibling) { + if (!node["return"] || node["return"] === currentParent) { + return null; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + // Flow needs the return null here, but ESLint complains about it. + // eslint-disable-next-line no-unreachable + return null; +} + +function findCurrentHostFiberWithNoPortals(parent) { + var currentParent = findCurrentFiberUsingSlowPath(parent); + if (!currentParent) { + return null; + } + + // Next we'll drill down this component to find the first HostComponent/Text. + var node = currentParent; + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + return node; + } else if (node.child && node.tag !== HostPortal) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === currentParent) { + return null; + } + while (!node.sibling) { + if (!node["return"] || node["return"] === currentParent) { + return null; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + // Flow needs the return null here, but ESLint complains about it. + // eslint-disable-next-line no-unreachable + return null; +} + +var valueStack = []; + +{ + var fiberStack = []; +} + +var index = -1; + +function createCursor(defaultValue) { + return { + current: defaultValue + }; +} + +function pop(cursor, fiber) { + if (index < 0) { + { + warning(false, "Unexpected pop."); + } + return; + } + + { + if (fiber !== fiberStack[index]) { + warning(false, "Unexpected Fiber popped."); + } + } + + cursor.current = valueStack[index]; + + valueStack[index] = null; + + { + fiberStack[index] = null; + } + + index--; +} + +function push(cursor, value, fiber) { + index++; + + valueStack[index] = cursor.current; + + { + fiberStack[index] = fiber; + } + + cursor.current = value; +} + +function reset() { + while (index > -1) { + valueStack[index] = null; + + { + fiberStack[index] = null; + } + + index--; + } +} + +var describeComponentFrame = function(name, source, ownerName) { + return ( + "\n in " + + (name || "Unknown") + + (source + ? " (at " + + source.fileName.replace(/^.*[\\\/]/, "") + + ":" + + source.lineNumber + + ")" + : ownerName ? " (created by " + ownerName + ")" : "") + ); +}; + +function describeFiber(fiber) { + switch (fiber.tag) { + case IndeterminateComponent: + case FunctionalComponent: + case ClassComponent: + case HostComponent: + var owner = fiber._debugOwner; + var source = fiber._debugSource; + var name = getComponentName(fiber); + var ownerName = null; + if (owner) { + ownerName = getComponentName(owner); + } + return describeComponentFrame(name, source, ownerName); + default: + return ""; + } +} + +// This function can only be called with a work-in-progress fiber and +// only during begin or complete phase. Do not call it under any other +// circumstances. +function getStackAddendumByWorkInProgressFiber(workInProgress) { + var info = ""; + var node = workInProgress; + do { + info += describeFiber(node); + // Otherwise this return pointer might point to the wrong tree: + node = node["return"]; + } while (node); + return info; +} + +function getCurrentFiberOwnerName() { + { + var fiber = ReactDebugCurrentFiber.current; + if (fiber === null) { + return null; + } + var owner = fiber._debugOwner; + if (owner !== null && typeof owner !== "undefined") { + return getComponentName(owner); + } + } + return null; +} + +function getCurrentFiberStackAddendum() { + { + var fiber = ReactDebugCurrentFiber.current; + if (fiber === null) { + return null; + } + // Safe because if current fiber exists, we are reconciling, + // and it is guaranteed to be the work-in-progress version. + return getStackAddendumByWorkInProgressFiber(fiber); + } + return null; +} + +function resetCurrentFiber() { + ReactDebugCurrentFrame.getCurrentStack = null; + ReactDebugCurrentFiber.current = null; + ReactDebugCurrentFiber.phase = null; +} + +function setCurrentFiber(fiber) { + ReactDebugCurrentFrame.getCurrentStack = getCurrentFiberStackAddendum; + ReactDebugCurrentFiber.current = fiber; + ReactDebugCurrentFiber.phase = null; +} + +function setCurrentPhase(phase) { + ReactDebugCurrentFiber.phase = phase; +} + +var ReactDebugCurrentFiber = { + current: null, + phase: null, + resetCurrentFiber: resetCurrentFiber, + setCurrentFiber: setCurrentFiber, + setCurrentPhase: setCurrentPhase, + getCurrentFiberOwnerName: getCurrentFiberOwnerName, + getCurrentFiberStackAddendum: getCurrentFiberStackAddendum +}; + +// Prefix measurements so that it's possible to filter them. +// Longer prefixes are hard to read in DevTools. +var reactEmoji = "\u269B"; +var warningEmoji = "\u26D4"; +var supportsUserTiming = + typeof performance !== "undefined" && + typeof performance.mark === "function" && + typeof performance.clearMarks === "function" && + typeof performance.measure === "function" && + typeof performance.clearMeasures === "function"; + +// Keep track of current fiber so that we know the path to unwind on pause. +// TODO: this looks the same as nextUnitOfWork in scheduler. Can we unify them? +var currentFiber = null; +// If we're in the middle of user code, which fiber and method is it? +// Reusing `currentFiber` would be confusing for this because user code fiber +// can change during commit phase too, but we don't need to unwind it (since +// lifecycles in the commit phase don't resemble a tree). +var currentPhase = null; +var currentPhaseFiber = null; +// Did lifecycle hook schedule an update? This is often a performance problem, +// so we will keep track of it, and include it in the report. +// Track commits caused by cascading updates. +var isCommitting = false; +var hasScheduledUpdateInCurrentCommit = false; +var hasScheduledUpdateInCurrentPhase = false; +var commitCountInCurrentWorkLoop = 0; +var effectCountInCurrentCommit = 0; +var isWaitingForCallback = false; +// During commits, we only show a measurement once per method name +// to avoid stretch the commit phase with measurement overhead. +var labelsInCurrentCommit = new Set(); + +var formatMarkName = function(markName) { + return reactEmoji + " " + markName; +}; + +var formatLabel = function(label, warning$$1) { + var prefix = warning$$1 ? warningEmoji + " " : reactEmoji + " "; + var suffix = warning$$1 ? " Warning: " + warning$$1 : ""; + return "" + prefix + label + suffix; +}; + +var beginMark = function(markName) { + performance.mark(formatMarkName(markName)); +}; + +var clearMark = function(markName) { + performance.clearMarks(formatMarkName(markName)); +}; + +var endMark = function(label, markName, warning$$1) { + var formattedMarkName = formatMarkName(markName); + var formattedLabel = formatLabel(label, warning$$1); + try { + performance.measure(formattedLabel, formattedMarkName); + } catch (err) {} + // If previous mark was missing for some reason, this will throw. + // This could only happen if React crashed in an unexpected place earlier. + // Don't pile on with more errors. + + // Clear marks immediately to avoid growing buffer. + performance.clearMarks(formattedMarkName); + performance.clearMeasures(formattedLabel); +}; + +var getFiberMarkName = function(label, debugID) { + return label + " (#" + debugID + ")"; +}; + +var getFiberLabel = function(componentName, isMounted, phase) { + if (phase === null) { + // These are composite component total time measurements. + return componentName + " [" + (isMounted ? "update" : "mount") + "]"; + } else { + // Composite component methods. + return componentName + "." + phase; + } +}; + +var beginFiberMark = function(fiber, phase) { + var componentName = getComponentName(fiber) || "Unknown"; + var debugID = fiber._debugID; + var isMounted = fiber.alternate !== null; + var label = getFiberLabel(componentName, isMounted, phase); + + if (isCommitting && labelsInCurrentCommit.has(label)) { + // During the commit phase, we don't show duplicate labels because + // there is a fixed overhead for every measurement, and we don't + // want to stretch the commit phase beyond necessary. + return false; + } + labelsInCurrentCommit.add(label); + + var markName = getFiberMarkName(label, debugID); + beginMark(markName); + return true; +}; + +var clearFiberMark = function(fiber, phase) { + var componentName = getComponentName(fiber) || "Unknown"; + var debugID = fiber._debugID; + var isMounted = fiber.alternate !== null; + var label = getFiberLabel(componentName, isMounted, phase); + var markName = getFiberMarkName(label, debugID); + clearMark(markName); +}; + +var endFiberMark = function(fiber, phase, warning$$1) { + var componentName = getComponentName(fiber) || "Unknown"; + var debugID = fiber._debugID; + var isMounted = fiber.alternate !== null; + var label = getFiberLabel(componentName, isMounted, phase); + var markName = getFiberMarkName(label, debugID); + endMark(label, markName, warning$$1); +}; + +var shouldIgnoreFiber = function(fiber) { + // Host components should be skipped in the timeline. + // We could check typeof fiber.type, but does this work with RN? + switch (fiber.tag) { + case HostRoot: + case HostComponent: + case HostText: + case HostPortal: + case ReturnComponent: + case Fragment: + return true; + default: + return false; + } +}; + +var clearPendingPhaseMeasurement = function() { + if (currentPhase !== null && currentPhaseFiber !== null) { + clearFiberMark(currentPhaseFiber, currentPhase); + } + currentPhaseFiber = null; + currentPhase = null; + hasScheduledUpdateInCurrentPhase = false; +}; + +var pauseTimers = function() { + // Stops all currently active measurements so that they can be resumed + // if we continue in a later deferred loop from the same unit of work. + var fiber = currentFiber; + while (fiber) { + if (fiber._debugIsCurrentlyTiming) { + endFiberMark(fiber, null, null); + } + fiber = fiber["return"]; + } +}; + +var resumeTimersRecursively = function(fiber) { + if (fiber["return"] !== null) { + resumeTimersRecursively(fiber["return"]); + } + if (fiber._debugIsCurrentlyTiming) { + beginFiberMark(fiber, null); + } +}; + +var resumeTimers = function() { + // Resumes all measurements that were active during the last deferred loop. + if (currentFiber !== null) { + resumeTimersRecursively(currentFiber); + } +}; + +function recordEffect() { + if (enableUserTimingAPI) { + effectCountInCurrentCommit++; + } +} + +function recordScheduleUpdate() { + if (enableUserTimingAPI) { + if (isCommitting) { + hasScheduledUpdateInCurrentCommit = true; + } + if ( + currentPhase !== null && + currentPhase !== "componentWillMount" && + currentPhase !== "componentWillReceiveProps" + ) { + hasScheduledUpdateInCurrentPhase = true; + } + } +} + +function startRequestCallbackTimer() { + if (enableUserTimingAPI) { + if (supportsUserTiming && !isWaitingForCallback) { + isWaitingForCallback = true; + beginMark("(Waiting for async callback...)"); + } + } +} + +function stopRequestCallbackTimer(didExpire) { + if (enableUserTimingAPI) { + if (supportsUserTiming) { + isWaitingForCallback = false; + var warning$$1 = didExpire ? "React was blocked by main thread" : null; + endMark( + "(Waiting for async callback...)", + "(Waiting for async callback...)", + warning$$1 + ); + } + } +} + +function startWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + // If we pause, this is the fiber to unwind from. + currentFiber = fiber; + if (!beginFiberMark(fiber, null)) { + return; + } + fiber._debugIsCurrentlyTiming = true; + } +} + +function cancelWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + // Remember we shouldn't complete measurement for this fiber. + // Otherwise flamechart will be deep even for small updates. + fiber._debugIsCurrentlyTiming = false; + clearFiberMark(fiber, null); + } +} + +function stopWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + // If we pause, its parent is the fiber to unwind from. + currentFiber = fiber["return"]; + if (!fiber._debugIsCurrentlyTiming) { + return; + } + fiber._debugIsCurrentlyTiming = false; + endFiberMark(fiber, null, null); + } +} + +function stopFailedWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + // If we pause, its parent is the fiber to unwind from. + currentFiber = fiber["return"]; + if (!fiber._debugIsCurrentlyTiming) { + return; + } + fiber._debugIsCurrentlyTiming = false; + var warning$$1 = "An error was thrown inside this error boundary"; + endFiberMark(fiber, null, warning$$1); + } +} + +function startPhaseTimer(fiber, phase) { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + clearPendingPhaseMeasurement(); + if (!beginFiberMark(fiber, phase)) { + return; + } + currentPhaseFiber = fiber; + currentPhase = phase; + } +} + +function stopPhaseTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + if (currentPhase !== null && currentPhaseFiber !== null) { + var warning$$1 = hasScheduledUpdateInCurrentPhase + ? "Scheduled a cascading update" + : null; + endFiberMark(currentPhaseFiber, currentPhase, warning$$1); + } + currentPhase = null; + currentPhaseFiber = null; + } +} + +function startWorkLoopTimer(nextUnitOfWork) { + if (enableUserTimingAPI) { + currentFiber = nextUnitOfWork; + if (!supportsUserTiming) { + return; + } + commitCountInCurrentWorkLoop = 0; + // This is top level call. + // Any other measurements are performed within. + beginMark("(React Tree Reconciliation)"); + // Resume any measurements that were in progress during the last loop. + resumeTimers(); + } +} + +function stopWorkLoopTimer(interruptedBy) { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + var warning$$1 = null; + if (interruptedBy !== null) { + if (interruptedBy.tag === HostRoot) { + warning$$1 = "A top-level update interrupted the previous render"; + } else { + var componentName = getComponentName(interruptedBy) || "Unknown"; + warning$$1 = + "An update to " + componentName + " interrupted the previous render"; + } + } else if (commitCountInCurrentWorkLoop > 1) { + warning$$1 = "There were cascading updates"; + } + commitCountInCurrentWorkLoop = 0; + // Pause any measurements until the next loop. + pauseTimers(); + endMark( + "(React Tree Reconciliation)", + "(React Tree Reconciliation)", + warning$$1 + ); + } +} + +function startCommitTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + isCommitting = true; + hasScheduledUpdateInCurrentCommit = false; + labelsInCurrentCommit.clear(); + beginMark("(Committing Changes)"); + } +} + +function stopCommitTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + var warning$$1 = null; + if (hasScheduledUpdateInCurrentCommit) { + warning$$1 = "Lifecycle hook scheduled a cascading update"; + } else if (commitCountInCurrentWorkLoop > 0) { + warning$$1 = "Caused by a cascading update in earlier commit"; + } + hasScheduledUpdateInCurrentCommit = false; + commitCountInCurrentWorkLoop++; + isCommitting = false; + labelsInCurrentCommit.clear(); + + endMark("(Committing Changes)", "(Committing Changes)", warning$$1); + } +} + +function startCommitHostEffectsTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + effectCountInCurrentCommit = 0; + beginMark("(Committing Host Effects)"); + } +} + +function stopCommitHostEffectsTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + var count = effectCountInCurrentCommit; + effectCountInCurrentCommit = 0; + endMark( + "(Committing Host Effects: " + count + " Total)", + "(Committing Host Effects)", + null + ); + } +} + +function startCommitLifeCyclesTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + effectCountInCurrentCommit = 0; + beginMark("(Calling Lifecycle Methods)"); + } +} + +function stopCommitLifeCyclesTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + var count = effectCountInCurrentCommit; + effectCountInCurrentCommit = 0; + endMark( + "(Calling Lifecycle Methods: " + count + " Total)", + "(Calling Lifecycle Methods)", + null + ); + } +} + +{ + var warnedAboutMissingGetChildContext = {}; +} + +// A cursor to the current merged context object on the stack. +var contextStackCursor = createCursor(emptyObject); +// A cursor to a boolean indicating whether the context has changed. +var didPerformWorkStackCursor = createCursor(false); +// Keep track of the previous context object that was on the stack. +// We use this to get access to the parent context after we have already +// pushed the next context provider, and now need to merge their contexts. +var previousContext = emptyObject; + +function getUnmaskedContext(workInProgress) { + var hasOwnContext = isContextProvider(workInProgress); + if (hasOwnContext) { + // If the fiber is a context provider itself, when we read its context + // we have already pushed its own child context on the stack. A context + // provider should not "see" its own child context. Therefore we read the + // previous (parent) context instead for a context provider. + return previousContext; + } + return contextStackCursor.current; +} + +function cacheContext(workInProgress, unmaskedContext, maskedContext) { + var instance = workInProgress.stateNode; + instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext; + instance.__reactInternalMemoizedMaskedChildContext = maskedContext; +} + +function getMaskedContext(workInProgress, unmaskedContext) { + var type = workInProgress.type; + var contextTypes = type.contextTypes; + if (!contextTypes) { + return emptyObject; + } + + // Avoid recreating masked context unless unmasked context has changed. + // Failing to do this will result in unnecessary calls to componentWillReceiveProps. + // This may trigger infinite loops if componentWillReceiveProps calls setState. + var instance = workInProgress.stateNode; + if ( + instance && + instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext + ) { + return instance.__reactInternalMemoizedMaskedChildContext; + } + + var context = {}; + for (var key in contextTypes) { + context[key] = unmaskedContext[key]; + } + + { + var name = getComponentName(workInProgress) || "Unknown"; + checkPropTypes( + contextTypes, + context, + "context", + name, + ReactDebugCurrentFiber.getCurrentFiberStackAddendum + ); + } + + // Cache unmasked context so we can avoid recreating masked context unless necessary. + // Context is created before the class component is instantiated so check for instance. + if (instance) { + cacheContext(workInProgress, unmaskedContext, context); + } + + return context; +} + +function hasContextChanged() { + return didPerformWorkStackCursor.current; +} + +function isContextConsumer(fiber) { + return fiber.tag === ClassComponent && fiber.type.contextTypes != null; +} + +function isContextProvider(fiber) { + return fiber.tag === ClassComponent && fiber.type.childContextTypes != null; +} + +function popContextProvider(fiber) { + if (!isContextProvider(fiber)) { + return; + } + + pop(didPerformWorkStackCursor, fiber); + pop(contextStackCursor, fiber); +} + +function popTopLevelContextObject(fiber) { + pop(didPerformWorkStackCursor, fiber); + pop(contextStackCursor, fiber); +} + +function pushTopLevelContextObject(fiber, context, didChange) { + invariant( + contextStackCursor.cursor == null, + "Unexpected context found on stack. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + + push(contextStackCursor, context, fiber); + push(didPerformWorkStackCursor, didChange, fiber); +} + +function processChildContext(fiber, parentContext) { + var instance = fiber.stateNode; + var childContextTypes = fiber.type.childContextTypes; + + // TODO (bvaughn) Replace this behavior with an invariant() in the future. + // It has only been added in Fiber to match the (unintentional) behavior in Stack. + if (typeof instance.getChildContext !== "function") { + { + var componentName = getComponentName(fiber) || "Unknown"; + + if (!warnedAboutMissingGetChildContext[componentName]) { + warnedAboutMissingGetChildContext[componentName] = true; + warning( + false, + "%s.childContextTypes is specified but there is no getChildContext() method " + + "on the instance. You can either define getChildContext() on %s or remove " + + "childContextTypes from it.", + componentName, + componentName + ); + } + } + return parentContext; + } + + var childContext = void 0; + { + ReactDebugCurrentFiber.setCurrentPhase("getChildContext"); + } + startPhaseTimer(fiber, "getChildContext"); + childContext = instance.getChildContext(); + stopPhaseTimer(); + { + ReactDebugCurrentFiber.setCurrentPhase(null); + } + for (var contextKey in childContext) { + invariant( + contextKey in childContextTypes, + '%s.getChildContext(): key "%s" is not defined in childContextTypes.', + getComponentName(fiber) || "Unknown", + contextKey + ); + } + { + var name = getComponentName(fiber) || "Unknown"; + checkPropTypes( + childContextTypes, + childContext, + "child context", + name, + // In practice, there is one case in which we won't get a stack. It's when + // somebody calls unstable_renderSubtreeIntoContainer() and we process + // context from the parent component instance. The stack will be missing + // because it's outside of the reconciliation, and so the pointer has not + // been set. This is rare and doesn't matter. We'll also remove that API. + ReactDebugCurrentFiber.getCurrentFiberStackAddendum + ); + } + + return Object.assign({}, parentContext, childContext); +} + +function pushContextProvider(workInProgress) { + if (!isContextProvider(workInProgress)) { + return false; + } + + var instance = workInProgress.stateNode; + // We push the context as early as possible to ensure stack integrity. + // If the instance does not exist yet, we will push null at first, + // and replace it on the stack later when invalidating the context. + var memoizedMergedChildContext = + (instance && instance.__reactInternalMemoizedMergedChildContext) || + emptyObject; + + // Remember the parent context so we can merge with it later. + // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates. + previousContext = contextStackCursor.current; + push(contextStackCursor, memoizedMergedChildContext, workInProgress); + push( + didPerformWorkStackCursor, + didPerformWorkStackCursor.current, + workInProgress + ); + + return true; +} + +function invalidateContextProvider(workInProgress, didChange) { + var instance = workInProgress.stateNode; + invariant( + instance, + "Expected to have an instance by this point. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + + if (didChange) { + // Merge parent and own context. + // Skip this if we're not updating due to sCU. + // This avoids unnecessarily recomputing memoized values. + var mergedContext = processChildContext(workInProgress, previousContext); + instance.__reactInternalMemoizedMergedChildContext = mergedContext; + + // Replace the old (or empty) context with the new one. + // It is important to unwind the context in the reverse order. + pop(didPerformWorkStackCursor, workInProgress); + pop(contextStackCursor, workInProgress); + // Now push the new context and mark that it has changed. + push(contextStackCursor, mergedContext, workInProgress); + push(didPerformWorkStackCursor, didChange, workInProgress); + } else { + pop(didPerformWorkStackCursor, workInProgress); + push(didPerformWorkStackCursor, didChange, workInProgress); + } +} + +function resetContext() { + previousContext = emptyObject; + contextStackCursor.current = emptyObject; + didPerformWorkStackCursor.current = false; +} + +function findCurrentUnmaskedContext(fiber) { + // Currently this is only used with renderSubtreeIntoContainer; not sure if it + // makes sense elsewhere + invariant( + isFiberMounted(fiber) && fiber.tag === ClassComponent, + "Expected subtree parent to be a mounted class component. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + + var node = fiber; + while (node.tag !== HostRoot) { + if (isContextProvider(node)) { + return node.stateNode.__reactInternalMemoizedMergedChildContext; + } + var parent = node["return"]; + invariant( + parent, + "Found unexpected detached subtree parent. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + node = parent; + } + return node.stateNode.context; +} + +var NoWork = 0; // TODO: Use an opaque type once ESLint et al support the syntax + +var Sync = 1; +var Never = 2147483647; // Max int32: Math.pow(2, 31) - 1 + +var UNIT_SIZE = 10; +var MAGIC_NUMBER_OFFSET = 2; + +// 1 unit of expiration time represents 10ms. +function msToExpirationTime(ms) { + // Always add an offset so that we don't clash with the magic number for NoWork. + return ((ms / UNIT_SIZE) | 0) + MAGIC_NUMBER_OFFSET; +} + +function expirationTimeToMs(expirationTime) { + return (expirationTime - MAGIC_NUMBER_OFFSET) * UNIT_SIZE; +} + +function ceiling(num, precision) { + return (((num / precision) | 0) + 1) * precision; +} + +function computeExpirationBucket(currentTime, expirationInMs, bucketSizeMs) { + return ceiling( + currentTime + expirationInMs / UNIT_SIZE, + bucketSizeMs / UNIT_SIZE + ); +} + +var NoContext = 0; +var AsyncUpdates = 1; + +{ + var hasBadMapPolyfill = false; + try { + var nonExtensibleObject = Object.preventExtensions({}); + /* eslint-disable no-new */ + new Map([[nonExtensibleObject, null]]); + new Set([nonExtensibleObject]); + /* eslint-enable no-new */ + } catch (e) { + // TODO: Consider warning about bad polyfills + hasBadMapPolyfill = true; + } +} + +// A Fiber is work on a Component that needs to be done or was done. There can +// be more than one per component. + +{ + var debugCounter = 1; +} + +function FiberNode(tag, pendingProps, key, internalContextTag) { + // Instance + this.tag = tag; + this.key = key; + this.type = null; + this.stateNode = null; + + // Fiber + this["return"] = null; + this.child = null; + this.sibling = null; + this.index = 0; + + this.ref = null; + + this.pendingProps = pendingProps; + this.memoizedProps = null; + this.updateQueue = null; + this.memoizedState = null; + + this.internalContextTag = internalContextTag; + + // Effects + this.effectTag = NoEffect; + this.nextEffect = null; + + this.firstEffect = null; + this.lastEffect = null; + + this.expirationTime = NoWork; + + this.alternate = null; + + { + this._debugID = debugCounter++; + this._debugSource = null; + this._debugOwner = null; + this._debugIsCurrentlyTiming = false; + if (!hasBadMapPolyfill && typeof Object.preventExtensions === "function") { + Object.preventExtensions(this); + } + } +} + +// This is a constructor function, rather than a POJO constructor, still +// please ensure we do the following: +// 1) Nobody should add any instance methods on this. Instance methods can be +// more difficult to predict when they get optimized and they are almost +// never inlined properly in static compilers. +// 2) Nobody should rely on `instanceof Fiber` for type testing. We should +// always know when it is a fiber. +// 3) We might want to experiment with using numeric keys since they are easier +// to optimize in a non-JIT environment. +// 4) We can easily go from a constructor to a createFiber object literal if that +// is faster. +// 5) It should be easy to port this to a C struct and keep a C implementation +// compatible. +var createFiber = function(tag, pendingProps, key, internalContextTag) { + // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors + return new FiberNode(tag, pendingProps, key, internalContextTag); +}; + +function shouldConstruct(Component) { + return !!(Component.prototype && Component.prototype.isReactComponent); +} + +// This is used to create an alternate fiber to do work on. +function createWorkInProgress(current, pendingProps, expirationTime) { + var workInProgress = current.alternate; + if (workInProgress === null) { + // We use a double buffering pooling technique because we know that we'll + // only ever need at most two versions of a tree. We pool the "other" unused + // node that we're free to reuse. This is lazily created to avoid allocating + // extra objects for things that are never updated. It also allow us to + // reclaim the extra memory if needed. + workInProgress = createFiber( + current.tag, + pendingProps, + current.key, + current.internalContextTag + ); + workInProgress.type = current.type; + workInProgress.stateNode = current.stateNode; + + { + // DEV-only fields + workInProgress._debugID = current._debugID; + workInProgress._debugSource = current._debugSource; + workInProgress._debugOwner = current._debugOwner; + } + + workInProgress.alternate = current; + current.alternate = workInProgress; + } else { + workInProgress.pendingProps = pendingProps; + + // We already have an alternate. + // Reset the effect tag. + workInProgress.effectTag = NoEffect; + + // The effect list is no longer valid. + workInProgress.nextEffect = null; + workInProgress.firstEffect = null; + workInProgress.lastEffect = null; + } + + workInProgress.expirationTime = expirationTime; + + workInProgress.child = current.child; + workInProgress.memoizedProps = current.memoizedProps; + workInProgress.memoizedState = current.memoizedState; + workInProgress.updateQueue = current.updateQueue; + + // These will be overridden during the parent's reconciliation + workInProgress.sibling = current.sibling; + workInProgress.index = current.index; + workInProgress.ref = current.ref; + + return workInProgress; +} + +function createHostRootFiber() { + var fiber = createFiber(HostRoot, null, NoContext); + return fiber; +} + +function createFiberFromElement(element, internalContextTag, expirationTime) { + var owner = null; + { + owner = element._owner; + } + + var fiber = void 0; + var type = element.type; + var key = element.key; + var pendingProps = element.props; + if (typeof type === "function") { + fiber = shouldConstruct(type) + ? createFiber(ClassComponent, pendingProps, key, internalContextTag) + : createFiber( + IndeterminateComponent, + pendingProps, + key, + internalContextTag + ); + fiber.type = type; + } else if (typeof type === "string") { + fiber = createFiber(HostComponent, pendingProps, key, internalContextTag); + fiber.type = type; + } else if ( + typeof type === "object" && + type !== null && + typeof type.tag === "number" + ) { + // Currently assumed to be a continuation and therefore is a fiber already. + // TODO: The yield system is currently broken for updates in some cases. + // The reified yield stores a fiber, but we don't know which fiber that is; + // the current or a workInProgress? When the continuation gets rendered here + // we don't know if we can reuse that fiber or if we need to clone it. + // There is probably a clever way to restructure this. + fiber = type; + fiber.pendingProps = pendingProps; + } else { + var info = ""; + { + if ( + type === undefined || + (typeof type === "object" && + type !== null && + Object.keys(type).length === 0) + ) { + info += + " You likely forgot to export your component from the file " + + "it's defined in, or you might have mixed up default and named imports."; + } + var ownerName = owner ? getComponentName(owner) : null; + if (ownerName) { + info += "\n\nCheck the render method of `" + ownerName + "`."; + } + } + invariant( + false, + "Element type is invalid: expected a string (for built-in components) " + + "or a class/function (for composite components) but got: %s.%s", + type == null ? type : typeof type, + info + ); + } + + { + fiber._debugSource = element._source; + fiber._debugOwner = element._owner; + } + + fiber.expirationTime = expirationTime; + + return fiber; +} + +function createFiberFromFragment( + elements, + internalContextTag, + expirationTime, + key +) { + var fiber = createFiber(Fragment, elements, key, internalContextTag); + fiber.expirationTime = expirationTime; + return fiber; +} + +function createFiberFromText(content, internalContextTag, expirationTime) { + var fiber = createFiber(HostText, content, null, internalContextTag); + fiber.expirationTime = expirationTime; + return fiber; +} + +function createFiberFromHostInstanceForDeletion() { + var fiber = createFiber(HostComponent, null, null, NoContext); + fiber.type = "DELETED"; + return fiber; +} + +function createFiberFromCall(call, internalContextTag, expirationTime) { + var fiber = createFiber(CallComponent, call, call.key, internalContextTag); + fiber.type = call.handler; + fiber.expirationTime = expirationTime; + return fiber; +} + +function createFiberFromReturn(returnNode, internalContextTag, expirationTime) { + var fiber = createFiber(ReturnComponent, null, null, internalContextTag); + fiber.expirationTime = expirationTime; + return fiber; +} + +function createFiberFromPortal(portal, internalContextTag, expirationTime) { + var pendingProps = portal.children !== null ? portal.children : []; + var fiber = createFiber( + HostPortal, + pendingProps, + portal.key, + internalContextTag + ); + fiber.expirationTime = expirationTime; + fiber.stateNode = { + containerInfo: portal.containerInfo, + pendingChildren: null, // Used by persistent updates + implementation: portal.implementation + }; + return fiber; +} + +// TODO: This should be lifted into the renderer. + +function createFiberRoot(containerInfo, hydrate) { + // Cyclic construction. This cheats the type system right now because + // stateNode is any. + var uninitializedFiber = createHostRootFiber(); + var root = { + current: uninitializedFiber, + containerInfo: containerInfo, + pendingChildren: null, + remainingExpirationTime: NoWork, + isReadyForCommit: false, + finishedWork: null, + context: null, + pendingContext: null, + hydrate: hydrate, + firstBatch: null, + nextScheduledRoot: null + }; + uninitializedFiber.stateNode = root; + return root; +} + +var onCommitFiberRoot = null; +var onCommitFiberUnmount = null; +var hasLoggedError = false; + +function catchErrors(fn) { + return function(arg) { + try { + return fn(arg); + } catch (err) { + if (true && !hasLoggedError) { + hasLoggedError = true; + warning(false, "React DevTools encountered an error: %s", err); + } + } + }; +} + +function injectInternals(internals) { + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined") { + // No DevTools + return false; + } + var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__; + if (hook.isDisabled) { + // This isn't a real property on the hook, but it can be set to opt out + // of DevTools integration and associated warnings and logs. + // https://github.com/facebook/react/issues/3877 + return true; + } + if (!hook.supportsFiber) { + { + warning( + false, + "The installed version of React DevTools is too old and will not work " + + "with the current version of React. Please update React DevTools. " + + "https://fb.me/react-devtools" + ); + } + // DevTools exists, even though it doesn't support Fiber. + return true; + } + try { + var rendererID = hook.inject(internals); + // We have successfully injected, so now it is safe to set up hooks. + onCommitFiberRoot = catchErrors(function(root) { + return hook.onCommitFiberRoot(rendererID, root); + }); + onCommitFiberUnmount = catchErrors(function(fiber) { + return hook.onCommitFiberUnmount(rendererID, fiber); + }); + } catch (err) { + // Catch all errors because it is unsafe to throw during initialization. + { + warning(false, "React DevTools encountered an error: %s.", err); + } + } + // DevTools exists + return true; +} + +function onCommitRoot(root) { + if (typeof onCommitFiberRoot === "function") { + onCommitFiberRoot(root); + } +} + +function onCommitUnmount(fiber) { + if (typeof onCommitFiberUnmount === "function") { + onCommitFiberUnmount(fiber); + } +} + +{ + var didWarnUpdateInsideUpdate = false; +} + +// Callbacks are not validated until invocation + +// Singly linked-list of updates. When an update is scheduled, it is added to +// the queue of the current fiber and the work-in-progress fiber. The two queues +// are separate but they share a persistent structure. +// +// During reconciliation, updates are removed from the work-in-progress fiber, +// but they remain on the current fiber. That ensures that if a work-in-progress +// is aborted, the aborted updates are recovered by cloning from current. +// +// The work-in-progress queue is always a subset of the current queue. +// +// When the tree is committed, the work-in-progress becomes the current. + +function createUpdateQueue(baseState) { + var queue = { + baseState: baseState, + expirationTime: NoWork, + first: null, + last: null, + callbackList: null, + hasForceUpdate: false, + isInitialized: false + }; + { + queue.isProcessing = false; + } + return queue; +} + +function insertUpdateIntoQueue(queue, update) { + // Append the update to the end of the list. + if (queue.last === null) { + // Queue is empty + queue.first = queue.last = update; + } else { + queue.last.next = update; + queue.last = update; + } + if ( + queue.expirationTime === NoWork || + queue.expirationTime > update.expirationTime + ) { + queue.expirationTime = update.expirationTime; + } +} + +function insertUpdateIntoFiber(fiber, update) { + // We'll have at least one and at most two distinct update queues. + var alternateFiber = fiber.alternate; + var queue1 = fiber.updateQueue; + if (queue1 === null) { + // TODO: We don't know what the base state will be until we begin work. + // It depends on which fiber is the next current. Initialize with an empty + // base state, then set to the memoizedState when rendering. Not super + // happy with this approach. + queue1 = fiber.updateQueue = createUpdateQueue(null); + } + + var queue2 = void 0; + if (alternateFiber !== null) { + queue2 = alternateFiber.updateQueue; + if (queue2 === null) { + queue2 = alternateFiber.updateQueue = createUpdateQueue(null); + } + } else { + queue2 = null; + } + queue2 = queue2 !== queue1 ? queue2 : null; + + // Warn if an update is scheduled from inside an updater function. + { + if ( + (queue1.isProcessing || (queue2 !== null && queue2.isProcessing)) && + !didWarnUpdateInsideUpdate + ) { + warning( + false, + "An update (setState, replaceState, or forceUpdate) was scheduled " + + "from inside an update function. Update functions should be pure, " + + "with zero side-effects. Consider using componentDidUpdate or a " + + "callback." + ); + didWarnUpdateInsideUpdate = true; + } + } + + // If there's only one queue, add the update to that queue and exit. + if (queue2 === null) { + insertUpdateIntoQueue(queue1, update); + return; + } + + // If either queue is empty, we need to add to both queues. + if (queue1.last === null || queue2.last === null) { + insertUpdateIntoQueue(queue1, update); + insertUpdateIntoQueue(queue2, update); + return; + } + + // If both lists are not empty, the last update is the same for both lists + // because of structural sharing. So, we should only append to one of + // the lists. + insertUpdateIntoQueue(queue1, update); + // But we still need to update the `last` pointer of queue2. + queue2.last = update; +} + +function getUpdateExpirationTime(fiber) { + if (fiber.tag !== ClassComponent && fiber.tag !== HostRoot) { + return NoWork; + } + var updateQueue = fiber.updateQueue; + if (updateQueue === null) { + return NoWork; + } + return updateQueue.expirationTime; +} + +function getStateFromUpdate(update, instance, prevState, props) { + var partialState = update.partialState; + if (typeof partialState === "function") { + var updateFn = partialState; + + // Invoke setState callback an extra time to help detect side-effects. + if (debugRenderPhaseSideEffects) { + updateFn.call(instance, prevState, props); + } + + return updateFn.call(instance, prevState, props); + } else { + return partialState; + } +} + +function processUpdateQueue( + current, + workInProgress, + queue, + instance, + props, + renderExpirationTime +) { + if (current !== null && current.updateQueue === queue) { + // We need to create a work-in-progress queue, by cloning the current queue. + var currentQueue = queue; + queue = workInProgress.updateQueue = { + baseState: currentQueue.baseState, + expirationTime: currentQueue.expirationTime, + first: currentQueue.first, + last: currentQueue.last, + isInitialized: currentQueue.isInitialized, + // These fields are no longer valid because they were already committed. + // Reset them. + callbackList: null, + hasForceUpdate: false + }; + } + + { + // Set this flag so we can warn if setState is called inside the update + // function of another setState. + queue.isProcessing = true; + } + + // Reset the remaining expiration time. If we skip over any updates, we'll + // increase this accordingly. + queue.expirationTime = NoWork; + + // TODO: We don't know what the base state will be until we begin work. + // It depends on which fiber is the next current. Initialize with an empty + // base state, then set to the memoizedState when rendering. Not super + // happy with this approach. + var state = void 0; + if (queue.isInitialized) { + state = queue.baseState; + } else { + state = queue.baseState = workInProgress.memoizedState; + queue.isInitialized = true; + } + var dontMutatePrevState = true; + var update = queue.first; + var didSkip = false; + while (update !== null) { + var updateExpirationTime = update.expirationTime; + if (updateExpirationTime > renderExpirationTime) { + // This update does not have sufficient priority. Skip it. + var remainingExpirationTime = queue.expirationTime; + if ( + remainingExpirationTime === NoWork || + remainingExpirationTime > updateExpirationTime + ) { + // Update the remaining expiration time. + queue.expirationTime = updateExpirationTime; + } + if (!didSkip) { + didSkip = true; + queue.baseState = state; + } + // Continue to the next update. + update = update.next; + continue; + } + + // This update does have sufficient priority. + + // If no previous updates were skipped, drop this update from the queue by + // advancing the head of the list. + if (!didSkip) { + queue.first = update.next; + if (queue.first === null) { + queue.last = null; + } + } + + // Process the update + var _partialState = void 0; + if (update.isReplace) { + state = getStateFromUpdate(update, instance, state, props); + dontMutatePrevState = true; + } else { + _partialState = getStateFromUpdate(update, instance, state, props); + if (_partialState) { + if (dontMutatePrevState) { + // $FlowFixMe: Idk how to type this properly. + state = Object.assign({}, state, _partialState); + } else { + state = Object.assign(state, _partialState); + } + dontMutatePrevState = false; + } + } + if (update.isForced) { + queue.hasForceUpdate = true; + } + if (update.callback !== null) { + // Append to list of callbacks. + var _callbackList = queue.callbackList; + if (_callbackList === null) { + _callbackList = queue.callbackList = []; + } + _callbackList.push(update); + } + update = update.next; + } + + if (queue.callbackList !== null) { + workInProgress.effectTag |= Callback; + } else if (queue.first === null && !queue.hasForceUpdate) { + // The queue is empty. We can reset it. + workInProgress.updateQueue = null; + } + + if (!didSkip) { + didSkip = true; + queue.baseState = state; + } + + { + // No longer processing. + queue.isProcessing = false; + } + + return state; +} + +function commitCallbacks(queue, context) { + var callbackList = queue.callbackList; + if (callbackList === null) { + return; + } + // Set the list to null to make sure they don't get called more than once. + queue.callbackList = null; + for (var i = 0; i < callbackList.length; i++) { + var update = callbackList[i]; + var _callback = update.callback; + // This update might be processed again. Clear the callback so it's only + // called once. + update.callback = null; + invariant( + typeof _callback === "function", + "Invalid argument passed as callback. Expected a function. Instead " + + "received: %s", + _callback + ); + _callback.call(context); + } +} + +var fakeInternalInstance = {}; +var isArray = Array.isArray; + +{ + var didWarnAboutStateAssignmentForComponent = {}; + + var warnOnInvalidCallback = function(callback, callerName) { + warning( + callback === null || typeof callback === "function", + "%s(...): Expected the last optional `callback` argument to be a " + + "function. Instead received: %s.", + callerName, + callback + ); + }; + + // This is so gross but it's at least non-critical and can be removed if + // it causes problems. This is meant to give a nicer error message for + // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component, + // ...)) which otherwise throws a "_processChildContext is not a function" + // exception. + Object.defineProperty(fakeInternalInstance, "_processChildContext", { + enumerable: false, + value: function() { + invariant( + false, + "_processChildContext is not available in React 16+. This likely " + + "means you have multiple copies of React and are attempting to nest " + + "a React 15 tree inside a React 16 tree using " + + "unstable_renderSubtreeIntoContainer, which isn't supported. Try " + + "to make sure you have only one copy of React (and ideally, switch " + + "to ReactDOM.createPortal)." + ); + } + }); + Object.freeze(fakeInternalInstance); +} + +var ReactFiberClassComponent = function( + scheduleWork, + computeExpirationForFiber, + memoizeProps, + memoizeState +) { + // Class component state updater + var updater = { + isMounted: isMounted, + enqueueSetState: function(instance, partialState, callback) { + var fiber = get(instance); + callback = callback === undefined ? null : callback; + { + warnOnInvalidCallback(callback, "setState"); + } + var expirationTime = computeExpirationForFiber(fiber); + var update = { + expirationTime: expirationTime, + partialState: partialState, + callback: callback, + isReplace: false, + isForced: false, + nextCallback: null, + next: null + }; + insertUpdateIntoFiber(fiber, update); + scheduleWork(fiber, expirationTime); + }, + enqueueReplaceState: function(instance, state, callback) { + var fiber = get(instance); + callback = callback === undefined ? null : callback; + { + warnOnInvalidCallback(callback, "replaceState"); + } + var expirationTime = computeExpirationForFiber(fiber); + var update = { + expirationTime: expirationTime, + partialState: state, + callback: callback, + isReplace: true, + isForced: false, + nextCallback: null, + next: null + }; + insertUpdateIntoFiber(fiber, update); + scheduleWork(fiber, expirationTime); + }, + enqueueForceUpdate: function(instance, callback) { + var fiber = get(instance); + callback = callback === undefined ? null : callback; + { + warnOnInvalidCallback(callback, "forceUpdate"); + } + var expirationTime = computeExpirationForFiber(fiber); + var update = { + expirationTime: expirationTime, + partialState: null, + callback: callback, + isReplace: false, + isForced: true, + nextCallback: null, + next: null + }; + insertUpdateIntoFiber(fiber, update); + scheduleWork(fiber, expirationTime); + } + }; + + function checkShouldComponentUpdate( + workInProgress, + oldProps, + newProps, + oldState, + newState, + newContext + ) { + if ( + oldProps === null || + (workInProgress.updateQueue !== null && + workInProgress.updateQueue.hasForceUpdate) + ) { + // If the workInProgress already has an Update effect, return true + return true; + } + + var instance = workInProgress.stateNode; + var type = workInProgress.type; + if (typeof instance.shouldComponentUpdate === "function") { + startPhaseTimer(workInProgress, "shouldComponentUpdate"); + var shouldUpdate = instance.shouldComponentUpdate( + newProps, + newState, + newContext + ); + stopPhaseTimer(); + + // Simulate an async bailout/interruption by invoking lifecycle twice. + if (debugRenderPhaseSideEffects) { + instance.shouldComponentUpdate(newProps, newState, newContext); + } + + { + warning( + shouldUpdate !== undefined, + "%s.shouldComponentUpdate(): Returned undefined instead of a " + + "boolean value. Make sure to return true or false.", + getComponentName(workInProgress) || "Unknown" + ); + } + + return shouldUpdate; + } + + if (type.prototype && type.prototype.isPureReactComponent) { + return ( + !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState) + ); + } + + return true; + } + + function checkClassInstance(workInProgress) { + var instance = workInProgress.stateNode; + var type = workInProgress.type; + { + var name = getComponentName(workInProgress); + var renderPresent = instance.render; + + if (!renderPresent) { + if (type.prototype && typeof type.prototype.render === "function") { + warning( + false, + "%s(...): No `render` method found on the returned component " + + "instance: did you accidentally return an object from the constructor?", + name + ); + } else { + warning( + false, + "%s(...): No `render` method found on the returned component " + + "instance: you may have forgotten to define `render`.", + name + ); + } + } + + var noGetInitialStateOnES6 = + !instance.getInitialState || + instance.getInitialState.isReactClassApproved || + instance.state; + warning( + noGetInitialStateOnES6, + "getInitialState was defined on %s, a plain JavaScript class. " + + "This is only supported for classes created using React.createClass. " + + "Did you mean to define a state property instead?", + name + ); + var noGetDefaultPropsOnES6 = + !instance.getDefaultProps || + instance.getDefaultProps.isReactClassApproved; + warning( + noGetDefaultPropsOnES6, + "getDefaultProps was defined on %s, a plain JavaScript class. " + + "This is only supported for classes created using React.createClass. " + + "Use a static property to define defaultProps instead.", + name + ); + var noInstancePropTypes = !instance.propTypes; + warning( + noInstancePropTypes, + "propTypes was defined as an instance property on %s. Use a static " + + "property to define propTypes instead.", + name + ); + var noInstanceContextTypes = !instance.contextTypes; + warning( + noInstanceContextTypes, + "contextTypes was defined as an instance property on %s. Use a static " + + "property to define contextTypes instead.", + name + ); + var noComponentShouldUpdate = + typeof instance.componentShouldUpdate !== "function"; + warning( + noComponentShouldUpdate, + "%s has a method called " + + "componentShouldUpdate(). Did you mean shouldComponentUpdate()? " + + "The name is phrased as a question because the function is " + + "expected to return a value.", + name + ); + if ( + type.prototype && + type.prototype.isPureReactComponent && + typeof instance.shouldComponentUpdate !== "undefined" + ) { + warning( + false, + "%s has a method called shouldComponentUpdate(). " + + "shouldComponentUpdate should not be used when extending React.PureComponent. " + + "Please extend React.Component if shouldComponentUpdate is used.", + getComponentName(workInProgress) || "A pure component" + ); + } + var noComponentDidUnmount = + typeof instance.componentDidUnmount !== "function"; + warning( + noComponentDidUnmount, + "%s has a method called " + + "componentDidUnmount(). But there is no such lifecycle method. " + + "Did you mean componentWillUnmount()?", + name + ); + var noComponentDidReceiveProps = + typeof instance.componentDidReceiveProps !== "function"; + warning( + noComponentDidReceiveProps, + "%s has a method called " + + "componentDidReceiveProps(). But there is no such lifecycle method. " + + "If you meant to update the state in response to changing props, " + + "use componentWillReceiveProps(). If you meant to fetch data or " + + "run side-effects or mutations after React has updated the UI, use componentDidUpdate().", + name + ); + var noComponentWillRecieveProps = + typeof instance.componentWillRecieveProps !== "function"; + warning( + noComponentWillRecieveProps, + "%s has a method called " + + "componentWillRecieveProps(). Did you mean componentWillReceiveProps()?", + name + ); + var hasMutatedProps = instance.props !== workInProgress.pendingProps; + warning( + instance.props === undefined || !hasMutatedProps, + "%s(...): When calling super() in `%s`, make sure to pass " + + "up the same props that your component's constructor was passed.", + name, + name + ); + var noInstanceDefaultProps = !instance.defaultProps; + warning( + noInstanceDefaultProps, + "Setting defaultProps as an instance property on %s is not supported and will be ignored." + + " Instead, define defaultProps as a static property on %s.", + name, + name + ); + } + + var state = instance.state; + if (state && (typeof state !== "object" || isArray(state))) { + warning( + false, + "%s.state: must be set to an object or null", + getComponentName(workInProgress) + ); + } + if (typeof instance.getChildContext === "function") { + warning( + typeof workInProgress.type.childContextTypes === "object", + "%s.getChildContext(): childContextTypes must be defined in order to " + + "use getChildContext().", + getComponentName(workInProgress) + ); + } + } + + function resetInputPointers(workInProgress, instance) { + instance.props = workInProgress.memoizedProps; + instance.state = workInProgress.memoizedState; + } + + function adoptClassInstance(workInProgress, instance) { + instance.updater = updater; + workInProgress.stateNode = instance; + // The instance needs access to the fiber so that it can schedule updates + set(instance, workInProgress); + { + instance._reactInternalInstance = fakeInternalInstance; + } + } + + function constructClassInstance(workInProgress, props) { + var ctor = workInProgress.type; + var unmaskedContext = getUnmaskedContext(workInProgress); + var needsContext = isContextConsumer(workInProgress); + var context = needsContext + ? getMaskedContext(workInProgress, unmaskedContext) + : emptyObject; + var instance = new ctor(props, context); + adoptClassInstance(workInProgress, instance); + + // Cache unmasked context so we can avoid recreating masked context unless necessary. + // ReactFiberContext usually updates this cache but can't for newly-created instances. + if (needsContext) { + cacheContext(workInProgress, unmaskedContext, context); + } + + return instance; + } + + function callComponentWillMount(workInProgress, instance) { + startPhaseTimer(workInProgress, "componentWillMount"); + var oldState = instance.state; + instance.componentWillMount(); + stopPhaseTimer(); + + // Simulate an async bailout/interruption by invoking lifecycle twice. + if (debugRenderPhaseSideEffects) { + instance.componentWillMount(); + } + + if (oldState !== instance.state) { + { + warning( + false, + "%s.componentWillMount(): Assigning directly to this.state is " + + "deprecated (except inside a component's " + + "constructor). Use setState instead.", + getComponentName(workInProgress) + ); + } + updater.enqueueReplaceState(instance, instance.state, null); + } + } + + function callComponentWillReceiveProps( + workInProgress, + instance, + newProps, + newContext + ) { + startPhaseTimer(workInProgress, "componentWillReceiveProps"); + var oldState = instance.state; + instance.componentWillReceiveProps(newProps, newContext); + stopPhaseTimer(); + + // Simulate an async bailout/interruption by invoking lifecycle twice. + if (debugRenderPhaseSideEffects) { + instance.componentWillReceiveProps(newProps, newContext); + } + + if (instance.state !== oldState) { + { + var componentName = getComponentName(workInProgress) || "Component"; + if (!didWarnAboutStateAssignmentForComponent[componentName]) { + warning( + false, + "%s.componentWillReceiveProps(): Assigning directly to " + + "this.state is deprecated (except inside a component's " + + "constructor). Use setState instead.", + componentName + ); + didWarnAboutStateAssignmentForComponent[componentName] = true; + } + } + updater.enqueueReplaceState(instance, instance.state, null); + } + } + + // Invokes the mount life-cycles on a previously never rendered instance. + function mountClassInstance(workInProgress, renderExpirationTime) { + var current = workInProgress.alternate; + + { + checkClassInstance(workInProgress); + } + + var instance = workInProgress.stateNode; + var state = instance.state || null; + var props = workInProgress.pendingProps; + var unmaskedContext = getUnmaskedContext(workInProgress); + + instance.props = props; + instance.state = workInProgress.memoizedState = state; + instance.refs = emptyObject; + instance.context = getMaskedContext(workInProgress, unmaskedContext); + + if ( + enableAsyncSubtreeAPI && + workInProgress.type != null && + workInProgress.type.prototype != null && + workInProgress.type.prototype.unstable_isAsyncReactComponent === true + ) { + workInProgress.internalContextTag |= AsyncUpdates; + } + + if (typeof instance.componentWillMount === "function") { + callComponentWillMount(workInProgress, instance); + // If we had additional state updates during this life-cycle, let's + // process them now. + var updateQueue = workInProgress.updateQueue; + if (updateQueue !== null) { + instance.state = processUpdateQueue( + current, + workInProgress, + updateQueue, + instance, + props, + renderExpirationTime + ); + } + } + if (typeof instance.componentDidMount === "function") { + workInProgress.effectTag |= Update; + } + } + + // Called on a preexisting class instance. Returns false if a resumed render + // could be reused. + // function resumeMountClassInstance( + // workInProgress: Fiber, + // priorityLevel: PriorityLevel, + // ): boolean { + // const instance = workInProgress.stateNode; + // resetInputPointers(workInProgress, instance); + + // let newState = workInProgress.memoizedState; + // let newProps = workInProgress.pendingProps; + // if (!newProps) { + // // If there isn't any new props, then we'll reuse the memoized props. + // // This could be from already completed work. + // newProps = workInProgress.memoizedProps; + // invariant( + // newProps != null, + // 'There should always be pending or memoized props. This error is ' + + // 'likely caused by a bug in React. Please file an issue.', + // ); + // } + // const newUnmaskedContext = getUnmaskedContext(workInProgress); + // const newContext = getMaskedContext(workInProgress, newUnmaskedContext); + + // const oldContext = instance.context; + // const oldProps = workInProgress.memoizedProps; + + // if ( + // typeof instance.componentWillReceiveProps === 'function' && + // (oldProps !== newProps || oldContext !== newContext) + // ) { + // callComponentWillReceiveProps( + // workInProgress, + // instance, + // newProps, + // newContext, + // ); + // } + + // // Process the update queue before calling shouldComponentUpdate + // const updateQueue = workInProgress.updateQueue; + // if (updateQueue !== null) { + // newState = processUpdateQueue( + // workInProgress, + // updateQueue, + // instance, + // newState, + // newProps, + // priorityLevel, + // ); + // } + + // // TODO: Should we deal with a setState that happened after the last + // // componentWillMount and before this componentWillMount? Probably + // // unsupported anyway. + + // if ( + // !checkShouldComponentUpdate( + // workInProgress, + // workInProgress.memoizedProps, + // newProps, + // workInProgress.memoizedState, + // newState, + // newContext, + // ) + // ) { + // // Update the existing instance's state, props, and context pointers even + // // though we're bailing out. + // instance.props = newProps; + // instance.state = newState; + // instance.context = newContext; + // return false; + // } + + // // Update the input pointers now so that they are correct when we call + // // componentWillMount + // instance.props = newProps; + // instance.state = newState; + // instance.context = newContext; + + // if (typeof instance.componentWillMount === 'function') { + // callComponentWillMount(workInProgress, instance); + // // componentWillMount may have called setState. Process the update queue. + // const newUpdateQueue = workInProgress.updateQueue; + // if (newUpdateQueue !== null) { + // newState = processUpdateQueue( + // workInProgress, + // newUpdateQueue, + // instance, + // newState, + // newProps, + // priorityLevel, + // ); + // } + // } + + // if (typeof instance.componentDidMount === 'function') { + // workInProgress.effectTag |= Update; + // } + + // instance.state = newState; + + // return true; + // } + + // Invokes the update life-cycles and returns false if it shouldn't rerender. + function updateClassInstance(current, workInProgress, renderExpirationTime) { + var instance = workInProgress.stateNode; + resetInputPointers(workInProgress, instance); + + var oldProps = workInProgress.memoizedProps; + var newProps = workInProgress.pendingProps; + var oldContext = instance.context; + var newUnmaskedContext = getUnmaskedContext(workInProgress); + var newContext = getMaskedContext(workInProgress, newUnmaskedContext); + + // Note: During these life-cycles, instance.props/instance.state are what + // ever the previously attempted to render - not the "current". However, + // during componentDidUpdate we pass the "current" props. + + if ( + typeof instance.componentWillReceiveProps === "function" && + (oldProps !== newProps || oldContext !== newContext) + ) { + callComponentWillReceiveProps( + workInProgress, + instance, + newProps, + newContext + ); + } + + // Compute the next state using the memoized state and the update queue. + var oldState = workInProgress.memoizedState; + // TODO: Previous state can be null. + var newState = void 0; + if (workInProgress.updateQueue !== null) { + newState = processUpdateQueue( + current, + workInProgress, + workInProgress.updateQueue, + instance, + newProps, + renderExpirationTime + ); + } else { + newState = oldState; + } + + if ( + oldProps === newProps && + oldState === newState && + !hasContextChanged() && + !( + workInProgress.updateQueue !== null && + workInProgress.updateQueue.hasForceUpdate + ) + ) { + // If an update was already in progress, we should schedule an Update + // effect even though we're bailing out, so that cWU/cDU are called. + if (typeof instance.componentDidUpdate === "function") { + if ( + oldProps !== current.memoizedProps || + oldState !== current.memoizedState + ) { + workInProgress.effectTag |= Update; + } + } + return false; + } + + var shouldUpdate = checkShouldComponentUpdate( + workInProgress, + oldProps, + newProps, + oldState, + newState, + newContext + ); + + if (shouldUpdate) { + if (typeof instance.componentWillUpdate === "function") { + startPhaseTimer(workInProgress, "componentWillUpdate"); + instance.componentWillUpdate(newProps, newState, newContext); + stopPhaseTimer(); + + // Simulate an async bailout/interruption by invoking lifecycle twice. + if (debugRenderPhaseSideEffects) { + instance.componentWillUpdate(newProps, newState, newContext); + } + } + if (typeof instance.componentDidUpdate === "function") { + workInProgress.effectTag |= Update; + } + } else { + // If an update was already in progress, we should schedule an Update + // effect even though we're bailing out, so that cWU/cDU are called. + if (typeof instance.componentDidUpdate === "function") { + if ( + oldProps !== current.memoizedProps || + oldState !== current.memoizedState + ) { + workInProgress.effectTag |= Update; + } + } + + // If shouldComponentUpdate returned false, we should still update the + // memoized props/state to indicate that this work can be reused. + memoizeProps(workInProgress, newProps); + memoizeState(workInProgress, newState); + } + + // Update the existing instance's state, props, and context pointers even + // if shouldComponentUpdate returns false. + instance.props = newProps; + instance.state = newState; + instance.context = newContext; + + return shouldUpdate; + } + + return { + adoptClassInstance: adoptClassInstance, + constructClassInstance: constructClassInstance, + mountClassInstance: mountClassInstance, + // resumeMountClassInstance, + updateClassInstance: updateClassInstance + }; +}; + +var getCurrentFiberStackAddendum$1 = + ReactDebugCurrentFiber.getCurrentFiberStackAddendum; + +{ + var didWarnAboutMaps = false; + /** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ + var ownerHasKeyUseWarning = {}; + var ownerHasFunctionTypeWarning = {}; + + var warnForMissingKey = function(child) { + if (child === null || typeof child !== "object") { + return; + } + if (!child._store || child._store.validated || child.key != null) { + return; + } + invariant( + typeof child._store === "object", + "React Component in warnForMissingKey should have a _store. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + child._store.validated = true; + + var currentComponentErrorInfo = + "Each child in an array or iterator should have a unique " + + '"key" prop. See https://fb.me/react-warning-keys for ' + + "more information." + + (getCurrentFiberStackAddendum$1() || ""); + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; + + warning( + false, + "Each child in an array or iterator should have a unique " + + '"key" prop. See https://fb.me/react-warning-keys for ' + + "more information.%s", + getCurrentFiberStackAddendum$1() + ); + }; +} + +var isArray$1 = Array.isArray; + +function coerceRef(current, element) { + var mixedRef = element.ref; + if (mixedRef !== null && typeof mixedRef !== "function") { + if (element._owner) { + var owner = element._owner; + var inst = void 0; + if (owner) { + var ownerFiber = owner; + invariant( + ownerFiber.tag === ClassComponent, + "Stateless function components cannot have refs." + ); + inst = ownerFiber.stateNode; + } + invariant( + inst, + "Missing owner for string ref %s. This error is likely caused by a " + + "bug in React. Please file an issue.", + mixedRef + ); + var stringRef = "" + mixedRef; + // Check if previous string ref matches new string ref + if ( + current !== null && + current.ref !== null && + current.ref._stringRef === stringRef + ) { + return current.ref; + } + var ref = function(value) { + var refs = inst.refs === emptyObject ? (inst.refs = {}) : inst.refs; + if (value === null) { + delete refs[stringRef]; + } else { + refs[stringRef] = value; + } + }; + ref._stringRef = stringRef; + return ref; + } else { + invariant( + typeof mixedRef === "string", + "Expected ref to be a function or a string." + ); + invariant( + element._owner, + "Element ref was specified as a string (%s) but no owner was " + + "set. You may have multiple copies of React loaded. " + + "(details: https://fb.me/react-refs-must-have-owner).", + mixedRef + ); + } + } + return mixedRef; +} + +function throwOnInvalidObjectType(returnFiber, newChild) { + if (returnFiber.type !== "textarea") { + var addendum = ""; + { + addendum = + " If you meant to render a collection of children, use an array " + + "instead." + + (getCurrentFiberStackAddendum$1() || ""); + } + invariant( + false, + "Objects are not valid as a React child (found: %s).%s", + Object.prototype.toString.call(newChild) === "[object Object]" + ? "object with keys {" + Object.keys(newChild).join(", ") + "}" + : newChild, + addendum + ); + } +} + +function warnOnFunctionType() { + var currentComponentErrorInfo = + "Functions are not valid as a React child. This may happen if " + + "you return a Component instead of from render. " + + "Or maybe you meant to call this function rather than return it." + + (getCurrentFiberStackAddendum$1() || ""); + + if (ownerHasFunctionTypeWarning[currentComponentErrorInfo]) { + return; + } + ownerHasFunctionTypeWarning[currentComponentErrorInfo] = true; + + warning( + false, + "Functions are not valid as a React child. This may happen if " + + "you return a Component instead of from render. " + + "Or maybe you meant to call this function rather than return it.%s", + getCurrentFiberStackAddendum$1() || "" + ); +} + +// This wrapper function exists because I expect to clone the code in each path +// to be able to optimize each path individually by branching early. This needs +// a compiler or we can do it manually. Helpers that don't need this branching +// live outside of this function. +function ChildReconciler(shouldTrackSideEffects) { + function deleteChild(returnFiber, childToDelete) { + if (!shouldTrackSideEffects) { + // Noop. + return; + } + // Deletions are added in reversed order so we add it to the front. + // At this point, the return fiber's effect list is empty except for + // deletions, so we can just append the deletion to the list. The remaining + // effects aren't added until the complete phase. Once we implement + // resuming, this may not be true. + var last = returnFiber.lastEffect; + if (last !== null) { + last.nextEffect = childToDelete; + returnFiber.lastEffect = childToDelete; + } else { + returnFiber.firstEffect = returnFiber.lastEffect = childToDelete; + } + childToDelete.nextEffect = null; + childToDelete.effectTag = Deletion; + } + + function deleteRemainingChildren(returnFiber, currentFirstChild) { + if (!shouldTrackSideEffects) { + // Noop. + return null; + } + + // TODO: For the shouldClone case, this could be micro-optimized a bit by + // assuming that after the first child we've already added everything. + var childToDelete = currentFirstChild; + while (childToDelete !== null) { + deleteChild(returnFiber, childToDelete); + childToDelete = childToDelete.sibling; + } + return null; + } + + function mapRemainingChildren(returnFiber, currentFirstChild) { + // Add the remaining children to a temporary map so that we can find them by + // keys quickly. Implicit (null) keys get added to this set with their index + var existingChildren = new Map(); + + var existingChild = currentFirstChild; + while (existingChild !== null) { + if (existingChild.key !== null) { + existingChildren.set(existingChild.key, existingChild); + } else { + existingChildren.set(existingChild.index, existingChild); + } + existingChild = existingChild.sibling; + } + return existingChildren; + } + + function useFiber(fiber, pendingProps, expirationTime) { + // We currently set sibling to null and index to 0 here because it is easy + // to forget to do before returning it. E.g. for the single child case. + var clone = createWorkInProgress(fiber, pendingProps, expirationTime); + clone.index = 0; + clone.sibling = null; + return clone; + } + + function placeChild(newFiber, lastPlacedIndex, newIndex) { + newFiber.index = newIndex; + if (!shouldTrackSideEffects) { + // Noop. + return lastPlacedIndex; + } + var current = newFiber.alternate; + if (current !== null) { + var oldIndex = current.index; + if (oldIndex < lastPlacedIndex) { + // This is a move. + newFiber.effectTag = Placement; + return lastPlacedIndex; + } else { + // This item can stay in place. + return oldIndex; + } + } else { + // This is an insertion. + newFiber.effectTag = Placement; + return lastPlacedIndex; + } + } + + function placeSingleChild(newFiber) { + // This is simpler for the single child case. We only need to do a + // placement for inserting new children. + if (shouldTrackSideEffects && newFiber.alternate === null) { + newFiber.effectTag = Placement; + } + return newFiber; + } + + function updateTextNode(returnFiber, current, textContent, expirationTime) { + if (current === null || current.tag !== HostText) { + // Insert + var created = createFiberFromText( + textContent, + returnFiber.internalContextTag, + expirationTime + ); + created["return"] = returnFiber; + return created; + } else { + // Update + var existing = useFiber(current, textContent, expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function updateElement(returnFiber, current, element, expirationTime) { + if (current !== null && current.type === element.type) { + // Move based on index + var existing = useFiber(current, element.props, expirationTime); + existing.ref = coerceRef(current, element); + existing["return"] = returnFiber; + { + existing._debugSource = element._source; + existing._debugOwner = element._owner; + } + return existing; + } else { + // Insert + var created = createFiberFromElement( + element, + returnFiber.internalContextTag, + expirationTime + ); + created.ref = coerceRef(current, element); + created["return"] = returnFiber; + return created; + } + } + + function updateCall(returnFiber, current, call, expirationTime) { + // TODO: Should this also compare handler to determine whether to reuse? + if (current === null || current.tag !== CallComponent) { + // Insert + var created = createFiberFromCall( + call, + returnFiber.internalContextTag, + expirationTime + ); + created["return"] = returnFiber; + return created; + } else { + // Move based on index + var existing = useFiber(current, call, expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function updateReturn(returnFiber, current, returnNode, expirationTime) { + if (current === null || current.tag !== ReturnComponent) { + // Insert + var created = createFiberFromReturn( + returnNode, + returnFiber.internalContextTag, + expirationTime + ); + created.type = returnNode.value; + created["return"] = returnFiber; + return created; + } else { + // Move based on index + var existing = useFiber(current, null, expirationTime); + existing.type = returnNode.value; + existing["return"] = returnFiber; + return existing; + } + } + + function updatePortal(returnFiber, current, portal, expirationTime) { + if ( + current === null || + current.tag !== HostPortal || + current.stateNode.containerInfo !== portal.containerInfo || + current.stateNode.implementation !== portal.implementation + ) { + // Insert + var created = createFiberFromPortal( + portal, + returnFiber.internalContextTag, + expirationTime + ); + created["return"] = returnFiber; + return created; + } else { + // Update + var existing = useFiber(current, portal.children || [], expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function updateFragment(returnFiber, current, fragment, expirationTime, key) { + if (current === null || current.tag !== Fragment) { + // Insert + var created = createFiberFromFragment( + fragment, + returnFiber.internalContextTag, + expirationTime, + key + ); + created["return"] = returnFiber; + return created; + } else { + // Update + var existing = useFiber(current, fragment, expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function createChild(returnFiber, newChild, expirationTime) { + if (typeof newChild === "string" || typeof newChild === "number") { + // Text nodes don't have keys. If the previous node is implicitly keyed + // we can continue to replace it without aborting even if it is not a text + // node. + var created = createFiberFromText( + "" + newChild, + returnFiber.internalContextTag, + expirationTime + ); + created["return"] = returnFiber; + return created; + } + + if (typeof newChild === "object" && newChild !== null) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: { + if (newChild.type === REACT_FRAGMENT_TYPE) { + var _created = createFiberFromFragment( + newChild.props.children, + returnFiber.internalContextTag, + expirationTime, + newChild.key + ); + _created["return"] = returnFiber; + return _created; + } else { + var _created2 = createFiberFromElement( + newChild, + returnFiber.internalContextTag, + expirationTime + ); + _created2.ref = coerceRef(null, newChild); + _created2["return"] = returnFiber; + return _created2; + } + } + + case REACT_CALL_TYPE: { + var _created3 = createFiberFromCall( + newChild, + returnFiber.internalContextTag, + expirationTime + ); + _created3["return"] = returnFiber; + return _created3; + } + + case REACT_RETURN_TYPE: { + var _created4 = createFiberFromReturn( + newChild, + returnFiber.internalContextTag, + expirationTime + ); + _created4.type = newChild.value; + _created4["return"] = returnFiber; + return _created4; + } + + case REACT_PORTAL_TYPE: { + var _created5 = createFiberFromPortal( + newChild, + returnFiber.internalContextTag, + expirationTime + ); + _created5["return"] = returnFiber; + return _created5; + } + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) { + var _created6 = createFiberFromFragment( + newChild, + returnFiber.internalContextTag, + expirationTime, + null + ); + _created6["return"] = returnFiber; + return _created6; + } + + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + + return null; + } + + function updateSlot(returnFiber, oldFiber, newChild, expirationTime) { + // Update the fiber if the keys match, otherwise return null. + + var key = oldFiber !== null ? oldFiber.key : null; + + if (typeof newChild === "string" || typeof newChild === "number") { + // Text nodes don't have keys. If the previous node is implicitly keyed + // we can continue to replace it without aborting even if it is not a text + // node. + if (key !== null) { + return null; + } + return updateTextNode( + returnFiber, + oldFiber, + "" + newChild, + expirationTime + ); + } + + if (typeof newChild === "object" && newChild !== null) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: { + if (newChild.key === key) { + if (newChild.type === REACT_FRAGMENT_TYPE) { + return updateFragment( + returnFiber, + oldFiber, + newChild.props.children, + expirationTime, + key + ); + } + return updateElement( + returnFiber, + oldFiber, + newChild, + expirationTime + ); + } else { + return null; + } + } + + case REACT_CALL_TYPE: { + if (newChild.key === key) { + return updateCall(returnFiber, oldFiber, newChild, expirationTime); + } else { + return null; + } + } + + case REACT_RETURN_TYPE: { + // Returns don't have keys. If the previous node is implicitly keyed + // we can continue to replace it without aborting even if it is not a + // yield. + if (key === null) { + return updateReturn( + returnFiber, + oldFiber, + newChild, + expirationTime + ); + } else { + return null; + } + } + + case REACT_PORTAL_TYPE: { + if (newChild.key === key) { + return updatePortal( + returnFiber, + oldFiber, + newChild, + expirationTime + ); + } else { + return null; + } + } + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) { + if (key !== null) { + return null; + } + + return updateFragment( + returnFiber, + oldFiber, + newChild, + expirationTime, + null + ); + } + + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + + return null; + } + + function updateFromMap( + existingChildren, + returnFiber, + newIdx, + newChild, + expirationTime + ) { + if (typeof newChild === "string" || typeof newChild === "number") { + // Text nodes don't have keys, so we neither have to check the old nor + // new node for the key. If both are text nodes, they match. + var matchedFiber = existingChildren.get(newIdx) || null; + return updateTextNode( + returnFiber, + matchedFiber, + "" + newChild, + expirationTime + ); + } + + if (typeof newChild === "object" && newChild !== null) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: { + var _matchedFiber = + existingChildren.get( + newChild.key === null ? newIdx : newChild.key + ) || null; + if (newChild.type === REACT_FRAGMENT_TYPE) { + return updateFragment( + returnFiber, + _matchedFiber, + newChild.props.children, + expirationTime, + newChild.key + ); + } + return updateElement( + returnFiber, + _matchedFiber, + newChild, + expirationTime + ); + } + + case REACT_CALL_TYPE: { + var _matchedFiber2 = + existingChildren.get( + newChild.key === null ? newIdx : newChild.key + ) || null; + return updateCall( + returnFiber, + _matchedFiber2, + newChild, + expirationTime + ); + } + + case REACT_RETURN_TYPE: { + // Returns don't have keys, so we neither have to check the old nor + // new node for the key. If both are returns, they match. + var _matchedFiber3 = existingChildren.get(newIdx) || null; + return updateReturn( + returnFiber, + _matchedFiber3, + newChild, + expirationTime + ); + } + + case REACT_PORTAL_TYPE: { + var _matchedFiber4 = + existingChildren.get( + newChild.key === null ? newIdx : newChild.key + ) || null; + return updatePortal( + returnFiber, + _matchedFiber4, + newChild, + expirationTime + ); + } + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) { + var _matchedFiber5 = existingChildren.get(newIdx) || null; + return updateFragment( + returnFiber, + _matchedFiber5, + newChild, + expirationTime, + null + ); + } + + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + + return null; + } + + /** + * Warns if there is a duplicate or missing key + */ + function warnOnInvalidKey(child, knownKeys) { + { + if (typeof child !== "object" || child === null) { + return knownKeys; + } + switch (child.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_CALL_TYPE: + case REACT_PORTAL_TYPE: + warnForMissingKey(child); + var key = child.key; + if (typeof key !== "string") { + break; + } + if (knownKeys === null) { + knownKeys = new Set(); + knownKeys.add(key); + break; + } + if (!knownKeys.has(key)) { + knownKeys.add(key); + break; + } + warning( + false, + "Encountered two children with the same key, `%s`. " + + "Keys should be unique so that components maintain their identity " + + "across updates. Non-unique keys may cause children to be " + + "duplicated and/or omitted — the behavior is unsupported and " + + "could change in a future version.%s", + key, + getCurrentFiberStackAddendum$1() + ); + break; + default: + break; + } + } + return knownKeys; + } + + function reconcileChildrenArray( + returnFiber, + currentFirstChild, + newChildren, + expirationTime + ) { + // This algorithm can't optimize by searching from boths ends since we + // don't have backpointers on fibers. I'm trying to see how far we can get + // with that model. If it ends up not being worth the tradeoffs, we can + // add it later. + + // Even with a two ended optimization, we'd want to optimize for the case + // where there are few changes and brute force the comparison instead of + // going for the Map. It'd like to explore hitting that path first in + // forward-only mode and only go for the Map once we notice that we need + // lots of look ahead. This doesn't handle reversal as well as two ended + // search but that's unusual. Besides, for the two ended optimization to + // work on Iterables, we'd need to copy the whole set. + + // In this first iteration, we'll just live with hitting the bad case + // (adding everything to a Map) in for every insert/move. + + // If you change this code, also update reconcileChildrenIterator() which + // uses the same algorithm. + + { + // First, validate keys. + var knownKeys = null; + for (var i = 0; i < newChildren.length; i++) { + var child = newChildren[i]; + knownKeys = warnOnInvalidKey(child, knownKeys); + } + } + + var resultingFirstChild = null; + var previousNewFiber = null; + + var oldFiber = currentFirstChild; + var lastPlacedIndex = 0; + var newIdx = 0; + var nextOldFiber = null; + for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) { + if (oldFiber.index > newIdx) { + nextOldFiber = oldFiber; + oldFiber = null; + } else { + nextOldFiber = oldFiber.sibling; + } + var newFiber = updateSlot( + returnFiber, + oldFiber, + newChildren[newIdx], + expirationTime + ); + if (newFiber === null) { + // TODO: This breaks on empty slots like null children. That's + // unfortunate because it triggers the slow path all the time. We need + // a better way to communicate whether this was a miss or null, + // boolean, undefined, etc. + if (oldFiber === null) { + oldFiber = nextOldFiber; + } + break; + } + if (shouldTrackSideEffects) { + if (oldFiber && newFiber.alternate === null) { + // We matched the slot, but we didn't reuse the existing fiber, so we + // need to delete the existing child. + deleteChild(returnFiber, oldFiber); + } + } + lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx); + if (previousNewFiber === null) { + // TODO: Move out of the loop. This only happens for the first run. + resultingFirstChild = newFiber; + } else { + // TODO: Defer siblings if we're not at the right index for this slot. + // I.e. if we had null values before, then we want to defer this + // for each null value. However, we also don't want to call updateSlot + // with the previous one. + previousNewFiber.sibling = newFiber; + } + previousNewFiber = newFiber; + oldFiber = nextOldFiber; + } + + if (newIdx === newChildren.length) { + // We've reached the end of the new children. We can delete the rest. + deleteRemainingChildren(returnFiber, oldFiber); + return resultingFirstChild; + } + + if (oldFiber === null) { + // If we don't have any more existing children we can choose a fast path + // since the rest will all be insertions. + for (; newIdx < newChildren.length; newIdx++) { + var _newFiber = createChild( + returnFiber, + newChildren[newIdx], + expirationTime + ); + if (!_newFiber) { + continue; + } + lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx); + if (previousNewFiber === null) { + // TODO: Move out of the loop. This only happens for the first run. + resultingFirstChild = _newFiber; + } else { + previousNewFiber.sibling = _newFiber; + } + previousNewFiber = _newFiber; + } + return resultingFirstChild; + } + + // Add all children to a key map for quick lookups. + var existingChildren = mapRemainingChildren(returnFiber, oldFiber); + + // Keep scanning and use the map to restore deleted items as moves. + for (; newIdx < newChildren.length; newIdx++) { + var _newFiber2 = updateFromMap( + existingChildren, + returnFiber, + newIdx, + newChildren[newIdx], + expirationTime + ); + if (_newFiber2) { + if (shouldTrackSideEffects) { + if (_newFiber2.alternate !== null) { + // The new fiber is a work in progress, but if there exists a + // current, that means that we reused the fiber. We need to delete + // it from the child list so that we don't add it to the deletion + // list. + existingChildren["delete"]( + _newFiber2.key === null ? newIdx : _newFiber2.key + ); + } + } + lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx); + if (previousNewFiber === null) { + resultingFirstChild = _newFiber2; + } else { + previousNewFiber.sibling = _newFiber2; + } + previousNewFiber = _newFiber2; + } + } + + if (shouldTrackSideEffects) { + // Any existing children that weren't consumed above were deleted. We need + // to add them to the deletion list. + existingChildren.forEach(function(child) { + return deleteChild(returnFiber, child); + }); + } + + return resultingFirstChild; + } + + function reconcileChildrenIterator( + returnFiber, + currentFirstChild, + newChildrenIterable, + expirationTime + ) { + // This is the same implementation as reconcileChildrenArray(), + // but using the iterator instead. + + var iteratorFn = getIteratorFn(newChildrenIterable); + invariant( + typeof iteratorFn === "function", + "An object is not an iterable. This error is likely caused by a bug in " + + "React. Please file an issue." + ); + + { + // Warn about using Maps as children + if (typeof newChildrenIterable.entries === "function") { + var possibleMap = newChildrenIterable; + if (possibleMap.entries === iteratorFn) { + warning( + didWarnAboutMaps, + "Using Maps as children is unsupported and will likely yield " + + "unexpected results. Convert it to a sequence/iterable of keyed " + + "ReactElements instead.%s", + getCurrentFiberStackAddendum$1() + ); + didWarnAboutMaps = true; + } + } + + // First, validate keys. + // We'll get a different iterator later for the main pass. + var _newChildren = iteratorFn.call(newChildrenIterable); + if (_newChildren) { + var knownKeys = null; + var _step = _newChildren.next(); + for (; !_step.done; _step = _newChildren.next()) { + var child = _step.value; + knownKeys = warnOnInvalidKey(child, knownKeys); + } + } + } + + var newChildren = iteratorFn.call(newChildrenIterable); + invariant(newChildren != null, "An iterable object provided no iterator."); + + var resultingFirstChild = null; + var previousNewFiber = null; + + var oldFiber = currentFirstChild; + var lastPlacedIndex = 0; + var newIdx = 0; + var nextOldFiber = null; + + var step = newChildren.next(); + for ( + ; + oldFiber !== null && !step.done; + newIdx++, step = newChildren.next() + ) { + if (oldFiber.index > newIdx) { + nextOldFiber = oldFiber; + oldFiber = null; + } else { + nextOldFiber = oldFiber.sibling; + } + var newFiber = updateSlot( + returnFiber, + oldFiber, + step.value, + expirationTime + ); + if (newFiber === null) { + // TODO: This breaks on empty slots like null children. That's + // unfortunate because it triggers the slow path all the time. We need + // a better way to communicate whether this was a miss or null, + // boolean, undefined, etc. + if (!oldFiber) { + oldFiber = nextOldFiber; + } + break; + } + if (shouldTrackSideEffects) { + if (oldFiber && newFiber.alternate === null) { + // We matched the slot, but we didn't reuse the existing fiber, so we + // need to delete the existing child. + deleteChild(returnFiber, oldFiber); + } + } + lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx); + if (previousNewFiber === null) { + // TODO: Move out of the loop. This only happens for the first run. + resultingFirstChild = newFiber; + } else { + // TODO: Defer siblings if we're not at the right index for this slot. + // I.e. if we had null values before, then we want to defer this + // for each null value. However, we also don't want to call updateSlot + // with the previous one. + previousNewFiber.sibling = newFiber; + } + previousNewFiber = newFiber; + oldFiber = nextOldFiber; + } + + if (step.done) { + // We've reached the end of the new children. We can delete the rest. + deleteRemainingChildren(returnFiber, oldFiber); + return resultingFirstChild; + } + + if (oldFiber === null) { + // If we don't have any more existing children we can choose a fast path + // since the rest will all be insertions. + for (; !step.done; newIdx++, step = newChildren.next()) { + var _newFiber3 = createChild(returnFiber, step.value, expirationTime); + if (_newFiber3 === null) { + continue; + } + lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx); + if (previousNewFiber === null) { + // TODO: Move out of the loop. This only happens for the first run. + resultingFirstChild = _newFiber3; + } else { + previousNewFiber.sibling = _newFiber3; + } + previousNewFiber = _newFiber3; + } + return resultingFirstChild; + } + + // Add all children to a key map for quick lookups. + var existingChildren = mapRemainingChildren(returnFiber, oldFiber); + + // Keep scanning and use the map to restore deleted items as moves. + for (; !step.done; newIdx++, step = newChildren.next()) { + var _newFiber4 = updateFromMap( + existingChildren, + returnFiber, + newIdx, + step.value, + expirationTime + ); + if (_newFiber4 !== null) { + if (shouldTrackSideEffects) { + if (_newFiber4.alternate !== null) { + // The new fiber is a work in progress, but if there exists a + // current, that means that we reused the fiber. We need to delete + // it from the child list so that we don't add it to the deletion + // list. + existingChildren["delete"]( + _newFiber4.key === null ? newIdx : _newFiber4.key + ); + } + } + lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx); + if (previousNewFiber === null) { + resultingFirstChild = _newFiber4; + } else { + previousNewFiber.sibling = _newFiber4; + } + previousNewFiber = _newFiber4; + } + } + + if (shouldTrackSideEffects) { + // Any existing children that weren't consumed above were deleted. We need + // to add them to the deletion list. + existingChildren.forEach(function(child) { + return deleteChild(returnFiber, child); + }); + } + + return resultingFirstChild; + } + + function reconcileSingleTextNode( + returnFiber, + currentFirstChild, + textContent, + expirationTime + ) { + // There's no need to check for keys on text nodes since we don't have a + // way to define them. + if (currentFirstChild !== null && currentFirstChild.tag === HostText) { + // We already have an existing node so let's just update it and delete + // the rest. + deleteRemainingChildren(returnFiber, currentFirstChild.sibling); + var existing = useFiber(currentFirstChild, textContent, expirationTime); + existing["return"] = returnFiber; + return existing; + } + // The existing first child is not a text node so we need to create one + // and delete the existing ones. + deleteRemainingChildren(returnFiber, currentFirstChild); + var created = createFiberFromText( + textContent, + returnFiber.internalContextTag, + expirationTime + ); + created["return"] = returnFiber; + return created; + } + + function reconcileSingleElement( + returnFiber, + currentFirstChild, + element, + expirationTime + ) { + var key = element.key; + var child = currentFirstChild; + while (child !== null) { + // TODO: If key === null and child.key === null, then this only applies to + // the first item in the list. + if (child.key === key) { + if ( + child.tag === Fragment + ? element.type === REACT_FRAGMENT_TYPE + : child.type === element.type + ) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber( + child, + element.type === REACT_FRAGMENT_TYPE + ? element.props.children + : element.props, + expirationTime + ); + existing.ref = coerceRef(child, element); + existing["return"] = returnFiber; + { + existing._debugSource = element._source; + existing._debugOwner = element._owner; + } + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + break; + } + } else { + deleteChild(returnFiber, child); + } + child = child.sibling; + } + + if (element.type === REACT_FRAGMENT_TYPE) { + var created = createFiberFromFragment( + element.props.children, + returnFiber.internalContextTag, + expirationTime, + element.key + ); + created["return"] = returnFiber; + return created; + } else { + var _created7 = createFiberFromElement( + element, + returnFiber.internalContextTag, + expirationTime + ); + _created7.ref = coerceRef(currentFirstChild, element); + _created7["return"] = returnFiber; + return _created7; + } + } + + function reconcileSingleCall( + returnFiber, + currentFirstChild, + call, + expirationTime + ) { + var key = call.key; + var child = currentFirstChild; + while (child !== null) { + // TODO: If key === null and child.key === null, then this only applies to + // the first item in the list. + if (child.key === key) { + if (child.tag === CallComponent) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber(child, call, expirationTime); + existing["return"] = returnFiber; + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + break; + } + } else { + deleteChild(returnFiber, child); + } + child = child.sibling; + } + + var created = createFiberFromCall( + call, + returnFiber.internalContextTag, + expirationTime + ); + created["return"] = returnFiber; + return created; + } + + function reconcileSingleReturn( + returnFiber, + currentFirstChild, + returnNode, + expirationTime + ) { + // There's no need to check for keys on yields since they're stateless. + var child = currentFirstChild; + if (child !== null) { + if (child.tag === ReturnComponent) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber(child, null, expirationTime); + existing.type = returnNode.value; + existing["return"] = returnFiber; + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + } + } + + var created = createFiberFromReturn( + returnNode, + returnFiber.internalContextTag, + expirationTime + ); + created.type = returnNode.value; + created["return"] = returnFiber; + return created; + } + + function reconcileSinglePortal( + returnFiber, + currentFirstChild, + portal, + expirationTime + ) { + var key = portal.key; + var child = currentFirstChild; + while (child !== null) { + // TODO: If key === null and child.key === null, then this only applies to + // the first item in the list. + if (child.key === key) { + if ( + child.tag === HostPortal && + child.stateNode.containerInfo === portal.containerInfo && + child.stateNode.implementation === portal.implementation + ) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber(child, portal.children || [], expirationTime); + existing["return"] = returnFiber; + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + break; + } + } else { + deleteChild(returnFiber, child); + } + child = child.sibling; + } + + var created = createFiberFromPortal( + portal, + returnFiber.internalContextTag, + expirationTime + ); + created["return"] = returnFiber; + return created; + } + + // This API will tag the children with the side-effect of the reconciliation + // itself. They will be added to the side-effect list as we pass through the + // children and the parent. + function reconcileChildFibers( + returnFiber, + currentFirstChild, + newChild, + expirationTime + ) { + // This function is not recursive. + // If the top level item is an array, we treat it as a set of children, + // not as a fragment. Nested arrays on the other hand will be treated as + // fragment nodes. Recursion happens at the normal flow. + + // Handle top level unkeyed fragments as if they were arrays. + // This leads to an ambiguity between <>{[...]} and <>.... + // We treat the ambiguous cases above the same. + if ( + typeof newChild === "object" && + newChild !== null && + newChild.type === REACT_FRAGMENT_TYPE && + newChild.key === null + ) { + newChild = newChild.props.children; + } + + // Handle object types + var isObject = typeof newChild === "object" && newChild !== null; + + if (isObject) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + return placeSingleChild( + reconcileSingleElement( + returnFiber, + currentFirstChild, + newChild, + expirationTime + ) + ); + + case REACT_CALL_TYPE: + return placeSingleChild( + reconcileSingleCall( + returnFiber, + currentFirstChild, + newChild, + expirationTime + ) + ); + case REACT_RETURN_TYPE: + return placeSingleChild( + reconcileSingleReturn( + returnFiber, + currentFirstChild, + newChild, + expirationTime + ) + ); + case REACT_PORTAL_TYPE: + return placeSingleChild( + reconcileSinglePortal( + returnFiber, + currentFirstChild, + newChild, + expirationTime + ) + ); + } + } + + if (typeof newChild === "string" || typeof newChild === "number") { + return placeSingleChild( + reconcileSingleTextNode( + returnFiber, + currentFirstChild, + "" + newChild, + expirationTime + ) + ); + } + + if (isArray$1(newChild)) { + return reconcileChildrenArray( + returnFiber, + currentFirstChild, + newChild, + expirationTime + ); + } + + if (getIteratorFn(newChild)) { + return reconcileChildrenIterator( + returnFiber, + currentFirstChild, + newChild, + expirationTime + ); + } + + if (isObject) { + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + if (typeof newChild === "undefined") { + // If the new child is undefined, and the return fiber is a composite + // component, throw an error. If Fiber return types are disabled, + // we already threw above. + switch (returnFiber.tag) { + case ClassComponent: { + { + var instance = returnFiber.stateNode; + if (instance.render._isMockFunction) { + // We allow auto-mocks to proceed as if they're returning null. + break; + } + } + } + // Intentionally fall through to the next case, which handles both + // functions and classes + // eslint-disable-next-lined no-fallthrough + case FunctionalComponent: { + var Component = returnFiber.type; + invariant( + false, + "%s(...): Nothing was returned from render. This usually means a " + + "return statement is missing. Or, to render nothing, " + + "return null.", + Component.displayName || Component.name || "Component" + ); + } + } + } + + // Remaining cases are all treated as empty. + return deleteRemainingChildren(returnFiber, currentFirstChild); + } + + return reconcileChildFibers; +} + +var reconcileChildFibers = ChildReconciler(true); +var mountChildFibers = ChildReconciler(false); + +function cloneChildFibers(current, workInProgress) { + invariant( + current === null || workInProgress.child === current.child, + "Resuming work not yet implemented." + ); + + if (workInProgress.child === null) { + return; + } + + var currentChild = workInProgress.child; + var newChild = createWorkInProgress( + currentChild, + currentChild.pendingProps, + currentChild.expirationTime + ); + workInProgress.child = newChild; + + newChild["return"] = workInProgress; + while (currentChild.sibling !== null) { + currentChild = currentChild.sibling; + newChild = newChild.sibling = createWorkInProgress( + currentChild, + currentChild.pendingProps, + currentChild.expirationTime + ); + newChild["return"] = workInProgress; + } + newChild.sibling = null; +} + +{ + var warnedAboutStatelessRefs = {}; +} + +var ReactFiberBeginWork = function( + config, + hostContext, + hydrationContext, + scheduleWork, + computeExpirationForFiber +) { + var shouldSetTextContent = config.shouldSetTextContent, + useSyncScheduling = config.useSyncScheduling, + shouldDeprioritizeSubtree = config.shouldDeprioritizeSubtree; + var pushHostContext = hostContext.pushHostContext, + pushHostContainer = hostContext.pushHostContainer; + var enterHydrationState = hydrationContext.enterHydrationState, + resetHydrationState = hydrationContext.resetHydrationState, + tryToClaimNextHydratableInstance = + hydrationContext.tryToClaimNextHydratableInstance; + + var _ReactFiberClassCompo = ReactFiberClassComponent( + scheduleWork, + computeExpirationForFiber, + memoizeProps, + memoizeState + ), + adoptClassInstance = _ReactFiberClassCompo.adoptClassInstance, + constructClassInstance = _ReactFiberClassCompo.constructClassInstance, + mountClassInstance = _ReactFiberClassCompo.mountClassInstance, + updateClassInstance = _ReactFiberClassCompo.updateClassInstance; + + // TODO: Remove this and use reconcileChildrenAtExpirationTime directly. + + function reconcileChildren(current, workInProgress, nextChildren) { + reconcileChildrenAtExpirationTime( + current, + workInProgress, + nextChildren, + workInProgress.expirationTime + ); + } + + function reconcileChildrenAtExpirationTime( + current, + workInProgress, + nextChildren, + renderExpirationTime + ) { + if (current === null) { + // If this is a fresh new component that hasn't been rendered yet, we + // won't update its child set by applying minimal side-effects. Instead, + // we will add them all to the child before it gets rendered. That means + // we can optimize this reconciliation pass by not tracking side-effects. + workInProgress.child = mountChildFibers( + workInProgress, + null, + nextChildren, + renderExpirationTime + ); + } else { + // If the current child is the same as the work in progress, it means that + // we haven't yet started any work on these children. Therefore, we use + // the clone algorithm to create a copy of all the current children. + + // If we had any progressed work already, that is invalid at this point so + // let's throw it out. + workInProgress.child = reconcileChildFibers( + workInProgress, + current.child, + nextChildren, + renderExpirationTime + ); + } + } + + function updateFragment(current, workInProgress) { + var nextChildren = workInProgress.pendingProps; + if (hasContextChanged()) { + // Normally we can bail out on props equality but if context has changed + // we don't do the bailout and we have to reuse existing props instead. + } else if ( + nextChildren === null || + workInProgress.memoizedProps === nextChildren + ) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextChildren); + return workInProgress.child; + } + + function markRef(current, workInProgress) { + var ref = workInProgress.ref; + if (ref !== null && (!current || current.ref !== ref)) { + // Schedule a Ref effect + workInProgress.effectTag |= Ref; + } + } + + function updateFunctionalComponent(current, workInProgress) { + var fn = workInProgress.type; + var nextProps = workInProgress.pendingProps; + + if (hasContextChanged()) { + // Normally we can bail out on props equality but if context has changed + // we don't do the bailout and we have to reuse existing props instead. + } else { + if (workInProgress.memoizedProps === nextProps) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + // TODO: consider bringing fn.shouldComponentUpdate() back. + // It used to be here. + } + + var unmaskedContext = getUnmaskedContext(workInProgress); + var context = getMaskedContext(workInProgress, unmaskedContext); + + var nextChildren; + + { + ReactCurrentOwner.current = workInProgress; + ReactDebugCurrentFiber.setCurrentPhase("render"); + nextChildren = fn(nextProps, context); + ReactDebugCurrentFiber.setCurrentPhase(null); + } + // React DevTools reads this flag. + workInProgress.effectTag |= PerformedWork; + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextProps); + return workInProgress.child; + } + + function updateClassComponent(current, workInProgress, renderExpirationTime) { + // Push context providers early to prevent context stack mismatches. + // During mounting we don't know the child context yet as the instance doesn't exist. + // We will invalidate the child context in finishClassComponent() right after rendering. + var hasContext = pushContextProvider(workInProgress); + + var shouldUpdate = void 0; + if (current === null) { + if (!workInProgress.stateNode) { + // In the initial pass we might need to construct the instance. + constructClassInstance(workInProgress, workInProgress.pendingProps); + mountClassInstance(workInProgress, renderExpirationTime); + shouldUpdate = true; + } else { + invariant(false, "Resuming work not yet implemented."); + // In a resume, we'll already have an instance we can reuse. + // shouldUpdate = resumeMountClassInstance(workInProgress, renderExpirationTime); + } + } else { + shouldUpdate = updateClassInstance( + current, + workInProgress, + renderExpirationTime + ); + } + return finishClassComponent( + current, + workInProgress, + shouldUpdate, + hasContext + ); + } + + function finishClassComponent( + current, + workInProgress, + shouldUpdate, + hasContext + ) { + // Refs should update even if shouldComponentUpdate returns false + markRef(current, workInProgress); + + if (!shouldUpdate) { + // Context providers should defer to sCU for rendering + if (hasContext) { + invalidateContextProvider(workInProgress, false); + } + + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + var instance = workInProgress.stateNode; + + // Rerender + ReactCurrentOwner.current = workInProgress; + var nextChildren = void 0; + { + ReactDebugCurrentFiber.setCurrentPhase("render"); + nextChildren = instance.render(); + if (debugRenderPhaseSideEffects) { + instance.render(); + } + ReactDebugCurrentFiber.setCurrentPhase(null); + } + // React DevTools reads this flag. + workInProgress.effectTag |= PerformedWork; + reconcileChildren(current, workInProgress, nextChildren); + // Memoize props and state using the values we just used to render. + // TODO: Restructure so we never read values from the instance. + memoizeState(workInProgress, instance.state); + memoizeProps(workInProgress, instance.props); + + // The context might have changed so we need to recalculate it. + if (hasContext) { + invalidateContextProvider(workInProgress, true); + } + + return workInProgress.child; + } + + function pushHostRootContext(workInProgress) { + var root = workInProgress.stateNode; + if (root.pendingContext) { + pushTopLevelContextObject( + workInProgress, + root.pendingContext, + root.pendingContext !== root.context + ); + } else if (root.context) { + // Should always be set + pushTopLevelContextObject(workInProgress, root.context, false); + } + pushHostContainer(workInProgress, root.containerInfo); + } + + function updateHostRoot(current, workInProgress, renderExpirationTime) { + pushHostRootContext(workInProgress); + var updateQueue = workInProgress.updateQueue; + if (updateQueue !== null) { + var prevState = workInProgress.memoizedState; + var state = processUpdateQueue( + current, + workInProgress, + updateQueue, + null, + null, + renderExpirationTime + ); + if (prevState === state) { + // If the state is the same as before, that's a bailout because we had + // no work that expires at this time. + resetHydrationState(); + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + var element = state.element; + var root = workInProgress.stateNode; + if ( + (current === null || current.child === null) && + root.hydrate && + enterHydrationState(workInProgress) + ) { + // If we don't have any current children this might be the first pass. + // We always try to hydrate. If this isn't a hydration pass there won't + // be any children to hydrate which is effectively the same thing as + // not hydrating. + + // This is a bit of a hack. We track the host root as a placement to + // know that we're currently in a mounting state. That way isMounted + // works as expected. We must reset this before committing. + // TODO: Delete this when we delete isMounted and findDOMNode. + workInProgress.effectTag |= Placement; + + // Ensure that children mount into this root without tracking + // side-effects. This ensures that we don't store Placement effects on + // nodes that will be hydrated. + workInProgress.child = mountChildFibers( + workInProgress, + null, + element, + renderExpirationTime + ); + } else { + // Otherwise reset hydration state in case we aborted and resumed another + // root. + resetHydrationState(); + reconcileChildren(current, workInProgress, element); + } + memoizeState(workInProgress, state); + return workInProgress.child; + } + resetHydrationState(); + // If there is no update queue, that's a bailout because the root has no props. + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + function updateHostComponent(current, workInProgress, renderExpirationTime) { + pushHostContext(workInProgress); + + if (current === null) { + tryToClaimNextHydratableInstance(workInProgress); + } + + var type = workInProgress.type; + var memoizedProps = workInProgress.memoizedProps; + var nextProps = workInProgress.pendingProps; + var prevProps = current !== null ? current.memoizedProps : null; + + if (hasContextChanged()) { + // Normally we can bail out on props equality but if context has changed + // we don't do the bailout and we have to reuse existing props instead. + } else if (memoizedProps === nextProps) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + var nextChildren = nextProps.children; + var isDirectTextChild = shouldSetTextContent(type, nextProps); + + if (isDirectTextChild) { + // We special case a direct text child of a host node. This is a common + // case. We won't handle it as a reified child. We will instead handle + // this in the host environment that also have access to this prop. That + // avoids allocating another HostText fiber and traversing it. + nextChildren = null; + } else if (prevProps && shouldSetTextContent(type, prevProps)) { + // If we're switching from a direct text child to a normal child, or to + // empty, we need to schedule the text content to be reset. + workInProgress.effectTag |= ContentReset; + } + + markRef(current, workInProgress); + + // Check the host config to see if the children are offscreen/hidden. + if ( + renderExpirationTime !== Never && + !useSyncScheduling && + shouldDeprioritizeSubtree(type, nextProps) + ) { + // Down-prioritize the children. + workInProgress.expirationTime = Never; + // Bailout and come back to this fiber later. + return null; + } + + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextProps); + return workInProgress.child; + } + + function updateHostText(current, workInProgress) { + if (current === null) { + tryToClaimNextHydratableInstance(workInProgress); + } + var nextProps = workInProgress.pendingProps; + memoizeProps(workInProgress, nextProps); + // Nothing to do here. This is terminal. We'll do the completion step + // immediately after. + return null; + } + + function mountIndeterminateComponent( + current, + workInProgress, + renderExpirationTime + ) { + invariant( + current === null, + "An indeterminate component should never have mounted. This error is " + + "likely caused by a bug in React. Please file an issue." + ); + var fn = workInProgress.type; + var props = workInProgress.pendingProps; + var unmaskedContext = getUnmaskedContext(workInProgress); + var context = getMaskedContext(workInProgress, unmaskedContext); + + var value; + + { + if (fn.prototype && typeof fn.prototype.render === "function") { + var componentName = getComponentName(workInProgress); + warning( + false, + "The <%s /> component appears to have a render method, but doesn't extend React.Component. " + + "This is likely to cause errors. Change %s to extend React.Component instead.", + componentName, + componentName + ); + } + ReactCurrentOwner.current = workInProgress; + value = fn(props, context); + } + // React DevTools reads this flag. + workInProgress.effectTag |= PerformedWork; + + if ( + typeof value === "object" && + value !== null && + typeof value.render === "function" + ) { + // Proceed under the assumption that this is a class instance + workInProgress.tag = ClassComponent; + + // Push context providers early to prevent context stack mismatches. + // During mounting we don't know the child context yet as the instance doesn't exist. + // We will invalidate the child context in finishClassComponent() right after rendering. + var hasContext = pushContextProvider(workInProgress); + adoptClassInstance(workInProgress, value); + mountClassInstance(workInProgress, renderExpirationTime); + return finishClassComponent(current, workInProgress, true, hasContext); + } else { + // Proceed under the assumption that this is a functional component + workInProgress.tag = FunctionalComponent; + { + var Component = workInProgress.type; + + if (Component) { + warning( + !Component.childContextTypes, + "%s(...): childContextTypes cannot be defined on a functional component.", + Component.displayName || Component.name || "Component" + ); + } + if (workInProgress.ref !== null) { + var info = ""; + var ownerName = ReactDebugCurrentFiber.getCurrentFiberOwnerName(); + if (ownerName) { + info += "\n\nCheck the render method of `" + ownerName + "`."; + } + + var warningKey = ownerName || workInProgress._debugID || ""; + var debugSource = workInProgress._debugSource; + if (debugSource) { + warningKey = debugSource.fileName + ":" + debugSource.lineNumber; + } + if (!warnedAboutStatelessRefs[warningKey]) { + warnedAboutStatelessRefs[warningKey] = true; + warning( + false, + "Stateless function components cannot be given refs. " + + "Attempts to access this ref will fail.%s%s", + info, + ReactDebugCurrentFiber.getCurrentFiberStackAddendum() + ); + } + } + } + reconcileChildren(current, workInProgress, value); + memoizeProps(workInProgress, props); + return workInProgress.child; + } + } + + function updateCallComponent(current, workInProgress, renderExpirationTime) { + var nextCall = workInProgress.pendingProps; + if (hasContextChanged()) { + // Normally we can bail out on props equality but if context has changed + // we don't do the bailout and we have to reuse existing props instead. + } else if (workInProgress.memoizedProps === nextCall) { + nextCall = workInProgress.memoizedProps; + // TODO: When bailing out, we might need to return the stateNode instead + // of the child. To check it for work. + // return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + var nextChildren = nextCall.children; + + // The following is a fork of reconcileChildrenAtExpirationTime but using + // stateNode to store the child. + if (current === null) { + workInProgress.stateNode = mountChildFibers( + workInProgress, + workInProgress.stateNode, + nextChildren, + renderExpirationTime + ); + } else { + workInProgress.stateNode = reconcileChildFibers( + workInProgress, + workInProgress.stateNode, + nextChildren, + renderExpirationTime + ); + } + + memoizeProps(workInProgress, nextCall); + // This doesn't take arbitrary time so we could synchronously just begin + // eagerly do the work of workInProgress.child as an optimization. + return workInProgress.stateNode; + } + + function updatePortalComponent( + current, + workInProgress, + renderExpirationTime + ) { + pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo); + var nextChildren = workInProgress.pendingProps; + if (hasContextChanged()) { + // Normally we can bail out on props equality but if context has changed + // we don't do the bailout and we have to reuse existing props instead. + } else if (workInProgress.memoizedProps === nextChildren) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + if (current === null) { + // Portals are special because we don't append the children during mount + // but at commit. Therefore we need to track insertions which the normal + // flow doesn't do during mount. This doesn't happen at the root because + // the root always starts with a "current" with a null child. + // TODO: Consider unifying this with how the root works. + workInProgress.child = reconcileChildFibers( + workInProgress, + null, + nextChildren, + renderExpirationTime + ); + memoizeProps(workInProgress, nextChildren); + } else { + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextChildren); + } + return workInProgress.child; + } + + /* + function reuseChildrenEffects(returnFiber : Fiber, firstChild : Fiber) { + let child = firstChild; + do { + // Ensure that the first and last effect of the parent corresponds + // to the children's first and last effect. + if (!returnFiber.firstEffect) { + returnFiber.firstEffect = child.firstEffect; + } + if (child.lastEffect) { + if (returnFiber.lastEffect) { + returnFiber.lastEffect.nextEffect = child.firstEffect; + } + returnFiber.lastEffect = child.lastEffect; + } + } while (child = child.sibling); + } + */ + + function bailoutOnAlreadyFinishedWork(current, workInProgress) { + cancelWorkTimer(workInProgress); + + // TODO: We should ideally be able to bail out early if the children have no + // more work to do. However, since we don't have a separation of this + // Fiber's priority and its children yet - we don't know without doing lots + // of the same work we do anyway. Once we have that separation we can just + // bail out here if the children has no more work at this priority level. + // if (workInProgress.priorityOfChildren <= priorityLevel) { + // // If there are side-effects in these children that have not yet been + // // committed we need to ensure that they get properly transferred up. + // if (current && current.child !== workInProgress.child) { + // reuseChildrenEffects(workInProgress, child); + // } + // return null; + // } + + cloneChildFibers(current, workInProgress); + return workInProgress.child; + } + + function bailoutOnLowPriority(current, workInProgress) { + cancelWorkTimer(workInProgress); + + // TODO: Handle HostComponent tags here as well and call pushHostContext()? + // See PR 8590 discussion for context + switch (workInProgress.tag) { + case HostRoot: + pushHostRootContext(workInProgress); + break; + case ClassComponent: + pushContextProvider(workInProgress); + break; + case HostPortal: + pushHostContainer( + workInProgress, + workInProgress.stateNode.containerInfo + ); + break; + } + // TODO: What if this is currently in progress? + // How can that happen? How is this not being cloned? + return null; + } + + // TODO: Delete memoizeProps/State and move to reconcile/bailout instead + function memoizeProps(workInProgress, nextProps) { + workInProgress.memoizedProps = nextProps; + } + + function memoizeState(workInProgress, nextState) { + workInProgress.memoizedState = nextState; + // Don't reset the updateQueue, in case there are pending updates. Resetting + // is handled by processUpdateQueue. + } + + function beginWork(current, workInProgress, renderExpirationTime) { + if ( + workInProgress.expirationTime === NoWork || + workInProgress.expirationTime > renderExpirationTime + ) { + return bailoutOnLowPriority(current, workInProgress); + } + + switch (workInProgress.tag) { + case IndeterminateComponent: + return mountIndeterminateComponent( + current, + workInProgress, + renderExpirationTime + ); + case FunctionalComponent: + return updateFunctionalComponent(current, workInProgress); + case ClassComponent: + return updateClassComponent( + current, + workInProgress, + renderExpirationTime + ); + case HostRoot: + return updateHostRoot(current, workInProgress, renderExpirationTime); + case HostComponent: + return updateHostComponent( + current, + workInProgress, + renderExpirationTime + ); + case HostText: + return updateHostText(current, workInProgress); + case CallHandlerPhase: + // This is a restart. Reset the tag to the initial phase. + workInProgress.tag = CallComponent; + // Intentionally fall through since this is now the same. + case CallComponent: + return updateCallComponent( + current, + workInProgress, + renderExpirationTime + ); + case ReturnComponent: + // A return component is just a placeholder, we can just run through the + // next one immediately. + return null; + case HostPortal: + return updatePortalComponent( + current, + workInProgress, + renderExpirationTime + ); + case Fragment: + return updateFragment(current, workInProgress); + default: + invariant( + false, + "Unknown unit of work tag. This error is likely caused by a bug in " + + "React. Please file an issue." + ); + } + } + + function beginFailedWork(current, workInProgress, renderExpirationTime) { + // Push context providers here to avoid a push/pop context mismatch. + switch (workInProgress.tag) { + case ClassComponent: + pushContextProvider(workInProgress); + break; + case HostRoot: + pushHostRootContext(workInProgress); + break; + default: + invariant( + false, + "Invalid type of work. This error is likely caused by a bug in React. " + + "Please file an issue." + ); + } + + // Add an error effect so we can handle the error during the commit phase + workInProgress.effectTag |= Err; + + // This is a weird case where we do "resume" work — work that failed on + // our first attempt. Because we no longer have a notion of "progressed + // deletions," reset the child to the current child to make sure we delete + // it again. TODO: Find a better way to handle this, perhaps during a more + // general overhaul of error handling. + if (current === null) { + workInProgress.child = null; + } else if (workInProgress.child !== current.child) { + workInProgress.child = current.child; + } + + if ( + workInProgress.expirationTime === NoWork || + workInProgress.expirationTime > renderExpirationTime + ) { + return bailoutOnLowPriority(current, workInProgress); + } + + // If we don't bail out, we're going be recomputing our children so we need + // to drop our effect list. + workInProgress.firstEffect = null; + workInProgress.lastEffect = null; + + // Unmount the current children as if the component rendered null + var nextChildren = null; + reconcileChildrenAtExpirationTime( + current, + workInProgress, + nextChildren, + renderExpirationTime + ); + + if (workInProgress.tag === ClassComponent) { + var instance = workInProgress.stateNode; + workInProgress.memoizedProps = instance.props; + workInProgress.memoizedState = instance.state; + } + + return workInProgress.child; + } + + return { + beginWork: beginWork, + beginFailedWork: beginFailedWork + }; +}; + +var ReactFiberCompleteWork = function(config, hostContext, hydrationContext) { + var createInstance = config.createInstance, + createTextInstance = config.createTextInstance, + appendInitialChild = config.appendInitialChild, + finalizeInitialChildren = config.finalizeInitialChildren, + prepareUpdate = config.prepareUpdate, + mutation = config.mutation, + persistence = config.persistence; + var getRootHostContainer = hostContext.getRootHostContainer, + popHostContext = hostContext.popHostContext, + getHostContext = hostContext.getHostContext, + popHostContainer = hostContext.popHostContainer; + var prepareToHydrateHostInstance = + hydrationContext.prepareToHydrateHostInstance, + prepareToHydrateHostTextInstance = + hydrationContext.prepareToHydrateHostTextInstance, + popHydrationState = hydrationContext.popHydrationState; + + function markUpdate(workInProgress) { + // Tag the fiber with an update effect. This turns a Placement into + // an UpdateAndPlacement. + workInProgress.effectTag |= Update; + } + + function markRef(workInProgress) { + workInProgress.effectTag |= Ref; + } + + function appendAllReturns(returns, workInProgress) { + var node = workInProgress.stateNode; + if (node) { + node["return"] = workInProgress; + } + while (node !== null) { + if ( + node.tag === HostComponent || + node.tag === HostText || + node.tag === HostPortal + ) { + invariant(false, "A call cannot have host component children."); + } else if (node.tag === ReturnComponent) { + returns.push(node.type); + } else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + while (node.sibling === null) { + if (node["return"] === null || node["return"] === workInProgress) { + return; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function moveCallToHandlerPhase( + current, + workInProgress, + renderExpirationTime + ) { + var call = workInProgress.memoizedProps; + invariant( + call, + "Should be resolved by now. This error is likely caused by a bug in " + + "React. Please file an issue." + ); + + // First step of the call has completed. Now we need to do the second. + // TODO: It would be nice to have a multi stage call represented by a + // single component, or at least tail call optimize nested ones. Currently + // that requires additional fields that we don't want to add to the fiber. + // So this requires nested handlers. + // Note: This doesn't mutate the alternate node. I don't think it needs to + // since this stage is reset for every pass. + workInProgress.tag = CallHandlerPhase; + + // Build up the returns. + // TODO: Compare this to a generator or opaque helpers like Children. + var returns = []; + appendAllReturns(returns, workInProgress); + var fn = call.handler; + var props = call.props; + var nextChildren = fn(props, returns); + + var currentFirstChild = current !== null ? current.child : null; + workInProgress.child = reconcileChildFibers( + workInProgress, + currentFirstChild, + nextChildren, + renderExpirationTime + ); + return workInProgress.child; + } + + function appendAllChildren(parent, workInProgress) { + // We only have the top Fiber that was created but we need recurse down its + // children to find all the terminal nodes. + var node = workInProgress.child; + while (node !== null) { + if (node.tag === HostComponent || node.tag === HostText) { + appendInitialChild(parent, node.stateNode); + } else if (node.tag === HostPortal) { + // If we have a portal child, then we don't want to traverse + // down its children. Instead, we'll get insertions from each child in + // the portal directly. + } else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === workInProgress) { + return; + } + while (node.sibling === null) { + if (node["return"] === null || node["return"] === workInProgress) { + return; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + var updateHostContainer = void 0; + var updateHostComponent = void 0; + var updateHostText = void 0; + if (mutation) { + if (enableMutatingReconciler) { + // Mutation mode + updateHostContainer = function(workInProgress) { + // Noop + }; + updateHostComponent = function( + current, + workInProgress, + updatePayload, + type, + oldProps, + newProps, + rootContainerInstance + ) { + // TODO: Type this specific to this type of component. + workInProgress.updateQueue = updatePayload; + // If the update payload indicates that there is a change or if there + // is a new ref we mark this as an update. All the work is done in commitWork. + if (updatePayload) { + markUpdate(workInProgress); + } + }; + updateHostText = function(current, workInProgress, oldText, newText) { + // If the text differs, mark it as an update. All the work in done in commitWork. + if (oldText !== newText) { + markUpdate(workInProgress); + } + }; + } else { + invariant(false, "Mutating reconciler is disabled."); + } + } else if (persistence) { + if (enablePersistentReconciler) { + // Persistent host tree mode + var cloneInstance = persistence.cloneInstance, + createContainerChildSet = persistence.createContainerChildSet, + appendChildToContainerChildSet = + persistence.appendChildToContainerChildSet, + finalizeContainerChildren = persistence.finalizeContainerChildren; + + // An unfortunate fork of appendAllChildren because we have two different parent types. + + var appendAllChildrenToContainer = function( + containerChildSet, + workInProgress + ) { + // We only have the top Fiber that was created but we need recurse down its + // children to find all the terminal nodes. + var node = workInProgress.child; + while (node !== null) { + if (node.tag === HostComponent || node.tag === HostText) { + appendChildToContainerChildSet(containerChildSet, node.stateNode); + } else if (node.tag === HostPortal) { + // If we have a portal child, then we don't want to traverse + // down its children. Instead, we'll get insertions from each child in + // the portal directly. + } else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === workInProgress) { + return; + } + while (node.sibling === null) { + if (node["return"] === null || node["return"] === workInProgress) { + return; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + }; + updateHostContainer = function(workInProgress) { + var portalOrRoot = workInProgress.stateNode; + var childrenUnchanged = workInProgress.firstEffect === null; + if (childrenUnchanged) { + // No changes, just reuse the existing instance. + } else { + var container = portalOrRoot.containerInfo; + var newChildSet = createContainerChildSet(container); + if (finalizeContainerChildren(container, newChildSet)) { + markUpdate(workInProgress); + } + portalOrRoot.pendingChildren = newChildSet; + // If children might have changed, we have to add them all to the set. + appendAllChildrenToContainer(newChildSet, workInProgress); + // Schedule an update on the container to swap out the container. + markUpdate(workInProgress); + } + }; + updateHostComponent = function( + current, + workInProgress, + updatePayload, + type, + oldProps, + newProps, + rootContainerInstance + ) { + // If there are no effects associated with this node, then none of our children had any updates. + // This guarantees that we can reuse all of them. + var childrenUnchanged = workInProgress.firstEffect === null; + var currentInstance = current.stateNode; + if (childrenUnchanged && updatePayload === null) { + // No changes, just reuse the existing instance. + // Note that this might release a previous clone. + workInProgress.stateNode = currentInstance; + } else { + var recyclableInstance = workInProgress.stateNode; + var newInstance = cloneInstance( + currentInstance, + updatePayload, + type, + oldProps, + newProps, + workInProgress, + childrenUnchanged, + recyclableInstance + ); + if ( + finalizeInitialChildren( + newInstance, + type, + newProps, + rootContainerInstance + ) + ) { + markUpdate(workInProgress); + } + workInProgress.stateNode = newInstance; + if (childrenUnchanged) { + // If there are no other effects in this tree, we need to flag this node as having one. + // Even though we're not going to use it for anything. + // Otherwise parents won't know that there are new children to propagate upwards. + markUpdate(workInProgress); + } else { + // If children might have changed, we have to add them all to the set. + appendAllChildren(newInstance, workInProgress); + } + } + }; + updateHostText = function(current, workInProgress, oldText, newText) { + if (oldText !== newText) { + // If the text content differs, we'll create a new text instance for it. + var rootContainerInstance = getRootHostContainer(); + var currentHostContext = getHostContext(); + workInProgress.stateNode = createTextInstance( + newText, + rootContainerInstance, + currentHostContext, + workInProgress + ); + // We'll have to mark it as having an effect, even though we won't use the effect for anything. + // This lets the parents know that at least one of their children has changed. + markUpdate(workInProgress); + } + }; + } else { + invariant(false, "Persistent reconciler is disabled."); + } + } else { + if (enableNoopReconciler) { + // No host operations + updateHostContainer = function(workInProgress) { + // Noop + }; + updateHostComponent = function( + current, + workInProgress, + updatePayload, + type, + oldProps, + newProps, + rootContainerInstance + ) { + // Noop + }; + updateHostText = function(current, workInProgress, oldText, newText) { + // Noop + }; + } else { + invariant(false, "Noop reconciler is disabled."); + } + } + + function completeWork(current, workInProgress, renderExpirationTime) { + var newProps = workInProgress.pendingProps; + switch (workInProgress.tag) { + case FunctionalComponent: + return null; + case ClassComponent: { + // We are leaving this subtree, so pop context if any. + popContextProvider(workInProgress); + return null; + } + case HostRoot: { + popHostContainer(workInProgress); + popTopLevelContextObject(workInProgress); + var fiberRoot = workInProgress.stateNode; + if (fiberRoot.pendingContext) { + fiberRoot.context = fiberRoot.pendingContext; + fiberRoot.pendingContext = null; + } + + if (current === null || current.child === null) { + // If we hydrated, pop so that we can delete any remaining children + // that weren't hydrated. + popHydrationState(workInProgress); + // This resets the hacky state to fix isMounted before committing. + // TODO: Delete this when we delete isMounted and findDOMNode. + workInProgress.effectTag &= ~Placement; + } + updateHostContainer(workInProgress); + return null; + } + case HostComponent: { + popHostContext(workInProgress); + var rootContainerInstance = getRootHostContainer(); + var type = workInProgress.type; + if (current !== null && workInProgress.stateNode != null) { + // If we have an alternate, that means this is an update and we need to + // schedule a side-effect to do the updates. + var oldProps = current.memoizedProps; + // If we get updated because one of our children updated, we don't + // have newProps so we'll have to reuse them. + // TODO: Split the update API as separate for the props vs. children. + // Even better would be if children weren't special cased at all tho. + var instance = workInProgress.stateNode; + var currentHostContext = getHostContext(); + var updatePayload = prepareUpdate( + instance, + type, + oldProps, + newProps, + rootContainerInstance, + currentHostContext + ); + + updateHostComponent( + current, + workInProgress, + updatePayload, + type, + oldProps, + newProps, + rootContainerInstance + ); + + if (current.ref !== workInProgress.ref) { + markRef(workInProgress); + } + } else { + if (!newProps) { + invariant( + workInProgress.stateNode !== null, + "We must have new props for new mounts. This error is likely " + + "caused by a bug in React. Please file an issue." + ); + // This can happen when we abort work. + return null; + } + + var _currentHostContext = getHostContext(); + // TODO: Move createInstance to beginWork and keep it on a context + // "stack" as the parent. Then append children as we go in beginWork + // or completeWork depending on we want to add then top->down or + // bottom->up. Top->down is faster in IE11. + var wasHydrated = popHydrationState(workInProgress); + if (wasHydrated) { + // TODO: Move this and createInstance step into the beginPhase + // to consolidate. + if ( + prepareToHydrateHostInstance( + workInProgress, + rootContainerInstance, + _currentHostContext + ) + ) { + // If changes to the hydrated node needs to be applied at the + // commit-phase we mark this as such. + markUpdate(workInProgress); + } + } else { + var _instance = createInstance( + type, + newProps, + rootContainerInstance, + _currentHostContext, + workInProgress + ); + + appendAllChildren(_instance, workInProgress); + + // Certain renderers require commit-time effects for initial mount. + // (eg DOM renderer supports auto-focus for certain elements). + // Make sure such renderers get scheduled for later work. + if ( + finalizeInitialChildren( + _instance, + type, + newProps, + rootContainerInstance + ) + ) { + markUpdate(workInProgress); + } + workInProgress.stateNode = _instance; + } + + if (workInProgress.ref !== null) { + // If there is a ref on a host node we need to schedule a callback + markRef(workInProgress); + } + } + return null; + } + case HostText: { + var newText = newProps; + if (current && workInProgress.stateNode != null) { + var oldText = current.memoizedProps; + // If we have an alternate, that means this is an update and we need + // to schedule a side-effect to do the updates. + updateHostText(current, workInProgress, oldText, newText); + } else { + if (typeof newText !== "string") { + invariant( + workInProgress.stateNode !== null, + "We must have new props for new mounts. This error is likely " + + "caused by a bug in React. Please file an issue." + ); + // This can happen when we abort work. + return null; + } + var _rootContainerInstance = getRootHostContainer(); + var _currentHostContext2 = getHostContext(); + var _wasHydrated = popHydrationState(workInProgress); + if (_wasHydrated) { + if (prepareToHydrateHostTextInstance(workInProgress)) { + markUpdate(workInProgress); + } + } else { + workInProgress.stateNode = createTextInstance( + newText, + _rootContainerInstance, + _currentHostContext2, + workInProgress + ); + } + } + return null; + } + case CallComponent: + return moveCallToHandlerPhase( + current, + workInProgress, + renderExpirationTime + ); + case CallHandlerPhase: + // Reset the tag to now be a first phase call. + workInProgress.tag = CallComponent; + return null; + case ReturnComponent: + // Does nothing. + return null; + case Fragment: + return null; + case HostPortal: + popHostContainer(workInProgress); + updateHostContainer(workInProgress); + return null; + // Error cases + case IndeterminateComponent: + invariant( + false, + "An indeterminate component should have become determinate before " + + "completing. This error is likely caused by a bug in React. Please " + + "file an issue." + ); + // eslint-disable-next-line no-fallthrough + default: + invariant( + false, + "Unknown unit of work tag. This error is likely caused by a bug in " + + "React. Please file an issue." + ); + } + } + + return { + completeWork: completeWork + }; +}; + +var invokeGuardedCallback$2 = ReactErrorUtils.invokeGuardedCallback; +var hasCaughtError$1 = ReactErrorUtils.hasCaughtError; +var clearCaughtError$1 = ReactErrorUtils.clearCaughtError; + +var ReactFiberCommitWork = function(config, captureError) { + var getPublicInstance = config.getPublicInstance, + mutation = config.mutation, + persistence = config.persistence; + + var callComponentWillUnmountWithTimer = function(current, instance) { + startPhaseTimer(current, "componentWillUnmount"); + instance.props = current.memoizedProps; + instance.state = current.memoizedState; + instance.componentWillUnmount(); + stopPhaseTimer(); + }; + + // Capture errors so they don't interrupt unmounting. + function safelyCallComponentWillUnmount(current, instance) { + { + invokeGuardedCallback$2( + null, + callComponentWillUnmountWithTimer, + null, + current, + instance + ); + if (hasCaughtError$1()) { + var unmountError = clearCaughtError$1(); + captureError(current, unmountError); + } + } + } + + function safelyDetachRef(current) { + var ref = current.ref; + if (ref !== null) { + { + invokeGuardedCallback$2(null, ref, null, null); + if (hasCaughtError$1()) { + var refError = clearCaughtError$1(); + captureError(current, refError); + } + } + } + } + + function commitLifeCycles(current, finishedWork) { + switch (finishedWork.tag) { + case ClassComponent: { + var instance = finishedWork.stateNode; + if (finishedWork.effectTag & Update) { + if (current === null) { + startPhaseTimer(finishedWork, "componentDidMount"); + instance.props = finishedWork.memoizedProps; + instance.state = finishedWork.memoizedState; + instance.componentDidMount(); + stopPhaseTimer(); + } else { + var prevProps = current.memoizedProps; + var prevState = current.memoizedState; + startPhaseTimer(finishedWork, "componentDidUpdate"); + instance.props = finishedWork.memoizedProps; + instance.state = finishedWork.memoizedState; + instance.componentDidUpdate(prevProps, prevState); + stopPhaseTimer(); + } + } + var updateQueue = finishedWork.updateQueue; + if (updateQueue !== null) { + commitCallbacks(updateQueue, instance); + } + return; + } + case HostRoot: { + var _updateQueue = finishedWork.updateQueue; + if (_updateQueue !== null) { + var _instance = + finishedWork.child !== null ? finishedWork.child.stateNode : null; + commitCallbacks(_updateQueue, _instance); + } + return; + } + case HostComponent: { + var _instance2 = finishedWork.stateNode; + + // Renderers may schedule work to be done after host components are mounted + // (eg DOM renderer may schedule auto-focus for inputs and form controls). + // These effects should only be committed when components are first mounted, + // aka when there is no current/alternate. + if (current === null && finishedWork.effectTag & Update) { + var type = finishedWork.type; + var props = finishedWork.memoizedProps; + commitMount(_instance2, type, props, finishedWork); + } + + return; + } + case HostText: { + // We have no life-cycles associated with text. + return; + } + case HostPortal: { + // We have no life-cycles associated with portals. + return; + } + default: { + invariant( + false, + "This unit of work tag should not have side-effects. This error is " + + "likely caused by a bug in React. Please file an issue." + ); + } + } + } + + function commitAttachRef(finishedWork) { + var ref = finishedWork.ref; + if (ref !== null) { + var instance = finishedWork.stateNode; + switch (finishedWork.tag) { + case HostComponent: + ref(getPublicInstance(instance)); + break; + default: + ref(instance); + } + } + } + + function commitDetachRef(current) { + var currentRef = current.ref; + if (currentRef !== null) { + currentRef(null); + } + } + + // User-originating errors (lifecycles and refs) should not interrupt + // deletion, so don't let them throw. Host-originating errors should + // interrupt deletion, so it's okay + function commitUnmount(current) { + if (typeof onCommitUnmount === "function") { + onCommitUnmount(current); + } + + switch (current.tag) { + case ClassComponent: { + safelyDetachRef(current); + var instance = current.stateNode; + if (typeof instance.componentWillUnmount === "function") { + safelyCallComponentWillUnmount(current, instance); + } + return; + } + case HostComponent: { + safelyDetachRef(current); + return; + } + case CallComponent: { + commitNestedUnmounts(current.stateNode); + return; + } + case HostPortal: { + // TODO: this is recursive. + // We are also not using this parent because + // the portal will get pushed immediately. + if (enableMutatingReconciler && mutation) { + unmountHostComponents(current); + } else if (enablePersistentReconciler && persistence) { + emptyPortalContainer(current); + } + return; + } + } + } + + function commitNestedUnmounts(root) { + // While we're inside a removed host node we don't want to call + // removeChild on the inner nodes because they're removed by the top + // call anyway. We also want to call componentWillUnmount on all + // composites before this host node is removed from the tree. Therefore + var node = root; + while (true) { + commitUnmount(node); + // Visit children because they may contain more composite or host nodes. + // Skip portals because commitUnmount() currently visits them recursively. + if ( + node.child !== null && + // If we use mutation we drill down into portals using commitUnmount above. + // If we don't use mutation we drill down into portals here instead. + (!mutation || node.tag !== HostPortal) + ) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === root) { + return; + } + while (node.sibling === null) { + if (node["return"] === null || node["return"] === root) { + return; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function detachFiber(current) { + // Cut off the return pointers to disconnect it from the tree. Ideally, we + // should clear the child pointer of the parent alternate to let this + // get GC:ed but we don't know which for sure which parent is the current + // one so we'll settle for GC:ing the subtree of this child. This child + // itself will be GC:ed when the parent updates the next time. + current["return"] = null; + current.child = null; + if (current.alternate) { + current.alternate.child = null; + current.alternate["return"] = null; + } + } + + if (!mutation) { + var commitContainer = void 0; + if (persistence) { + var replaceContainerChildren = persistence.replaceContainerChildren, + createContainerChildSet = persistence.createContainerChildSet; + + var emptyPortalContainer = function(current) { + var portal = current.stateNode; + var containerInfo = portal.containerInfo; + + var emptyChildSet = createContainerChildSet(containerInfo); + replaceContainerChildren(containerInfo, emptyChildSet); + }; + commitContainer = function(finishedWork) { + switch (finishedWork.tag) { + case ClassComponent: { + return; + } + case HostComponent: { + return; + } + case HostText: { + return; + } + case HostRoot: + case HostPortal: { + var portalOrRoot = finishedWork.stateNode; + var containerInfo = portalOrRoot.containerInfo, + _pendingChildren = portalOrRoot.pendingChildren; + + replaceContainerChildren(containerInfo, _pendingChildren); + return; + } + default: { + invariant( + false, + "This unit of work tag should not have side-effects. This error is " + + "likely caused by a bug in React. Please file an issue." + ); + } + } + }; + } else { + commitContainer = function(finishedWork) { + // Noop + }; + } + if (enablePersistentReconciler || enableNoopReconciler) { + return { + commitResetTextContent: function(finishedWork) {}, + commitPlacement: function(finishedWork) {}, + commitDeletion: function(current) { + // Detach refs and call componentWillUnmount() on the whole subtree. + commitNestedUnmounts(current); + detachFiber(current); + }, + commitWork: function(current, finishedWork) { + commitContainer(finishedWork); + }, + + commitLifeCycles: commitLifeCycles, + commitAttachRef: commitAttachRef, + commitDetachRef: commitDetachRef + }; + } else if (persistence) { + invariant(false, "Persistent reconciler is disabled."); + } else { + invariant(false, "Noop reconciler is disabled."); + } + } + var commitMount = mutation.commitMount, + commitUpdate = mutation.commitUpdate, + resetTextContent = mutation.resetTextContent, + commitTextUpdate = mutation.commitTextUpdate, + appendChild = mutation.appendChild, + appendChildToContainer = mutation.appendChildToContainer, + insertBefore = mutation.insertBefore, + insertInContainerBefore = mutation.insertInContainerBefore, + removeChild = mutation.removeChild, + removeChildFromContainer = mutation.removeChildFromContainer; + + function getHostParentFiber(fiber) { + var parent = fiber["return"]; + while (parent !== null) { + if (isHostParent(parent)) { + return parent; + } + parent = parent["return"]; + } + invariant( + false, + "Expected to find a host parent. This error is likely caused by a bug " + + "in React. Please file an issue." + ); + } + + function isHostParent(fiber) { + return ( + fiber.tag === HostComponent || + fiber.tag === HostRoot || + fiber.tag === HostPortal + ); + } + + function getHostSibling(fiber) { + // We're going to search forward into the tree until we find a sibling host + // node. Unfortunately, if multiple insertions are done in a row we have to + // search past them. This leads to exponential search for the next sibling. + var node = fiber; + siblings: while (true) { + // If we didn't find anything, let's try the next sibling. + while (node.sibling === null) { + if (node["return"] === null || isHostParent(node["return"])) { + // If we pop out of the root or hit the parent the fiber we are the + // last sibling. + return null; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + while (node.tag !== HostComponent && node.tag !== HostText) { + // If it is not host node and, we might have a host node inside it. + // Try to search down until we find one. + if (node.effectTag & Placement) { + // If we don't have a child, try the siblings instead. + continue siblings; + } + // If we don't have a child, try the siblings instead. + // We also skip portals because they are not part of this host tree. + if (node.child === null || node.tag === HostPortal) { + continue siblings; + } else { + node.child["return"] = node; + node = node.child; + } + } + // Check if this host node is stable or about to be placed. + if (!(node.effectTag & Placement)) { + // Found it! + return node.stateNode; + } + } + } + + function commitPlacement(finishedWork) { + // Recursively insert all host nodes into the parent. + var parentFiber = getHostParentFiber(finishedWork); + var parent = void 0; + var isContainer = void 0; + switch (parentFiber.tag) { + case HostComponent: + parent = parentFiber.stateNode; + isContainer = false; + break; + case HostRoot: + parent = parentFiber.stateNode.containerInfo; + isContainer = true; + break; + case HostPortal: + parent = parentFiber.stateNode.containerInfo; + isContainer = true; + break; + default: + invariant( + false, + "Invalid host parent fiber. This error is likely caused by a bug " + + "in React. Please file an issue." + ); + } + if (parentFiber.effectTag & ContentReset) { + // Reset the text content of the parent before doing any insertions + resetTextContent(parent); + // Clear ContentReset from the effect tag + parentFiber.effectTag &= ~ContentReset; + } + + var before = getHostSibling(finishedWork); + // We only have the top Fiber that was inserted but we need recurse down its + // children to find all the terminal nodes. + var node = finishedWork; + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + if (before) { + if (isContainer) { + insertInContainerBefore(parent, node.stateNode, before); + } else { + insertBefore(parent, node.stateNode, before); + } + } else { + if (isContainer) { + appendChildToContainer(parent, node.stateNode); + } else { + appendChild(parent, node.stateNode); + } + } + } else if (node.tag === HostPortal) { + // If the insertion itself is a portal, then we don't want to traverse + // down its children. Instead, we'll get insertions from each child in + // the portal directly. + } else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === finishedWork) { + return; + } + while (node.sibling === null) { + if (node["return"] === null || node["return"] === finishedWork) { + return; + } + node = node["return"]; + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function unmountHostComponents(current) { + // We only have the top Fiber that was inserted but we need recurse down its + var node = current; + + // Each iteration, currentParent is populated with node's host parent if not + // currentParentIsValid. + var currentParentIsValid = false; + var currentParent = void 0; + var currentParentIsContainer = void 0; + + while (true) { + if (!currentParentIsValid) { + var parent = node["return"]; + findParent: while (true) { + invariant( + parent !== null, + "Expected to find a host parent. This error is likely caused by " + + "a bug in React. Please file an issue." + ); + switch (parent.tag) { + case HostComponent: + currentParent = parent.stateNode; + currentParentIsContainer = false; + break findParent; + case HostRoot: + currentParent = parent.stateNode.containerInfo; + currentParentIsContainer = true; + break findParent; + case HostPortal: + currentParent = parent.stateNode.containerInfo; + currentParentIsContainer = true; + break findParent; + } + parent = parent["return"]; + } + currentParentIsValid = true; + } + + if (node.tag === HostComponent || node.tag === HostText) { + commitNestedUnmounts(node); + // After all the children have unmounted, it is now safe to remove the + // node from the tree. + if (currentParentIsContainer) { + removeChildFromContainer(currentParent, node.stateNode); + } else { + removeChild(currentParent, node.stateNode); + } + // Don't visit children because we already visited them. + } else if (node.tag === HostPortal) { + // When we go into a portal, it becomes the parent to remove from. + // We will reassign it back when we pop the portal on the way up. + currentParent = node.stateNode.containerInfo; + // Visit children because portals might contain host components. + if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + } else { + commitUnmount(node); + // Visit children because we may find more host components below. + if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + } + if (node === current) { + return; + } + while (node.sibling === null) { + if (node["return"] === null || node["return"] === current) { + return; + } + node = node["return"]; + if (node.tag === HostPortal) { + // When we go out of the portal, we need to restore the parent. + // Since we don't keep a stack of them, we will search for it. + currentParentIsValid = false; + } + } + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function commitDeletion(current) { + // Recursively delete all host nodes from the parent. + // Detach refs and call componentWillUnmount() on the whole subtree. + unmountHostComponents(current); + detachFiber(current); + } + + function commitWork(current, finishedWork) { + switch (finishedWork.tag) { + case ClassComponent: { + return; + } + case HostComponent: { + var instance = finishedWork.stateNode; + if (instance != null) { + // Commit the work prepared earlier. + var newProps = finishedWork.memoizedProps; + // For hydration we reuse the update path but we treat the oldProps + // as the newProps. The updatePayload will contain the real change in + // this case. + var oldProps = current !== null ? current.memoizedProps : newProps; + var type = finishedWork.type; + // TODO: Type the updateQueue to be specific to host components. + var updatePayload = finishedWork.updateQueue; + finishedWork.updateQueue = null; + if (updatePayload !== null) { + commitUpdate( + instance, + updatePayload, + type, + oldProps, + newProps, + finishedWork + ); + } + } + return; + } + case HostText: { + invariant( + finishedWork.stateNode !== null, + "This should have a text node initialized. This error is likely " + + "caused by a bug in React. Please file an issue." + ); + var textInstance = finishedWork.stateNode; + var newText = finishedWork.memoizedProps; + // For hydration we reuse the update path but we treat the oldProps + // as the newProps. The updatePayload will contain the real change in + // this case. + var oldText = current !== null ? current.memoizedProps : newText; + commitTextUpdate(textInstance, oldText, newText); + return; + } + case HostRoot: { + return; + } + default: { + invariant( + false, + "This unit of work tag should not have side-effects. This error is " + + "likely caused by a bug in React. Please file an issue." + ); + } + } + } + + function commitResetTextContent(current) { + resetTextContent(current.stateNode); + } + + if (enableMutatingReconciler) { + return { + commitResetTextContent: commitResetTextContent, + commitPlacement: commitPlacement, + commitDeletion: commitDeletion, + commitWork: commitWork, + commitLifeCycles: commitLifeCycles, + commitAttachRef: commitAttachRef, + commitDetachRef: commitDetachRef + }; + } else { + invariant(false, "Mutating reconciler is disabled."); + } +}; + +var NO_CONTEXT = {}; + +var ReactFiberHostContext = function(config) { + var getChildHostContext = config.getChildHostContext, + getRootHostContext = config.getRootHostContext; + + var contextStackCursor = createCursor(NO_CONTEXT); + var contextFiberStackCursor = createCursor(NO_CONTEXT); + var rootInstanceStackCursor = createCursor(NO_CONTEXT); + + function requiredContext(c) { + invariant( + c !== NO_CONTEXT, + "Expected host context to exist. This error is likely caused by a bug " + + "in React. Please file an issue." + ); + return c; + } + + function getRootHostContainer() { + var rootInstance = requiredContext(rootInstanceStackCursor.current); + return rootInstance; + } + + function pushHostContainer(fiber, nextRootInstance) { + // Push current root instance onto the stack; + // This allows us to reset root when portals are popped. + push(rootInstanceStackCursor, nextRootInstance, fiber); + + var nextRootContext = getRootHostContext(nextRootInstance); + + // Track the context and the Fiber that provided it. + // This enables us to pop only Fibers that provide unique contexts. + push(contextFiberStackCursor, fiber, fiber); + push(contextStackCursor, nextRootContext, fiber); + } + + function popHostContainer(fiber) { + pop(contextStackCursor, fiber); + pop(contextFiberStackCursor, fiber); + pop(rootInstanceStackCursor, fiber); + } + + function getHostContext() { + var context = requiredContext(contextStackCursor.current); + return context; + } + + function pushHostContext(fiber) { + var rootInstance = requiredContext(rootInstanceStackCursor.current); + var context = requiredContext(contextStackCursor.current); + var nextContext = getChildHostContext(context, fiber.type, rootInstance); + + // Don't push this Fiber's context unless it's unique. + if (context === nextContext) { + return; + } + + // Track the context and the Fiber that provided it. + // This enables us to pop only Fibers that provide unique contexts. + push(contextFiberStackCursor, fiber, fiber); + push(contextStackCursor, nextContext, fiber); + } + + function popHostContext(fiber) { + // Do not pop unless this Fiber provided the current context. + // pushHostContext() only pushes Fibers that provide unique contexts. + if (contextFiberStackCursor.current !== fiber) { + return; + } + + pop(contextStackCursor, fiber); + pop(contextFiberStackCursor, fiber); + } + + function resetHostContainer() { + contextStackCursor.current = NO_CONTEXT; + rootInstanceStackCursor.current = NO_CONTEXT; + } + + return { + getHostContext: getHostContext, + getRootHostContainer: getRootHostContainer, + popHostContainer: popHostContainer, + popHostContext: popHostContext, + pushHostContainer: pushHostContainer, + pushHostContext: pushHostContext, + resetHostContainer: resetHostContainer + }; +}; + +var ReactFiberHydrationContext = function(config) { + var shouldSetTextContent = config.shouldSetTextContent, + hydration = config.hydration; + + // If this doesn't have hydration mode. + + if (!hydration) { + return { + enterHydrationState: function() { + return false; + }, + resetHydrationState: function() {}, + tryToClaimNextHydratableInstance: function() {}, + prepareToHydrateHostInstance: function() { + invariant( + false, + "Expected prepareToHydrateHostInstance() to never be called. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + }, + prepareToHydrateHostTextInstance: function() { + invariant( + false, + "Expected prepareToHydrateHostTextInstance() to never be called. " + + "This error is likely caused by a bug in React. Please file an issue." + ); + }, + popHydrationState: function(fiber) { + return false; + } + }; + } + + var canHydrateInstance = hydration.canHydrateInstance, + canHydrateTextInstance = hydration.canHydrateTextInstance, + getNextHydratableSibling = hydration.getNextHydratableSibling, + getFirstHydratableChild = hydration.getFirstHydratableChild, + hydrateInstance = hydration.hydrateInstance, + hydrateTextInstance = hydration.hydrateTextInstance, + didNotMatchHydratedContainerTextInstance = + hydration.didNotMatchHydratedContainerTextInstance, + didNotMatchHydratedTextInstance = hydration.didNotMatchHydratedTextInstance, + didNotHydrateContainerInstance = hydration.didNotHydrateContainerInstance, + didNotHydrateInstance = hydration.didNotHydrateInstance, + didNotFindHydratableContainerInstance = + hydration.didNotFindHydratableContainerInstance, + didNotFindHydratableContainerTextInstance = + hydration.didNotFindHydratableContainerTextInstance, + didNotFindHydratableInstance = hydration.didNotFindHydratableInstance, + didNotFindHydratableTextInstance = + hydration.didNotFindHydratableTextInstance; + + // The deepest Fiber on the stack involved in a hydration context. + // This may have been an insertion or a hydration. + + var hydrationParentFiber = null; + var nextHydratableInstance = null; + var isHydrating = false; + + function enterHydrationState(fiber) { + var parentInstance = fiber.stateNode.containerInfo; + nextHydratableInstance = getFirstHydratableChild(parentInstance); + hydrationParentFiber = fiber; + isHydrating = true; + return true; + } + + function deleteHydratableInstance(returnFiber, instance) { + { + switch (returnFiber.tag) { + case HostRoot: + didNotHydrateContainerInstance( + returnFiber.stateNode.containerInfo, + instance + ); + break; + case HostComponent: + didNotHydrateInstance( + returnFiber.type, + returnFiber.memoizedProps, + returnFiber.stateNode, + instance + ); + break; + } + } + + var childToDelete = createFiberFromHostInstanceForDeletion(); + childToDelete.stateNode = instance; + childToDelete["return"] = returnFiber; + childToDelete.effectTag = Deletion; + + // This might seem like it belongs on progressedFirstDeletion. However, + // these children are not part of the reconciliation list of children. + // Even if we abort and rereconcile the children, that will try to hydrate + // again and the nodes are still in the host tree so these will be + // recreated. + if (returnFiber.lastEffect !== null) { + returnFiber.lastEffect.nextEffect = childToDelete; + returnFiber.lastEffect = childToDelete; + } else { + returnFiber.firstEffect = returnFiber.lastEffect = childToDelete; + } + } + + function insertNonHydratedInstance(returnFiber, fiber) { + fiber.effectTag |= Placement; + { + switch (returnFiber.tag) { + case HostRoot: { + var parentContainer = returnFiber.stateNode.containerInfo; + switch (fiber.tag) { + case HostComponent: + var type = fiber.type; + var props = fiber.pendingProps; + didNotFindHydratableContainerInstance( + parentContainer, + type, + props + ); + break; + case HostText: + var text = fiber.pendingProps; + didNotFindHydratableContainerTextInstance(parentContainer, text); + break; + } + break; + } + case HostComponent: { + var parentType = returnFiber.type; + var parentProps = returnFiber.memoizedProps; + var parentInstance = returnFiber.stateNode; + switch (fiber.tag) { + case HostComponent: + var _type = fiber.type; + var _props = fiber.pendingProps; + didNotFindHydratableInstance( + parentType, + parentProps, + parentInstance, + _type, + _props + ); + break; + case HostText: + var _text = fiber.pendingProps; + didNotFindHydratableTextInstance( + parentType, + parentProps, + parentInstance, + _text + ); + break; + } + break; + } + default: + return; + } + } + } + + function tryHydrate(fiber, nextInstance) { + switch (fiber.tag) { + case HostComponent: { + var type = fiber.type; + var props = fiber.pendingProps; + var instance = canHydrateInstance(nextInstance, type, props); + if (instance !== null) { + fiber.stateNode = instance; + return true; + } + return false; + } + case HostText: { + var text = fiber.pendingProps; + var textInstance = canHydrateTextInstance(nextInstance, text); + if (textInstance !== null) { + fiber.stateNode = textInstance; + return true; + } + return false; + } + default: + return false; + } + } + + function tryToClaimNextHydratableInstance(fiber) { + if (!isHydrating) { + return; + } + var nextInstance = nextHydratableInstance; + if (!nextInstance) { + // Nothing to hydrate. Make it an insertion. + insertNonHydratedInstance(hydrationParentFiber, fiber); + isHydrating = false; + hydrationParentFiber = fiber; + return; + } + if (!tryHydrate(fiber, nextInstance)) { + // If we can't hydrate this instance let's try the next one. + // We use this as a heuristic. It's based on intuition and not data so it + // might be flawed or unnecessary. + nextInstance = getNextHydratableSibling(nextInstance); + if (!nextInstance || !tryHydrate(fiber, nextInstance)) { + // Nothing to hydrate. Make it an insertion. + insertNonHydratedInstance(hydrationParentFiber, fiber); + isHydrating = false; + hydrationParentFiber = fiber; + return; + } + // We matched the next one, we'll now assume that the first one was + // superfluous and we'll delete it. Since we can't eagerly delete it + // we'll have to schedule a deletion. To do that, this node needs a dummy + // fiber associated with it. + deleteHydratableInstance(hydrationParentFiber, nextHydratableInstance); + } + hydrationParentFiber = fiber; + nextHydratableInstance = getFirstHydratableChild(nextInstance); + } + + function prepareToHydrateHostInstance( + fiber, + rootContainerInstance, + hostContext + ) { + var instance = fiber.stateNode; + var updatePayload = hydrateInstance( + instance, + fiber.type, + fiber.memoizedProps, + rootContainerInstance, + hostContext, + fiber + ); + // TODO: Type this specific to this type of component. + fiber.updateQueue = updatePayload; + // If the update payload indicates that there is a change or if there + // is a new ref we mark this as an update. + if (updatePayload !== null) { + return true; + } + return false; + } + + function prepareToHydrateHostTextInstance(fiber) { + var textInstance = fiber.stateNode; + var textContent = fiber.memoizedProps; + var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber); + { + if (shouldUpdate) { + // We assume that prepareToHydrateHostTextInstance is called in a context where the + // hydration parent is the parent host component of this host text. + var returnFiber = hydrationParentFiber; + if (returnFiber !== null) { + switch (returnFiber.tag) { + case HostRoot: { + var parentContainer = returnFiber.stateNode.containerInfo; + didNotMatchHydratedContainerTextInstance( + parentContainer, + textInstance, + textContent + ); + break; + } + case HostComponent: { + var parentType = returnFiber.type; + var parentProps = returnFiber.memoizedProps; + var parentInstance = returnFiber.stateNode; + didNotMatchHydratedTextInstance( + parentType, + parentProps, + parentInstance, + textInstance, + textContent + ); + break; + } + } + } + } + } + return shouldUpdate; + } + + function popToNextHostParent(fiber) { + var parent = fiber["return"]; + while ( + parent !== null && + parent.tag !== HostComponent && + parent.tag !== HostRoot + ) { + parent = parent["return"]; + } + hydrationParentFiber = parent; + } + + function popHydrationState(fiber) { + if (fiber !== hydrationParentFiber) { + // We're deeper than the current hydration context, inside an inserted + // tree. + return false; + } + if (!isHydrating) { + // If we're not currently hydrating but we're in a hydration context, then + // we were an insertion and now need to pop up reenter hydration of our + // siblings. + popToNextHostParent(fiber); + isHydrating = true; + return false; + } + + var type = fiber.type; + + // If we have any remaining hydratable nodes, we need to delete them now. + // We only do this deeper than head and body since they tend to have random + // other nodes in them. We also ignore components with pure text content in + // side of them. + // TODO: Better heuristic. + if ( + fiber.tag !== HostComponent || + (type !== "head" && + type !== "body" && + !shouldSetTextContent(type, fiber.memoizedProps)) + ) { + var nextInstance = nextHydratableInstance; + while (nextInstance) { + deleteHydratableInstance(fiber, nextInstance); + nextInstance = getNextHydratableSibling(nextInstance); + } + } + + popToNextHostParent(fiber); + nextHydratableInstance = hydrationParentFiber + ? getNextHydratableSibling(fiber.stateNode) + : null; + return true; + } + + function resetHydrationState() { + hydrationParentFiber = null; + nextHydratableInstance = null; + isHydrating = false; + } + + return { + enterHydrationState: enterHydrationState, + resetHydrationState: resetHydrationState, + tryToClaimNextHydratableInstance: tryToClaimNextHydratableInstance, + prepareToHydrateHostInstance: prepareToHydrateHostInstance, + prepareToHydrateHostTextInstance: prepareToHydrateHostTextInstance, + popHydrationState: popHydrationState + }; +}; + +// This lets us hook into Fiber to debug what it's doing. +// See https://github.com/facebook/react/pull/8033. +// This is not part of the public API, not even for React DevTools. +// You may only inject a debugTool if you work on React Fiber itself. +var ReactFiberInstrumentation = { + debugTool: null +}; + +var ReactFiberInstrumentation_1 = ReactFiberInstrumentation; + +var invokeGuardedCallback$1 = ReactErrorUtils.invokeGuardedCallback; +var hasCaughtError = ReactErrorUtils.hasCaughtError; +var clearCaughtError = ReactErrorUtils.clearCaughtError; + +{ + var didWarnAboutStateTransition = false; + var didWarnSetStateChildContext = false; + var didWarnStateUpdateForUnmountedComponent = {}; + + var warnAboutUpdateOnUnmounted = function(fiber) { + var componentName = getComponentName(fiber) || "ReactClass"; + if (didWarnStateUpdateForUnmountedComponent[componentName]) { + return; + } + warning( + false, + "Can only update a mounted or mounting " + + "component. This usually means you called setState, replaceState, " + + "or forceUpdate on an unmounted component. This is a no-op.\n\nPlease " + + "check the code for the %s component.", + componentName + ); + didWarnStateUpdateForUnmountedComponent[componentName] = true; + }; + + var warnAboutInvalidUpdates = function(instance) { + switch (ReactDebugCurrentFiber.phase) { + case "getChildContext": + if (didWarnSetStateChildContext) { + return; + } + warning( + false, + "setState(...): Cannot call setState() inside getChildContext()" + ); + didWarnSetStateChildContext = true; + break; + case "render": + if (didWarnAboutStateTransition) { + return; + } + warning( + false, + "Cannot update during an existing state transition (such as within " + + "`render` or another component's constructor). Render methods should " + + "be a pure function of props and state; constructor side-effects are " + + "an anti-pattern, but can be moved to `componentWillMount`." + ); + didWarnAboutStateTransition = true; + break; + } + }; +} + +var ReactFiberScheduler = function(config) { + var hostContext = ReactFiberHostContext(config); + var hydrationContext = ReactFiberHydrationContext(config); + var popHostContainer = hostContext.popHostContainer, + popHostContext = hostContext.popHostContext, + resetHostContainer = hostContext.resetHostContainer; + + var _ReactFiberBeginWork = ReactFiberBeginWork( + config, + hostContext, + hydrationContext, + scheduleWork, + computeExpirationForFiber + ), + beginWork = _ReactFiberBeginWork.beginWork, + beginFailedWork = _ReactFiberBeginWork.beginFailedWork; + + var _ReactFiberCompleteWo = ReactFiberCompleteWork( + config, + hostContext, + hydrationContext + ), + completeWork = _ReactFiberCompleteWo.completeWork; + + var _ReactFiberCommitWork = ReactFiberCommitWork(config, captureError), + commitResetTextContent = _ReactFiberCommitWork.commitResetTextContent, + commitPlacement = _ReactFiberCommitWork.commitPlacement, + commitDeletion = _ReactFiberCommitWork.commitDeletion, + commitWork = _ReactFiberCommitWork.commitWork, + commitLifeCycles = _ReactFiberCommitWork.commitLifeCycles, + commitAttachRef = _ReactFiberCommitWork.commitAttachRef, + commitDetachRef = _ReactFiberCommitWork.commitDetachRef; + + var now = config.now, + scheduleDeferredCallback = config.scheduleDeferredCallback, + cancelDeferredCallback = config.cancelDeferredCallback, + useSyncScheduling = config.useSyncScheduling, + prepareForCommit = config.prepareForCommit, + resetAfterCommit = config.resetAfterCommit; + + // Represents the current time in ms. + + var startTime = now(); + var mostRecentCurrentTime = msToExpirationTime(0); + + // Used to ensure computeUniqueAsyncExpiration is monotonically increases. + var lastUniqueAsyncExpiration = 0; + + // Represents the expiration time that incoming updates should use. (If this + // is NoWork, use the default strategy: async updates in async mode, sync + // updates in sync mode.) + var expirationContext = NoWork; + + var isWorking = false; + + // The next work in progress fiber that we're currently working on. + var nextUnitOfWork = null; + var nextRoot = null; + // The time at which we're currently rendering work. + var nextRenderExpirationTime = NoWork; + + // The next fiber with an effect that we're currently committing. + var nextEffect = null; + + // Keep track of which fibers have captured an error that need to be handled. + // Work is removed from this collection after componentDidCatch is called. + var capturedErrors = null; + // Keep track of which fibers have failed during the current batch of work. + // This is a different set than capturedErrors, because it is not reset until + // the end of the batch. This is needed to propagate errors correctly if a + // subtree fails more than once. + var failedBoundaries = null; + // Error boundaries that captured an error during the current commit. + var commitPhaseBoundaries = null; + var firstUncaughtError = null; + var didFatal = false; + + var isCommitting = false; + var isUnmounting = false; + + // Used for performance tracking. + var interruptedBy = null; + + function resetContextStack() { + // Reset the stack + reset(); + // Reset the cursors + resetContext(); + resetHostContainer(); + } + + function commitAllHostEffects() { + while (nextEffect !== null) { + { + ReactDebugCurrentFiber.setCurrentFiber(nextEffect); + } + recordEffect(); + + var effectTag = nextEffect.effectTag; + if (effectTag & ContentReset) { + commitResetTextContent(nextEffect); + } + + if (effectTag & Ref) { + var current = nextEffect.alternate; + if (current !== null) { + commitDetachRef(current); + } + } + + // The following switch statement is only concerned about placement, + // updates, and deletions. To avoid needing to add a case for every + // possible bitmap value, we remove the secondary effects from the + // effect tag and switch on that value. + var primaryEffectTag = + effectTag & ~(Callback | Err | ContentReset | Ref | PerformedWork); + switch (primaryEffectTag) { + case Placement: { + commitPlacement(nextEffect); + // Clear the "placement" from effect tag so that we know that this is inserted, before + // any life-cycles like componentDidMount gets called. + // TODO: findDOMNode doesn't rely on this any more but isMounted + // does and isMounted is deprecated anyway so we should be able + // to kill this. + nextEffect.effectTag &= ~Placement; + break; + } + case PlacementAndUpdate: { + // Placement + commitPlacement(nextEffect); + // Clear the "placement" from effect tag so that we know that this is inserted, before + // any life-cycles like componentDidMount gets called. + nextEffect.effectTag &= ~Placement; + + // Update + var _current = nextEffect.alternate; + commitWork(_current, nextEffect); + break; + } + case Update: { + var _current2 = nextEffect.alternate; + commitWork(_current2, nextEffect); + break; + } + case Deletion: { + isUnmounting = true; + commitDeletion(nextEffect); + isUnmounting = false; + break; + } + } + nextEffect = nextEffect.nextEffect; + } + + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + } + + function commitAllLifeCycles() { + while (nextEffect !== null) { + var effectTag = nextEffect.effectTag; + + if (effectTag & (Update | Callback)) { + recordEffect(); + var current = nextEffect.alternate; + commitLifeCycles(current, nextEffect); + } + + if (effectTag & Ref) { + recordEffect(); + commitAttachRef(nextEffect); + } + + if (effectTag & Err) { + recordEffect(); + commitErrorHandling(nextEffect); + } + + var next = nextEffect.nextEffect; + // Ensure that we clean these up so that we don't accidentally keep them. + // I'm not actually sure this matters because we can't reset firstEffect + // and lastEffect since they're on every node, not just the effectful + // ones. So we have to clean everything as we reuse nodes anyway. + nextEffect.nextEffect = null; + // Ensure that we reset the effectTag here so that we can rely on effect + // tags to reason about the current life-cycle. + nextEffect = next; + } + } + + function commitRoot(finishedWork) { + // We keep track of this so that captureError can collect any boundaries + // that capture an error during the commit phase. The reason these aren't + // local to this function is because errors that occur during cWU are + // captured elsewhere, to prevent the unmount from being interrupted. + isWorking = true; + isCommitting = true; + startCommitTimer(); + + var root = finishedWork.stateNode; + invariant( + root.current !== finishedWork, + "Cannot commit the same tree as before. This is probably a bug " + + "related to the return field. This error is likely caused by a bug " + + "in React. Please file an issue." + ); + root.isReadyForCommit = false; + + // Reset this to null before calling lifecycles + ReactCurrentOwner.current = null; + + var firstEffect = void 0; + if (finishedWork.effectTag > PerformedWork) { + // A fiber's effect list consists only of its children, not itself. So if + // the root has an effect, we need to add it to the end of the list. The + // resulting list is the set that would belong to the root's parent, if + // it had one; that is, all the effects in the tree including the root. + if (finishedWork.lastEffect !== null) { + finishedWork.lastEffect.nextEffect = finishedWork; + firstEffect = finishedWork.firstEffect; + } else { + firstEffect = finishedWork; + } + } else { + // There is no effect on the root. + firstEffect = finishedWork.firstEffect; + } + + prepareForCommit(); + + // Commit all the side-effects within a tree. We'll do this in two passes. + // The first pass performs all the host insertions, updates, deletions and + // ref unmounts. + nextEffect = firstEffect; + startCommitHostEffectsTimer(); + while (nextEffect !== null) { + var didError = false; + var _error = void 0; + { + invokeGuardedCallback$1(null, commitAllHostEffects, null); + if (hasCaughtError()) { + didError = true; + _error = clearCaughtError(); + } + } + if (didError) { + invariant( + nextEffect !== null, + "Should have next effect. This error is likely caused by a bug " + + "in React. Please file an issue." + ); + captureError(nextEffect, _error); + // Clean-up + if (nextEffect !== null) { + nextEffect = nextEffect.nextEffect; + } + } + } + stopCommitHostEffectsTimer(); + + resetAfterCommit(); + + // The work-in-progress tree is now the current tree. This must come after + // the first pass of the commit phase, so that the previous tree is still + // current during componentWillUnmount, but before the second pass, so that + // the finished work is current during componentDidMount/Update. + root.current = finishedWork; + + // In the second pass we'll perform all life-cycles and ref callbacks. + // Life-cycles happen as a separate pass so that all placements, updates, + // and deletions in the entire tree have already been invoked. + // This pass also triggers any renderer-specific initial effects. + nextEffect = firstEffect; + startCommitLifeCyclesTimer(); + while (nextEffect !== null) { + var _didError = false; + var _error2 = void 0; + { + invokeGuardedCallback$1(null, commitAllLifeCycles, null); + if (hasCaughtError()) { + _didError = true; + _error2 = clearCaughtError(); + } + } + if (_didError) { + invariant( + nextEffect !== null, + "Should have next effect. This error is likely caused by a bug " + + "in React. Please file an issue." + ); + captureError(nextEffect, _error2); + if (nextEffect !== null) { + nextEffect = nextEffect.nextEffect; + } + } + } + + isCommitting = false; + isWorking = false; + stopCommitLifeCyclesTimer(); + stopCommitTimer(); + if (typeof onCommitRoot === "function") { + onCommitRoot(finishedWork.stateNode); + } + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onCommitWork(finishedWork); + } + + // If we caught any errors during this commit, schedule their boundaries + // to update. + if (commitPhaseBoundaries) { + commitPhaseBoundaries.forEach(scheduleErrorRecovery); + commitPhaseBoundaries = null; + } + + if (firstUncaughtError !== null) { + var _error3 = firstUncaughtError; + firstUncaughtError = null; + onUncaughtError(_error3); + } + + var remainingTime = root.current.expirationTime; + + if (remainingTime === NoWork) { + capturedErrors = null; + failedBoundaries = null; + } + + return remainingTime; + } + + function resetExpirationTime(workInProgress, renderTime) { + if (renderTime !== Never && workInProgress.expirationTime === Never) { + // The children of this component are hidden. Don't bubble their + // expiration times. + return; + } + + // Check for pending updates. + var newExpirationTime = getUpdateExpirationTime(workInProgress); + + // TODO: Calls need to visit stateNode + + // Bubble up the earliest expiration time. + var child = workInProgress.child; + while (child !== null) { + if ( + child.expirationTime !== NoWork && + (newExpirationTime === NoWork || + newExpirationTime > child.expirationTime) + ) { + newExpirationTime = child.expirationTime; + } + child = child.sibling; + } + workInProgress.expirationTime = newExpirationTime; + } + + function completeUnitOfWork(workInProgress) { + while (true) { + // The current, flushed, state of this fiber is the alternate. + // Ideally nothing should rely on this, but relying on it here + // means that we don't need an additional field on the work in + // progress. + var current = workInProgress.alternate; + { + ReactDebugCurrentFiber.setCurrentFiber(workInProgress); + } + var next = completeWork( + current, + workInProgress, + nextRenderExpirationTime + ); + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + + var returnFiber = workInProgress["return"]; + var siblingFiber = workInProgress.sibling; + + resetExpirationTime(workInProgress, nextRenderExpirationTime); + + if (next !== null) { + stopWorkTimer(workInProgress); + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress); + } + // If completing this work spawned new work, do that next. We'll come + // back here again. + return next; + } + + if (returnFiber !== null) { + // Append all the effects of the subtree and this fiber onto the effect + // list of the parent. The completion order of the children affects the + // side-effect order. + if (returnFiber.firstEffect === null) { + returnFiber.firstEffect = workInProgress.firstEffect; + } + if (workInProgress.lastEffect !== null) { + if (returnFiber.lastEffect !== null) { + returnFiber.lastEffect.nextEffect = workInProgress.firstEffect; + } + returnFiber.lastEffect = workInProgress.lastEffect; + } + + // If this fiber had side-effects, we append it AFTER the children's + // side-effects. We can perform certain side-effects earlier if + // needed, by doing multiple passes over the effect list. We don't want + // to schedule our own side-effect on our own list because if end up + // reusing children we'll schedule this effect onto itself since we're + // at the end. + var effectTag = workInProgress.effectTag; + // Skip both NoWork and PerformedWork tags when creating the effect list. + // PerformedWork effect is read by React DevTools but shouldn't be committed. + if (effectTag > PerformedWork) { + if (returnFiber.lastEffect !== null) { + returnFiber.lastEffect.nextEffect = workInProgress; + } else { + returnFiber.firstEffect = workInProgress; + } + returnFiber.lastEffect = workInProgress; + } + } + + stopWorkTimer(workInProgress); + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress); + } + + if (siblingFiber !== null) { + // If there is more work to do in this returnFiber, do that next. + return siblingFiber; + } else if (returnFiber !== null) { + // If there's no more work in this returnFiber. Complete the returnFiber. + workInProgress = returnFiber; + continue; + } else { + // We've reached the root. + var root = workInProgress.stateNode; + root.isReadyForCommit = true; + return null; + } + } + + // Without this explicit null return Flow complains of invalid return type + // TODO Remove the above while(true) loop + // eslint-disable-next-line no-unreachable + return null; + } + + function performUnitOfWork(workInProgress) { + // The current, flushed, state of this fiber is the alternate. + // Ideally nothing should rely on this, but relying on it here + // means that we don't need an additional field on the work in + // progress. + var current = workInProgress.alternate; + + // See if beginning this work spawns more work. + startWorkTimer(workInProgress); + { + ReactDebugCurrentFiber.setCurrentFiber(workInProgress); + } + + var next = beginWork(current, workInProgress, nextRenderExpirationTime); + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onBeginWork(workInProgress); + } + + if (next === null) { + // If this doesn't spawn new work, complete the current work. + next = completeUnitOfWork(workInProgress); + } + + ReactCurrentOwner.current = null; + + return next; + } + + function performFailedUnitOfWork(workInProgress) { + // The current, flushed, state of this fiber is the alternate. + // Ideally nothing should rely on this, but relying on it here + // means that we don't need an additional field on the work in + // progress. + var current = workInProgress.alternate; + + // See if beginning this work spawns more work. + startWorkTimer(workInProgress); + { + ReactDebugCurrentFiber.setCurrentFiber(workInProgress); + } + var next = beginFailedWork( + current, + workInProgress, + nextRenderExpirationTime + ); + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onBeginWork(workInProgress); + } + + if (next === null) { + // If this doesn't spawn new work, complete the current work. + next = completeUnitOfWork(workInProgress); + } + + ReactCurrentOwner.current = null; + + return next; + } + + function workLoop(expirationTime) { + if (capturedErrors !== null) { + // If there are unhandled errors, switch to the slow work loop. + // TODO: How to avoid this check in the fast path? Maybe the renderer + // could keep track of which roots have unhandled errors and call a + // forked version of renderRoot. + slowWorkLoopThatChecksForFailedWork(expirationTime); + return; + } + if ( + nextRenderExpirationTime === NoWork || + nextRenderExpirationTime > expirationTime + ) { + return; + } + + if (nextRenderExpirationTime <= mostRecentCurrentTime) { + // Flush all expired work. + while (nextUnitOfWork !== null) { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } else { + // Flush asynchronous work until the deadline runs out of time. + while (nextUnitOfWork !== null && !shouldYield()) { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } + } + + function slowWorkLoopThatChecksForFailedWork(expirationTime) { + if ( + nextRenderExpirationTime === NoWork || + nextRenderExpirationTime > expirationTime + ) { + return; + } + + if (nextRenderExpirationTime <= mostRecentCurrentTime) { + // Flush all expired work. + while (nextUnitOfWork !== null) { + if (hasCapturedError(nextUnitOfWork)) { + // Use a forked version of performUnitOfWork + nextUnitOfWork = performFailedUnitOfWork(nextUnitOfWork); + } else { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } + } else { + // Flush asynchronous work until the deadline runs out of time. + while (nextUnitOfWork !== null && !shouldYield()) { + if (hasCapturedError(nextUnitOfWork)) { + // Use a forked version of performUnitOfWork + nextUnitOfWork = performFailedUnitOfWork(nextUnitOfWork); + } else { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } + } + } + + function renderRootCatchBlock(root, failedWork, boundary, expirationTime) { + // We're going to restart the error boundary that captured the error. + // Conceptually, we're unwinding the stack. We need to unwind the + // context stack, too. + unwindContexts(failedWork, boundary); + + // Restart the error boundary using a forked version of + // performUnitOfWork that deletes the boundary's children. The entire + // failed subree will be unmounted. During the commit phase, a special + // lifecycle method is called on the error boundary, which triggers + // a re-render. + nextUnitOfWork = performFailedUnitOfWork(boundary); + + // Continue working. + workLoop(expirationTime); + } + + function renderRoot(root, expirationTime) { + invariant( + !isWorking, + "renderRoot was called recursively. This error is likely caused " + + "by a bug in React. Please file an issue." + ); + isWorking = true; + + // We're about to mutate the work-in-progress tree. If the root was pending + // commit, it no longer is: we'll need to complete it again. + root.isReadyForCommit = false; + + // Check if we're starting from a fresh stack, or if we're resuming from + // previously yielded work. + if ( + root !== nextRoot || + expirationTime !== nextRenderExpirationTime || + nextUnitOfWork === null + ) { + // Reset the stack and start working from the root. + resetContextStack(); + nextRoot = root; + nextRenderExpirationTime = expirationTime; + nextUnitOfWork = createWorkInProgress( + nextRoot.current, + null, + expirationTime + ); + } + + startWorkLoopTimer(nextUnitOfWork); + + var didError = false; + var error = null; + { + invokeGuardedCallback$1(null, workLoop, null, expirationTime); + if (hasCaughtError()) { + didError = true; + error = clearCaughtError(); + } + } + + // An error was thrown during the render phase. + while (didError) { + if (didFatal) { + // This was a fatal error. Don't attempt to recover from it. + firstUncaughtError = error; + break; + } + + var failedWork = nextUnitOfWork; + if (failedWork === null) { + // An error was thrown but there's no current unit of work. This can + // happen during the commit phase if there's a bug in the renderer. + didFatal = true; + continue; + } + + // "Capture" the error by finding the nearest boundary. If there is no + // error boundary, we use the root. + var boundary = captureError(failedWork, error); + invariant( + boundary !== null, + "Should have found an error boundary. This error is likely " + + "caused by a bug in React. Please file an issue." + ); + + if (didFatal) { + // The error we just captured was a fatal error. This happens + // when the error propagates to the root more than once. + continue; + } + + didError = false; + error = null; + { + invokeGuardedCallback$1( + null, + renderRootCatchBlock, + null, + root, + failedWork, + boundary, + expirationTime + ); + if (hasCaughtError()) { + didError = true; + error = clearCaughtError(); + continue; + } + } + // We're finished working. Exit the error loop. + break; + } + + var uncaughtError = firstUncaughtError; + + // We're done performing work. Time to clean up. + stopWorkLoopTimer(interruptedBy); + interruptedBy = null; + isWorking = false; + didFatal = false; + firstUncaughtError = null; + + if (uncaughtError !== null) { + onUncaughtError(uncaughtError); + } + + return root.isReadyForCommit ? root.current.alternate : null; + } + + // Returns the boundary that captured the error, or null if the error is ignored + function captureError(failedWork, error) { + // It is no longer valid because we exited the user code. + ReactCurrentOwner.current = null; + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + + // Search for the nearest error boundary. + var boundary = null; + + // Passed to logCapturedError() + var errorBoundaryFound = false; + var willRetry = false; + var errorBoundaryName = null; + + // Host containers are a special case. If the failed work itself is a host + // container, then it acts as its own boundary. In all other cases, we + // ignore the work itself and only search through the parents. + if (failedWork.tag === HostRoot) { + boundary = failedWork; + + if (isFailedBoundary(failedWork)) { + // If this root already failed, there must have been an error when + // attempting to unmount it. This is a worst-case scenario and + // should only be possible if there's a bug in the renderer. + didFatal = true; + } + } else { + var node = failedWork["return"]; + while (node !== null && boundary === null) { + if (node.tag === ClassComponent) { + var instance = node.stateNode; + if (typeof instance.componentDidCatch === "function") { + errorBoundaryFound = true; + errorBoundaryName = getComponentName(node); + + // Found an error boundary! + boundary = node; + willRetry = true; + } + } else if (node.tag === HostRoot) { + // Treat the root like a no-op error boundary + boundary = node; + } + + if (isFailedBoundary(node)) { + // This boundary is already in a failed state. + + // If we're currently unmounting, that means this error was + // thrown while unmounting a failed subtree. We should ignore + // the error. + if (isUnmounting) { + return null; + } + + // If we're in the commit phase, we should check to see if + // this boundary already captured an error during this commit. + // This case exists because multiple errors can be thrown during + // a single commit without interruption. + if ( + commitPhaseBoundaries !== null && + (commitPhaseBoundaries.has(node) || + (node.alternate !== null && + commitPhaseBoundaries.has(node.alternate))) + ) { + // If so, we should ignore this error. + return null; + } + + // The error should propagate to the next boundary -— we keep looking. + boundary = null; + willRetry = false; + } + + node = node["return"]; + } + } + + if (boundary !== null) { + // Add to the collection of failed boundaries. This lets us know that + // subsequent errors in this subtree should propagate to the next boundary. + if (failedBoundaries === null) { + failedBoundaries = new Set(); + } + failedBoundaries.add(boundary); + + // This method is unsafe outside of the begin and complete phases. + // We might be in the commit phase when an error is captured. + // The risk is that the return path from this Fiber may not be accurate. + // That risk is acceptable given the benefit of providing users more context. + var _componentStack = getStackAddendumByWorkInProgressFiber(failedWork); + var _componentName = getComponentName(failedWork); + + // Add to the collection of captured errors. This is stored as a global + // map of errors and their component stack location keyed by the boundaries + // that capture them. We mostly use this Map as a Set; it's a Map only to + // avoid adding a field to Fiber to store the error. + if (capturedErrors === null) { + capturedErrors = new Map(); + } + + var capturedError = { + componentName: _componentName, + componentStack: _componentStack, + error: error, + errorBoundary: errorBoundaryFound ? boundary.stateNode : null, + errorBoundaryFound: errorBoundaryFound, + errorBoundaryName: errorBoundaryName, + willRetry: willRetry + }; + + capturedErrors.set(boundary, capturedError); + + try { + logCapturedError(capturedError); + } catch (e) { + // Prevent cycle if logCapturedError() throws. + // A cycle may still occur if logCapturedError renders a component that throws. + var suppressLogging = e && e.suppressReactErrorLogging; + if (!suppressLogging) { + console.error(e); + } + } + + // If we're in the commit phase, defer scheduling an update on the + // boundary until after the commit is complete + if (isCommitting) { + if (commitPhaseBoundaries === null) { + commitPhaseBoundaries = new Set(); + } + commitPhaseBoundaries.add(boundary); + } else { + // Otherwise, schedule an update now. + // TODO: Is this actually necessary during the render phase? Is it + // possible to unwind and continue rendering at the same priority, + // without corrupting internal state? + scheduleErrorRecovery(boundary); + } + return boundary; + } else if (firstUncaughtError === null) { + // If no boundary is found, we'll need to throw the error + firstUncaughtError = error; + } + return null; + } + + function hasCapturedError(fiber) { + // TODO: capturedErrors should store the boundary instance, to avoid needing + // to check the alternate. + return ( + capturedErrors !== null && + (capturedErrors.has(fiber) || + (fiber.alternate !== null && capturedErrors.has(fiber.alternate))) + ); + } + + function isFailedBoundary(fiber) { + // TODO: failedBoundaries should store the boundary instance, to avoid + // needing to check the alternate. + return ( + failedBoundaries !== null && + (failedBoundaries.has(fiber) || + (fiber.alternate !== null && failedBoundaries.has(fiber.alternate))) + ); + } + + function commitErrorHandling(effectfulFiber) { + var capturedError = void 0; + if (capturedErrors !== null) { + capturedError = capturedErrors.get(effectfulFiber); + capturedErrors["delete"](effectfulFiber); + if (capturedError == null) { + if (effectfulFiber.alternate !== null) { + effectfulFiber = effectfulFiber.alternate; + capturedError = capturedErrors.get(effectfulFiber); + capturedErrors["delete"](effectfulFiber); + } + } + } + + invariant( + capturedError != null, + "No error for given unit of work. This error is likely caused by a " + + "bug in React. Please file an issue." + ); + + switch (effectfulFiber.tag) { + case ClassComponent: + var instance = effectfulFiber.stateNode; + + var info = { + componentStack: capturedError.componentStack + }; + + // Allow the boundary to handle the error, usually by scheduling + // an update to itself + instance.componentDidCatch(capturedError.error, info); + return; + case HostRoot: + if (firstUncaughtError === null) { + firstUncaughtError = capturedError.error; + } + return; + default: + invariant( + false, + "Invalid type of work. This error is likely caused by a bug in " + + "React. Please file an issue." + ); + } + } + + function unwindContexts(from, to) { + var node = from; + while (node !== null) { + switch (node.tag) { + case ClassComponent: + popContextProvider(node); + break; + case HostComponent: + popHostContext(node); + break; + case HostRoot: + popHostContainer(node); + break; + case HostPortal: + popHostContainer(node); + break; + } + if (node === to || node.alternate === to) { + stopFailedWorkTimer(node); + break; + } else { + stopWorkTimer(node); + } + node = node["return"]; + } + } + + function computeAsyncExpiration() { + // Given the current clock time, returns an expiration time. We use rounding + // to batch like updates together. + // Should complete within ~1000ms. 1200ms max. + var currentTime = recalculateCurrentTime(); + var expirationMs = 1000; + var bucketSizeMs = 200; + return computeExpirationBucket(currentTime, expirationMs, bucketSizeMs); + } + + // Creates a unique async expiration time. + function computeUniqueAsyncExpiration() { + var result = computeAsyncExpiration(); + if (result <= lastUniqueAsyncExpiration) { + // Since we assume the current time monotonically increases, we only hit + // this branch when computeUniqueAsyncExpiration is fired multiple times + // within a 200ms window (or whatever the async bucket size is). + result = lastUniqueAsyncExpiration + 1; + } + lastUniqueAsyncExpiration = result; + return lastUniqueAsyncExpiration; + } + + function computeExpirationForFiber(fiber) { + var expirationTime = void 0; + if (expirationContext !== NoWork) { + // An explicit expiration context was set; + expirationTime = expirationContext; + } else if (isWorking) { + if (isCommitting) { + // Updates that occur during the commit phase should have sync priority + // by default. + expirationTime = Sync; + } else { + // Updates during the render phase should expire at the same time as + // the work that is being rendered. + expirationTime = nextRenderExpirationTime; + } + } else { + // No explicit expiration context was set, and we're not currently + // performing work. Calculate a new expiration time. + if (useSyncScheduling && !(fiber.internalContextTag & AsyncUpdates)) { + // This is a sync update + expirationTime = Sync; + } else { + // This is an async update + expirationTime = computeAsyncExpiration(); + } + } + return expirationTime; + } + + function scheduleWork(fiber, expirationTime) { + return scheduleWorkImpl(fiber, expirationTime, false); + } + + function checkRootNeedsClearing(root, fiber, expirationTime) { + if ( + !isWorking && + root === nextRoot && + expirationTime < nextRenderExpirationTime + ) { + // Restart the root from the top. + if (nextUnitOfWork !== null) { + // This is an interruption. (Used for performance tracking.) + interruptedBy = fiber; + } + nextRoot = null; + nextUnitOfWork = null; + nextRenderExpirationTime = NoWork; + } + } + + function scheduleWorkImpl(fiber, expirationTime, isErrorRecovery) { + recordScheduleUpdate(); + + { + if (!isErrorRecovery && fiber.tag === ClassComponent) { + var instance = fiber.stateNode; + warnAboutInvalidUpdates(instance); + } + } + + var node = fiber; + while (node !== null) { + // Walk the parent path to the root and update each node's + // expiration time. + if ( + node.expirationTime === NoWork || + node.expirationTime > expirationTime + ) { + node.expirationTime = expirationTime; + } + if (node.alternate !== null) { + if ( + node.alternate.expirationTime === NoWork || + node.alternate.expirationTime > expirationTime + ) { + node.alternate.expirationTime = expirationTime; + } + } + if (node["return"] === null) { + if (node.tag === HostRoot) { + var root = node.stateNode; + + checkRootNeedsClearing(root, fiber, expirationTime); + requestWork(root, expirationTime); + checkRootNeedsClearing(root, fiber, expirationTime); + } else { + { + if (!isErrorRecovery && fiber.tag === ClassComponent) { + warnAboutUpdateOnUnmounted(fiber); + } + } + return; + } + } + node = node["return"]; + } + } + + function scheduleErrorRecovery(fiber) { + scheduleWorkImpl(fiber, Sync, true); + } + + function recalculateCurrentTime() { + // Subtract initial time so it fits inside 32bits + var ms = now() - startTime; + mostRecentCurrentTime = msToExpirationTime(ms); + return mostRecentCurrentTime; + } + + function deferredUpdates(fn) { + var previousExpirationContext = expirationContext; + expirationContext = computeAsyncExpiration(); + try { + return fn(); + } finally { + expirationContext = previousExpirationContext; + } + } + + function syncUpdates(fn) { + var previousExpirationContext = expirationContext; + expirationContext = Sync; + try { + return fn(); + } finally { + expirationContext = previousExpirationContext; + } + } + + // TODO: Everything below this is written as if it has been lifted to the + // renderers. I'll do this in a follow-up. + + // Linked-list of roots + var firstScheduledRoot = null; + var lastScheduledRoot = null; + + var callbackExpirationTime = NoWork; + var callbackID = -1; + var isRendering = false; + var nextFlushedRoot = null; + var nextFlushedExpirationTime = NoWork; + var deadlineDidExpire = false; + var hasUnhandledError = false; + var unhandledError = null; + var deadline = null; + + var isBatchingUpdates = false; + var isUnbatchingUpdates = false; + + var completedBatches = null; + + // Use these to prevent an infinite loop of nested updates + var NESTED_UPDATE_LIMIT = 1000; + var nestedUpdateCount = 0; + + var timeHeuristicForUnitOfWork = 1; + + function scheduleCallbackWithExpiration(expirationTime) { + if (callbackExpirationTime !== NoWork) { + // A callback is already scheduled. Check its expiration time (timeout). + if (expirationTime > callbackExpirationTime) { + // Existing callback has sufficient timeout. Exit. + return; + } else { + // Existing callback has insufficient timeout. Cancel and schedule a + // new one. + cancelDeferredCallback(callbackID); + } + // The request callback timer is already running. Don't start a new one. + } else { + startRequestCallbackTimer(); + } + + // Compute a timeout for the given expiration time. + var currentMs = now() - startTime; + var expirationMs = expirationTimeToMs(expirationTime); + var timeout = expirationMs - currentMs; + + callbackExpirationTime = expirationTime; + callbackID = scheduleDeferredCallback(performAsyncWork, { + timeout: timeout + }); + } + + // requestWork is called by the scheduler whenever a root receives an update. + // It's up to the renderer to call renderRoot at some point in the future. + function requestWork(root, expirationTime) { + if (nestedUpdateCount > NESTED_UPDATE_LIMIT) { + invariant( + false, + "Maximum update depth exceeded. This can happen when a " + + "component repeatedly calls setState inside componentWillUpdate or " + + "componentDidUpdate. React limits the number of nested updates to " + + "prevent infinite loops." + ); + } + + // Add the root to the schedule. + // Check if this root is already part of the schedule. + if (root.nextScheduledRoot === null) { + // This root is not already scheduled. Add it. + root.remainingExpirationTime = expirationTime; + if (lastScheduledRoot === null) { + firstScheduledRoot = lastScheduledRoot = root; + root.nextScheduledRoot = root; + } else { + lastScheduledRoot.nextScheduledRoot = root; + lastScheduledRoot = root; + lastScheduledRoot.nextScheduledRoot = firstScheduledRoot; + } + } else { + // This root is already scheduled, but its priority may have increased. + var remainingExpirationTime = root.remainingExpirationTime; + if ( + remainingExpirationTime === NoWork || + expirationTime < remainingExpirationTime + ) { + // Update the priority. + root.remainingExpirationTime = expirationTime; + } + } + + if (isRendering) { + // Prevent reentrancy. Remaining work will be scheduled at the end of + // the currently rendering batch. + return; + } + + if (isBatchingUpdates) { + // Flush work at the end of the batch. + if (isUnbatchingUpdates) { + // ...unless we're inside unbatchedUpdates, in which case we should + // flush it now. + nextFlushedRoot = root; + nextFlushedExpirationTime = Sync; + performWorkOnRoot(root, Sync, recalculateCurrentTime()); + } + return; + } + + // TODO: Get rid of Sync and use current time? + if (expirationTime === Sync) { + performWork(Sync, null); + } else { + scheduleCallbackWithExpiration(expirationTime); + } + } + + function findHighestPriorityRoot() { + var highestPriorityWork = NoWork; + var highestPriorityRoot = null; + + if (lastScheduledRoot !== null) { + var previousScheduledRoot = lastScheduledRoot; + var root = firstScheduledRoot; + while (root !== null) { + var remainingExpirationTime = root.remainingExpirationTime; + if (remainingExpirationTime === NoWork) { + // This root no longer has work. Remove it from the scheduler. + + // TODO: This check is redudant, but Flow is confused by the branch + // below where we set lastScheduledRoot to null, even though we break + // from the loop right after. + invariant( + previousScheduledRoot !== null && lastScheduledRoot !== null, + "Should have a previous and last root. This error is likely " + + "caused by a bug in React. Please file an issue." + ); + if (root === root.nextScheduledRoot) { + // This is the only root in the list. + root.nextScheduledRoot = null; + firstScheduledRoot = lastScheduledRoot = null; + break; + } else if (root === firstScheduledRoot) { + // This is the first root in the list. + var next = root.nextScheduledRoot; + firstScheduledRoot = next; + lastScheduledRoot.nextScheduledRoot = next; + root.nextScheduledRoot = null; + } else if (root === lastScheduledRoot) { + // This is the last root in the list. + lastScheduledRoot = previousScheduledRoot; + lastScheduledRoot.nextScheduledRoot = firstScheduledRoot; + root.nextScheduledRoot = null; + break; + } else { + previousScheduledRoot.nextScheduledRoot = root.nextScheduledRoot; + root.nextScheduledRoot = null; + } + root = previousScheduledRoot.nextScheduledRoot; + } else { + if ( + highestPriorityWork === NoWork || + remainingExpirationTime < highestPriorityWork + ) { + // Update the priority, if it's higher + highestPriorityWork = remainingExpirationTime; + highestPriorityRoot = root; + } + if (root === lastScheduledRoot) { + break; + } + previousScheduledRoot = root; + root = root.nextScheduledRoot; + } + } + } + + // If the next root is the same as the previous root, this is a nested + // update. To prevent an infinite loop, increment the nested update count. + var previousFlushedRoot = nextFlushedRoot; + if ( + previousFlushedRoot !== null && + previousFlushedRoot === highestPriorityRoot + ) { + nestedUpdateCount++; + } else { + // Reset whenever we switch roots. + nestedUpdateCount = 0; + } + nextFlushedRoot = highestPriorityRoot; + nextFlushedExpirationTime = highestPriorityWork; + } + + function performAsyncWork(dl) { + performWork(NoWork, dl); + } + + function performWork(minExpirationTime, dl) { + deadline = dl; + + // Keep working on roots until there's no more work, or until the we reach + // the deadline. + findHighestPriorityRoot(); + + if (enableUserTimingAPI && deadline !== null) { + var didExpire = nextFlushedExpirationTime < recalculateCurrentTime(); + stopRequestCallbackTimer(didExpire); + } + + while ( + nextFlushedRoot !== null && + nextFlushedExpirationTime !== NoWork && + (minExpirationTime === NoWork || + nextFlushedExpirationTime <= minExpirationTime) && + !deadlineDidExpire + ) { + performWorkOnRoot( + nextFlushedRoot, + nextFlushedExpirationTime, + recalculateCurrentTime() + ); + // Find the next highest priority work. + findHighestPriorityRoot(); + } + + // We're done flushing work. Either we ran out of time in this callback, + // or there's no more work left with sufficient priority. + + // If we're inside a callback, set this to false since we just completed it. + if (deadline !== null) { + callbackExpirationTime = NoWork; + callbackID = -1; + } + // If there's work left over, schedule a new callback. + if (nextFlushedExpirationTime !== NoWork) { + scheduleCallbackWithExpiration(nextFlushedExpirationTime); + } + + // Clean-up. + deadline = null; + deadlineDidExpire = false; + nestedUpdateCount = 0; + + finishRendering(); + } + + function flushRoot(root, expirationTime) { + invariant( + !isRendering, + "work.commit(): Cannot commit while already rendering. This likely " + + "means you attempted to commit from inside a lifecycle method." + ); + // Perform work on root as if the given expiration time is the current time. + // This has the effect of synchronously flushing all work up to and + // including the given time. + performWorkOnRoot(root, expirationTime, expirationTime); + finishRendering(); + } + + function finishRendering() { + if (completedBatches !== null) { + var batches = completedBatches; + completedBatches = null; + for (var i = 0; i < batches.length; i++) { + var batch = batches[i]; + try { + batch._onComplete(); + } catch (error) { + if (!hasUnhandledError) { + hasUnhandledError = true; + unhandledError = error; + } + } + } + } + + if (hasUnhandledError) { + var _error4 = unhandledError; + unhandledError = null; + hasUnhandledError = false; + throw _error4; + } + } + + function performWorkOnRoot(root, expirationTime, currentTime) { + invariant( + !isRendering, + "performWorkOnRoot was called recursively. This error is likely caused " + + "by a bug in React. Please file an issue." + ); + + isRendering = true; + + // Check if this is async work or sync/expired work. + if (expirationTime <= currentTime) { + // Flush sync work. + var finishedWork = root.finishedWork; + if (finishedWork !== null) { + // This root is already complete. We can commit it. + completeRoot(root, finishedWork, expirationTime); + } else { + root.finishedWork = null; + finishedWork = renderRoot(root, expirationTime); + if (finishedWork !== null) { + // We've completed the root. Commit it. + completeRoot(root, finishedWork, expirationTime); + } + } + } else { + // Flush async work. + var _finishedWork = root.finishedWork; + if (_finishedWork !== null) { + // This root is already complete. We can commit it. + completeRoot(root, _finishedWork, expirationTime); + } else { + root.finishedWork = null; + _finishedWork = renderRoot(root, expirationTime); + if (_finishedWork !== null) { + // We've completed the root. Check the deadline one more time + // before committing. + if (!shouldYield()) { + // Still time left. Commit the root. + completeRoot(root, _finishedWork, expirationTime); + } else { + // There's no time left. Mark this root as complete. We'll come + // back and commit it later. + root.finishedWork = _finishedWork; + } + } + } + } + + isRendering = false; + } + + function completeRoot(root, finishedWork, expirationTime) { + // Check if there's a batch that matches this expiration time. + var firstBatch = root.firstBatch; + if (firstBatch !== null && firstBatch._expirationTime <= expirationTime) { + if (completedBatches === null) { + completedBatches = [firstBatch]; + } else { + completedBatches.push(firstBatch); + } + if (firstBatch._defer) { + // This root is blocked from committing by a batch. Unschedule it until + // we receive another update. + root.finishedWork = finishedWork; + root.remainingExpirationTime = NoWork; + return; + } + } + + // Commit the root. + root.finishedWork = null; + root.remainingExpirationTime = commitRoot(finishedWork); + } + + // When working on async work, the reconciler asks the renderer if it should + // yield execution. For DOM, we implement this with requestIdleCallback. + function shouldYield() { + if (deadline === null) { + return false; + } + if (deadline.timeRemaining() > timeHeuristicForUnitOfWork) { + // Disregard deadline.didTimeout. Only expired work should be flushed + // during a timeout. This path is only hit for non-expired work. + return false; + } + deadlineDidExpire = true; + return true; + } + + // TODO: Not happy about this hook. Conceptually, renderRoot should return a + // tuple of (isReadyForCommit, didError, error) + function onUncaughtError(error) { + invariant( + nextFlushedRoot !== null, + "Should be working on a root. This error is likely caused by a bug in " + + "React. Please file an issue." + ); + // Unschedule this root so we don't work on it again until there's + // another update. + nextFlushedRoot.remainingExpirationTime = NoWork; + if (!hasUnhandledError) { + hasUnhandledError = true; + unhandledError = error; + } + } + + // TODO: Batching should be implemented at the renderer level, not inside + // the reconciler. + function batchedUpdates(fn, a) { + var previousIsBatchingUpdates = isBatchingUpdates; + isBatchingUpdates = true; + try { + return fn(a); + } finally { + isBatchingUpdates = previousIsBatchingUpdates; + if (!isBatchingUpdates && !isRendering) { + performWork(Sync, null); + } + } + } + + // TODO: Batching should be implemented at the renderer level, not inside + // the reconciler. + function unbatchedUpdates(fn) { + if (isBatchingUpdates && !isUnbatchingUpdates) { + isUnbatchingUpdates = true; + try { + return fn(); + } finally { + isUnbatchingUpdates = false; + } + } + return fn(); + } + + // TODO: Batching should be implemented at the renderer level, not within + // the reconciler. + function flushSync(fn) { + var previousIsBatchingUpdates = isBatchingUpdates; + isBatchingUpdates = true; + try { + return syncUpdates(fn); + } finally { + isBatchingUpdates = previousIsBatchingUpdates; + invariant( + !isRendering, + "flushSync was called from inside a lifecycle method. It cannot be " + + "called when React is already rendering." + ); + performWork(Sync, null); + } + } + + return { + computeAsyncExpiration: computeAsyncExpiration, + computeExpirationForFiber: computeExpirationForFiber, + scheduleWork: scheduleWork, + requestWork: requestWork, + flushRoot: flushRoot, + batchedUpdates: batchedUpdates, + unbatchedUpdates: unbatchedUpdates, + flushSync: flushSync, + deferredUpdates: deferredUpdates, + computeUniqueAsyncExpiration: computeUniqueAsyncExpiration + }; +}; + +{ + var didWarnAboutNestedUpdates = false; +} + +// 0 is PROD, 1 is DEV. +// Might add PROFILE later. + +function getContextForSubtree(parentComponent) { + if (!parentComponent) { + return emptyObject; + } + + var fiber = get(parentComponent); + var parentContext = findCurrentUnmaskedContext(fiber); + return isContextProvider(fiber) + ? processChildContext(fiber, parentContext) + : parentContext; +} + +var ReactFiberReconciler$1 = function(config) { + var getPublicInstance = config.getPublicInstance; + + var _ReactFiberScheduler = ReactFiberScheduler(config), + computeAsyncExpiration = _ReactFiberScheduler.computeAsyncExpiration, + computeUniqueAsyncExpiration = + _ReactFiberScheduler.computeUniqueAsyncExpiration, + computeExpirationForFiber = _ReactFiberScheduler.computeExpirationForFiber, + scheduleWork = _ReactFiberScheduler.scheduleWork, + requestWork = _ReactFiberScheduler.requestWork, + flushRoot = _ReactFiberScheduler.flushRoot, + batchedUpdates = _ReactFiberScheduler.batchedUpdates, + unbatchedUpdates = _ReactFiberScheduler.unbatchedUpdates, + flushSync = _ReactFiberScheduler.flushSync, + deferredUpdates = _ReactFiberScheduler.deferredUpdates; + + function computeRootExpirationTime(current, element) { + var expirationTime = void 0; + // Check if the top-level element is an async wrapper component. If so, + // treat updates to the root as async. This is a bit weird but lets us + // avoid a separate `renderAsync` API. + if ( + enableAsyncSubtreeAPI && + element != null && + element.type != null && + element.type.prototype != null && + element.type.prototype.unstable_isAsyncReactComponent === true + ) { + expirationTime = computeAsyncExpiration(); + } else { + expirationTime = computeExpirationForFiber(current); + } + return expirationTime; + } + + function scheduleRootUpdate(current, element, expirationTime, callback) { + { + if ( + ReactDebugCurrentFiber.phase === "render" && + ReactDebugCurrentFiber.current !== null && + !didWarnAboutNestedUpdates + ) { + didWarnAboutNestedUpdates = true; + warning( + false, + "Render methods should be a pure function of props and state; " + + "triggering nested component updates from render is not allowed. " + + "If necessary, trigger nested updates in componentDidUpdate.\n\n" + + "Check the render method of %s.", + getComponentName(ReactDebugCurrentFiber.current) || "Unknown" + ); + } + } + + callback = callback === undefined ? null : callback; + { + warning( + callback === null || typeof callback === "function", + "render(...): Expected the last optional `callback` argument to be a " + + "function. Instead received: %s.", + callback + ); + } + + var update = { + expirationTime: expirationTime, + partialState: { element: element }, + callback: callback, + isReplace: false, + isForced: false, + next: null + }; + insertUpdateIntoFiber(current, update); + scheduleWork(current, expirationTime); + + return expirationTime; + } + + function updateContainerAtExpirationTime( + element, + container, + parentComponent, + expirationTime, + callback + ) { + // TODO: If this is a nested container, this won't be the root. + var current = container.current; + + { + if (ReactFiberInstrumentation_1.debugTool) { + if (current.alternate === null) { + ReactFiberInstrumentation_1.debugTool.onMountContainer(container); + } else if (element === null) { + ReactFiberInstrumentation_1.debugTool.onUnmountContainer(container); + } else { + ReactFiberInstrumentation_1.debugTool.onUpdateContainer(container); + } + } + } + + var context = getContextForSubtree(parentComponent); + if (container.context === null) { + container.context = context; + } else { + container.pendingContext = context; + } + + return scheduleRootUpdate(current, element, expirationTime, callback); + } + + function findHostInstance(fiber) { + var hostFiber = findCurrentHostFiber(fiber); + if (hostFiber === null) { + return null; + } + return hostFiber.stateNode; + } + + return { + createContainer: function(containerInfo, hydrate) { + return createFiberRoot(containerInfo, hydrate); + }, + updateContainer: function(element, container, parentComponent, callback) { + var current = container.current; + var expirationTime = computeRootExpirationTime(current, element); + return updateContainerAtExpirationTime( + element, + container, + parentComponent, + expirationTime, + callback + ); + }, + + updateContainerAtExpirationTime: updateContainerAtExpirationTime, + + flushRoot: flushRoot, + + requestWork: requestWork, + + computeUniqueAsyncExpiration: computeUniqueAsyncExpiration, + + batchedUpdates: batchedUpdates, + + unbatchedUpdates: unbatchedUpdates, + + deferredUpdates: deferredUpdates, + + flushSync: flushSync, + + getPublicRootInstance: function(container) { + var containerFiber = container.current; + if (!containerFiber.child) { + return null; + } + switch (containerFiber.child.tag) { + case HostComponent: + return getPublicInstance(containerFiber.child.stateNode); + default: + return containerFiber.child.stateNode; + } + }, + + findHostInstance: findHostInstance, + + findHostInstanceWithNoPortals: function(fiber) { + var hostFiber = findCurrentHostFiberWithNoPortals(fiber); + if (hostFiber === null) { + return null; + } + return hostFiber.stateNode; + }, + injectIntoDevTools: function(devToolsConfig) { + var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance; + + return injectInternals( + Object.assign({}, devToolsConfig, { + findHostInstanceByFiber: function(fiber) { + return findHostInstance(fiber); + }, + findFiberByHostInstance: function(instance) { + if (!findFiberByHostInstance) { + // Might not be implemented by the renderer. + return null; + } + return findFiberByHostInstance(instance); + } + }) + ); + } + }; +}; + +var ReactFiberReconciler$2 = Object.freeze({ + default: ReactFiberReconciler$1 +}); + +var ReactFiberReconciler$3 = + (ReactFiberReconciler$2 && ReactFiberReconciler$1) || ReactFiberReconciler$2; + +// TODO: bundle Flow types with the package. + +// TODO: decide on the top-level export form. +// This is hacky but makes it work with both Rollup and Jest. +var reactReconciler = ReactFiberReconciler$3["default"] + ? ReactFiberReconciler$3["default"] + : ReactFiberReconciler$3; + +var viewConfigCallbacks = new Map(); +var viewConfigs = new Map(); + +/** + * Registers a native view/component by name. + * A callback is provided to load the view config from UIManager. + * The callback is deferred until the view is actually rendered. + * This is done to avoid causing Prepack deopts. + */ +function register(name, callback) { + invariant( + !viewConfigCallbacks.has(name), + "Tried to register two views with the same name %s", + name + ); + viewConfigCallbacks.set(name, callback); + return name; +} + +/** + * Retrieves a config for the specified view. + * If this is the first time the view has been used, + * This configuration will be lazy-loaded from UIManager. + */ +function get$1(name) { + var viewConfig = void 0; + if (!viewConfigs.has(name)) { + var callback = viewConfigCallbacks.get(name); + invariant( + typeof callback === "function", + "View config not found for name %s", + name + ); + viewConfigCallbacks.set(name, null); + viewConfig = callback(); + viewConfigs.set(name, viewConfig); + } else { + viewConfig = viewConfigs.get(name); + } + invariant(viewConfig, "View config not found for name %s", name); + return viewConfig; +} + +function _classCallCheck$1(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +// Modules provided by RN: +/** + * This component defines the same methods as NativeMethodsMixin but without the + * findNodeHandle wrapper. This wrapper is unnecessary for HostComponent views + * and would also result in a circular require.js dependency (since + * ReactNativeFiber depends on this component and NativeMethodsMixin depends on + * ReactNativeFiber). + */ + +var ReactNativeFiberHostComponent = (function() { + function ReactNativeFiberHostComponent(tag, viewConfig) { + _classCallCheck$1(this, ReactNativeFiberHostComponent); + + this._nativeTag = tag; + this._children = []; + this.viewConfig = viewConfig; + } + + ReactNativeFiberHostComponent.prototype.blur = function blur() { + TextInputState.blurTextInput(this._nativeTag); + }; + + ReactNativeFiberHostComponent.prototype.focus = function focus() { + TextInputState.focusTextInput(this._nativeTag); + }; + + ReactNativeFiberHostComponent.prototype.measure = function measure(callback) { + UIManager.measure(this._nativeTag, mountSafeCallback(this, callback)); + }; + + ReactNativeFiberHostComponent.prototype.measureInWindow = function measureInWindow( + callback + ) { + UIManager.measureInWindow( + this._nativeTag, + mountSafeCallback(this, callback) + ); + }; + + ReactNativeFiberHostComponent.prototype.measureLayout = function measureLayout( + relativeToNativeNode, + onSuccess, + onFail /* currently unused */ + ) { + UIManager.measureLayout( + this._nativeTag, + relativeToNativeNode, + mountSafeCallback(this, onFail), + mountSafeCallback(this, onSuccess) + ); + }; + + ReactNativeFiberHostComponent.prototype.setNativeProps = function setNativeProps( + nativeProps + ) { + { + warnForStyleProps(nativeProps, this.viewConfig.validAttributes); + } + + var updatePayload = create(nativeProps, this.viewConfig.validAttributes); + + // Avoid the overhead of bridge calls if there's no update. + // This is an expensive no-op for Android, and causes an unnecessary + // view invalidation for certain components (eg RCTTextInput) on iOS. + if (updatePayload != null) { + UIManager.updateView( + this._nativeTag, + this.viewConfig.uiViewClassName, + updatePayload + ); + } + }; + + return ReactNativeFiberHostComponent; +})(); + +var hasNativePerformanceNow = + typeof performance === "object" && typeof performance.now === "function"; + +var now = hasNativePerformanceNow + ? function() { + return performance.now(); + } + : function() { + return Date.now(); + }; + +var scheduledCallback = null; +var frameDeadline = 0; + +var frameDeadlineObject = { + timeRemaining: function() { + return frameDeadline - now(); + } +}; + +function setTimeoutCallback() { + // TODO (bvaughn) Hard-coded 5ms unblocks initial async testing. + // React API probably changing to boolean rather than time remaining. + // Longer-term plan is to rewrite this using shared memory, + // And just return the value of the bit as the boolean. + frameDeadline = now() + 5; + + var callback = scheduledCallback; + scheduledCallback = null; + if (callback !== null) { + callback(frameDeadlineObject); + } +} + +// RN has a poor polyfill for requestIdleCallback so we aren't using it. +// This implementation is only intended for short-term use anyway. +// We also don't implement cancel functionality b'c Fiber doesn't currently need it. +function scheduleDeferredCallback(callback) { + // We assume only one callback is scheduled at a time b'c that's how Fiber works. + scheduledCallback = callback; + return setTimeout(setTimeoutCallback, 1); +} + +function cancelDeferredCallback(callbackID) { + scheduledCallback = null; + clearTimeout(callbackID); +} + +// Modules provided by RN: +function recursivelyUncacheFiberNode(node) { + if (typeof node === "number") { + // Leaf node (eg text) + uncacheFiberNode(node); + } else { + uncacheFiberNode(node._nativeTag); + + node._children.forEach(recursivelyUncacheFiberNode); + } +} + +var NativeRenderer = reactReconciler({ + appendInitialChild: function(parentInstance, child) { + parentInstance._children.push(child); + }, + createInstance: function( + type, + props, + rootContainerInstance, + hostContext, + internalInstanceHandle + ) { + var tag = ReactNativeTagHandles.allocateTag(); + var viewConfig = get$1(type); + + { + for (var key in viewConfig.validAttributes) { + if (props.hasOwnProperty(key)) { + deepFreezeAndThrowOnMutationInDev(props[key]); + } + } + } + + var updatePayload = create(props, viewConfig.validAttributes); + + UIManager.createView( + tag, // reactTag + viewConfig.uiViewClassName, // viewName + rootContainerInstance, // rootTag + updatePayload + ); + + var component = new ReactNativeFiberHostComponent(tag, viewConfig); + + precacheFiberNode(internalInstanceHandle, tag); + updateFiberProps(tag, props); + + // Not sure how to avoid this cast. Flow is okay if the component is defined + // in the same file but if it's external it can't see the types. + return component; + }, + createTextInstance: function( + text, + rootContainerInstance, + hostContext, + internalInstanceHandle + ) { + var tag = ReactNativeTagHandles.allocateTag(); + + UIManager.createView( + tag, // reactTag + "RCTRawText", // viewName + rootContainerInstance, // rootTag + { text: text } + ); + + precacheFiberNode(internalInstanceHandle, tag); + + return tag; + }, + finalizeInitialChildren: function( + parentInstance, + type, + props, + rootContainerInstance + ) { + // Don't send a no-op message over the bridge. + if (parentInstance._children.length === 0) { + return false; + } + + // Map from child objects to native tags. + // Either way we need to pass a copy of the Array to prevent it from being frozen. + var nativeTags = parentInstance._children.map(function(child) { + return typeof child === "number" + ? child // Leaf node (eg text) + : child._nativeTag; + }); + + UIManager.setChildren( + parentInstance._nativeTag, // containerTag + nativeTags + ); + + return false; + }, + getRootHostContext: function() { + return emptyObject; + }, + getChildHostContext: function() { + return emptyObject; + }, + getPublicInstance: function(instance) { + return instance; + }, + + now: now, + + prepareForCommit: function() { + // Noop + }, + prepareUpdate: function( + instance, + type, + oldProps, + newProps, + rootContainerInstance, + hostContext + ) { + return emptyObject; + }, + resetAfterCommit: function() { + // Noop + }, + + scheduleDeferredCallback: scheduleDeferredCallback, + cancelDeferredCallback: cancelDeferredCallback, + + shouldDeprioritizeSubtree: function(type, props) { + return false; + }, + shouldSetTextContent: function(type, props) { + // TODO (bvaughn) Revisit this decision. + // Always returning false simplifies the createInstance() implementation, + // But creates an additional child Fiber for raw text children. + // No additional native views are created though. + // It's not clear to me which is better so I'm deferring for now. + // More context @ github.com/facebook/react/pull/8560#discussion_r92111303 + return false; + }, + + useSyncScheduling: true, + + mutation: { + appendChild: function(parentInstance, child) { + var childTag = typeof child === "number" ? child : child._nativeTag; + var children = parentInstance._children; + var index = children.indexOf(child); + + if (index >= 0) { + children.splice(index, 1); + children.push(child); + + UIManager.manageChildren( + parentInstance._nativeTag, // containerTag + [index], // moveFromIndices + [children.length - 1], // moveToIndices + [], // addChildReactTags + [], // addAtIndices + [] + ); + } else { + children.push(child); + + UIManager.manageChildren( + parentInstance._nativeTag, // containerTag + [], // moveFromIndices + [], // moveToIndices + [childTag], // addChildReactTags + [children.length - 1], // addAtIndices + [] + ); + } + }, + appendChildToContainer: function(parentInstance, child) { + var childTag = typeof child === "number" ? child : child._nativeTag; + UIManager.setChildren( + parentInstance, // containerTag + [childTag] + ); + }, + commitTextUpdate: function(textInstance, oldText, newText) { + UIManager.updateView( + textInstance, // reactTag + "RCTRawText", // viewName + { text: newText } + ); + }, + commitMount: function(instance, type, newProps, internalInstanceHandle) { + // Noop + }, + commitUpdate: function( + instance, + updatePayloadTODO, + type, + oldProps, + newProps, + internalInstanceHandle + ) { + var viewConfig = instance.viewConfig; + + updateFiberProps(instance._nativeTag, newProps); + + var updatePayload = diff(oldProps, newProps, viewConfig.validAttributes); + + // Avoid the overhead of bridge calls if there's no update. + // This is an expensive no-op for Android, and causes an unnecessary + // view invalidation for certain components (eg RCTTextInput) on iOS. + if (updatePayload != null) { + UIManager.updateView( + instance._nativeTag, // reactTag + viewConfig.uiViewClassName, // viewName + updatePayload + ); + } + }, + insertBefore: function(parentInstance, child, beforeChild) { + var children = parentInstance._children; + var index = children.indexOf(child); + + // Move existing child or add new child? + if (index >= 0) { + children.splice(index, 1); + var beforeChildIndex = children.indexOf(beforeChild); + children.splice(beforeChildIndex, 0, child); + + UIManager.manageChildren( + parentInstance._nativeTag, // containerID + [index], // moveFromIndices + [beforeChildIndex], // moveToIndices + [], // addChildReactTags + [], // addAtIndices + [] + ); + } else { + var _beforeChildIndex = children.indexOf(beforeChild); + children.splice(_beforeChildIndex, 0, child); + + var childTag = typeof child === "number" ? child : child._nativeTag; + + UIManager.manageChildren( + parentInstance._nativeTag, // containerID + [], // moveFromIndices + [], // moveToIndices + [childTag], // addChildReactTags + [_beforeChildIndex], // addAtIndices + [] + ); + } + }, + insertInContainerBefore: function(parentInstance, child, beforeChild) { + // TODO (bvaughn): Remove this check when... + // We create a wrapper object for the container in ReactNative render() + // Or we refactor to remove wrapper objects entirely. + // For more info on pros/cons see PR #8560 description. + invariant( + typeof parentInstance !== "number", + "Container does not support insertBefore operation" + ); + }, + removeChild: function(parentInstance, child) { + recursivelyUncacheFiberNode(child); + var children = parentInstance._children; + var index = children.indexOf(child); + + children.splice(index, 1); + + UIManager.manageChildren( + parentInstance._nativeTag, // containerID + [], // moveFromIndices + [], // moveToIndices + [], // addChildReactTags + [], // addAtIndices + [index] + ); + }, + removeChildFromContainer: function(parentInstance, child) { + recursivelyUncacheFiberNode(child); + UIManager.manageChildren( + parentInstance, // containerID + [], // moveFromIndices + [], // moveToIndices + [], // addChildReactTags + [], // addAtIndices + [0] + ); + }, + resetTextContent: function(instance) { + // Noop + } + } +}); + +/** + * ReactNative vs ReactWeb + * ----------------------- + * React treats some pieces of data opaquely. This means that the information + * is first class (it can be passed around), but cannot be inspected. This + * allows us to build infrastructure that reasons about resources, without + * making assumptions about the nature of those resources, and this allows that + * infra to be shared across multiple platforms, where the resources are very + * different. General infra (such as `ReactMultiChild`) reasons opaquely about + * the data, but platform specific code (such as `ReactNativeBaseComponent`) can + * make assumptions about the data. + * + * + * `rootNodeID`, uniquely identifies a position in the generated native view + * tree. Many layers of composite components (created with `React.createClass`) + * can all share the same `rootNodeID`. + * + * `nodeHandle`: A sufficiently unambiguous way to refer to a lower level + * resource (dom node, native view etc). The `rootNodeID` is sufficient for web + * `nodeHandle`s, because the position in a tree is always enough to uniquely + * identify a DOM node (we never have nodes in some bank outside of the + * document). The same would be true for `ReactNative`, but we must maintain a + * mapping that we can send efficiently serializable + * strings across native boundaries. + * + * Opaque name TodaysWebReact FutureWebWorkerReact ReactNative + * ---------------------------------------------------------------------------- + * nodeHandle N/A rootNodeID tag + */ + +// TODO (bvaughn) Rename the findNodeHandle module to something more descriptive +// eg findInternalHostInstance. This will reduce the likelihood of someone +// accidentally deep-requiring this version. +function findNodeHandle(componentOrHandle) { + { + var owner = ReactCurrentOwner.current; + if (owner !== null && owner.stateNode !== null) { + warning( + owner.stateNode._warnedAboutRefsInRender, + "%s is accessing findNodeHandle inside its render(). " + + "render() should be a pure function of props and state. It should " + + "never access something that requires stale data from the previous " + + "render, such as refs. Move this logic to componentDidMount and " + + "componentDidUpdate instead.", + getComponentName(owner) || "A component" + ); + + owner.stateNode._warnedAboutRefsInRender = true; + } + } + if (componentOrHandle == null) { + return null; + } + if (typeof componentOrHandle === "number") { + // Already a node handle + return componentOrHandle; + } + + var component = componentOrHandle; + + // TODO (balpert): Wrap iOS native components in a composite wrapper, then + // ReactInstanceMap.get here will always succeed for mounted components + var internalInstance = get(component); + if (internalInstance) { + return NativeRenderer.findHostInstance(internalInstance); + } else { + if (component) { + return component; + } else { + invariant( + // Native + (typeof component === "object" && "_nativeTag" in component) || + // Composite + (component.render != null && typeof component.render === "function"), + "findNodeHandle(...): Argument is not a component " + + "(type: %s, keys: %s)", + typeof component, + Object.keys(component) + ); + invariant( + false, + "findNodeHandle(...): Unable to find node handle for unmounted " + + "component." + ); + } + } +} + +/** + * External users of findNodeHandle() expect the host tag number return type. + * The injected findNodeHandle() strategy returns the instance wrapper though. + * See NativeMethodsMixin#setNativeProps for more info on why this is done. + */ +function findNumericNodeHandleFiber(componentOrHandle) { + var instance = findNodeHandle(componentOrHandle); + if (instance == null || typeof instance === "number") { + return instance; + } + return instance._nativeTag; +} + +// Modules provided by RN: +/** + * `NativeMethodsMixin` provides methods to access the underlying native + * component directly. This can be useful in cases when you want to focus + * a view or measure its on-screen dimensions, for example. + * + * The methods described here are available on most of the default components + * provided by React Native. Note, however, that they are *not* available on + * composite components that aren't directly backed by a native view. This will + * generally include most components that you define in your own app. For more + * information, see [Direct + * Manipulation](docs/direct-manipulation.html). + * + * Note the Flow $Exact<> syntax is required to support mixins. + * React createClass mixins can only be used with exact types. + */ +var NativeMethodsMixin = { + /** + * Determines the location on screen, width, and height of the given view and + * returns the values via an async callback. If successful, the callback will + * be called with the following arguments: + * + * - x + * - y + * - width + * - height + * - pageX + * - pageY + * + * Note that these measurements are not available until after the rendering + * has been completed in native. If you need the measurements as soon as + * possible, consider using the [`onLayout` + * prop](docs/view.html#onlayout) instead. + */ + measure: function(callback) { + UIManager.measure( + findNumericNodeHandleFiber(this), + mountSafeCallback(this, callback) + ); + }, + + /** + * Determines the location of the given view in the window and returns the + * values via an async callback. If the React root view is embedded in + * another native view, this will give you the absolute coordinates. If + * successful, the callback will be called with the following + * arguments: + * + * - x + * - y + * - width + * - height + * + * Note that these measurements are not available until after the rendering + * has been completed in native. + */ + measureInWindow: function(callback) { + UIManager.measureInWindow( + findNumericNodeHandleFiber(this), + mountSafeCallback(this, callback) + ); + }, + + /** + * Like [`measure()`](#measure), but measures the view relative an ancestor, + * specified as `relativeToNativeNode`. This means that the returned x, y + * are relative to the origin x, y of the ancestor view. + * + * As always, to obtain a native node handle for a component, you can use + * `findNumericNodeHandle(component)`. + */ + measureLayout: function( + relativeToNativeNode, + onSuccess, + onFail /* currently unused */ + ) { + UIManager.measureLayout( + findNumericNodeHandleFiber(this), + relativeToNativeNode, + mountSafeCallback(this, onFail), + mountSafeCallback(this, onSuccess) + ); + }, + + /** + * This function sends props straight to native. They will not participate in + * future diff process - this means that if you do not include them in the + * next render, they will remain active (see [Direct + * Manipulation](docs/direct-manipulation.html)). + */ + setNativeProps: function(nativeProps) { + // Class components don't have viewConfig -> validateAttributes. + // Nor does it make sense to set native props on a non-native component. + // Instead, find the nearest host component and set props on it. + // Use findNodeHandle() rather than findNumericNodeHandle() because + // We want the instance/wrapper (not the native tag). + var maybeInstance = void 0; + + // Fiber errors if findNodeHandle is called for an umounted component. + // Tests using ReactTestRenderer will trigger this case indirectly. + // Mimicking stack behavior, we should silently ignore this case. + // TODO Fix ReactTestRenderer so we can remove this try/catch. + try { + maybeInstance = findNodeHandle(this); + } catch (error) {} + + // If there is no host component beneath this we should fail silently. + // This is not an error; it could mean a class component rendered null. + if (maybeInstance == null) { + return; + } + + var viewConfig = maybeInstance.viewConfig; + + { + warnForStyleProps(nativeProps, viewConfig.validAttributes); + } + + var updatePayload = create(nativeProps, viewConfig.validAttributes); + + // Avoid the overhead of bridge calls if there's no update. + // This is an expensive no-op for Android, and causes an unnecessary + // view invalidation for certain components (eg RCTTextInput) on iOS. + if (updatePayload != null) { + UIManager.updateView( + maybeInstance._nativeTag, + viewConfig.uiViewClassName, + updatePayload + ); + } + }, + + /** + * Requests focus for the given input or view. The exact behavior triggered + * will depend on the platform and type of view. + */ + focus: function() { + TextInputState.focusTextInput(findNumericNodeHandleFiber(this)); + }, + + /** + * Removes focus from an input or view. This is the opposite of `focus()`. + */ + blur: function() { + TextInputState.blurTextInput(findNumericNodeHandleFiber(this)); + } +}; + +{ + // hide this from Flow since we can't define these properties outside of + // true without actually implementing them (setting them to undefined + // isn't allowed by ReactClass) + var NativeMethodsMixin_DEV = NativeMethodsMixin; + invariant( + !NativeMethodsMixin_DEV.componentWillMount && + !NativeMethodsMixin_DEV.componentWillReceiveProps, + "Do not override existing functions." + ); + NativeMethodsMixin_DEV.componentWillMount = function() { + throwOnStylesProp(this, this.props); + }; + NativeMethodsMixin_DEV.componentWillReceiveProps = function(newProps) { + throwOnStylesProp(this, newProps); + }; +} + +function _classCallCheck$2(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError( + "this hasn't been initialised - super() hasn't been called" + ); + } + return call && (typeof call === "object" || typeof call === "function") + ? call + : self; +} + +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError( + "Super expression must either be null or a function, not " + + typeof superClass + ); + } + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) + Object.setPrototypeOf + ? Object.setPrototypeOf(subClass, superClass) + : (subClass.__proto__ = superClass); +} + +// Modules provided by RN: +/** + * Superclass that provides methods to access the underlying native component. + * This can be useful when you want to focus a view or measure its dimensions. + * + * Methods implemented by this class are available on most default components + * provided by React Native. However, they are *not* available on composite + * components that are not directly backed by a native view. For more + * information, see [Direct Manipulation](docs/direct-manipulation.html). + * + * @abstract + */ + +var ReactNativeComponent = (function(_React$Component) { + _inherits(ReactNativeComponent, _React$Component); + + function ReactNativeComponent() { + _classCallCheck$2(this, ReactNativeComponent); + + return _possibleConstructorReturn( + this, + _React$Component.apply(this, arguments) + ); + } + + /** + * Removes focus. This is the opposite of `focus()`. + */ + ReactNativeComponent.prototype.blur = function blur() { + TextInputState.blurTextInput(findNumericNodeHandleFiber(this)); + }; + + /** + * Requests focus. The exact behavior depends on the platform and view. + */ + + ReactNativeComponent.prototype.focus = function focus() { + TextInputState.focusTextInput(findNumericNodeHandleFiber(this)); + }; + + /** + * Measures the on-screen location and dimensions. If successful, the callback + * will be called asynchronously with the following arguments: + * + * - x + * - y + * - width + * - height + * - pageX + * - pageY + * + * These values are not available until after natives rendering completes. If + * you need the measurements as soon as possible, consider using the + * [`onLayout` prop](docs/view.html#onlayout) instead. + */ + + ReactNativeComponent.prototype.measure = function measure(callback) { + UIManager.measure( + findNumericNodeHandleFiber(this), + mountSafeCallback(this, callback) + ); + }; + + /** + * Measures the on-screen location and dimensions. Even if the React Native + * root view is embedded within another native view, this method will give you + * the absolute coordinates measured from the window. If successful, the + * callback will be called asynchronously with the following arguments: + * + * - x + * - y + * - width + * - height + * + * These values are not available until after natives rendering completes. + */ + + ReactNativeComponent.prototype.measureInWindow = function measureInWindow( + callback + ) { + UIManager.measureInWindow( + findNumericNodeHandleFiber(this), + mountSafeCallback(this, callback) + ); + }; + + /** + * Similar to [`measure()`](#measure), but the resulting location will be + * relative to the supplied ancestor's location. + * + * Obtain a native node handle with `ReactNative.findNodeHandle(component)`. + */ + + ReactNativeComponent.prototype.measureLayout = function measureLayout( + relativeToNativeNode, + onSuccess, + onFail /* currently unused */ + ) { + UIManager.measureLayout( + findNumericNodeHandleFiber(this), + relativeToNativeNode, + mountSafeCallback(this, onFail), + mountSafeCallback(this, onSuccess) + ); + }; + + /** + * This function sends props straight to native. They will not participate in + * future diff process - this means that if you do not include them in the + * next render, they will remain active (see [Direct + * Manipulation](docs/direct-manipulation.html)). + */ + + ReactNativeComponent.prototype.setNativeProps = function setNativeProps( + nativeProps + ) { + // Class components don't have viewConfig -> validateAttributes. + // Nor does it make sense to set native props on a non-native component. + // Instead, find the nearest host component and set props on it. + // Use findNodeHandle() rather than ReactNative.findNodeHandle() because + // We want the instance/wrapper (not the native tag). + var maybeInstance = void 0; + + // Fiber errors if findNodeHandle is called for an umounted component. + // Tests using ReactTestRenderer will trigger this case indirectly. + // Mimicking stack behavior, we should silently ignore this case. + // TODO Fix ReactTestRenderer so we can remove this try/catch. + try { + maybeInstance = findNodeHandle(this); + } catch (error) {} + + // If there is no host component beneath this we should fail silently. + // This is not an error; it could mean a class component rendered null. + if (maybeInstance == null) { + return; + } + + var viewConfig = maybeInstance.viewConfig; + + var updatePayload = create(nativeProps, viewConfig.validAttributes); + + // Avoid the overhead of bridge calls if there's no update. + // This is an expensive no-op for Android, and causes an unnecessary + // view invalidation for certain components (eg RCTTextInput) on iOS. + if (updatePayload != null) { + UIManager.updateView( + maybeInstance._nativeTag, + viewConfig.uiViewClassName, + updatePayload + ); + } + }; + + return ReactNativeComponent; +})(React.Component); + +// Module provided by RN: +var getInspectorDataForViewTag = void 0; + +{ + var traverseOwnerTreeUp = function(hierarchy, instance) { + if (instance) { + hierarchy.unshift(instance); + traverseOwnerTreeUp(hierarchy, instance._debugOwner); + } + }; + + var getOwnerHierarchy = function(instance) { + var hierarchy = []; + traverseOwnerTreeUp(hierarchy, instance); + return hierarchy; + }; + + var lastNonHostInstance = function(hierarchy) { + for (var i = hierarchy.length - 1; i > 1; i--) { + var instance = hierarchy[i]; + + if (instance.tag !== HostComponent) { + return instance; + } + } + return hierarchy[0]; + }; + + var getHostProps = function(fiber) { + var host = findCurrentHostFiber(fiber); + if (host) { + return host.memoizedProps || emptyObject; + } + return emptyObject; + }; + + var getHostNode = function(fiber, findNodeHandle) { + var hostNode = void 0; + // look for children first for the hostNode + // as composite fibers do not have a hostNode + while (fiber) { + if (fiber.stateNode !== null && fiber.tag === HostComponent) { + hostNode = findNodeHandle(fiber.stateNode); + } + if (hostNode) { + return hostNode; + } + fiber = fiber.child; + } + return null; + }; + + var createHierarchy = function(fiberHierarchy) { + return fiberHierarchy.map(function(fiber) { + return { + name: getComponentName(fiber), + getInspectorData: function(findNodeHandle) { + return { + measure: function(callback) { + return UIManager.measure( + getHostNode(fiber, findNodeHandle), + callback + ); + }, + props: getHostProps(fiber), + source: fiber._debugSource + }; + } + }; + }); + }; + + getInspectorDataForViewTag = function(viewTag) { + var closestInstance = getInstanceFromTag(viewTag); + + // Handle case where user clicks outside of ReactNative + if (!closestInstance) { + return { + hierarchy: [], + props: emptyObject, + selection: null, + source: null + }; + } + + var fiber = findCurrentFiberUsingSlowPath(closestInstance); + var fiberHierarchy = getOwnerHierarchy(fiber); + var instance = lastNonHostInstance(fiberHierarchy); + var hierarchy = createHierarchy(fiberHierarchy); + var props = getHostProps(instance); + var source = instance._debugSource; + var selection = fiberHierarchy.indexOf(instance); + + return { + hierarchy: hierarchy, + props: props, + selection: selection, + source: source + }; + }; +} + +/** + * Creates a renderable ReactNative host component. + * Use this method for view configs that are loaded from UIManager. + * Use createReactNativeComponentClass() for view configs defined within JavaScript. + * + * @param {string} config iOS View configuration. + * @private + */ +var createReactNativeComponentClass = function(name, callback) { + return register(name, callback); +}; + +// Module provided by RN: +/** + * Capture an image of the screen, window or an individual view. The image + * will be stored in a temporary file that will only exist for as long as the + * app is running. + * + * The `view` argument can be the literal string `window` if you want to + * capture the entire window, or it can be a reference to a specific + * React Native component. + * + * The `options` argument may include: + * - width/height (number) - the width and height of the image to capture. + * - format (string) - either 'png' or 'jpeg'. Defaults to 'png'. + * - quality (number) - the quality when using jpeg. 0.0 - 1.0 (default). + * + * Returns a Promise. + * @platform ios + */ +function takeSnapshot(view, options) { + if (typeof view !== "number" && view !== "window") { + view = findNumericNodeHandleFiber(view) || "window"; + } + + // Call the hidden '__takeSnapshot' method; the main one throws an error to + // prevent accidental backwards-incompatible usage. + return UIManager.__takeSnapshot(view, options); +} + +// TODO: direct imports like some-package/src/* are bad. Fix me. +// Module provided by RN: +injection$2.injectFiberBatchedUpdates(NativeRenderer.batchedUpdates); + +var roots = new Map(); + +// Intercept lifecycle errors and ensure they are shown with the correct stack +// trace within the native redbox component. +injection$4.injectDialog(showDialog$1); + +var ReactNativeRenderer = { + NativeComponent: ReactNativeComponent, + + findNodeHandle: findNumericNodeHandleFiber, + + render: function(element, containerTag, callback) { + var root = roots.get(containerTag); + + if (!root) { + // TODO (bvaughn): If we decide to keep the wrapper component, + // We could create a wrapper for containerTag as well to reduce special casing. + root = NativeRenderer.createContainer(containerTag, false); + roots.set(containerTag, root); + } + NativeRenderer.updateContainer(element, root, null, callback); + + return NativeRenderer.getPublicRootInstance(root); + }, + unmountComponentAtNode: function(containerTag) { + var root = roots.get(containerTag); + if (root) { + // TODO: Is it safe to reset this now or should I wait since this unmount could be deferred? + NativeRenderer.updateContainer(null, root, null, function() { + roots["delete"](containerTag); + }); + } + }, + unmountComponentAtNodeAndRemoveContainer: function(containerTag) { + ReactNativeRenderer.unmountComponentAtNode(containerTag); + + // Call back into native to remove all of the subviews from this container + UIManager.removeRootView(containerTag); + }, + createPortal: function(children, containerTag) { + var key = + arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + return createPortal(children, containerTag, null, key); + }, + + unstable_batchedUpdates: batchedUpdates, + + flushSync: NativeRenderer.flushSync, + + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + // Used as a mixin in many createClass-based components + NativeMethodsMixin: NativeMethodsMixin, + // Used by react-native-github/Libraries/ components + ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin, // requireNativeComponent + ReactGlobalSharedState: ReactGlobalSharedState, // Systrace + ReactNativeComponentTree: ReactNativeComponentTree, // InspectorUtils, ScrollResponder + ReactNativePropRegistry: ReactNativePropRegistry, // flattenStyle, Stylesheet + TouchHistoryMath: TouchHistoryMath, // PanResponder + createReactNativeComponentClass: createReactNativeComponentClass, // RCTText, RCTView, ReactNativeART + takeSnapshot: takeSnapshot + } +}; + +{ + // $FlowFixMe + Object.assign( + ReactNativeRenderer.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, + { + // TODO: none of these work since Fiber. Remove these dependencies. + // Used by RCTRenderingPerf, Systrace: + ReactDebugTool: { + addHook: function() {}, + removeHook: function() {} + }, + // Used by ReactPerfStallHandler, RCTRenderingPerf: + ReactPerf: { + start: function() {}, + stop: function() {}, + printInclusive: function() {}, + printWasted: function() {} + } + } + ); +} + +NativeRenderer.injectIntoDevTools({ + findFiberByHostInstance: getInstanceFromTag, + getInspectorDataForViewTag: getInspectorDataForViewTag, + bundleType: 1, + version: ReactVersion, + rendererPackageName: "react-native-renderer" +}); + +var ReactNativeRenderer$2 = Object.freeze({ + default: ReactNativeRenderer +}); + +var ReactNativeRenderer$3 = + (ReactNativeRenderer$2 && ReactNativeRenderer) || ReactNativeRenderer$2; + +// TODO: decide on the top-level export form. +// This is hacky but makes it work with both Rollup and Jest. +var reactNativeRenderer = ReactNativeRenderer$3["default"] + ? ReactNativeRenderer$3["default"] + : ReactNativeRenderer$3; + +module.exports = reactNativeRenderer; + + })(); +} diff --git a/app/src/component/AppNavigator.js b/app/src/component/AppNavigator.js new file mode 100644 index 00000000..278aa1c5 --- /dev/null +++ b/app/src/component/AppNavigator.js @@ -0,0 +1,84 @@ +import React from 'react'; +import DiscoverPage from '../page/discover'; +import FilePage from '../page/file'; +import SplashScreen from '../page/splash'; +import { addNavigationHelpers, DrawerNavigator, StackNavigator } from 'react-navigation'; +import { connect } from 'react-redux'; +import { addListener } from '../utils/redux'; +import { BackHandler } from 'react-native'; +import Feather from 'react-native-vector-icons/Feather'; +import discoverStyle from '../styles/discover'; + +const discoverStack = StackNavigator({ + Discover: { + screen: DiscoverPage, + navigationOptions: ({ navigation }) => ({ + title: 'Discover', + headerLeft: navigation.navigate('DrawerOpen')} /> + }) + }, + File: { + screen: FilePage, + navigationOptions: { + header: null + } + } +}, { + headerMode: 'screen', +}); + +const drawer = DrawerNavigator({ + Discover: { screen: discoverStack }, +}, { + drawerWidth: 300, + headerMode: 'none' +}); + +export const AppNavigator = new StackNavigator({ + Splash: { + screen: SplashScreen + }, + Main: { + screen: drawer + } +}, { + headerMode: 'none' +}); + +class AppWithNavigationState extends React.Component { + componentWillMount() { + BackHandler.addEventListener('hardwareBackPress', function() { + const { dispatch, navigation, nav } = this.props; + if (nav.routes.length === 2 && nav.routes[1].routeName === 'Main') { + if (nav.routes[1].routes[0].routes[0].index > 0) { + dispatch({ type: 'Navigation/BACK' }); + return true; + } + } + return false; + }.bind(this)); + } + + componentWillUnmount() { + BackHandler.removeEventListener('hardwareBackPress'); + } + + render() { + const { dispatch, nav } = this.props; + return ( + + ); + } +} + +const mapStateToProps = state => ({ + nav: state.nav, +}); + +export default connect(mapStateToProps)(AppWithNavigationState); \ No newline at end of file diff --git a/app/src/component/featuredCategory/index.js b/app/src/component/featuredCategory/index.js new file mode 100644 index 00000000..7f4f5f14 --- /dev/null +++ b/app/src/component/featuredCategory/index.js @@ -0,0 +1,7 @@ +import { connect } from 'react-redux'; +import FeaturedCategory from './view'; + +const select = state => ({}); +const perform = dispatch => ({}); + +export default connect(select, perform)(FeaturedCategory); diff --git a/app/src/component/featuredCategory/view.js b/app/src/component/featuredCategory/view.js new file mode 100644 index 00000000..874428af --- /dev/null +++ b/app/src/component/featuredCategory/view.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { Text, View } from 'react-native'; +import { normalizeURI } from 'lbry-redux'; +import FileItem from '../fileItem'; +import discoverStyle from '../../styles/discover'; + +class FeaturedCategory extends React.PureComponent { + render() { + const { category, names, categoryLink, navigation } = this.props; + + return ( + + {category} + {names && + names.map(name => ( + + ))} + + ); + } +} + +export default FeaturedCategory; \ No newline at end of file diff --git a/app/src/component/fileItem/index.js b/app/src/component/fileItem/index.js new file mode 100644 index 00000000..159f3c26 --- /dev/null +++ b/app/src/component/fileItem/index.js @@ -0,0 +1,25 @@ +import { connect } from 'react-redux'; +import { + doResolveUri, + makeSelectClaimForUri, + makeSelectMetadataForUri, + makeSelectFileInfoForUri, + makeSelectIsUriResolving, + selectRewardContentClaimIds +} from 'lbry-redux'; +/*import { selectShowNsfw } from 'redux/selectors/settings';*/ +import FileItem from './view'; + +const select = (state, props) => ({ + claim: makeSelectClaimForUri(props.uri)(state), + fileInfo: makeSelectFileInfoForUri(props.uri)(state), + metadata: makeSelectMetadataForUri(props.uri)(state), + rewardedContentClaimIds: selectRewardContentClaimIds(state, props), + isResolvingUri: makeSelectIsUriResolving(props.uri)(state), +}); + +const perform = dispatch => ({ + resolveUri: uri => dispatch(doResolveUri(uri)), +}); + +export default connect(select, perform)(FileItem); \ No newline at end of file diff --git a/app/src/component/fileItem/view.js b/app/src/component/fileItem/view.js new file mode 100644 index 00000000..baffe747 --- /dev/null +++ b/app/src/component/fileItem/view.js @@ -0,0 +1,71 @@ +import React from 'react'; +import { normalizeURI } from 'lbry-redux'; +import { NavigationActions } from 'react-navigation'; +import { Text, View, TouchableOpacity } from 'react-native'; +import FileItemMedia from '../fileItemMedia'; +import FilePrice from '../filePrice'; +import discoverStyle from '../../styles/discover'; + +class FileItem extends React.PureComponent { + constructor(props) { + super(props); + } + + componentWillMount() { + this.resolve(this.props); + } + + componentWillReceiveProps(nextProps) { + this.resolve(nextProps); + } + + resolve(props) { + const { isResolvingUri, resolveUri, claim, uri } = props; + + if (!isResolvingUri && claim === undefined && uri) { + resolveUri(uri); + } + } + + render() { + const { + claim, + fileInfo, + metadata, + isResolvingUri, + rewardedContentClaimIds, + style + } = this.props; + + const uri = normalizeURI(this.props.uri); + const title = metadata && metadata.title ? metadata.title : uri; + const thumbnail = metadata && metadata.thumbnail ? metadata.thumbnail : null; + const obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; + const isRewardContent = claim && rewardedContentClaimIds.includes(claim.claim_id); + const channelName = claim ? claim.channel_name : null; + + let description = ''; + if (isResolvingUri && !claim) { + description = 'Loading...'; + } else if (metadata && metadata.description) { + description = metadata.description; + } else if (claim === null) { + description = 'This address contains no content.'; + } + + return ( + { + this.props.navigation.navigate('File', { uri: uri }); + } + }> + + + {title} + {channelName && + {channelName}} + + ); + } +} + +export default FileItem; \ No newline at end of file diff --git a/app/src/component/fileItemMedia/index.js b/app/src/component/fileItemMedia/index.js new file mode 100644 index 00000000..78665ebf --- /dev/null +++ b/app/src/component/fileItemMedia/index.js @@ -0,0 +1,7 @@ +import { connect } from 'react-redux'; +import FileItemMedia from './view'; + +const select = state => ({}); +const perform = dispatch => ({}); + +export default connect(select, perform)(FileItemMedia); diff --git a/app/src/component/fileItemMedia/view.js b/app/src/component/fileItemMedia/view.js new file mode 100644 index 00000000..69ffbf9c --- /dev/null +++ b/app/src/component/fileItemMedia/view.js @@ -0,0 +1,56 @@ +import React from 'react'; +import { Text, Image, View } from 'react-native'; +import fileItemMediaStyle from '../../styles/fileItemMedia'; + +class FileItemMedia extends React.PureComponent { + static AUTO_THUMB_STYLES = [ + fileItemMediaStyle.autothumbPurple, + fileItemMediaStyle.autothumbRed, + fileItemMediaStyle.autothumbPink, + fileItemMediaStyle.autothumbIndigo, + fileItemMediaStyle.autothumbBlue, + fileItemMediaStyle.autothumbLightBlue, + fileItemMediaStyle.autothumbCyan, + fileItemMediaStyle.autothumbTeal, + fileItemMediaStyle.autothumbGreen, + fileItemMediaStyle.autothumbYellow, + fileItemMediaStyle.autothumbOrange, + ]; + + componentWillMount() { + this.setState({ + autoThumbStyle: + FileItemMedia.AUTO_THUMB_STYLES[ + Math.floor(Math.random() * FileItemMedia.AUTO_THUMB_STYLES.length) + ], + }); + } + + render() { + let style = this.props.style; + const { title, thumbnail } = this.props; + const atStyle = this.state.autoThumbStyle; + + if (thumbnail && ((typeof thumbnail) === 'string')) { + if (style == null) { + style = fileItemMediaStyle.thumbnail; + } + + return ( + + ); + } + + return ( + + {title && + title + .replace(/\s+/g, '') + .substring(0, Math.min(title.replace(' ', '').length, 5)) + .toUpperCase()} + + ); + } +} + +export default FileItemMedia; diff --git a/app/src/component/filePrice/index.js b/app/src/component/filePrice/index.js new file mode 100644 index 00000000..7f401c45 --- /dev/null +++ b/app/src/component/filePrice/index.js @@ -0,0 +1,20 @@ +import { connect } from 'react-redux'; +import { + doFetchCostInfoForUri, + makeSelectCostInfoForUri, + makeSelectFetchingCostInfoForUri, + makeSelectClaimForUri +} from 'lbry-redux'; +import FilePrice from './view'; + +const select = (state, props) => ({ + costInfo: makeSelectCostInfoForUri(props.uri)(state), + fetching: makeSelectFetchingCostInfoForUri(props.uri)(state), + claim: makeSelectClaimForUri(props.uri)(state), +}); + +const perform = dispatch => ({ + fetchCostInfo: uri => dispatch(doFetchCostInfoForUri(uri)), +}); + +export default connect(select, perform)(FilePrice); diff --git a/app/src/component/filePrice/view.js b/app/src/component/filePrice/view.js new file mode 100644 index 00000000..59d9daae --- /dev/null +++ b/app/src/component/filePrice/view.js @@ -0,0 +1,120 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Text, View } from 'react-native'; +import { formatCredits, formatFullPrice } from 'lbry-redux'; + +class CreditAmount extends React.PureComponent { + static propTypes = { + amount: PropTypes.number.isRequired, + precision: PropTypes.number, + isEstimate: PropTypes.bool, + label: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]), + showFree: PropTypes.bool, + showFullPrice: PropTypes.bool, + showPlus: PropTypes.bool, + look: PropTypes.oneOf(['indicator', 'plain', 'fee']), + }; + + static defaultProps = { + precision: 2, + label: true, + showFree: false, + look: 'indicator', + showFullPrice: false, + showPlus: false, + }; + + render() { + const minimumRenderableAmount = Math.pow(10, -1 * this.props.precision); + const { amount, precision, showFullPrice, style } = this.props; + + let formattedAmount; + const fullPrice = formatFullPrice(amount, 2); + + if (showFullPrice) { + formattedAmount = fullPrice; + } else { + formattedAmount = + amount > 0 && amount < minimumRenderableAmount + ? `<${minimumRenderableAmount}` + : formatCredits(amount, precision); + } + + let amountText; + if (this.props.showFree && parseFloat(this.props.amount) === 0) { + amountText = 'FREE'; + } else { + if (this.props.label) { + const label = + typeof this.props.label === 'string' + ? this.props.label + : parseFloat(amount) == 1 ? 'credit' : 'credits'; + + amountText = `${formattedAmount} ${label}`; + } else { + amountText = formattedAmount; + } + if (this.props.showPlus && amount > 0) { + amountText = `+${amountText}`; + } + } + + /*{this.props.isEstimate ? ( + + * + + ) : null}*/ + return ( + {amountText} + ); + } +} + +class FilePrice extends React.PureComponent { + componentWillMount() { + this.fetchCost(this.props); + } + + componentWillReceiveProps(nextProps) { + this.fetchCost(nextProps); + } + + fetchCost(props) { + const { costInfo, fetchCostInfo, uri, fetching, claim } = props; + + if (costInfo === undefined && !fetching && claim) { + fetchCostInfo(uri); + } + } + + render() { + const { costInfo, look = 'indicator', showFullPrice = false, style, textStyle } = this.props; + + const isEstimate = costInfo ? !costInfo.includesData : null; + + if (!costInfo) { + return ( + + ??? + + ) + } + + return ( + + ??? + + ); + } +} + +export default FilePrice; \ No newline at end of file diff --git a/app/src/index.js b/app/src/index.js new file mode 100644 index 00000000..c3352310 --- /dev/null +++ b/app/src/index.js @@ -0,0 +1,116 @@ +import React from 'react'; +import { Provider, connect } from 'react-redux'; +import DiscoverPage from './page/discover'; +import { AppRegistry, StyleSheet, Text, View, AsyncStorage } from 'react-native'; +import { createStore, applyMiddleware, compose, combineReducers } from 'redux'; +import { + StackNavigator, addNavigationHelpers +} from 'react-navigation'; +import { AppNavigator } from './component/AppNavigator'; +import AppWithNavigationState from './component/AppNavigator'; +import { persistStore, autoRehydrate } from 'redux-persist'; +import createCompressor from 'redux-persist-transform-compress'; +import createFilter from 'redux-persist-transform-filter'; +import thunk from 'redux-thunk'; +import { + Lbry, + claimsReducer, + costInfoReducer, + fileInfoReducer, + searchReducer, + walletReducer +} from 'lbry-redux'; +import { reactNavigationMiddleware } from './utils/redux'; + +function isFunction(object) { + return typeof object === 'function'; +} + +function isNotFunction(object) { + return !isFunction(object); +} + +function createBulkThunkMiddleware() { + return ({ dispatch, getState }) => next => action => { + if (action.type === 'BATCH_ACTIONS') { + action.actions.filter(isFunction).map(actionFn => actionFn(dispatch, getState)); + } + return next(action); + }; +} + +function enableBatching(reducer) { + return function batchingReducer(state, action) { + switch (action.type) { + case 'BATCH_ACTIONS': + return action.actions.filter(isNotFunction).reduce(batchingReducer, state); + default: + return reducer(state, action); + } + }; +} + +const router = AppNavigator.router; +const navAction = router.getActionForPathAndParams('Splash'); +const initialNavState = router.getStateForAction(navAction); +const navigatorReducer = (state = initialNavState, action) => { + const nextState = AppNavigator.router.getStateForAction(action, state); + return nextState || state; +}; + +const reducers = combineReducers({ + claims: claimsReducer, + costInfo: costInfoReducer, + fileInfo: fileInfoReducer, + search: searchReducer, + wallet: walletReducer, + nav: navigatorReducer +}); + +const bulkThunk = createBulkThunkMiddleware(); +const middleware = [thunk, bulkThunk, reactNavigationMiddleware]; + +// eslint-disable-next-line no-underscore-dangle +const composeEnhancers = compose; + +const store = createStore( + enableBatching(reducers), + {}, // initial state, + composeEnhancers( + autoRehydrate(), + applyMiddleware(...middleware) + ) +); + +const compressor = createCompressor(); +const saveClaimsFilter = createFilter('claims', ['byId', 'claimsByUri']); +const subscriptionsFilter = createFilter('subscriptions', ['subscriptions']); + +const persistOptions = { + whitelist: ['claims', 'subscriptions'], + // Order is important. Needs to be compressed last or other transforms can't + // read the data + transforms: [saveClaimsFilter, subscriptionsFilter, compressor], + debounce: 10000, + storage: AsyncStorage +}; + +persistStore(store, persistOptions, err => { + if (err) { + console.log('Unable to load saved SETTINGS'); + } +}); + +class LBRYApp extends React.Component { + render() { + return ( + + + + ); + } +} + +AppRegistry.registerComponent('LBRYApp', () => LBRYApp); + +export default LBRYApp; diff --git a/app/src/page/discover/index.js b/app/src/page/discover/index.js new file mode 100644 index 00000000..a587686d --- /dev/null +++ b/app/src/page/discover/index.js @@ -0,0 +1,14 @@ +import { connect } from 'react-redux'; +import { doFetchFeaturedUris, selectFeaturedUris, selectFetchingFeaturedUris } from 'lbry-redux'; +import DiscoverPage from './view'; + +const select = state => ({ + featuredUris: selectFeaturedUris(state), + fetchingFeaturedUris: selectFetchingFeaturedUris(state), +}); + +const perform = dispatch => ({ + fetchFeaturedUris: () => dispatch(doFetchFeaturedUris()), +}); + +export default connect(select, perform)(DiscoverPage); \ No newline at end of file diff --git a/app/src/page/discover/view.js b/app/src/page/discover/view.js new file mode 100644 index 00000000..2132cb73 --- /dev/null +++ b/app/src/page/discover/view.js @@ -0,0 +1,44 @@ +import React from 'react'; +import FeaturedCategory from '../../component/featuredCategory'; +import NavigationActions from 'react-navigation'; +import { Text, View, ScrollView } from 'react-native'; +import discoverStyle from '../../styles/discover'; +import Feather from 'react-native-vector-icons/Feather'; + +class DiscoverPage extends React.PureComponent { + componentWillMount() { + this.props.fetchFeaturedUris(); + } + + render() { + const { featuredUris, fetchingFeaturedUris } = this.props; + const hasContent = typeof featuredUris === 'object' && Object.keys(featuredUris).length, + failedToLoad = !fetchingFeaturedUris && !hasContent; + + return ( + + {!hasContent && fetchingFeaturedUris && Fetching content...} + {hasContent && + + {hasContent && + Object.keys(featuredUris).map( + category => + featuredUris[category].length ? ( + + ) : ( + '' + ) + )} + + } + + ); + } +} + +export default DiscoverPage; diff --git a/app/src/page/file/index.js b/app/src/page/file/index.js new file mode 100644 index 00000000..b6207039 --- /dev/null +++ b/app/src/page/file/index.js @@ -0,0 +1,34 @@ +import { connect } from 'react-redux'; +import { + doFetchFileInfo, + makeSelectFileInfoForUri, + doFetchCostInfoForUri, + makeSelectClaimForUri, + makeSelectContentTypeForUri, + makeSelectMetadataForUri, + selectRewardContentClaimIds, + makeSelectCostInfoForUri +} from 'lbry-redux'; +//import { selectShowNsfw } from 'redux/selectors/settings'; +import FilePage from './view'; + +const select = (state, props) => { + const selectProps = { uri: props.navigation.state.params.uri }; + return { + claim: makeSelectClaimForUri(selectProps.uri)(state), + contentType: makeSelectContentTypeForUri(selectProps.uri)(state), + costInfo: makeSelectCostInfoForUri(selectProps.uri)(state), + metadata: makeSelectMetadataForUri(selectProps.uri)(state), + //obscureNsfw: !selectShowNsfw(state), + //tab: makeSelectCurrentParam('tab')(state), + fileInfo: makeSelectFileInfoForUri(selectProps.uri)(state), + rewardedContentClaimIds: selectRewardContentClaimIds(state, selectProps), + }; +}; + +const perform = dispatch => ({ + fetchFileInfo: uri => dispatch(doFetchFileInfo(uri)), + fetchCostInfo: uri => dispatch(doFetchCostInfoForUri(uri)), +}); + +export default connect(select, perform)(FilePage); diff --git a/app/src/page/file/view.js b/app/src/page/file/view.js new file mode 100644 index 00000000..bad1700e --- /dev/null +++ b/app/src/page/file/view.js @@ -0,0 +1,79 @@ +import React from 'react'; +import { Text, View, ScrollView } from 'react-native'; +import filePageStyle from '../../styles/filePage'; +import FileItemMedia from '../../component/fileItemMedia'; + +class FilePage extends React.PureComponent { + static navigationOptions = { + title: '' + }; + + componentDidMount() { + this.fetchFileInfo(this.props); + this.fetchCostInfo(this.props); + } + + componentWillReceiveProps(nextProps) { + this.fetchFileInfo(nextProps); + } + + fetchFileInfo(props) { + if (props.fileInfo === undefined) { + props.fetchFileInfo(props.navigation.state.params.uri); + } + } + + fetchCostInfo(props) { + if (props.costInfo === undefined) { + props.fetchCostInfo(props.navigation.state.params.uri); + } + } + + render() { + const { + claim, + fileInfo, + metadata, + contentType, + tab, + uri, + rewardedContentClaimIds, + } = this.props; + + if (!claim || !metadata) { + return ( + + Empty claim or metadata info. + + ); + } + + const title = metadata.title; + const isRewardContent = rewardedContentClaimIds.includes(claim.claim_id); + const description = metadata.description ? metadata.description : null; + //const mediaType = lbry.getMediaType(contentType); + //const player = require('render-media'); + //const obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; + /*const isPlayable = + Object.values(player.mime).indexOf(contentType) !== -1 || mediaType === 'audio';*/ + const { height, channel_name: channelName, value } = claim; + const channelClaimId = + value && value.publisherSignature && value.publisherSignature.certificateId; + + + return ( + + + + + + {title} + {channelName && {channelName}} + {description && {description}} + + + ); + } +} + +export default FilePage; diff --git a/app/src/page/splash/index.js b/app/src/page/splash/index.js new file mode 100644 index 00000000..bd0a78af --- /dev/null +++ b/app/src/page/splash/index.js @@ -0,0 +1,7 @@ +import { connect } from 'react-redux'; +import SplashScreen from './view'; + +const select = state => ({}); +const perform = dispatch => ({}); + +export default connect(select, perform)(SplashScreen); \ No newline at end of file diff --git a/app/src/page/splash/view.js b/app/src/page/splash/view.js new file mode 100644 index 00000000..0505c461 --- /dev/null +++ b/app/src/page/splash/view.js @@ -0,0 +1,97 @@ +import React from 'react'; +import { Lbry } from 'lbry-redux'; +import { View, Text } from 'react-native'; +import PropTypes from 'prop-types'; +import splashStyle from '../../styles/splash'; + +class SplashScreen extends React.PureComponent { + static navigationOptions = { + title: 'Splash' + }; + + componentWillMount() { + this.setState({ + details: 'Starting daemon', + message: 'Connecting', + isRunning: false, + isLagging: false, + }); + } + + updateStatus() { + Lbry.status().then(status => { + this._updateStatusCallback(status); + }); + } + + _updateStatusCallback(status) { + const startupStatus = status.startup_status; + if (startupStatus.code == 'started') { + // Wait until we are able to resolve a name before declaring + // that we are done. + // TODO: This is a hack, and the logic should live in the daemon + // to give us a better sense of when we are actually started + this.setState({ + message: 'Testing Network', + details: 'Waiting for name resolution', + isLagging: false, + isRunning: true, + }); + + Lbry.resolve({ uri: 'lbry://one' }).then(() => { + // Leave the splash screen + const { navigation } = this.props; + navigation.navigate('Main'); + }); + return; + } + if (status.blockchain_status && status.blockchain_status.blocks_behind > 0) { + const behind = status.blockchain_status.blocks_behind; + const behindText = behind + ' block' + (behind == 1 ? '' : 's') + ' behind'; + this.setState({ + message: 'Blockchain Sync', + details: behindText, + isLagging: startupStatus.is_lagging, + }); + } else { + this.setState({ + message: 'Network Loading', + details: startupStatus.message + (startupStatus.is_lagging ? '' : '...'), + isLagging: startupStatus.is_lagging, + }); + } + setTimeout(() => { + this.updateStatus(); + }, 500); + } + + componentDidMount() { + Lbry + .connect() + .then(() => { + this.updateStatus(); + }) + .catch((e) => { + this.setState({ + isLagging: true, + message: 'Connection Failure', + details: + 'We could not establish a connection to the daemon. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.io if you think this is a software bug.' + }); + }); + } + + render() { + const { message, details, isLagging, isRunning } = this.state; + + return ( + + Lbry. + {message} + {details} + + ); + } +} + +export default SplashScreen; diff --git a/app/src/styles/discover.js b/app/src/styles/discover.js new file mode 100644 index 00000000..013c2fdd --- /dev/null +++ b/app/src/styles/discover.js @@ -0,0 +1,60 @@ +import { StyleSheet } from 'react-native'; + +const discoverStyle = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + }, + scrollContainer: { + flex: 1 + }, + title: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + categoryName: { + fontSize: 20, + marginLeft: 24, + marginTop: 16, + marginBottom: 16, + color: '#40b89a' + }, + fileItem: { + marginLeft: 24, + marginRight: 24, + marginBottom: 48 + }, + fileItemName: { + marginTop: 8, + fontSize: 16, + fontWeight: 'bold' + }, + channelName: { + fontSize: 14, + marginTop: 4, + color: '#c0c0c0', + fontWeight: 'bold' + }, + filePriceContainer: { + backgroundColor: '#61fcd8', + justifyContent: 'center', + position: 'absolute', + right: 16, + top: 16, + width: 56, + height: 24, + borderRadius: 4 + }, + filePriceText: { + fontSize: 12, + textAlign: 'center', + color: '#0c604b', + fontWeight: 'bold' + }, + drawerHamburger: { + marginLeft: 8 + } +}); + +export default discoverStyle; diff --git a/app/src/styles/fileItemMedia.js b/app/src/styles/fileItemMedia.js new file mode 100644 index 00000000..b2570310 --- /dev/null +++ b/app/src/styles/fileItemMedia.js @@ -0,0 +1,57 @@ +import { StyleSheet, Dimensions } from 'react-native'; + +const screenDimension = Dimensions.get('window'); +const width = screenDimension.width - 48; // screen width minus combined left and right margins + +const fileItemMediaStyle = StyleSheet.create({ + autothumb: { + width: width, + height: 180, + justifyContent: 'center' + }, + autothumbText: { + textAlign: 'center', + color: '#ffffff', + fontSize: 40 + }, + autothumbPurple: { + backgroundColor: '#9c27b0' + }, + autothumbRed: { + backgroundColor: '#e53935' + }, + autothumbPink: { + backgroundColor: '#e91e63' + }, + autothumbIndigo: { + backgroundColor: '#3f51b5' + }, + autothumbBlue: { + backgroundColor: '#2196f3' + }, + autothumbLightBlue: { + backgroundColor: '#039be5' + }, + autothumbCyan: { + backgroundColor: '#00acc1' + }, + autothumbTeal: { + backgroundColor: '#009688' + }, + autothumbGreen: { + backgroundColor: '#43a047' + }, + autothumbYellow: { + backgroundColor: '#ffeb3b' + }, + autothumbOrange: { + backgroundColor: '#ffa726' + }, + thumbnail: { + width: width, + height: 180, + shadowColor: 'transparent' + } +}); + +export default fileItemMediaStyle; diff --git a/app/src/styles/filePage.js b/app/src/styles/filePage.js new file mode 100644 index 00000000..8a6669fa --- /dev/null +++ b/app/src/styles/filePage.js @@ -0,0 +1,55 @@ +import { StyleSheet, Dimensions } from 'react-native'; + +const screenDimension = Dimensions.get('window'); +const screenWidth = screenDimension.width; + +const filePageStyle = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + }, + pageContainer: { + flex: 1 + }, + mediaContainer: { + backgroundColor: '#000000' + }, + emptyClaimText: { + textAlign: 'center', + fontSize: 20, + marginLeft: 16, + marginRight: 16 + }, + scrollContainer: { + flex: 1 + }, + title: { + fontSize: 24, + fontWeight: 'bold', + marginTop: 20, + marginLeft: 20, + marginRight: 20, + marginBottom: 12 + }, + channelName: { + fontSize: 20, + fontWeight: 'bold', + marginLeft: 20, + marginRight: 20, + marginBottom: 20, + color: '#9b9b9b' + }, + description: { + fontSize: 16, + marginLeft: 20, + marginRight: 20, + marginBottom: 20, + color: '#999999' + }, + thumbnail: { + width: screenWidth, + height: 200 + } +}); + +export default filePageStyle; diff --git a/app/src/styles/splash.js b/app/src/styles/splash.js new file mode 100644 index 00000000..f4170ba7 --- /dev/null +++ b/app/src/styles/splash.js @@ -0,0 +1,34 @@ +import { StyleSheet } from 'react-native'; + +const splashStyle = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + backgroundColor: '#40b89a' + }, + title: { + fontSize: 64, + fontWeight: 'bold', + textAlign: 'center', + marginBottom: 48, + color: '#ffffff' + }, + details: { + fontSize: 14, + marginLeft: 16, + marginRight: 16, + color: '#ffffff', + textAlign: 'center' + }, + message: { + fontWeight: 'bold', + fontSize: 18, + color: '#ffffff', + marginLeft: 16, + marginRight: 16, + marginBottom: 4, + textAlign: 'center' + } +}); + +export default splashStyle; diff --git a/app/src/utils/redux.js b/app/src/utils/redux.js new file mode 100644 index 00000000..2dbdae52 --- /dev/null +++ b/app/src/utils/redux.js @@ -0,0 +1,15 @@ +import { + createReactNavigationReduxMiddleware, + createReduxBoundAddListener, +} from 'react-navigation-redux-helpers'; + +const reactNavigationMiddleware = createReactNavigationReduxMiddleware( + "root", + state => state.nav, +); +const addListener = createReduxBoundAddListener("root"); + +export { + reactNavigationMiddleware, + addListener, +}; diff --git a/build.sh b/build.sh index 3024721e..77f8ba6b 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,5 @@ #!/bin/sh cd app -react-native bundle --platform android --dev false --entry-file index.js --bundle-output ../src/main/assets/index.android.bundle --assets-dest ../src/main/res/ +react-native bundle --platform android --dev false --entry-file src/index.js --bundle-output ../src/main/assets/index.android.bundle --assets-dest ../src/main/res/ cd .. buildozer android debug diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 00000000..9ba609fd --- /dev/null +++ b/deploy.sh @@ -0,0 +1,6 @@ +#!/bin/sh +cd app +react-native bundle --platform android --dev true --entry-file src/index.js --bundle-output ../src/main/assets/index.android.bundle --assets-dest ../src/main/res/ +cd .. +buildozer android debug deploy + diff --git a/p4a/pythonforandroid/bootstraps/lbry/build/templates/AndroidManifest.tmpl.xml b/p4a/pythonforandroid/bootstraps/lbry/build/templates/AndroidManifest.tmpl.xml index 255e98d8..0fc5923f 100644 --- a/p4a/pythonforandroid/bootstraps/lbry/build/templates/AndroidManifest.tmpl.xml +++ b/p4a/pythonforandroid/bootstraps/lbry/build/templates/AndroidManifest.tmpl.xml @@ -67,6 +67,8 @@ android:screenOrientation="{{ args.orientation }}" --> + + N5*jBOkY1_K5R$Vo_W2lJEvIJcn# zGjVsTd+1Iw6S^leom7XZVR~}srth`x4pld^Me25Hik(VtO}09FC-;uL_jc`OtC*_v zPG`5M-E>uEtI=Vf=ljl)Wo!aHz0(b{bpFrx`@YZn`)NYcw3S*xGqj$AN4k4g)tXTp zc@KY&oqYDh^U=xw@`9#`HP}D;_=&U6<2QtT{;qiZncq3ndHv9Luzx|*{^uV&ar(rm zRqg-7UuoLkHR62V6F6Z0#Pjd5e+c{Qo_O}$h5u38e+v8OG|l+CXJ$^G$X?R^P}BZ? zC!X>1XHQ&sUT7k$Y4bg}KK|T^XHReV-~a42?Bjm%?dNCCoU(FWD;EV6?Lc6i=TJhSj zdM{p;5pBuM;Z1$n*4_pj_F>;G6%HpwvduJVL=?qqMfv)Y-NMX86Gpx~nHw9+rR$>6 zI{Br~RW{Q&W4~c_1WKmIG-@p|XGKh($1Gi$o&6^xKbEs`FH0M(6Y?&5lG~B!SWe94 z#>zKCq1&3j$?^v+E7%nH<;~YHtUOxgb_w+;Xb~-?^=bQ2leQYYzOF^j_73TrH*L_3 zwhj0l!hQ>m*I?h*Eb1E2q=SNOS|iZhtO+VIBvAJhDyM7H#jlTzeZ4sC{vLYuiGhJ9 zUOnXgMj9I<{A=-D+>h@FAEv|K7tR6t!QWzxYsZ|1{MsKa<06`CI7btmngGd=>Ybu;; zjfT-*_pYV!!7U>ku-^)VjaxqazzsY|oV{0#QD2P7PmN<*iN;bggf)d?dHii5{g@H(`>pcZM$m^rBR<0%=JSdXj0CiszXtcCMZ^4X zBzUyERxpZsNwc)o7zsI!an45eJjp`4^NWFjqjDx!PMYeVbE(kyCS87)3x@jTw-G7J z9eL=FZMiKk(=%$AM;b9=NpI?+w>5XGsHSTqx@;L2z4`vjXcVf7a_j%PTOq3pe4mAs zbINVY8gPU(IY4Al>t#1D+Wn%&Ea-U>sIu(6yA|`V)oFRDD7kG}bX)LWzAcL^qn<|} ze^Fa5Ty_6#se|@@Bx&y!%vQ<8B;%?v%&;V+ijzgd8;q1lq&b-oU@+h>b-o0+ zjZrMHs1qytkDYs ztm6Z_Po3I5a4b~5wW9ywb34@dJfTSOiD;wH*7f$TS#ynU*7@ocx9F+c*kVL`dN=lhj|}M~N9~DJE*ov#1a6(!fZZ%8 zQJv2;a;>=*(Qc%MK%-jC4Z<6Vf|?n#9X((l`%au2_E=3;|I?2hj(gRi$G$w|4aTgk z&)|^Zvp;-e&z?8-ly62N#rOO{J@cbLFj6=7y8ZUlp>NuMH#gPu@*(@D;u!WskKDVw z^$*5-raC-ZzO<)%g&|@aM>B?Q^#8&Bo-cKIa#LeHD?IX;&+}TLQ0ROpY0s}2URP)y zPINt#6q)>6R{m+b^j7~Kvpk3Gr$qX#tz$m4m(Xr#8KcF>XlOkkfK>uWfPEY$$Mn^a z_@dT|kLE<*CZh%1@EXVbHEdWG0GMeQE9J*Dgl37emUT_vNt#rC?;5UXvuu3w55NccUbFIE$+sO4LPFT;zSJJ$TZIQC7Vi@UzQO)Pyld$n1cUY- z5hEqD3!Z>s1`R`SHsU1S#yS>^4Bpj>9jAJHC#$zW(9q%R^ROYQqdlgo_pbd3UnB~6 zr!Q!Dgr1S_!Ha`ITw?FxctqWTrV;Rnf~?y`ysv=wt;73TbA6lGmgMeuVT+JW3U=4G zsarU72^i}=^*A(@&)`3yDYg*|zN_!#ToENy#tH^+YaX9r*81^%TO*go(QB+M>RG^h zXPx)rt>C7rnrkc7WSv!a5?vUx@?E#lDR}a`<@Y3A*@>bkPKD0(iOas)fZ_89P1g5a zR+nARSM$85GKP|@ub+??)x~@ecvnO3b^%O7QW17ujDi_0sHbW0!6s@U2Z{F3Wa%vH-SUsv@cOQI9Y|IgLnXeq-EB*BC||CylzguPxaE80IN`vl^rswD z*WCAhAY@yzKRL>5NxnprJ?6ADy0M;n{{^D*R3|dr;&6YC&yCE-eXw` z9|~D*;nCm2;KHCq) zjB}$mv97mu>w&JW16y19+cVMJu(xaU6mRO=ySER2Mj@QYwzVF}AKO6K+}jgqw=Aze zl_qT7|D9alR&HcSw=_0hiFgWX0T5NNcn zUq>&QD?LWo=pNovF0LOvzIpTU(e>`Hxblj>(f>*dsA^)kxkb4%HSx;;siFPI8O^ct(fvdAsBaB#_-EC+!lCD`=X@=Z$<6h>JrE zNGDp>^kMJ4bX~Mu67vO26^SDR(1txH{>93z=PM;0nw%7cN-ZKNXc@b|ez`e^ z3LXuZI|NPuU52EJoTenh{AAC%hQ5>->*IA^u6r*LLuce_U}XqGsIh{gXaG;C5BOKa z;~|10k7j|^eP&$IVvuEyYmbAweL<;*z~4}ZD$PJ@gU(9gpkGkLmQZIc07!KMxz*m3 z0un$Y^#RK2Q+Kb~&$~~3X=1e%RyA7p%-3ET2(1kG+w`yB*2&r^O*t= zmUZi&{6ViroUvyo?p9^}Z<;D#@O9~;xhvQC@ z{({mp-YG0LY-nxJz6>>k_Bq1NSHhDtg_7EM}iXa&qCpjFVs)ml5svQP*`6TNshAQkn74pL~XZv|kzKJf6v1NtyY zUirG-Q2sflK&q)Jm1^RSQFwTuTo`<~F=AlG=gTECAZ|6K%33nklqwL*6!G#2=qh7c z=fYc~4Sl(GuVT??lyDztGT{}qV-?M%UZPfUWdIaHgaz~|J`-~=Xza;lJ^>Aap5_y! zZlnSdLsM!b-+$lZ6^0qHbm|>bZyP?J@wWc3EdCEU=Q6jiLGFD`YX%?gk@}c+%pFV} zuY!_Mr&tst!7K0sF*j<7E`brYIqVI$x8e_KRpXL9*EHB{7vt;N6Jj#hVue-*#bkVa zyS<%41mw2?`yKloe824vqQ|c5AK5<^c}xEUpWbIOdqX3?aW zwxsL{Z-Yc1S(+yDmU?wcHEH+$g+026+j5vDP>CItylK{D!cqRBJ_lt-0r;u|UKR z+F<8hWbXd*TKwsy88Z+tXFx16JS0k(4T_kQ>Y^)sGc&%G;M*Bds)qM`h+UKqaOei= ze7lG`UjZK9q#f4If=7|n;7=(I)-F`M!fCn%C|!=K5+C)usU&!g3ut&$vMlFnUf5b` zMyZ3Uw38!GVu%=5%7v1oxR+wAj(&5G%XsqT&po>Fj~Dk;z$D6OK-Q3+Z4MOKP@;1boauVUSi+@uQIQva~jCUPva#_&WV z+nzYIX+=ZG8){gw{p2_Ic|vi+6NzMZ2aLuLsu*hUgq|MPKc^*#Re?9PU2jpoSs(;?lv zw@*SX`DIIygcwoB5HIhk(x1zxQ-3bBOIp!53tdM8cBo!)hn->`;OQyjEV|4dQ+leB zBX6T4mA**nTjp74F^>z$lZY)p13em&b67TOjh?`mcFj%L1kneR0;|CnrcS@W9w|WwT$!RV7Y6rGRJeD_KiqKw_zLfkLQ7A9MP9mDAs@GEMe3 zRg*Vv$Yv9o({4~M>3HKm{DVYsN@GSPB*&1L)(ZL+XAHS&I<#g*VFZHp-VND`R8qOm zw5%JV$k$LAho6cX?#3O@^t;HrO6!Jksb6taS}3cl2IAvCa8zuv3Q_^&l(SOzdg|BM zWe$d|P*y6`WJzRUZ`@Fox5OA9S$Uh9mYOas)cZ5kyIx{1bJ5fx9L9l^oJY=%+uCb| ze(jn&pQNTv(naTWiblHU#g%v8m8B{1wUS5&ITSh9plfudA6cgk{cI6^dj);lg(g%z zu?m%xrqEtTRl59PF`#tJczMYs{ntd=d9^wyHHzhjLGIm$Y@{r)YH{3JU?8y^VHXN+XYeYiDsJ|COed}g0 zE_^mqPwc3^w$YP73TuiC*Dbrnbwv>I77VXIU6M7R}uKn%pU(xya3ybE5@ z%!XDUo$McZeed{%bh5E7GAd{;+m=cAkLLUw9AXN79x@u{t$WTf}_fh`tb zSa$UE=}|p1{A3~(jWiq|9(iMI`04R96;o6!+4CGR6A}kV46UkD_AL&gh{op(hfL< zmQ#q|F)jj9LCK7!C%$xlh2t+&Ir`Vc2vvXLzsA2dUf=ko7r(pb!0+yh)`xcXSnUD7 z9!h4>hTD#B+xEiAJ*&`ux$M!X<*}^JcnDhlhy`n1&#p+w8^Ji1N=Yao1q4)g`*ziK z^>KSH8ga2I_YVv{l?>=16r}lR*S4>m+OsMY>7UwW)%W$p zcg5oygJx?8xWtI;?a7{|Qys?_bXT_^PmO9%V0?j;Vh|H7ACF#MWNY#sQ@$*~%ay}{!_ z>%d5;-ca&D_DElY-@XW~uL&Knzv$|K%@C9^)B!_vvC0x3ckSz2s~Y7|j@R+oq`IMb zda(b?ec3VDLj%EveS^EdVnGxL)vnxjP>K5^<^Y?RcK3 zp{D>3hG*_qxHj@DTx)##>ypayeh#@sGX9bSQg6B7{D=v$#G$T8wyMCfGlZ8M5TEQm zvY4D2pQWe7FLM>EDg27_djgA`v zM81j_D5fy3T>P+#KOg;$Xq!I|P1t#DR{MtbZS4=>L;XFBngOVX@z=8nFvfvfAizXj z0&Yn7pwHC?rYL6h)8MZ@|3- zW}7+u1U$wqxXg;eCH%{X>??DVbFYZ(+?@U4D?*!l#s2U!oV9o-oRU0no$z@KFA%ZE z{?u!LHRyb@UBVZ(cn-&fN7RF+`;8krcfIoVH2#U;Uwtrr{`~X@fA#VCs~;RcfByJ~ z?-X~w0#mMUUW2fgnHe>{v?c>?X406>*`2|^R9y9sY;Je4?CDhUULqc6r;LrNR) z-^vK(6an!A*GkQ|Jk>1t$OsLJM841>Yxz7;*XZdvew`j&y!$80UoCIXIU9M$eNCI2 zD<*omC-TKpyGKu*8l9Zv_wG|gex2H#&+~iql$hi#>w4`;<-?X2bIO%%^0rpA^S$fx zJS*vWHD-Q5dO+L*HAg^mVE1+1pkc7cMWouwG|cVdp5S@X{sk19#|*ED$pfb(5e`_` z#e{9NX6ABG+gB@{?&1+Wb&S5qH?1fpxG)~}1Yxnkj^8xwpXcV_sJS2utkTw^Z#Cia zB?=()eprx8Ad@uI!xN(7#9n3cl;RE8nPVA;*ScMxs3s`11)j ztF8cnhJfB87U?o5D$wD;0N_Ol&RkNO636$;(N$X3C2^UqG4RiTn%^$07Im8el+g(O{{r*oJr&!wvNY2~nWybEQUxZJOzYf^?j zIkVA?^K=S&Rn@!N)lj|qRRj{qt}`;yF8cT-spp%oI2g`u$t)$V2^<#-4&qA7LEX;gP(FQ?&as`M$xd{eO&^mD z0(MYo5jB-)b6RLMRUS3BTIAfi$E2dqjB+)kHC-=$(Y#t1*?N9qRs~kkud*_$Fg2xL zkI1mc7TRalQ02LEZgFJ0C4eF3i|3Y_*_{8Va@E|@7tbxWiCYRq0IKH}CYZFt6%o4> zf#qlxL+VZn3Z~|Dd1Z!LHTfm&tPaT|xj&g4?Cna-)`PE^)aG!S7Mv^@1 z1=xf@31m>h(A=CTVpjGibZma=s5PZlCo~JJ+5dC-4%# z0J%vlqb3;kvIeODx}mzwNwFgBG#IxUr8&IoVq+u}yIL1r9l8obngFjtL$j`BFgcHy zh2_0aA}91*WqVy+9SX(li+y{QQyrTU9X9JBmt?zC>n-Z{5-?fxa)n&Th{K z0wN6)u}&ng5+?Xh?OzJ7ULR>BEtyuPJN!5tb9&kp9(c^im_EB`wODpBU^+%lfDFi% z>1bp+7(97W@-X=nG7#LY*oZu$d{q|WyQ81!!HOu96J*4VXK7#55fy{ zqbM&sDQ@z#9ah~@q>c`a?=i;UW%DfNEqtODmu6{+O(;^9DDqmUT5|j!0Lm9D@|M+$ z>X)XgiodjSVrSyH;c8W0up`boc&%u{r!>hGRbF~57J=BhE*A1yVAe2;bZqel;?18; zI}sG0V2I-8IbwbYbA~a8JJb=Krheme3zPEECZh7bz7u%lL`a(8477W!& z4QKm01fC?eMBvjHFug|e_istj?xH6qVlYivIj$CQV=5r9Lz~p%TiZ$gM;mc(YkXSVUW3f@Wp1h zAcm-&oDqc?g!0zOi)k)VLt1$u-2i=fd=8dG>Mfv7L;RwA#x(DeG@Ew)D;S$~;ALpv zyA=y=WCUI1lFw|6lwjk~GZx|&-_*4?;iz>MhCle~Spl$0pQ)#L<&Dd_cG;F~q~`Bg z`3}T5=Rp2hVJTfWjgZYDzyLJ#vzuNU)lU0`%4biWGWT(%MDr1VMxPCtxHqH@xKKN4z4H)rK$h3AUb z7D7DenL-#RF1<+_1J?#bczEau1RFpGJ=l#=xEpnIOsXubA*0ebyl7j35tUY@8Uz9; zv>?Z4HEqX}M!)eNFI@PK-x%dAuG+RelizuIcc^CfGvA$*TcO=ge`oRzN-y5?oqOrI z=UzJJ3q%5*v)_L9xo@8{ef6gO{@#FgBCzhhRqS#8q%!{9Z7x-l^Dh)FA`TF zud5m+8({pA)(LY>cNET_Y!AcZPL7@0hS-1ZU*9eQ~o-?@vpx199+F& z-Uu6Ic$rJ`dTrCW5%`{&=f3@1GI^b20q++dJ>?O>0AiLg%kB5r&|6QWXBx6iiJ@pi zQz$Uq&;(iv^DDf?V1M7B9YmWdh6&PCgK!@S>j~RkWeEH^;bbTkKfwK2Giwr_g$X*j zFK-5Uqs~m~Q{+sHz#KWcUcqze_L&dCxJzA7ZJ_klm?nA4Ew)bzFf3P_d#k& z10n1UKxHJ-L>_P=0IP&FGmqQexm=#d2m{}v7-)mDf(>BYxMgd?xapSuYToL zI6+XjMQlnIl@XX83>_82Ba3=_W(Ho&vY?r0WFCXJO32mEplTrCRb|#SPvF&=G9u|& zy6c=oRDuD>k|otT+kF@VmpWJa4R+<_0-`sv||&1 z*w~C;2y#^H&{8p8KC|`U!L9mbe1E%8Kn=yDokuKq0h0eD_MkH<6vi8x%h~Zlb2GQ} z53yww4)&KH?>~63Uw^azpj|5P;zFrVU>r$7e7>I-?~lsc)IZb8ae!H`SDL5$-F z1UK)b*RVg)uh=(?0a9uZZ2N-!IVkcZ#SxHaF(qE+(enUb_D?gvG((1%u-|cI492o_ zY1CUJeP)kO0R@FEWINNWKosIK7M2r*qrf3C1utE6LD)Eh)HK8U(|eQYM{;K#MNQeg z)^N7!h-Gc79OxKcIEigz!sqq3G+B`~8)-VdRg#3H-dq*4LTfkDx}s}nkn&C6Dqe(O zx3_tYTlO*1Ip|~1-puP$FWb8n$fsHmk(Pw2(8X=iKb*!AgmKt!Fl+!`{!SQ&j9QdV zHP`9mPK$_)38=W+RssU(i0ecHpfTk*zK;0Y?_vk-B>_bWO$ua0g zQes$s>!Aln|8V5Nhb&mBBEI07wVB-yb@|MZ!KP3qL3j4rkiRL|eBv?A)S8gr>qFS$ zh6i`7k2M8!BOrXCtx3R?k?)Sce{#b1N$m9mA7Uoc2sD|C{G5yI0$2RK2 zJx5a=4<-XakKykNh5BGI4F=LjI#LgIO@3wn`anaf&SRw$(F`P3db@j~q2#zV#=f8R zB%{d?kw}fM&T>|aD#YXg;k078;}qP#^P^H7|{?yn;Lx+6PxV3 zm=zxr9d?9F@oI$wxKIBqBu@XBraK^*AlU!QQN$}Y3s@T z-S(`xZ1H^s+|sWo+;;);#? zPb^h{A=YN{$bt4%gAYFSTIT4XeQj;~4js+pJC7dP+m_gW=tx?OwI4V#*){OggM+K= z>8{Dc2isQ-O+LNNzSe&5@MPDvrzeMyw}kRLW!ey=>vm)WVl4Op*t#`ArdNft5(a2K z%vMVe0(~tyc-IR>(FNyZQ<+i;5n7I+gQE)vGFAISB?R2vaRWog7Y^C;r91a+hy$+i z2av5aFTuYQb|C;@pX0WGIu}sqy;6<=8g`T{%6Sd3Q4mkbU13vF&Fheg=kwpC_Z7^GC(Fe~JvAI#MRKVld0}ZQe1G9D(5qu z9qDcM+xFXAx5jp_OYUm!hKQV5v%4d;tGTIVEdrNP>2xX_=6CXmK0L>MnZ8Ei!um7M zoLP?;%O8q|`>*t`S-pBqw`FxVwX`%fk0z6&&DA<|=9Abb{Yk*gFp?zm0cixPQtAj& zOt2ad)zlp{>CP;4sfs3(w@7&vbXd=h6dF7=kx-k@+MZ}?IT%6YH$sMKEX{7|@;s1T z6#l~$8h0q+pIhQVrN0#&9FDXZpt1KrKB3put3U#2=pm5qd-qe6eJ!E`$gEeY!|F%$kqN8 zN+Z9*Z~q9UKsd_+D|2*0`7ZJzuaAp#AYjh}ho}f4F%M}Q(lqi`;0mdt2OWus>%wn; zZV#hu-pagMg&YnY;1{$c+(GvcQGjAPrgOkk0MS+vMTcTyISxYNeIW39H?VBoCRD{d# zL-7Nkh<)gP&_~ecNME>re*VV0Or(F|{EY$~40&BDud0*wxj~02?uB_N8zI5%&>oT* zJ6cH;93K(s)dTun1;*t-Y$Y6%?(hnL0o_XY3-3)6KpAlYaNEX*{_@a3El)G2df-XinLs28CN-=*v54tEsfRja*#}Mk16lMWKIwkb zw=yUVi*NvR(i38|8wD!x?7W++LKOL?a-QC6qDU1nT=+KZIGmvw2`X>AC^3;9J!$`+ zk!Hg;xC!qt`_r+F5izldxWLdL6JQF&{j1yuacAC=B~tgx83{BBK`|pLxluDJ0n?i| zWLi`TE77_)KYop#t}(KeI&Myi7M!JFs=?s(+3%Lsli z6KsI^FIYd0)hWz&mfaTR(Xl|H|_peuzG^)|n+!7oHN+V+4IA91K`^ z(Y#L=MhTv`ZKyc>*gmTr(t^&o@it4ZNG5<*71r{_SB zK?w_(CyS{bpdFI|fYuf4JiNS%@V0|q7x|4GI_pYn0UDq3r@6SKl)AMM4f4p*J-_b{V<&n18NTfD&A=%xDuo^d#Ow7ze*B>8h zy3jK_GBVp!{$$~*0q4{#PK|!GXDY59brcUr;8-M)#p{l`uXBz}y%?=LZs&_VH_1XE zrHd0U^5y5#ot^1zv(W*(F?PP^#huO@>uN(Urn)_yX^eASJCF9gWMrX_L7Wd5U6t1w z#OM~dZ7BjH1$697C?l9ymbymM*M?EfJy0W@#Yd4PiuLsQssW%=cS+woJjJ-!{^(jnLcC!9gJ7jvVK=RqGsY3}&{X%;}U!SrcAIrXybuMDwtgR7Tha9Q# z$)29+G>p%Mb?fwGd-8Zs&+#PO)T~s{$hPAjW1uZ-Pft(JcY2W1&(l%ckK6o7E1Qiq znL)GAK6UbVqI{NDd{>r%mYmjRq!_~+(!IVwQyg+=A@!w`$J-OhWI{gBW1-#X_k-L8 zdJ(qh2aq9B zwAwB#b5LFan9isL6~UmxiWq66NsXj!A-;?L!aRdaVw?C#DT0t7@{@MSloE#Tq-~#ySd7+}w)d4dYykH+wDd31_^r~EH<%<{G+>Y3Ql~P;;XXa*` zrOp^=W5781RmQk<0g;aB7{o>FC0u;oZoz&cSlNF=bxd@~?T_o{aT%|^fXfi=++zB8 z1f`Y7FD3lNT7H0|PgcOSD1O%_R z^lA9)+jC4eqjC|DkwNF+PDgm?DtTDoE;TdZ-NkCS&dey|ojyyI-lMN61$4Jxr4rVl zAzM^ATdS#6)yJ4qMrNKbsrq7Zza?{BI-W=N8TPce49_Dam=)pAEC)X(QQq|o(IIx& zjBNT==aZ0j9W$1n55FmW`yv7!&llEy1_20Pe91o(%_3 zDgsI-!0BlN%%A{=4?qca5!vHrkV2GxyB8-EwSda1r#I`QlS)}4+%9rq6JBMxu<x{^TQf=Ot#2*3!-+GHcvIuKS zIS(jlns2>D=e9Xnbu`1%h4MQE@!@Rw+KVr~sPDnA#EkIQz<(gd4KmUOv=71!Rr;#P z3b`ea{Ml7rIm!3QK_r(klr$|FsnS&a?)Sd#QLXIx`uBd9`l*()&mVR3>>YjnY|9;v zCq|JMz3}%xc+4=oNT&JN5B~lIs=RJZHB5i|Ur#b+C-0v8*WaGjU*#OG^`w`Ngq_Ttky1W^K8+*W@h(IP zO;Xd!B`~fo_#MJ`*-^ORCNeQYgR3&BgS^QhsgAEA5;ZCHoSH!rVsn0jkWz2#dK`cN zIjo-99xKen=^>iBAlNvLi;~r|Z(YGl`5+jJ9i8A*ps3IdIb%KLpE(=K9ZKb&zbsu3 zjDd=e6Il|;(2WHTCp&lJGV6pC##Kq0rQ-pn75RbY;uq#|S95&DoMR2siaEfjCKUo;pvOC+dx&cl()_4>a^VoZfu2e{F4O93D0PRg53Gkv!Vj z|IC;6#~SJ-BT8xK7- zSTA{-Q`cy)E}Wq-RleJ%KJ(9+?&QBim&UXO&FOv@{$Y7OAQ29;(>?t?VB(SGh2hG|I7 zOI>pa%PN;NP=DYe1rC7?6VDFG*`~mEVd&Y34fOkiHbut$*~Q(bbY!;ZP1r~c+PhBV zOPH}Peozh*JI+1azv395#!+-^#kOPThH-}DnK9UJBaXNTB>A-VN7@|JmnnpR_9SJV zG=&|bF5t!>=~Z%SS|sq1BdLmJp<9-zD*WCQX$I$}YS6ih;;tbz*^a{fj{Km?xfWvv zN_*&?@M4(*G^yyJJZ^k;3lW@G;iyi~CicW)4MPcdx(&xilSr(FNY9=J6R9L?-q({p z)mPn+oew5HaW%>|tlWT#PeBKAF|^v_>yFEPk`nnyq!xh1Q@jPgYZzfv3T&{w`jB-C zhrD7OnGuO??009@4Mv+{mNgu0Y)>RkY*HPt`x`wS8_dc=7J0L^`Ddg%Se-*m<4)v% zgHxTjj3+jy07Tb@ZV+7ENDMW^V*3YSnzg5DLx|B=k3*hWSahoNClwyTW|G>eMXV%S zB|KI$3-XYK{R(SQ!o(6D;tGu}JhB}j(%sh!4uf#m1#xOM=g{(lJ>b1|!*xq5iwef9sTGSxSxWONDcgdu4cy`S zq_k;>PnNALQTY;TyqJwtVt4D^b)`hQnsTT_wi$#jNgoxa86+!V!dIvuRa;ChuoGZ& zDXgMA$25<`K^f^)B{f(ihB`?bc`_UYeBc%iwKH-wQP$v$0pngyX}WN2jWAyKuL-ms zICP*bvuRZ{?t_Hh7#x4;%&>38rYFAlkUtXGd#S%|Q>xJ$3|z~8W9R4#M>~Ap_Wtp% zh`x4vcjDmTqwDK7iK{*V?~zz6{@{s|8Ke^qtn>|^d1?HiKmXd{6}>%c9vGYG^hbU6 z=bb6j_rU4G?v0P^?+<04ed74Krg(5gO~*c|KSe}+NzcHGjG3IeVI`9BSaLv1Vq{jq zZDjMQ!0@{rPt;f4Ad@-uaYQ(J1+jxWbQR*{Kx3D8aEAv~%SUwxN$OAqJ{9ld2 ztEtmB%dLy@Z@){K4Ou${!*f+;IzaGc>$s#U5f-|tYIp80QxTOEnRiJA90^K!&Ru|@ zdLjy~8+zA|j9KWjHF1Z?ybuuUh7wmt&$cRnEtmR|*xdD&qw1*juA#m%^r^K9%~Or= z5uEyUqafLH&i+|Wg~cFaBn``QWsQPloIEEt3Q!`*Ta;4FvT~v+CvWF1Af)`5cp}-Y zJm+Mv!;S7LAO)!^+9G0GXf?)l1<0ZN$8rRN@SE8pHwu*ybvK7rj;Hu!Jk5!-Qf0@( zSPGJPJPg7$+NHGnmmaF$D)+jd#X#L^M-d?q1Tn3J|wP1tv zbO7-abMDp(fB8pF3a0`UMUpENjB%fyN2Vhiqn%?&&yLv-tC65j(n6h86D9*y4CjgD zpLx0VA8k%?Sz_t;4T-@U0dSMZp-&iR174q9z@lSV7jVLUA6{ry(8z>h{_>WOgEhv0K%kGVT}4|>U|uozvs_yZ z&4NHjiYZm8v{MX3qj_L8j35(8#vxZ5#4mK}Yp7DFhf2W*2QHt_exK$lzwgIC{ppW$ zMuy&6w@Se#KYZk_T*2}d9{(EukEval(Z|bIk@#1|i@Iytsn{-Xo_nuncfU*3-S2XA z=m*+p-8|kY@TjbeHoKop-d?jkf&?kjUEo(s=6%8btMm3d7sP(M5ZHcw|{C}Lyjx@4neyF&Ai0+uxSapNYd7=3u(x zV6%Omkpx{c{aa_c#LK2`iO=BaaDf-Z4;((oXC-ipeLfh3HzXqzo`%jCm%I_`iNO~z znG~6hPB_5^b|(PRWw^FILE;aahHNJOq{S!LBFCt z0C-B2RuXNBem}T??xX4>{f!rr#lho(l!|vZz-?y8v4k?+l5u9u)>vXsb4&lJWJ^;x z2-jlYUf3E8&<~#cJ5oBnL2rT6Br?ec&K4}PYeR|Dr>_d59Qalj|}!T z#yZy4!`~Q8xe$ta;CBqQPY%Sraoer~8LQd91^6&N9JlJlF?uqGV=bu@gDp+_6R|DL zJ==|@NMvIyduDnnvwq*sfmri~wkRa#NLQ@TGiDYFP`a2t>CoEHH?*^T{n3XW>83-+ z%4jG)(rh&bvi@c(b70rDM$-sx!EzPBRVLhbIo{F6(ApPe8-HK>55Ki`h6)4SraZ!d z+$HleoDI6oETlmHjdw{wWjs_F(CNp`wCK+&Z%~;v9p^ov2LF!J-yHi*cAwaPP0ijKg2`FVK(oQo#I{`jBbiZx9$$%_EmZ)W~Ts->@$KhP%(Wf@JN|0O4wil!6hO zqVfm7!LD=WAp0(f^_-vycEUaHm2~8{)Pt{4a|(O%G`>_q62VmhFq@}Ro7b`pwt%`n88q-C* z(80qpNN}O)f0HoumZGBYoL5xTVTTTh{Y|q(gLy1G!cn-(E>X&OnZ@EaOIFd36ONB* z2HMdP@4J|JB%r2Tt@2Umgio1b8PREIel&O z6C=zM-WuxIJGiknDRzG2q0XtUUBCC`W2=2DLym(EWK4!@WMn=oWD5v}#-7|F*0wzN z@|$}{o@}OvZpc@g-M%;d@Q;4@?e<7rYVT7ccn#um>TIdtK7j=c5I~0ovazzYlzWO8 zoOxqh=0Z@B7m#is?GgrqzJP?le&k-Pc4l&^Nf;zmc7`IWQ)|w?^Dv@h=~s>*C%AUT zvC~SsH9J{NXO)eBGP<%6Cyb0Tkf|BP%meU5lCw*c+_W#mFN{@D*$EiazSuq_HSx+j z=5E@72>jWUN!5keik7$$`iXnC*dqv-k>N5h*j2XftF`8o!H>02UZ{kwtb?mtWxmy6 zwpG<+K(j5eA>FGEivnjBTa^}yys)*{b9}LNY55|v-BIuod|cf1B2<~3HRqL&f^rO4 za0*PBREbqQF`eY1rek%&q?Jo9M$1hw#J#tkSeZr zWf$BCEqAnx;YPv|q%iXNl*t@AjE_K@x}n2RxhZ6MFpVXPc9nTbbyuTfeyapODl>?q zP*QzkF!0T?dN*$D-T1ZN`&utI@uBV8hwP6WV~&1RUQ)TC z7k6%y&l&o&zxcDEmhQEo(Aw@6xnqCi8q!FWK!&PlLjt~;8JU?^<|&j-kKs()woDL7 z-yu1m>8sF=wIMP4kg*mfZVrB2PG3$sUrBGxW?|&hDz~FrF;HcAAw8K|Vzc@`;_;y2M;B4aDt&w5${UXl$bQ_lbLTD&%3ApQGT)g#CHs<_5RYp) zT6xJVj`Aka(n1T&N@vm14c(%vYZ;qY21;G|9GPNp{HO!!%WKao5s8nY-8gsxpv^_encPS!IdS;N`mTvMLJ;eaN7IA4ae43(H<2qHS<;mv_Vo*LmNjK8b#o}YF1~ww zBHb~uf3!uCJ_PK*btuw!7S}ZRnww9J02lyVtlvG9jYR4_R!t-uzi@?97tV2b4?JI> zB-GFIJxt3k;Oj{Wer_XXe{3Xy+wm@xE#BR-DztXP+VfWk4&fo8g9ozBnX6Dkn;+KR z#F!^4Vlzl*wq&>C%aTxGhV^VaUp?9l&4-j3bv|aEN81B-0CNn=mcuE+C-zw~l|vE- z#bcWZoAKe(fwP?WSzLw&S8G5j2MJCs+{+jAWjFP0riSS}!j`O5bJy2LM!uT8@CGY@ z+9Opmmuf|*cBFB3^^Sc2i5OO%Y!bX^lPjsb^9+^m{Msk@N#K7V?4UY~E zzBHWJ*`%H$T}3bh1lmy`7A+LQ;!Higo3b-XFCma(!GpG9Ln{<;_O`rR1nS(H|ZxX<#PCmFLJ{UtDMjDhJ+J^o5|9> z$PJS~rb~65KuA06qm;B<4c8*|7ZZWQL<%Rk+?Y}g6j5bmY?ho4H%>Dnwe)~nCa)LA zA%+Sjpc^cXae#r8GP`*1NfS6fGzW(9+VW(Fv<54SM;cc}stA>$BO@=p@JJ)0{z7Ks zk*B}9Be6SibdoMhI;EHX$kc%AuR&Qej}?EsL}At10a2k{w=3Lm`qTX9Z&9C zZ&_>3{xQ|X+KfX>Fq*|3Ge23Q-yvO*)F=Urs`~{RKmyXYnO^UG+^A3jYwDI`)mq)7Sxl1oVV{cW@*=B3cSC1a~ zx8FOr7R$HqdvXVe1Xe3j&v@j8mqs2qxy9dTtzR>vrZ5PC7t{cYJ}h8l#=kSWuB#a! zJ!E&v5$nPn(n0bZxsZfR6-xf1dOgv)xiuO_%1unqg+(w;-)GFv1fLQ(IuUUpSA*Qf z`d8opc1i5|5mIsbe6AywV4}|Q4WX4Fr$~n^8|;KmS<=c0i2t5F0CG=ke-=2o1EoHy zok7VJWDy9CRHBGteOMR-OtT6Hr37Q3otE`; z*I)GK`VD!&{@aNBofPo%e=ytr@Q z#gkk4JN)Gy=7$9Ef_loz>^t4xe|ldAsVGj#jj`*UFAVRyIK6f2^u>Mq@taOucc7Gb zYwPL#nauvvTl-I?l9^82%5pBm%ThM$Mjz(kH>?T866BB~(RU;?7g5*K%TKWmm09G@ z^A5dLHB{0%I&k@zKG!KvM$BN@j0G>e4A=g3a!4&YQI`5w<$UC5V)?V^fPq*m=~2jt zCAh9ShIxDW!{P(Q%-C8ki?WxAvs#9;Q_R zy%g~$j;DhD5R9XUo-$Uc3b4jV<&{h(pH9Ll zOkEyeR?|pVQ?xVUv6{^UE9|ro(|hRwd3m7LoKoWwjpL7@`2Fz}6f{x%psCk}Ea9(3 z-bloAG@;h*#F-te1H&I#0l!yPAlevB^r5aXNum;==x}pTT`g;jF^w2S=nV?+FLd*y zGu9A1hR(Abp4IVhiT0dA=~YW{Eb%C@iPQ2a9f^I z?8(VyZ#yw#z0kxZdXcN4qk(5craAg81Ofybtc%e#YM3o-H#c0wIrVV8lHlG>yQ%K& z`QC(87l=g3??|KE{$!kMC)%MMPAe)TusX0#VhX0ZLvUTV-5W+4wjyRB)ScnyzWo)S z$~fWs%D11Z4Q2P9IvIh!Kq&B)2G?G@Saar;A-2k9Z4HA7Yc->gGc*CW~#_+k~^tk#Pp?slTR74eIpPHI)D zL@OxULO?9C)1Z?D(<)-%ri@l0Q&f?Mkp4@pj>h3sb;Pa_KNd#U9&;yTU(Ct!aL^ph zPVw5QP}CU4it&180KO}B4!bD?Hs6QuajCycoB{R^n2+~tC)8^Q+4Vi!k)-0oP;Em< zbOY~Q0&a3+=pIB5Nr|>nmnv(V8kpq5DT7>BG6<|D$w^6_16l(@uJSx;mxEm5BL^_K zadlEZHB$y?QZr9?@`q#P_G=RRygS1>BiD`-+fe>bu5+(iFsD=%XNSiqyO@4yhAqo{ zx#gRUk(qbp9DY~HyUKzD_;|yauWE&!634>=-ert!0`-@0b^+@$@(cNL!LQ&}%jBe( zY>U*s%$LMPPIN$8CA>dtVHw2yQl?ku)Ls6&=ZMj?uCRht+95D8F*+m$qM@0KkzRf-K!KWkSk$ zGJ4Qg2Oqk|7bcn}%y20$2-QtkV!*}R%+f{QN@TsthsA*XzMf%m*f$1pNShEp%XuXH zgigm0lgfx8^5sk7^IzV&vq+$$8R!y9#zkZ$$Z0QYuX1!kx{~@9M`?^Przdehj#@eV z2-soLg1!uDnTYB5%)!?{R%oqY+BVb-8&WZbNsKkatGCtA9RehAp|RWsFzHL0Tv*U3 z)os{3*xokr*x8Y9{F{T`^=tM#dUnsI=SK>EamZu8@ca+X9d2zixBtQO!;hyE+hePH zGO60QclZyUFHB?(Q^ahEOthFSOoi5RA*R%3Efd&NiP6+W&NgZigenIrua@)Jh7+FL z#??NfC1n3Bb3UWzc0P5uAB$6n`ugOPul-Hou~#4Ij6~Ky^+$hW&$OD`fB*TJADlbV z7KsF{RXwAR^gsXSFC1wTZ{T@ma~;dThp|kVJf9j5$-*I>ny2}Ei<4NbWrFF|Q09sB zL=ao53e9zX1U;V5AQWK1KBV$kx|wd|qUefIsRTFD4yg_xxYER^Vp4oaU^(;`;~Q0) z8k!a>8EPs!+0KsgC&)8H3q)D#?9gM*j>Ux^h?qSV4FO!O$ZWY-%@(H zB>xw>m0;bSRj4f)hmMS1$0>>U_-i43JuqBHLUvIwJM%%=c9=4yEf zndZYV8<4KU7g*v*RZilt$@?g)cZtihqXK|Pfv_AfH>dcOIvJWRIk_@uz|-0W&Qx|C zyTpalxP+PeOP0?+IEPDV5ep@#no>qwzJ4WY6uDX&)sIwE+H)@72l=mvh_2A+$ou5y zl%usfx!Dp6XLaVkMFz|}nV77V9FuqlcoyjL8JP)AB8GPK=_-LRWk_9XK_1xOAgiwH zP6~l$B1PO6l@}ra4b)XqUW|(1G0 z$<$fehRUv`O0O@>>r zM#6#eEOhduWgv(~T2e*1d+XMKo4i4p5%pnc5^)UA!2!tideO}%wK&rhr5;2?@qzNu z%mpMVFTV6K2Sm~wmN_^zlVD0k>IpSwXMK&UGbd|1$rT}7TmIg*uRtJxpj(LZmytrj(g7CL6<9ZmoK zE$ISekhhe7{~n^a>?ZawHKP1whDK?nK?}P5AcLt{Di?A7m&NUDUv|fpK0W?( z-R+OUZ?8W<6vxMCL&;2280M#O^;{TeV3*L#86=S&^4nsnBQY%)1ue~3|UUlCX^%_?6dHByqa zqxQ!ty6D}G1 z_{Dv3(m7^6+5YUI?(Rd+ZfDjLTe}luiAfh@Rgf_GtuB(ci~3dg&9=~%LYdQ*1f&lW z&Hf<5(!s@$Yd|Q4h_mK~BTG|*u3v>lnBicFOt7{ocCZUdwZw39$EHYl_1Wx;33^|~ zn*ydMh1jxyY1R4HtO%-E&S{8As=+tN~JVafHH<-2k+voSIMtCZUyn4!wOFxuyca zLPp30U%AK-awdh5Eg&PpS!nyiM#*=mPdCa}dqx8TzM-tS!uP?c-AJ)~C7(Nl658{Z zV{OsMFT6&m-k=IgyjwC_BV%LmG%!55T|-@V0l9Mvqo<%OetcJ-S0p|5x9qo(+8g4C zXLU#*bj+Tbs9TNH7Hb;pk7ZpLulNDxS{snhnCgu*ilnHdDYNQIlO^UGD+DuwwCX8! zPCH~xoM;V0QK!7Q2vvz%>kZ>73O4?N>Y@kc@|7}ealoedp^iqc8OeV7_!^sbZ3W&uK*vA1vGZ`mf7db^C z+b%BOZYkUTbIZsPRHe&X9L9?UpYOj0wp{Ns0{rX7^w!;XrQm&2r*s&urz4-kZ8X1T zX$7Qn{D5+&E49e@FC~~n4h5nFG;uUwx`WxJg=29n zgZ&W|-h7SX-=dBCVqCpZe-HLL6|iN01a&s9Q;tcZ4SQmIA+ww#kAG?$17FIiJP0W| zqR7;2DjR~+DqP3`$5CQhUg=Ly0uF(%9!$w7*_W+M6Q~u0XZvz&O&8W;)aMcE5~=g7 z2<(Twznq435eiK4H1&`PKYoR=!nm$aHLL{?v5>E!e5LD&SipojvNMJ>R8vs#dHii5 z{g@H(`?1(6avuSAu*{faC9K=iDs$*ywG);0)kU{}x^h^`Ne1M5XIgnI?{xDLIuyOB z>;{)^N3Md&G5`rK7zQSo~Cb@v})k)Dizb9Au=UTivi6C z&DhGQ&B2PUGHwP|2e8;BauZCnraL!0cyQ-xrb5T^OKC%|+i+l8&(nR@YK+9-`Xfh< ztUvVq-MgL|OU5(s1q-}}B{oHT`?3D66Q`ftoZi0<#^1oBCsN)(;^@@r&7svzv97Nr zp{4i1XT!pZX;{%I=3lc`tZq&m&l;;chf@9(p@8wyqw60&Hrd`#hXt3`_@b@RmFqiF z&%N@4htTbb!(CW}=`E;G@PzT-f8k55vAAVI25v%L&0xgn`11MZ*C%qxTCqBmi4R0O z{9OTQ7DfI&&S5t;AFV8aIHcDG+o9FTW#V`Z0aUcAIU^MmbjqNthO}9l6fBj(6aLVg zCd^#wqyo!VXTz6Q7O1a8f69ENvy!W70)CoG8Hr@?O0cF-B|QdUVOF$b^9C%n){4wX zT%EdAe02QJUpxR!9TWy)j-oH+NZL2WTp(v1vUmZRC{n-aY_LMQZ z;=qf4{s@#)rth|NLLe2F_EimsY6DOGhp!E-v>)E}!m+I@R&+i3Eo9}@0SLMiUqGuRbWE;|xJX(@R9M!Okqg_=opCBE6 z+2AOT%V)BRk1PL-N>)AU^fnk34-&;3CFY_geAzjhvD1~rckvM5V4!>F;jZj)B-4}J zPo*zTSLf$KtGMavfX$jCUHft^$rOeyZpV?ToL}%$xk?Hn(r4KVK~$2mN;Kv&6*g`perL3@ zl6psd-5o2bH=o#ASxLR;U;`p6fnq}lz^V%ZE_V&VQ#gvHUn)+ql8rje z9uw7-#_zrJf{}{@!yBOk$czjOjywkCp`%h{kfBHmB3RTZNZ0N{gOAd#=~_dZZC5s1 zQ~#*hHCxlL-O|)%+qkANu4(MXZTd%TifLVA8oIHYn(S^`w{~~+c7NY_3|FNUDdEgL z_uO;8bG~!#d3{gyT*Er2}KV#en*1E|?CL3<;jC};&@3>7keYBbjf>0&D{=4mp}3>v7{!714w#1Kf%8k| zz39Afg}p#DEPXDw;n)9z@wN29j005(Kg1F);L5& z7ns`Lr~$5R>XEsiJ*{r8_d|%Cp1&XXSF;xvayBqTHXT z^IkE-w(N9iiao`RlJ(wD(K08b7hI{X_7#DR&6Qw}(Rv{1Dn+n|hSL$6f~#2393eI< zq~yaXcU&QZ%SAe@32?LYSD;A3_9-e@&q80#L{pf?WT6weOo>J*mu z(i11N2}rw4jL{rwFyXJKe3=|i9+cAR{4y)nqmVC9|Q1FBW)nEr8y(Bi1_a&;dMzDi_7mr zN~_vtB7#}cgPq~x{OmK?`NiSRV6ZD(TpaESYJL&B;o?TT8a8RC$(R>ttJ*N^$IuG)!lGN+U~+$vsCF+uWQ#Kr?f=$nmE34cf=L6N2^YuF^6L}Xq4zT z^q)#`#v>9Qp0bs+rP_d(Ie@w`SFJV&{qv!gfZ?_Anxu}#{nJB>cH z7s}V(6y=BSrUuv(l68)>_{52d()V=dnyCqxzmk%wsw9uq=Y?A59IC61v8lCkyb=It z*7I$N^%bMbu}%UH=&bT~T*LN2G+O7>mK+nNV0?=f>TC!i_grv1$|mbu^-Ry3(I$UQ z@XRz9%(XnmD!xsF^hK01(;UTpu`NF4FOK!A1 zAgtktl`u9J+|O~9xrd;w2W%NM5R4pvf?rBO|JxL46W@n*uLZIUdw?^Eis1Bu*$v+T zv#TlmtRsb6yCb!LYS2@d?0+Wm5&KU@hH5f+s4Q97$DmMq#e&q$@X}sM+gX=h-PO>dUM8EIrP&CU}~Bcs|H? z4Z2=QYofy*RwpA*1`h=r8-s@ePeodu3LFZqT^oEpxW7dmb7f?>qGWN@_=}{`3)u+c z4ff2HoT6V4?N!O-UCFvj7~>`fb`PhuC?r@bxj$F9QH(EXq_n}*D9A^e1GZ2-oPZ@( zy!d1AA@NQPbDl;gM@(1j4bZt}5#TzBa~o+9xGZ(!2gmE+P6=jQnE!w zXFKkp4}cRx?_WQ=u!%;J>bmim%cdt5xkA4PVS0lF3n&JZ^lskh8>g9Ih9`;KDv@pN z3m|tz8vj-uB{VeD)g9i{(?h_V4x6xH&pqN~uEi@(VkzNq|G z(N<))=o<7>n<4i-3P~BocJs=~57^@94BT(NXLQw>W&+npipyZuWLqrJ?yU8Q4C~`( zbJ?O6xO2};%cz;%(WT|98%sZ-rqYl3qc|E9X&5aC+FLAezc0zAL!uWh-{CTDv}(|A zZcFf>)Ess^vpZGYI0i#4nSl)6$hs{lrz#JvG8NwU_@hA*7K19iRS*5_*@Ka^3`>?f z{kG=UwR0EP$Ul}*D^hM=V2^Bkg)F!Ki2$v)sxqzYv*d%X;>FF}mJF?antc`1Tu~7h z(11yjV0v24b<^r3J%pQr&)8(ovQq7k1;2PSO?y1Ez1cRDFUT+7X-~#X&xmhVAY(W) zhZ6>OlqqOK`E2>&*3@|A*IXLoZ4xKsPRMA~V`H4jZ#D6Ll)--+~MIdX)_m$yqRIgma-B8SEeJuZCW^*>S{9_}bt zU!9Hc68Vh~Y?mf_%KS&f;871q;g$L!UrCu3X#dH|(pf1kH{-m1{y5Lff3!`ydkoFQ zw7bPDPDR7V#^x*~GkfZPTNc*;TUo#ehsu<3>P_lmeuYMCA|!Okt0j0p><{l*PJerv z6QI7mW=&*}#6xzu$|3P2dJXrbvjj+Jkd#I|$UM_X!--X)>lng55tnI{ZxTV~C-|}q z9r0@jl$YK!=cBUBdB<^2Fen{msWBc{oZwLTlumJ37Qv)=A_Aq;RmNpLf+zFK`i~=x z0=-W`rYnfcAmP%LU=Uo&EAJ_d0ywG^z;EZzYH+1|=0NW(6=@WwK<`Odl$T(oo6_iB z=B4YT=^5QWhM*wGd~}t8p37%4&3q+T)IOAkcD@aE57GbwehYZL<-5mtI;$78*_61K z`3OgIpfc!w0|J#v^^#YDN%!Z(^-Wx<&eYEG8Ql+ydszp1htl_nbh^?#^(W;a__7R{ zm+obLN|WjI9tC(&|N4}7)S&u`R;4|oU9gmazxt_l)cTh73tOSB&vw{$9wJz6_V*nj z$3e$G5<&?dB(6!ky`Gnx_gdcd{LT5l%>VG7mG?||Iy`R|R0FY8`*szRyQQ*pe~TV<`XP<=7f6nd>DwdS4Wi({J*xz*n~()!=%6VbP#MqBfJ`S*>sr?zizpWcwRVc&+2J5Js| z_CV_czwJ~yf7SV~uCA_A8w)p%ZTzUawfkWA#Z942`+LfJcJ!R?P3Ya;`{&KE&8Hr$ zfAF=wVBeW7JGPwO+PL-CTQ6=4Z#x?c$1XlJ(%;no%|K}2mF=n9hqnKHkoe}bE?iX? z!qOT2$yuM>h@WKTbus6wByBI^8sb|;+=6&W#I1<$7I7P(ri-{8>FY(@i8J?e*i}Hd z1u4mR!s8m^gCcH0yg|gRi0>6~8)W=EB5p@|hlo3|qk6e%VB4;T2Sy+OH~>S}yKwj! zP)522Mt1&ac*wJ?JP27YBq%%KQGOUcnmx)gNFoJieQValj)B45Ki)QiLI+UM-7pKc zO&OUrXVdV|F3;e=(7?#HT?74|*yEnaL&MSG;h}O=j>_JJ(gy)%h}DQHJD~IHhoO-&%<`6_)rqeAJ%9fPU5J}h literal 0 HcmV?d00001 diff --git a/src/main/assets/index.android.bundle b/src/main/assets/index.android.bundle index ad50bea5..d8e53344 100644 --- a/src/main/assets/index.android.bundle +++ b/src/main/assets/index.android.bundle @@ -1,297 +1,79677 @@ -(e='undefined'!=typeof global?global:'undefined'!=typeof self?self:this).__DEV__=!1,e.__BUNDLE_START_TIME__=e.nativePerformanceNow?e.nativePerformanceNow():Date.now();var e; -!(function(r){'use strict';r.require=i,r.__d=function(r,i,t){if(i in e)return;e[i]={dependencyMap:t,exports:void 0,factory:r,hasError:!1,isInitialized:!1}};var e=Object.create(null);function i(i){var n=i,o=e[n];return o&&o.isInitialized?o.exports:(function(e,i){if(!t&&r.ErrorUtils){t=!0;var n=void 0;try{n=a(e,i)}catch(e){r.ErrorUtils.reportFatalError(e)}return t=!1,n}return a(e,i)})(n,o)}i.async=function(r){return Promise.resolve().then(function(){return i(r)})};var t=!1;var n=16,o=-1>>>n;function a(t,a){var u=r.nativeRequire;if(!a&&u){u(t&o,t>>>n),a=e[t]}if(!a)throw Error('Requiring unknown module "'+t+'".');if(a.hasError)throw s=t,c=a.error,Error('Requiring module "'+s+'", which threw an exception: '+c);var s,c;a.isInitialized=!0;var d=a.exports={},f=a,l=f.factory,p=f.dependencyMap;try{var v={exports:d};return l(r,i,v,d,p),a.factory=void 0,a.dependencyMap=void 0,a.exports=v.exports}catch(r){throw a.hasError=!0,a.error=r,a.isInitialized=!1,a.exports=void 0,r}}})('undefined'!=typeof global?global:'undefined'!=typeof self?self:this); -'undefined'!=typeof global?global:'undefined'!=typeof self&&self,Object.assign=function(e,n){for(var f=1;f=0||g.indexOf('description')>=0))return e(r);if(0===g.length){if(f(r)){var v=r.name?': '+r.name:'';return n.stylize('[Function'+v+']','special')}if(a(r))return n.stylize(RegExp.prototype.toString.call(r),'regexp');if(l(r))return n.stylize(Date.prototype.toString.call(r),'date');if(c(r))return e(r)}var h='',d=!1,b=['{','}'];m=r,Array.isArray(m)&&(d=!0,b=['[',']']);var m;if(f(r)){h=' [Function'+(r.name?': '+r.name:'')+']'}if(a(r)&&(h=' '+RegExp.prototype.toString.call(r)),l(r)&&(h=' '+Date.prototype.toUTCString.call(r)),c(r)&&(h=' '+e(r)),0===g.length&&(!d||0==r.length))return b[0]+h+b[1];if(u<0)return a(r)?n.stylize(RegExp.prototype.toString.call(r),'regexp'):n.stylize('[Object]','special');n.seen.push(r);var j;return j=d?(function(n,r,e,i,o){for(var a=[],u=0,l=r.length;u=0&&0,n+r.replace(/\u001b\[\d\d?m/g,'').length+1},0)>60)return e[0]+(''===r?'':r+'\n ')+' '+n.join(',\n ')+' '+e[1];return e[0]+r+' '+n.join(', ')+' '+e[1]})(j,h,b)}function e(n){return'['+Error.prototype.toString.call(n)+']'}function t(n,e,t,a,u,l){var c,f,p;if((p=Object.getOwnPropertyDescriptor(e,u)||{value:e[u]}).get?f=p.set?n.stylize('[Getter/Setter]','special'):n.stylize('[Getter]','special'):p.set&&(f=n.stylize('[Setter]','special')),s(a,u)||(c='['+u+']'),f||(n.seen.indexOf(p.value)<0?(f=i(t)?r(n,p.value,null):r(n,p.value,t-1)).indexOf('\n')>-1&&(f=l?f.split('\n').map(function(n){return' '+n}).join('\n').substr(2):'\n'+f.split('\n').map(function(n){return' '+n}).join('\n')):f=n.stylize('[Circular]','special')),o(c)){if(l&&u.match(/^\d+$/))return f;(c=JSON.stringify(''+u)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(c=c.substr(1,c.length-2),c=n.stylize(c,'name')):(c=c.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),c=n.stylize(c,'string'))}return c+': '+f}function i(n){return null===n}function o(n){return void 0===n}function a(n){return u(n)&&'[object RegExp]'===p(n)}function u(n){return'object'==typeof n&&null!==n}function l(n){return u(n)&&'[object Date]'===p(n)}function c(n){return u(n)&&('[object Error]'===p(n)||n instanceof Error)}function f(n){return'function'==typeof n}function p(n){return Object.prototype.toString.call(n)}function s(n,r){return Object.prototype.hasOwnProperty.call(n,r)}return function(e,t){return r({seen:[],stylize:n},e,t.depth)}})(),e='(index)',t={trace:0,info:1,warn:2,error:3},i=[];i[t.trace]='debug',i[t.info]='log',i[t.warn]='warning',i[t.error]='error';var o=1;if(n.nativeLoggingHook){function a(e){return function(){var a=void 0;a=1===arguments.length&&'string'==typeof arguments[0]?arguments[0]:Array.prototype.map.call(arguments,function(n){return r(n,{depth:10})}).join(', ');var u=e;'Warning: '===a.slice(0,9)&&u>=t.error&&(u=t.warn),n.__inspectorLog&&n.__inspectorLog(i[u],a,[].slice.call(arguments),o),n.nativeLoggingHook(a,u)}}function u(n,r){return Array.apply(null,Array(r)).map(function(){return n})}function l(r){if(!Array.isArray(r)){var i=r;r=[];for(var o in i)if(i.hasOwnProperty(o)){var a=i[o];a[e]=o,r.push(a)}}if(0!==r.length){var l=Object.keys(r[0]).sort(),c=[],f=[];l.forEach(function(n,e){f[e]=n.length;for(var t=0;t';return function(){return u.applyWithGuard(r,t||this,arguments,null,n)}}};r.ErrorUtils=u})('undefined'!=typeof global?global:'undefined'!=typeof self?self:this); -!(function(e){if(void 0===Number.EPSILON&&Object.defineProperty(Number,'EPSILON',{value:Math.pow(2,-52)}),void 0===Number.MAX_SAFE_INTEGER&&Object.defineProperty(Number,'MAX_SAFE_INTEGER',{value:Math.pow(2,53)-1}),void 0===Number.MIN_SAFE_INTEGER&&Object.defineProperty(Number,'MIN_SAFE_INTEGER',{value:-(Math.pow(2,53)-1)}),!Number.isNaN){var r=e.isNaN;Object.defineProperty(Number,'isNaN',{configurable:!0,enumerable:!1,value:function(e){return'number'==typeof e&&r(e)},writable:!0})}})('undefined'!=typeof global?global:'undefined'!=typeof self?self:this); -'undefined'!=typeof global?global:'undefined'!=typeof self&&self,String.prototype.startsWith||(String.prototype.startsWith=function(t){'use strict';if(null==this)throw TypeError();var r=String(this),e=arguments.length>1?Number(arguments[1])||0:0,n=Math.min(Math.max(e,0),r.length);return r.indexOf(String(t),e)===n}),String.prototype.endsWith||(String.prototype.endsWith=function(t){'use strict';if(null==this)throw TypeError();var r=String(this),e=r.length,n=String(t),i=arguments.length>1?Number(arguments[1])||0:e,o=Math.min(Math.max(i,0),e)-n.length;return!(o<0)&&r.lastIndexOf(n,o)===o}),String.prototype.repeat||(String.prototype.repeat=function(t){'use strict';if(null==this)throw TypeError();var r=String(this);if((t=Number(t)||0)<0||t===1/0)throw RangeError();if(1===t)return r;for(var e='';t;)1&t&&(e+=r),(t>>=1)&&(r+=r);return e}),String.prototype.includes||(String.prototype.includes=function(t,r){'use strict';return'number'!=typeof r&&(r=0),!(r+t.length>this.length)&&-1!==this.indexOf(t,r)}),String.prototype.codePointAt||(String.prototype.codePointAt=function(t){if(null==this)throw TypeError();var r=String(this),e=r.length,n=t?Number(t):0;if(Number.isNaN(n)&&(n=0),!(n<0||n>=e)){var i,o=r.charCodeAt(n);return o>=55296&&o<=56319&&e>n+1&&(i=r.charCodeAt(n+1))>=56320&&i<=57343?1024*(o-55296)+i-56320+65536:o}}); -!(function(e){function r(e,r){if(null==this)throw new TypeError('Array.prototype.findIndex called on null or undefined');if('function'!=typeof e)throw new TypeError('predicate must be a function');for(var n=Object(this),t=n.length>>>0,o=0;o=0?t=o:(t=n+o)<0&&(t=0);for(var i;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},r.possibleConstructorReturn=function(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r},r.slicedToArray=(function(){return function(e,r){if(Array.isArray(e))return e;if(("function"==typeof Symbol?Symbol.iterator:"@@iterator")in Object(e))return(function(e,r){var t=[],n=!0,o=!1,i=void 0;try{for(var f,u=e["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();!(n=(f=u.next()).done)&&(t.push(f.value),!r||t.length!==r);n=!0);}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t})(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),r.taggedTemplateLiteral=function(e,r){return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(r)}}))},r.toArray=function(e){return Array.isArray(e)?e:Array.from(e)},r.toConsumableArray=function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);rj.length&&j.push(e)}function E(e,t,n,r){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var u=!1;if(null===e)u=!0;else switch(o){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case c:case f:case a:case p:u=!0}}if(u)return n(r,e,""===t?"."+C(e,0):t),1;if(u=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l0?r[r.length-1]:null,l=r.length>1?r[r.length-2]:null,f='function'==typeof u,s='function'==typeof l;s&&a(f,'Cannot have a non-function arg after a function arg.');var c=f?u:null,v=s?l:null,d=f+s;r=r.slice(0,r.length-d),o.enqueueNativeCall(n,t,r,v,c)};return i.type=r,i})(t,r,f)}),babelHelpers.extends(v,l),{name:i,module:v}}e.__fbGenNativeModule=i;function u(e,n){return-1!==e.indexOf(n)}var l={};if(e.nativeModuleProxy)l=e.nativeModuleProxy;else{var f=e.__fbBatchedBridgeConfig;a(f,'__fbBatchedBridgeConfig is not set, cannot invoke native modules');var s=n(33);(f.remoteModuleConfig||[]).forEach(function(n,t){var r=i(n,t);r&&(r.module?l[r.name]=r.module:s(l,r.name,{get:function(){return(function(n,t){a(e.nativeRequireModuleConfig,'Can\'t lazily create module without nativeRequireModuleConfig');var r=i(e.nativeRequireModuleConfig(n),t);return r&&r.module})(r.name,t)}}))})}t.exports=l},20); -__d(function(e,r,t,c){'use strict';var i=new(r(22));Object.defineProperty(e,'__fbBatchedBridge',{configurable:!0,value:i}),t.exports=i},21); -__d(function(e,l,t,u){'use strict';var s=l(23),i=l(24),a=(l(25),l(18)),n=(l(26),null),h=(function(){function t(){babelHelpers.classCallCheck(this,t),this._lazyCallableModules={},this._queue=[[],[],[],0],this._successCallbacks=[],this._failureCallbacks=[],this._callID=0,this._lastFlush=0,this._eventLoopStartTime=(new Date).getTime(),this.callFunctionReturnFlushedQueue=this.callFunctionReturnFlushedQueue.bind(this),this.callFunctionReturnResultAndFlushedQueue=this.callFunctionReturnResultAndFlushedQueue.bind(this),this.flushedQueue=this.flushedQueue.bind(this),this.invokeCallbackAndReturnFlushedQueue=this.invokeCallbackAndReturnFlushedQueue.bind(this)}return babelHelpers.createClass(t,[{key:"callFunctionReturnFlushedQueue",value:function(e,l,t){var u=this;return this.__guard(function(){u.__callFunction(e,l,t)}),this.flushedQueue()}},{key:"callFunctionReturnResultAndFlushedQueue",value:function(e,l,t){var u=this,s=void 0;return this.__guard(function(){s=u.__callFunction(e,l,t)}),[s,this.flushedQueue()]}},{key:"invokeCallbackAndReturnFlushedQueue",value:function(e,l){var t=this;return this.__guard(function(){t.__invokeCallback(e,l)}),this.flushedQueue()}},{key:"flushedQueue",value:function(){var e=this;this.__guard(function(){e.__callImmediates()});var l=this._queue;return this._queue=[[],[],[],this._callID],l[0].length?l:null}},{key:"getEventLoopRunningTime",value:function(){return(new Date).getTime()-this._eventLoopStartTime}},{key:"registerCallableModule",value:function(e,l){this._lazyCallableModules[e]=function(){return l}}},{key:"registerLazyCallableModule",value:function(e,l){var t=void 0,u=l;this._lazyCallableModules[e]=function(){return u&&(t=u(),u=null),t}}},{key:"getCallableModule",value:function(e){var l=this._lazyCallableModules[e];return l?l():null}},{key:"enqueueNativeCall",value:function(l,t,u,s,a){(s||a)&&(s&&u.push(this._callID<<1),a&&u.push(this._callID<<1|1),this._successCallbacks[this._callID]=a,this._failureCallbacks[this._callID]=s),this._callID++,this._queue[0].push(l),this._queue[1].push(t),this._queue[2].push(u);var n=(new Date).getTime();if(e.nativeFlushQueueImmediate&&(n-this._lastFlush>=5||0===this._inCall)){var h=this._queue;this._queue=[[],[],[],this._callID],this._lastFlush=n,e.nativeFlushQueueImmediate(h)}i.counterEvent('pending_js_to_native_queue',this._queue[0].length),this.__spy&&this.__spy({type:1,module:l+'',method:t,args:u})}},{key:"createDebugLookup",value:function(e,l,t){}},{key:"__guard",value:function(e){this._inCall++;try{e()}catch(e){s.reportFatalError(e)}finally{this._inCall--}}},{key:"__callImmediates",value:function(){i.beginEvent('JSTimers.callImmediates()'),n||(n=l(27)),n.callImmediates(),i.endEvent()}},{key:"__callFunction",value:function(e,l,t){this._lastFlush=(new Date).getTime(),this._eventLoopStartTime=this._lastFlush,i.beginEvent(e+"."+l+"()"),this.__spy&&this.__spy({type:0,module:e,method:l,args:t});var u=this.getCallableModule(e);a(!!u,'Module %s is not a registered callable module (calling %s)',e,l),a(!!u[l],'Method %s does not exist on module %s',l,e);var s=u[l].apply(u,t);return i.endEvent(),s}},{key:"__invokeCallback",value:function(e,l){this._lastFlush=(new Date).getTime(),this._eventLoopStartTime=this._lastFlush;var t=e>>>1,u=1&e?this._successCallbacks[t]:this._failureCallbacks[t];u&&(this._successCallbacks[t]=this._failureCallbacks[t]=null,u.apply(void 0,babelHelpers.toConsumableArray(l)))}}],[{key:"spy",value:function(e){t.prototype.__spy=!0===e?function(e){console.log((0===e.type?'N->JS':'JS->N')+" : "+(e.module?e.module+'.':'')+e.method+"("+JSON.stringify(e.args)+")")}:!1===e?null:e}}]),t})();t.exports=h},22); -__d(function(r,o,t,i){t.exports=r.ErrorUtils},23); -__d(function(n,e,t,i){'use strict';e(18);var c=!1,o=0,a={installReactHook:function(n){n,!0},setEnabled:function(n){c!==n&&(c=n)},isEnabled:function(){return c},beginEvent:function(e,t){c&&(e='function'==typeof e?e():e,n.nativeTraceBeginSection(131072,e,t))},endEvent:function(){c&&n.nativeTraceEndSection(131072)},beginAsyncEvent:function(e){var t=o;return c&&(o++,e='function'==typeof e?e():e,n.nativeTraceBeginAsyncSection(131072,e,t,0)),t},endAsyncEvent:function(e,t){c&&(e='function'==typeof e?e():e,n.nativeTraceEndAsyncSection(131072,e,t,0))},counterEvent:function(e,t){c&&(e='function'==typeof e?e():e,n.nativeTraceCounter&&n.nativeTraceCounter(131072,e,t))},attachToRelayProfiler:function(n){n.attachProfileHandler('*',function(n){var e=a.beginAsyncEvent(n);return function(){a.endAsyncEvent(n,e)}}),n.attachAggregateHandler('*',function(n,e){a.beginEvent(n),e(),a.endEvent()})},swizzleJSON:function(){a.measureMethods(JSON,'JSON',['parse','stringify'])},measureMethods:function(n,e,t){},measure:function(n,e,t){return t}};t.exports=a},24); -__d(function(t,n,c,i){'use strict';c.exports=function(t){}},25); -__d(function(t,n,i,e){'use strict';i.exports=function(t){var n,i=typeof t;if(void 0===t)n='undefined';else if(null===t)n='null';else if('string'===i)n='"'+t+'"';else if('function'===i)try{n=t.toString()}catch(t){n='[function unknown]'}else try{n=JSON.stringify(t)}catch(i){if('function'==typeof t.toString)try{n=t.toString()}catch(t){}}return n||'["'+i+'" failed to stringify]'}},26); -__d(function(e,t,n,r){'use strict';t(28),t(24);var i=t(18),l=t(20).Timing,a=null;function o(){return a||(a=t(29)),a()}var u=16.666666666666668,c=[],s=[],m=[],f=[],d=[],v={},h=[],I=1,T=null,g=!1;function p(e,t){var n=I++,r=(function(){var e=m.indexOf(null);return-1===e&&(e=m.length),e})();return m[r]=n,c[r]=e,s[r]=t,n}function b(e,n,r){t(32)(e<=I,'Tried to call timer with ID %s but no such timer exists.',e);var i=m.indexOf(e);if(-1!==i){var l=s[i],a=c[i];if(a&&l){'setTimeout'!==l&&'setImmediate'!==l&&'requestAnimationFrame'!==l&&'requestIdleCallback'!==l||x(i);try{'setTimeout'===l||'setInterval'===l||'setImmediate'===l?a():'requestAnimationFrame'===l?a(o()):'requestIdleCallback'===l?a({timeRemaining:function(){return Math.max(0,u-(o()-n))},didTimeout:!!r}):console.error('Tried to call a callback with invalid type: '+l)}catch(e){T?T.push(e):T=[e]}}else console.error('No callback found for timerID '+e)}}function w(){if(f.length>0){var e=f.slice();f=[];for(var t=0;t0}function x(e){m[e]=null,c[e]=null,s[e]=null,h[e]=null}function k(e){if(null!=e){var t=m.indexOf(e);if(-1!==t){x(t);var n=s[t];'setImmediate'!==n&&'requestIdleCallback'!==n&&l.deleteTimer(e)}}}var q={setTimeout:function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;i2?n-2:0),i=2;i1?t-1:0),r=1;r-1&&(d.splice(e,1),b(r,o(),!0)),delete v[r],0===d.length&&l.setSendIdleEvents(!1)},n);v[r]=i}return r},cancelIdleCallback:function(e){k(e);var t=d.indexOf(e);-1!==t&&d.splice(t,1);var n=v[e];n&&(q.clearTimeout(n),delete v[e]),0===d.length&&l.setSendIdleEvents(!1)},clearTimeout:function(e){k(e)},clearInterval:function(e){k(e)},clearImmediate:function(e){k(e);var t=f.indexOf(e);-1!==t&&f.splice(t,1)},cancelAnimationFrame:function(e){k(e)},callTimers:function(e){i(0!==e.length,'Cannot call `callTimers` with an empty list of IDs.'),T=null;for(var t=0;t1)for(var r=1;r0){var t=d.slice();d=[];for(var n=0;n1&&(a-=1),a<.16666666666666666?e+6*(r-e)*a:a<.5?r:a<.6666666666666666?e+(r-e)*(.6666666666666666-a)*6:e}function t(e,r,a){var l=a<.5?a*(1+r):a+r-a*r,t=2*a-l,i=n(t,l,e+.3333333333333333),o=n(t,l,e),u=n(t,l,e-.3333333333333333);return Math.round(255*i)<<24|Math.round(255*o)<<16|Math.round(255*u)<<8}var i='[-+]?\\d*\\.?\\d+',o=i+'%';function u(){for(var e=arguments.length,r=Array(e),a=0;a255?255:r}function s(e){return(parseFloat(e)%360+360)%360/360}function h(e){var r=parseFloat(e);return r<0?0:r>1?255:Math.round(255*r)}function c(e){var r=parseFloat(e);return r<0?0:r>100?1:r/100}var b={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199};a.exports=function(e){var r;return'number'==typeof e?e>>>0===e&&e>=0&&e<=4294967295?e:null:(r=d.hex6.exec(e))?parseInt(r[1]+'ff',16)>>>0:b.hasOwnProperty(e)?b[e]:(r=d.rgb.exec(e))?(g(r[1])<<24|g(r[2])<<16|g(r[3])<<8|255)>>>0:(r=d.rgba.exec(e))?(g(r[1])<<24|g(r[2])<<16|g(r[3])<<8|h(r[4]))>>>0:(r=d.hex3.exec(e))?parseInt(r[1]+r[1]+r[2]+r[2]+r[3]+r[3]+'ff',16)>>>0:(r=d.hex8.exec(e))?parseInt(r[1],16)>>>0:(r=d.hex4.exec(e))?parseInt(r[1]+r[1]+r[2]+r[2]+r[3]+r[3]+r[4]+r[4],16)>>>0:(r=d.hsl.exec(e))?(255|t(s(r[1]),c(r[2]),c(r[3])))>>>0:(r=d.hsla.exec(e))?(t(s(r[1]),c(r[2]),c(r[3]))|h(r[4]))>>>0:null}},41); -__d(function(_,t,E,i){'use strict';var e=t(43).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.NativeMethodsMixin;E.exports=e},42); -__d(function(t,i,o,r){'use strict';var s=void 0;s=i(44),o.exports=s},43); -__d(function(e,t,n,r){"use strict";var i=t(18),o=t(45),a=t(15),u=t(12),l=t(49),s=t(50),c=t(51),f=t(53),d=t(54);t(25),t(55);var p=t(102),h=t(16),v=function(e){return!0},g=v;var y,m={injection:{injectDialog:function(e){i(g===v,"The custom dialog was already injected."),i("function"==typeof e,"Injected showDialog() must be a function."),g=e}},logCapturedError:function(e){if(!1!==g(e)){var t=e.error;console.error(t)}}},b={_caughtError:null,_hasCaughtError:!1,_rethrowError:null,_hasRethrowError:!1,injection:{injectErrorUtils:function(e){i("function"==typeof e.invokeGuardedCallback,"Injected invokeGuardedCallback() must be a function."),C=e.invokeGuardedCallback}},invokeGuardedCallback:function(e,t,n,r,i,o,a,u,l){C.apply(b,arguments)},invokeGuardedCallbackAndCatchFirstError:function(e,t,n,r,i,o,a,u,l){if(b.invokeGuardedCallback.apply(this,arguments),b.hasCaughtError()){var s=b.clearCaughtError();b._hasRethrowError||(b._hasRethrowError=!0,b._rethrowError=s)}},rethrowCaughtError:function(){return T.apply(b,arguments)},hasCaughtError:function(){return b._hasCaughtError},clearCaughtError:function(){if(b._hasCaughtError){var e=b._caughtError;return b._caughtError=null,b._hasCaughtError=!1,e}i(!1,"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.")}},C=function(e,t,n,r,i,o,a,u,l){b._hasCaughtError=!1,b._caughtError=null;var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){b._caughtError=e,b._hasCaughtError=!0}},T=function(){if(b._hasRethrowError){var e=b._rethrowError;throw b._rethrowError=null,b._hasRethrowError=!1,e}},P=b;function k(e,t,n,r){var i=e.type||"unknown-event";e.currentTarget=x.getNodeFromInstance(r),P.invokeGuardedCallbackAndCatchFirstError(i,n,void 0,e),e.currentTarget=null}var x={isEndish:function(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e},isMoveish:function(e){return"topMouseMove"===e||"topTouchMove"===e},isStartish:function(e){return"topMouseDown"===e||"topTouchStart"===e},executeDirectDispatch:function(e){var t=e._dispatchListeners,n=e._dispatchInstances;i(!Array.isArray(t),"executeDirectDispatch(...): Invalid `event`."),e.currentTarget=t?x.getNodeFromInstance(n):null;var r=t?t(e):null;return e.currentTarget=null,e._dispatchListeners=null,e._dispatchInstances=null,r},executeDispatchesInOrder:function(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:F,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}},isPortal:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===F},REACT_PORTAL_TYPE:F},L={},O={};function z(e){return L[e]||null}var W={getClosestInstanceFromNode:z,getInstanceFromNode:z,getNodeFromInstance:function(e){var t=e.stateNode._nativeTag;return i(t,"All native instances should have a tag."),t},precacheFiberNode:function(e,t){L[t]=e},uncacheFiberNode:function(e){delete L[e],delete O[e]},getFiberCurrentPropsFromNode:function(e){return O[e._nativeTag]||null},updateFiberProps:function(e,t){O[e]=t}},M="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},Y={enableAsyncSubtreeAPI:!0},B=0,Q=1,X=2,G=4,V=6,$=8,q=16,J=32,K=64,Z=128,ee=0,te=1,ne=2,re=3,ie=4,oe=5,ae=0,ue=1,le=2,se=3,ce=4,fe=5,de=6,pe=7,he=8,ve=9,ge=10,ye=J,me=ee,be=te,Ce=ne,Te=le,Pe=se,ke=void 0,xe=void 0;function Re(e,t){return e!==Ce&&e!==be||t!==Ce&&t!==be?e===me&&t!==me?-255:e!==me&&t===me?255:e-t:0}function Se(e,t,n,r){null!==n?n.next=t:(t.next=e.first,e.first=t),null!==r?t.next=r:e.last=t}function Ne(e,t){var n=t.priorityLevel,r=null,i=null;if(null!==e.last&&Re(e.last.priorityLevel,n)<=0)r=e.last;else for(i=e.first;null!==i&&Re(i.priorityLevel,n)<=0;)r=i,i=i.next;return r}function Ee(e,t){!(function(e){var t=e.alternate,n=e.updateQueue;null===n&&(n=e.updateQueue={first:null,last:null,hasForceUpdate:!1,callbackList:null});var r=void 0;null!==t?null===(r=t.updateQueue)&&(r=t.updateQueue={first:null,last:null,hasForceUpdate:!1,callbackList:null}):r=null,ke=n,xe=r!==n?r:null})(e);var n=ke,r=xe,i=Ne(n,t),o=null!==i?i.next:n.first;if(null===r)return Se(n,t,i,o),null;var a=Ne(r,t),u=null!==a?a.next:r.first;if(Se(n,t,i,o),o===u&&null!==o||i===a&&null!==i)return null===a&&(r.first=t),null===u&&(r.last=null),null;var l,s=(l=t,{priorityLevel:l.priorityLevel,partialState:l.partialState,callback:l.callback,isReplace:l.isReplace,isForced:l.isForced,isTopLevelUnmount:l.isTopLevelUnmount,next:null});return Se(r,s,a,u),s}function we(e,t,n,r){var i=e.partialState;return"function"==typeof i?i.call(t,n,r):i}var Ie={addUpdate:function(e,t,n,r){Ee(e,{priorityLevel:r,partialState:t,callback:n,isReplace:!1,isForced:!1,isTopLevelUnmount:!1,next:null})},addReplaceUpdate:function(e,t,n,r){Ee(e,{priorityLevel:r,partialState:t,callback:n,isReplace:!0,isForced:!1,isTopLevelUnmount:!1,next:null})},addForceUpdate:function(e,t,n){Ee(e,{priorityLevel:n,partialState:null,callback:t,isReplace:!1,isForced:!0,isTopLevelUnmount:!1,next:null})},getUpdatePriority:function(e){var t=e.updateQueue;return null===t?me:e.tag!==Te&&e.tag!==Pe?me:null!==t.first?t.first.priorityLevel:me},addTopLevelUpdate:function(e,t,n,r){var i=null===t.element,o={priorityLevel:r,partialState:t,callback:n,isReplace:!1,isForced:!1,isTopLevelUnmount:i,next:null},a=Ee(e,o);if(i){var u=ke,l=xe;null!==u&&null!==o.next&&(o.next=null,u.last=o),null!==l&&null!==a&&null!==a.next&&(a.next=null,l.last=o)}},beginUpdateQueue:function(e,t,n,r,i,o,a){if(null!==e&&e.updateQueue===n){var u=n;n=t.updateQueue={first:u.first,last:u.last,callbackList:null,hasForceUpdate:!1}}for(var l=n.callbackList,s=n.hasForceUpdate,c=i,f=!0,d=n.first;null!==d&&Re(d.priorityLevel,a)<=0;){n.first=d.next,null===n.first&&(n.last=null);var p=void 0;d.isReplace?(c=we(d,r,c,o),f=!0):(p=we(d,r,c,o))&&(c=f?babelHelpers.extends({},c,p):babelHelpers.extends(c,p),f=!1),d.isForced&&(s=!0),null===d.callback||d.isTopLevelUnmount&&null!==d.next||(l=null!==l?l:[],l.push(d.callback),t.effectTag|=ye),d=d.next}return n.callbackList=l,n.hasForceUpdate=s,null!==n.first||null!==l||s||(t.updateQueue=null),c},commitCallbacks:function(e,t,n){var r=t.callbackList;if(null!==r){t.callbackList=null;for(var o=0;o-1;)$e[qe]=null,qe--},tt=function(e){return Ye(e)===We},nt=le,rt=se,it=Je,ot=Ke,at=Ze,ut=it(a),lt=it(!1),st=a;function ct(e,t,n){var r=e.stateNode;r.__reactInternalMemoizedUnmaskedChildContext=t,r.__reactInternalMemoizedMaskedChildContext=n}function ft(e){return e.tag===nt&&null!=e.type.childContextTypes}function dt(e,t){var n=e.stateNode,r=e.type.childContextTypes;if("function"!=typeof n.getChildContext)return t;var o=void 0;o=n.getChildContext();for(var a in o)i(a in r,'%s.getChildContext(): key "%s" is not defined in childContextTypes.',_e(e)||"Unknown",a);return babelHelpers.extends({},t,o)}var pt={getUnmaskedContext:function(e){return ft(e)?st:ut.current},cacheContext:ct,getMaskedContext:function(e,t){var n=e.type.contextTypes;if(!n)return a;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={};for(var o in n)i[o]=t[o];return r&&ct(e,t,i),i},hasContextChanged:function(){return lt.current},isContextConsumer:function(e){return e.tag===nt&&null!=e.type.contextTypes},isContextProvider:ft,popContextProvider:function(e){ft(e)&&(ot(lt,e),ot(ut,e))},popTopLevelContextObject:function(e){ot(lt,e),ot(ut,e)},pushTopLevelContextObject:function(e,t,n){i(null==ut.cursor,"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue."),at(ut,t,e),at(lt,n,e)},processChildContext:dt,pushContextProvider:function(e){if(!ft(e))return!1;var t=e.stateNode,n=t&&t.__reactInternalMemoizedMergedChildContext||a;return st=ut.current,at(ut,n,e),at(lt,lt.current,e),!0},invalidateContextProvider:function(e,t){var n=e.stateNode;if(i(n,"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue."),t){var r=dt(e,st);n.__reactInternalMemoizedMergedChildContext=r,ot(lt,e),ot(ut,e),at(ut,r,e),at(lt,t,e)}else ot(lt,e),at(lt,t,e)},resetContext:function(){st=a,ut.current=a,lt.current=!1},findCurrentUnmaskedContext:function(e){i(tt(e)&&e.tag===nt,"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.");for(var t=e;t.tag!==rt;){if(ft(t))return t.stateNode.__reactInternalMemoizedMergedChildContext;var n=t.return;i(n,"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue."),t=n}return t.stateNode.context}},ht=1,vt=ae,gt=le,yt=se,mt=fe,bt=de,Ct=ce,Tt=pe,Pt=ve,kt=ge,xt=ee,Rt=0,St=B;var Nt=function(e,t,n){return new(function(e,t,n){this.tag=e,this.key=t,this.type=null,this.stateNode=null,this.return=null,this.child=null,this.sibling=null,this.index=0,this.ref=null,this.pendingProps=null,this.memoizedProps=null,this.updateQueue=null,this.memoizedState=null,this.internalContextTag=n,this.effectTag=St,this.nextEffect=null,this.firstEffect=null,this.lastEffect=null,this.pendingWorkPriority=xt,this.alternate=null})(e,t,n)};function Et(e,t,n,r){var o=void 0;if("function"==typeof e)a=e,o=a.prototype&&a.prototype.isReactComponent?Nt(gt,t,n):Nt(vt,t,n),o.type=e;else if("string"==typeof e)o=Nt(mt,t,n),o.type=e;else if("object"==typeof e&&null!==e&&"number"==typeof e.tag)o=e;else{i(!1,"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",null==e?e:typeof e,"")}var a;return o}var wt=function(e,t){var n=e.alternate;return null===n?((n=Nt(e.tag,e.key,e.internalContextTag)).type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.effectTag=St,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.pendingWorkPriority=t,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n},It=function(e,t,n){var r=Et(e.type,e.key,t);return r.pendingProps=e.props,r.pendingWorkPriority=n,r},_t=function(e,t,n){var r=Nt(kt,null,t);return r.pendingProps=e,r.pendingWorkPriority=n,r},At=function(e,t,n){var r=Nt(bt,null,t);return r.pendingProps=e,r.pendingWorkPriority=n,r},Ht=function(){var e=Nt(mt,null,Rt);return e.type="DELETED",e},Dt=function(e,t,n){var r=Nt(Tt,e.key,t);return r.type=e.handler,r.pendingProps=e,r.pendingWorkPriority=n,r},Ut=function(e,t,n){return Nt(Pt,null,t)},Ft=function(e,t,n){var r=Nt(Ct,e.key,t);return r.pendingProps=e.children||[],r.pendingWorkPriority=n,r.stateNode={containerInfo:e.containerInfo,implementation:e.implementation},r},jt=function(e,t){return e!==xt&&(t===xt||t>e)?e:t},Lt=function(){return Nt(yt,null,Rt)},Ot=function(e){var t=Lt(),n={current:t,containerInfo:e,isScheduled:!1,nextScheduledRoot:null,context:null,pendingContext:null};return t.stateNode=n,n},zt=function(e,t,n){return"\n in "+(e||"Unknown")+(t?" (at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+")":n?" (created by "+n+")":"")},Wt=ae,Mt=ue,Yt=le,Bt=fe;function Qt(e){switch(e.tag){case Wt:case Mt:case Yt:case Bt:var t=e._debugOwner,n=e._debugSource,r=_e(e),i=null;return t&&(i=_e(t)),zt(r,n,i);default:return""}}var Xt,Gt,Vt=function(e){var t="",n=e;do{t+=Qt(n),n=n.return}while(n);return t};"function"!=typeof Symbol||"function"==typeof Symbol&&!Symbol.for?(Xt=60104,Gt=60105):(Xt=("function"==typeof Symbol?Symbol.for:"@@for")("react.coroutine"),Gt=("function"==typeof Symbol?Symbol.for:"@@for")("react.yield"));var $t={createCoroutine:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Xt,key:null==r?null:""+r,children:e,handler:t,props:n}},createYield:function(e){return{$$typeof:Gt,value:e}},isCoroutine:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===Xt},isYield:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===Gt},REACT_YIELD_TYPE:Gt,REACT_COROUTINE_TYPE:Xt},qt=$t.REACT_COROUTINE_TYPE,Jt=$t.REACT_YIELD_TYPE,Kt=j.REACT_PORTAL_TYPE,Zt=wt,en=It,tn=_t,nn=At,rn=Dt,on=Ut,an=Ft,un=Array.isArray,ln=ue,sn=le,cn=de,fn=ce,dn=pe,pn=ve,hn=ge,vn=B,gn=X,yn=$,mn="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.iterator:"@@iterator"),bn="@@iterator",Cn="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.for:"@@for")&&("function"==typeof Symbol?Symbol.for:"@@for")("react.element")||60103;function Tn(e){if(null===e||void 0===e)return null;var t=mn&&e[mn]||e[bn];return"function"==typeof t?t:null}function Pn(e,t){var n=t.ref;if(null!==n&&"function"!=typeof n){if(t._owner){var r=t._owner,o=void 0;if(r){var u=r;i(u.tag===sn,"Stateless function components cannot have refs."),o=u.stateNode}i(o,"Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.",n);var l=""+n;if(null!==e&&null!==e.ref&&e.ref._stringRef===l)return e.ref;var s=function(e){var t=o.refs===a?o.refs={}:o.refs;null===e?delete t[l]:t[l]=e};return s._stringRef=l,s}i("string"==typeof n,"Expected ref to be a function or a string."),i(t._owner,"Element ref was specified as a string (%s) but no owner was set. You may have multiple copies of React loaded. (details: https://fb.me/react-refs-must-have-owner).",n)}return n}function kn(e,t){"textarea"!==e.type&&i(!1,"Objects are not valid as a React child (found: %s).%s","[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function xn(e,t){function n(n,r){if(t){if(!e){if(null===r.alternate)return;r=r.alternate}var i=n.lastEffect;null!==i?(i.nextEffect=r,n.lastEffect=r):n.firstEffect=n.lastEffect=r,r.nextEffect=null,r.effectTag=yn}}function r(e,r){if(!t)return null;for(var i=r;null!==i;)n(e,i),i=i.sibling;return null}function o(e,t){for(var n=new Map,r=t;null!==r;)null!==r.key?n.set(r.key,r):n.set(r.index,r),r=r.sibling;return n}function a(t,n){if(e){var r=Zt(t,n);return r.index=0,r.sibling=null,r}return t.pendingWorkPriority=n,t.effectTag=vn,t.index=0,t.sibling=null,t}function u(e,n,r){if(e.index=r,!t)return n;var i=e.alternate;if(null!==i){var o=i.index;return op?(h=f,f=null):h=f.sibling;var m=g(e,f,a[p],l);if(null===m){null===f&&(f=h);break}t&&f&&null===m.alternate&&n(e,f),d=u(m,d,p),null===c?s=m:c.sibling=m,c=m,f=h}if(p===a.length)return r(e,f),s;if(null===f){for(;pb?(C=h,h=null):C=h.sibling;var P=g(e,h,T.value,s);if(null===P){h||(h=C);break}t&&h&&null===P.alternate&&n(e,h),m=u(P,m,b),null===p?d=P:p.sibling=P,p=P,h=C}if(T.done)return r(e,h),d;if(null===h){for(;!T.done;b++,T=f.next()){var k=v(e,T.value,s);null!==k&&(m=u(k,m,b),null===p?d=k:p.sibling=k,p=k)}return d}for(var x=o(0,h);!T.done;b++,T=f.next()){var R=y(x,e,b,T.value,s);null!==R&&(t&&null!==R.alternate&&x.delete(null===R.key?b:R.key),m=u(R,m,b),null===p?d=R:p.sibling=R,p=R)}return t&&x.forEach(function(t){return n(e,t)}),d})(e,s,c,f);if(d&&kn(e,c),void 0===c)switch(e.tag){case sn:case ln:var p=e.type;i(!1,"%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.",p.displayName||p.name||"Component")}return r(e,s)}}var Rn={reconcileChildFibers:xn(!0,!0),reconcileChildFibersInPlace:xn(!1,!0),mountChildFibersInPlace:xn(!1,!1),cloneChildFibers:function(e,t){if(i(null===e||t.child===e.child,"Resuming work not yet implemented."),null!==t.child){var n=t.child,r=Zt(n,n.pendingWorkPriority);for(r.pendingProps=n.pendingProps,t.child=r,r.return=t;null!==n.sibling;)n=n.sibling,(r=r.sibling=Zt(n,n.pendingWorkPriority)).pendingProps=n.pendingProps,r.return=t;r.sibling=null}}},Sn=G,Nn=ht,En=pt.cacheContext,wn=pt.getMaskedContext,In=pt.getUnmaskedContext,_n=pt.isContextConsumer,An=Ie.addUpdate,Hn=Ie.addReplaceUpdate,Dn=Ie.addForceUpdate,Un=Ie.beginUpdateQueue,Fn=pt.hasContextChanged,jn=Xe,Ln=function(e,t,n,r){var o={isMounted:jn,enqueueSetState:function(n,r,i){var o=Ae.get(n),a=t(o,!1);An(o,r,i=void 0===i?null:i,a),e(o,a)},enqueueReplaceState:function(n,r,i){var o=Ae.get(n),a=t(o,!1);Hn(o,r,i=void 0===i?null:i,a),e(o,a)},enqueueForceUpdate:function(n,r){var i=Ae.get(n),o=t(i,!1);Dn(i,r=void 0===r?null:r,o),e(i,o)}};function u(e,t){t.updater=o,e.stateNode=t,Ae.set(t,e)}return{adoptClassInstance:u,constructClassInstance:function(e,t){var n=e.type,r=In(e),i=_n(e),o=i?wn(e,r):a,l=new n(t,o);return u(e,l),i&&En(e,r,o),l},mountClassInstance:function(e,t){var n=e.alternate,r=e.stateNode,u=r.state||null,l=e.pendingProps;i(l,"There must be pending props for an initial mount. This error is likely caused by a bug in React. Please file an issue.");var s=In(e);if(r.props=l,r.state=u,r.refs=a,r.context=wn(e,s),Y.enableAsyncSubtreeAPI&&null!=e.type&&null!=e.type.prototype&&!0===e.type.prototype.unstable_isAsyncReactComponent&&(e.internalContextTag|=Nn),"function"==typeof r.componentWillMount){!(function(e,t){var n=t.state;t.componentWillMount(),n!==t.state&&o.enqueueReplaceState(t,t.state,null)})(0,r);var c=e.updateQueue;null!==c&&(r.state=Un(n,e,c,r,u,l,t))}"function"==typeof r.componentDidMount&&(e.effectTag|=Sn)},updateClassInstance:function(e,t,a){var u=t.stateNode;s=t,(c=u).props=s.memoizedProps,c.state=s.memoizedState;var s,c,f=t.memoizedProps,d=t.pendingProps;d||(d=f,i(null!=d,"There should always be pending or memoized props. This error is likely caused by a bug in React. Please file an issue."));var p=u.context,h=In(t),v=wn(t,h);"function"!=typeof u.componentWillReceiveProps||f===d&&p===v||(function(e,t,n,r){var i=t.state;t.componentWillReceiveProps(n,r),t.state!==i&&o.enqueueReplaceState(t,t.state,null)})(0,u,d,v);var g=t.memoizedState,y=void 0;if(y=null!==t.updateQueue?Un(e,t,t.updateQueue,u,g,d,a):g,!(f!==d||g!==y||Fn()||null!==t.updateQueue&&t.updateQueue.hasForceUpdate))return"function"==typeof u.componentDidUpdate&&(f===e.memoizedProps&&g===e.memoizedState||(t.effectTag|=Sn)),!1;var m=(function(e,t,n,r,i,o){if(null===t||null!==e.updateQueue&&e.updateQueue.hasForceUpdate)return!0;var a=e.stateNode,u=e.type;return"function"==typeof a.shouldComponentUpdate?a.shouldComponentUpdate(n,i,o):!(u.prototype&&u.prototype.isPureReactComponent&&l(t,n)&&l(r,i))})(t,f,d,g,y,v);return m?("function"==typeof u.componentWillUpdate&&u.componentWillUpdate(d,y,v),"function"==typeof u.componentDidUpdate&&(t.effectTag|=Sn)):("function"==typeof u.componentDidUpdate&&(f===e.memoizedProps&&g===e.memoizedState||(t.effectTag|=Sn)),n(t,d),r(t,y)),u.props=d,u.state=y,u.context=v,m}}},On=Rn.mountChildFibersInPlace,zn=Rn.reconcileChildFibers,Wn=Rn.reconcileChildFibersInPlace,Mn=Rn.cloneChildFibers,Yn=Ie.beginUpdateQueue,Bn=pt.getMaskedContext,Qn=pt.getUnmaskedContext,Xn=pt.hasContextChanged,Gn=pt.pushContextProvider,Vn=pt.pushTopLevelContextObject,$n=pt.invalidateContextProvider,qn=ae,Jn=ue,Kn=le,Zn=se,er=fe,tr=de,nr=ce,rr=pe,ir=he,or=ve,ar=ge,ur=ee,lr=oe,sr=Q,cr=X,fr=q,dr=K,pr=Z,hr=He.ReactCurrentOwner,vr=function(e,t,n,r,o){var a=e.shouldSetTextContent,u=e.useSyncScheduling,l=e.shouldDeprioritizeSubtree,s=t.pushHostContext,c=t.pushHostContainer,f=n.enterHydrationState,d=n.resetHydrationState,p=n.tryToClaimNextHydratableInstance,h=Ln(r,o,S,N),v=h.adoptClassInstance,g=h.constructClassInstance,y=h.mountClassInstance,m=h.updateClassInstance;function b(e,t,n){C(e,t,n,t.pendingWorkPriority)}function C(e,t,n,r){null===e?t.child=On(t,t.child,n,r):e.child===t.child?t.child=zn(t,t.child,n,r):t.child=Wn(t,t.child,n,r)}function T(e,t){var n=t.ref;null===n||e&&e.ref===n||(t.effectTag|=pr)}function P(e,t,n,r){if(T(e,t),!n)return r&&$n(t,!1),x(e,t);var i=t.stateNode;hr.current=t;var o=void 0;return o=i.render(),t.effectTag|=sr,b(e,t,o),N(t,i.state),S(t,i.props),r&&$n(t,!0),t.child}function k(e){var t=e.stateNode;t.pendingContext?Vn(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Vn(e,t.context,!1),c(e,t.containerInfo)}function x(e,t){return Mn(e,t),t.child}function R(e,t){switch(t.tag){case Zn:k(t);break;case Kn:Gn(t);break;case nr:c(t,t.stateNode.containerInfo)}return null}function S(e,t){e.memoizedProps=t}function N(e,t){e.memoizedState=t}return{beginWork:function(e,t,n){if(t.pendingWorkPriority===ur||t.pendingWorkPriority>n)return R(0,t);switch(t.tag){case qn:return(function(e,t,n){i(null===e,"An indeterminate component should never have mounted. This error is likely caused by a bug in React. Please file an issue.");var r,o=t.type,a=t.pendingProps,u=Qn(t);if(r=o(a,Bn(t,u)),t.effectTag|=sr,"object"==typeof r&&null!==r&&"function"==typeof r.render){t.tag=Kn;var l=Gn(t);return v(t,r),y(t,n),P(e,t,!0,l)}return t.tag=Jn,b(e,t,r),S(t,a),t.child})(e,t,n);case Jn:return(function(e,t){var n=t.type,r=t.pendingProps,i=t.memoizedProps;if(Xn())null===r&&(r=i);else if(null===r||i===r)return x(e,t);var o,a=Qn(t);return o=n(r,Bn(t,a)),t.effectTag|=sr,b(e,t,o),S(t,r),t.child})(e,t);case Kn:return(function(e,t,n){var r=Gn(t),o=void 0;return null===e?t.stateNode?i(!1,"Resuming work not yet implemented."):(g(t,t.pendingProps),y(t,n),o=!0):o=m(e,t,n),P(e,t,o,r)})(e,t,n);case Zn:return(function(e,t,n){k(t);var r=t.updateQueue;if(null!==r){var i=t.memoizedState,o=Yn(e,t,r,null,i,null,n);if(i===o)return d(),x(e,t);var a=o.element;return null!==e&&null!==e.child||!f(t)?(d(),b(e,t,a)):(t.effectTag|=cr,t.child=On(t,t.child,a,n)),N(t,o),t.child}return d(),x(e,t)})(e,t,n);case er:return(function(e,t,n){s(t),null===e&&p(t);var r=t.type,o=t.memoizedProps,c=t.pendingProps;null===c&&(c=o,i(null!==c,"We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue."));var f=null!==e?e.memoizedProps:null;if(Xn());else if(null===c||o===c)return x(e,t);var d=c.children;return a(r,c)?d=null:f&&a(r,f)&&(t.effectTag|=fr),T(e,t),n!==lr&&!u&&l(r,c)?(t.pendingWorkPriority=lr,null):(b(e,t,d),S(t,c),t.child)})(e,t,n);case tr:return(function(e,t){null===e&&p(t);var n=t.pendingProps;return null===n&&(n=t.memoizedProps),S(t,n),null})(e,t);case ir:t.tag=rr;case rr:return(function(e,t){var n=t.pendingProps;Xn()?null===n&&(n=e&&e.memoizedProps,i(null!==n,"We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.")):null!==n&&t.memoizedProps!==n||(n=t.memoizedProps);var r=n.children,o=t.pendingWorkPriority;return null===e?t.stateNode=On(t,t.stateNode,r,o):e.child===t.child?t.stateNode=zn(t,t.stateNode,r,o):t.stateNode=Wn(t,t.stateNode,r,o),S(t,n),t.stateNode})(e,t);case or:return null;case nr:return(function(e,t){c(t,t.stateNode.containerInfo);var n=t.pendingWorkPriority,r=t.pendingProps;if(Xn())null===r&&(r=e&&e.memoizedProps,i(null!=r,"We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue."));else if(null===r||t.memoizedProps===r)return x(e,t);return null===e?(t.child=Wn(t,t.child,r,n),S(t,r)):(b(e,t,r),S(t,r)),t.child})(e,t);case ar:return(function(e,t){var n=t.pendingProps;if(Xn())null===n&&(n=t.memoizedProps);else if(null===n||t.memoizedProps===n)return x(e,t);return b(e,t,n),S(t,n),t.child})(e,t);default:i(!1,"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.")}},beginFailedWork:function(e,t,n){switch(t.tag){case Kn:Gn(t);break;case Zn:k(t);break;default:i(!1,"Invalid type of work. This error is likely caused by a bug in React. Please file an issue.")}if(t.effectTag|=dr,null===e?t.child=null:t.child!==e.child&&(t.child=e.child),t.pendingWorkPriority===ur||t.pendingWorkPriority>n)return R(0,t);if(t.firstEffect=null,t.lastEffect=null,C(e,t,null,n),t.tag===Kn){var r=t.stateNode;t.memoizedProps=r.props,t.memoizedState=r.state}return t.child}}},gr=Rn.reconcileChildFibers,yr=pt.popContextProvider,mr=pt.popTopLevelContextObject,br=ae,Cr=ue,Tr=le,Pr=se,kr=fe,xr=de,Rr=ce,Sr=pe,Nr=he,Er=ve,wr=ge,Ir=X,_r=Z,Ar=G,Hr=oe,Dr=function(e,t,n){var r=e.createInstance,o=e.createTextInstance,a=e.appendInitialChild,u=e.finalizeInitialChildren,l=e.prepareUpdate,s=t.getRootHostContainer,c=t.popHostContext,f=t.getHostContext,d=t.popHostContainer,p=n.prepareToHydrateHostInstance,h=n.prepareToHydrateHostTextInstance,v=n.popHydrationState;function g(e){e.effectTag|=Ar}function y(e){e.effectTag|=_r}function m(e,t){var n=t.memoizedProps;i(n,"Should be resolved by now. This error is likely caused by a bug in React. Please file an issue."),t.tag=Nr;var r=[];!(function(e,t){var n=t.stateNode;for(n&&(n.return=t);null!==n;){if(n.tag===kr||n.tag===xr||n.tag===Rr)i(!1,"A coroutine cannot have host component children.");else if(n.tag===Er)e.push(n.type);else if(null!==n.child){n.child.return=n,n=n.child;continue}for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}})(r,t);var o=(0,n.handler)(n.props,r),a=null!==e?e.child:null,u=t.pendingWorkPriority;return t.child=gr(t,a,o,u),t.child}return{completeWork:function(e,t,n){var b=t.pendingProps;switch(null===b?b=t.memoizedProps:t.pendingWorkPriority===Hr&&n!==Hr||(t.pendingProps=null),t.tag){case Cr:return null;case Tr:return yr(t),null;case Pr:d(t),mr(t);var C=t.stateNode;return C.pendingContext&&(C.context=C.pendingContext,C.pendingContext=null),null!==e&&null!==e.child||(v(t),t.effectTag&=~Ir),null;case kr:c(t);var T=s(),P=t.type;if(null!==e&&null!=t.stateNode){var k=e.memoizedProps,x=t.stateNode,R=f(),S=l(x,P,k,b,T,R);t.updateQueue=S,S&&g(t),e.ref!==t.ref&&y(t)}else{if(!b)return i(null!==t.stateNode,"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."),null;var N=f();if(v(t))p(t,T,N)&&g(t);else{var E=r(P,b,T,N,t);(function(e,t){for(var n=t.child;null!==n;){if(n.tag===kr||n.tag===xr)a(e,n.stateNode);else if(n.tag===Rr);else if(null!==n.child){n=n.child;continue}if(n===t)return;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n=n.sibling}})(E,t),u(E,P,b,T)&&g(t),t.stateNode=E}null!==t.ref&&y(t)}return null;case xr:var w=b;if(e&&null!=t.stateNode)e.memoizedProps!==w&&g(t);else{if("string"!=typeof w)return i(null!==t.stateNode,"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."),null;var I=s(),_=f();v(t)?h(t)&&g(t):t.stateNode=o(w,I,_,t)}return null;case Sr:return m(e,t);case Nr:return t.tag=Sr,null;case Er:case wr:return null;case Rr:return g(t),d(t),null;case br:i(!1,"An indeterminate component should have become determinate before completing. This error is likely caused by a bug in React. Please file an issue.");default:i(!1,"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.")}}}},Ur=null,Fr=null;function jr(e){return function(t){try{return e(t)}catch(e){}}}var Lr={injectInternals:function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!t.supportsFiber)return!0;try{var n=t.inject(e);Ur=jr(function(e){return t.onCommitFiberRoot(n,e)}),Fr=jr(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}return!0},onCommitRoot:function(e){"function"==typeof Ur&&Ur(e)},onCommitUnmount:function(e){"function"==typeof Fr&&Fr(e)}},Or=le,zr=se,Wr=fe,Mr=de,Yr=ce,Br=pe,Qr=Ie.commitCallbacks,Xr=Lr.onCommitUnmount,Gr=X,Vr=G,$r=J,qr=q,Jr=function(e,t){var n=e.commitMount,r=e.commitUpdate,o=e.resetTextContent,a=e.commitTextUpdate,u=e.appendChild,l=e.appendChildToContainer,s=e.insertBefore,c=e.insertInContainerBefore,f=e.removeChild,d=e.removeChildFromContainer,p=e.getPublicInstance;function h(e){var n=e.ref;if(null!==n)try{n(null)}catch(n){t(e,n)}}function v(e){return e.tag===Wr||e.tag===zr||e.tag===Yr}function g(e){for(var t=e;;)if(m(t),null===t.child||t.tag===Yr){if(t===e)return;for(;null===t.sibling;){if(null===t.return||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}else t.child.return=t,t=t.child}function y(e){for(var t=e,n=!1,r=void 0,o=void 0;;){if(!n){var a=t.return;e:for(;;){switch(i(null!==a,"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue."),a.tag){case Wr:r=a.stateNode,o=!1;break e;case zr:case Yr:r=a.stateNode.containerInfo,o=!0;break e}a=a.return}n=!0}if(t.tag===Wr||t.tag===Mr)g(t),o?d(r,t.stateNode):f(r,t.stateNode);else if(t.tag===Yr){if(r=t.stateNode.containerInfo,null!==t.child){t.child.return=t,t=t.child;continue}}else if(m(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)return;for(;null===t.sibling;){if(null===t.return||t.return===e)return;(t=t.return).tag===Yr&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}function m(e){switch("function"==typeof Xr&&Xr(e),e.tag){case Or:h(e);var n=e.stateNode;return void("function"==typeof n.componentWillUnmount&&(function(e,n){try{n.props=e.memoizedProps,n.state=e.memoizedState,n.componentWillUnmount()}catch(n){t(e,n)}})(e,n));case Wr:return void h(e);case Br:return void g(e.stateNode);case Yr:return void y(e)}}return{commitPlacement:function(e){var t=(function(e){for(var t=e.return;null!==t;){if(v(t))return t;t=t.return}i(!1,"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.")})(e),n=void 0,r=void 0;switch(t.tag){case Wr:n=t.stateNode,r=!1;break;case zr:case Yr:n=t.stateNode.containerInfo,r=!0;break;default:i(!1,"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.")}t.effectTag&qr&&(o(n),t.effectTag&=~qr);for(var a=(function(e){var t=e;e:for(;;){for(;null===t.sibling;){if(null===t.return||v(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==Wr&&t.tag!==Mr;){if(t.effectTag&Gr)continue e;if(null===t.child||t.tag===Yr)continue e;t.child.return=t,t=t.child}if(!(t.effectTag&Gr))return t.stateNode}})(e),f=e;;){if(f.tag===Wr||f.tag===Mr)a?r?c(n,f.stateNode,a):s(n,f.stateNode,a):r?l(n,f.stateNode):u(n,f.stateNode);else if(f.tag===Yr);else if(null!==f.child){f.child.return=f,f=f.child;continue}if(f===e)return;for(;null===f.sibling;){if(null===f.return||f.return===e)return;f=f.return}f.sibling.return=f.return,f=f.sibling}},commitDeletion:function(e){y(e),e.return=null,e.child=null,e.alternate&&(e.alternate.child=null,e.alternate.return=null)},commitWork:function(e,t){switch(t.tag){case Or:return;case Wr:var n=t.stateNode;if(null!=n){var o=t.memoizedProps,u=null!==e?e.memoizedProps:o,l=t.type,s=t.updateQueue;t.updateQueue=null,null!==s&&r(n,s,l,u,o,t)}return;case Mr:i(null!==t.stateNode,"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.");var c=t.stateNode,f=t.memoizedProps,d=null!==e?e.memoizedProps:f;return void a(c,d,f);case zr:case Yr:return;default:i(!1,"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}},commitLifeCycles:function(e,t){switch(t.tag){case Or:var r=t.stateNode;if(t.effectTag&Vr)if(null===e)r.props=t.memoizedProps,r.state=t.memoizedState,r.componentDidMount();else{var o=e.memoizedProps,a=e.memoizedState;r.props=t.memoizedProps,r.state=t.memoizedState,r.componentDidUpdate(o,a)}return void(t.effectTag&$r&&null!==t.updateQueue&&Qr(t,t.updateQueue,r));case zr:var u=t.updateQueue;if(null!==u){var l=t.child&&t.child.stateNode;Qr(t,u,l)}return;case Wr:var s=t.stateNode;if(null===e&&t.effectTag&Vr){var c=t.type,f=t.memoizedProps;n(s,c,f,t)}return;case Mr:case Yr:return;default:i(!1,"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}},commitAttachRef:function(e){var t=e.ref;if(null!==t){var n=e.stateNode;switch(e.tag){case Wr:t(p(n));break;default:t(n)}}},commitDetachRef:function(e){var t=e.ref;null!==t&&t(null)}}},Kr=Je,Zr=Ke,ei=Ze,ti={},ni=fe,ri=de,ii=se,oi=$,ai=X,ui=Ht,li=pt.popContextProvider,si=et,ci=Vt,fi=m.logCapturedError,di=He.ReactCurrentOwner,pi=wt,hi=jt,vi=Lr.onCommitRoot,gi=ee,yi=te,mi=ne,bi=re,Ci=ie,Ti=oe,Pi=ht,ki=Q,xi=X,Ri=G,Si=V,Ni=$,Ei=q,wi=J,Ii=K,_i=Z,Ai=se,Hi=fe,Di=ce,Ui=le,Fi=Ie.getUpdatePriority,ji=pt.resetContext,Li=1,Oi=function(e){var t=(function(e){var t=e.getChildHostContext,n=e.getRootHostContext,r=Kr(ti),o=Kr(ti),a=Kr(ti);function u(e){return i(e!==ti,"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."),e}return{getHostContext:function(){return u(r.current)},getRootHostContainer:function(){return u(a.current)},popHostContainer:function(e){Zr(r,e),Zr(o,e),Zr(a,e)},popHostContext:function(e){o.current===e&&(Zr(r,e),Zr(o,e))},pushHostContainer:function(e,t){ei(a,t,e);var i=n(t);ei(o,e,e),ei(r,i,e)},pushHostContext:function(e){var n=u(a.current),i=u(r.current),l=t(i,e.type,n);i!==l&&(ei(o,e,e),ei(r,l,e))},resetHostContainer:function(){r.current=ti,a.current=ti}}})(e),n=(function(e){var t=e.shouldSetTextContent,n=e.canHydrateInstance,r=e.canHydrateTextInstance,o=e.getNextHydratableSibling,a=e.getFirstHydratableChild,u=e.hydrateInstance,l=e.hydrateTextInstance,s=e.didNotHydrateInstance,c=e.didNotFindHydratableInstance,f=e.didNotFindHydratableTextInstance;if(!(n&&r&&o&&a&&u&&l&&s&&c&&f))return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){i(!1,"Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.")},prepareToHydrateHostTextInstance:function(){i(!1,"Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.")},popHydrationState:function(e){return!1}};var d=null,p=null,h=!1;function v(e,t){var n=ui();n.stateNode=t,n.return=e,n.effectTag=oi,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function g(e,t){t.effectTag|=ai}function y(e,t){switch(e.tag){case ni:var i=e.type,o=e.pendingProps;return n(t,i,o);case ri:var a=e.pendingProps;return r(t,a);default:return!1}}function m(e){for(var t=e.return;null!==t&&t.tag!==ni&&t.tag!==ii;)t=t.return;d=t}return{enterHydrationState:function(e){var t=e.stateNode.containerInfo;return p=a(t),d=e,h=!0,!0},resetHydrationState:function(){d=null,p=null,h=!1},tryToClaimNextHydratableInstance:function(e){if(h){var t=p;if(!t)return g(0,e),h=!1,void(d=e);if(!y(e,t)){if(!(t=o(t))||!y(e,t))return g(0,e),h=!1,void(d=e);v(d,p)}e.stateNode=t,d=e,p=a(t)}},prepareToHydrateHostInstance:function(e,t,n){var r=e.stateNode,i=u(r,e.type,e.memoizedProps,t,n,e);return e.updateQueue=i,null!==i},prepareToHydrateHostTextInstance:function(e){var t=e.stateNode;return l(t,e.memoizedProps,e)},popHydrationState:function(e){if(e!==d)return!1;if(!h)return m(e),h=!0,!1;var n=e.type;if(e.tag!==ni||"head"!==n&&"body"!==n&&!t(n,e.memoizedProps))for(var r=p;r;)v(e,r),r=o(r);return m(e),p=d?o(e.stateNode):null,!0}}})(e),r=t.popHostContainer,o=t.popHostContext,a=t.resetHostContainer,u=vr(e,t,n,ae,le),l=u.beginWork,s=u.beginFailedWork,c=Dr(e,t,n).completeWork,f=Jr(e,re),d=f.commitPlacement,p=f.commitDeletion,h=f.commitWork,v=f.commitLifeCycles,g=f.commitAttachRef,y=f.commitDetachRef,m=e.scheduleDeferredCallback,b=e.useSyncScheduling,C=e.prepareForCommit,T=e.resetAfterCommit,P=gi,k=!1,x=!1,R=!1,S=!1,N=null,E=gi,w=null,I=null,_=null,A=null,H=!1,D=null,U=null,F=null,j=null,L=!1,O=!1,z=!1,W=1e3,M=0,Y=null;function B(){for(;null!==_&&_.current.pendingWorkPriority===gi;){_.isScheduled=!1;var e=_.nextScheduledRoot;if(_.nextScheduledRoot=null,_===A)return _=null,A=null,E=gi,null;_=e}for(var t=_,n=null,r=gi;null!==t;)t.current.pendingWorkPriority!==gi&&(r===gi||r>t.current.pendingWorkPriority)&&(r=t.current.pendingWorkPriority,n=t),t=t.nextScheduledRoot;if(null!==n)return E=r,si(),ji(),a(),N=pi(n.current,r),void(n!==Y&&(M=0,Y=n));E=gi,N=null,Y=null}function Q(){for(;null!==w;){var t=w.effectTag;if(t&Ei&&e.resetTextContent(w.stateNode),t&_i){var n=w.alternate;null!==n&&y(n)}switch(t&~(wi|Ii|Ei|_i|ki)){case xi:d(w),w.effectTag&=~xi;break;case Si:d(w),w.effectTag&=~xi;var r=w.alternate;h(r,w);break;case Ri:var i=w.alternate;h(i,w);break;case Ni:z=!0,p(w),z=!1}w=w.nextEffect}}function X(){for(;null!==w;){var e=w.effectTag;if(e&(Ri|wi)){var t=w.alternate;v(t,w)}e&_i&&g(w),e&Ii&&oe(w);var n=w.nextEffect;w.nextEffect=null,w=n}}function G(e){O=!0,I=null;var t=e.stateNode;i(t.current!==e,"Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue."),E!==yi&&E!==mi||M++,di.current=null;var n=void 0;for(e.effectTag>ki?null!==e.lastEffect?(e.lastEffect.nextEffect=e,n=e.firstEffect):n=e:n=e.firstEffect,C(),w=n;null!==w;){var r=!1,o=void 0;try{Q()}catch(e){r=!0,o=e}r&&(i(null!==w,"Should have next effect. This error is likely caused by a bug in React. Please file an issue."),re(w,o),null!==w&&(w=w.nextEffect))}for(T(),t.current=e,w=n;null!==w;){var a=!1,u=void 0;try{X()}catch(e){a=!0,u=e}a&&(i(null!==w,"Should have next effect. This error is likely caused by a bug in React. Please file an issue."),re(w,u),null!==w&&(w=w.nextEffect))}O=!1,"function"==typeof vi&&vi(e.stateNode),F&&(F.forEach(se),F=null),B()}function V(e,t){if(!(e.pendingWorkPriority!==gi&&e.pendingWorkPriority>t)){for(var n=Fi(e),r=e.child;null!==r;)n=hi(n,r.pendingWorkPriority),r=r.sibling;e.pendingWorkPriority=n}}function $(e){for(;;){var t=e.alternate,n=c(t,e,E),r=e.return,i=e.sibling;if(V(e,E),null!==n)return n;if(null!==r&&(null===r.firstEffect&&(r.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==r.lastEffect&&(r.lastEffect.nextEffect=e.firstEffect),r.lastEffect=e.lastEffect),e.effectTag>ki&&(null!==r.lastEffect?r.lastEffect.nextEffect=e:r.firstEffect=e,r.lastEffect=e)),null!==i)return i;if(null===r)return I=e,null;e=r}return null}function q(e){var t=e.alternate,n=l(t,e,E);return null===n&&(n=$(e)),di.current=null,n}function J(e){var t=e.alternate,n=s(t,e,E);return null===n&&(n=$(e)),di.current=null,n}function K(e){ne(Ti,e)}function Z(){if(null!==D&&D.size>0&&E===mi)for(;null!==N&&(null!==(e=N,N=null!==D&&(D.has(e)||null!==e.alternate&&D.has(e.alternate))?J(N):q(N))||(i(null!==I,"Should have a pending commit. This error is likely caused by a bug in React. Please file an issue."),P=mi,G(I),P=E,null!==D&&0!==D.size&&E===mi)););var e}function ee(e,t){if(null!==I?(P=mi,G(I),Z()):null===N&&B(),!(E===gi||E>e)){P=E;e:for(;;){if(E<=mi)for(;null!==N&&!(null===(N=q(N))&&(i(null!==I,"Should have a pending commit. This error is likely caused by a bug in React. Please file an issue."),P=mi,G(I),P=E,Z(),E===gi||E>e||E>mi)););else if(null!==t)for(;null!==N&&!x;)if(t.timeRemaining()>Li){if(null===(N=q(N)))if(i(null!==I,"Should have a pending commit. This error is likely caused by a bug in React. Please file an issue."),t.timeRemaining()>Li){if(P=mi,G(I),P=E,Z(),E===gi||E>e||Emi&&!H&&(m(K),H=!0);var l=j;if(k=!1,x=!1,L=!1,j=null,D=null,U=null,Y=null,M=0,null!==l)throw l}function re(e,t){di.current=null;var n=null,r=!1,i=!1,o=null;if(e.tag===Ai)n=e,ie(e)&&(L=!0);else for(var a=e.return;null!==a&&null===n;){if(a.tag===Ui){"function"==typeof a.stateNode.componentDidCatch&&(r=!0,o=_e(a),n=a,i=!0)}else a.tag===Ai&&(n=a);if(ie(a)){if(z)return null;if(null!==F&&(F.has(a)||null!==a.alternate&&F.has(a.alternate)))return null;n=null,i=!1}a=a.return}if(null!==n){null===U&&(U=new Set),U.add(n);var u=ci(e),l=_e(e);null===D&&(D=new Map);var s={componentName:l,componentStack:u,error:t,errorBoundary:r?n.stateNode:null,errorBoundaryFound:r,errorBoundaryName:o,willRetry:i};D.set(n,s);try{fi(s)}catch(e){console.error(e)}return O?(null===F&&(F=new Set),F.add(n)):se(n),n}return null===j&&(j=t),null}function ie(e){return null!==U&&(U.has(e)||null!==e.alternate&&U.has(e.alternate))}function oe(e){var t=void 0;switch(null!==D&&(t=D.get(e),D.delete(e),null==t&&null!==e.alternate&&(e=e.alternate,t=D.get(e),D.delete(e))),i(null!=t,"No error for given unit of work. This error is likely caused by a bug in React. Please file an issue."),e.tag){case Ui:var n=e.stateNode,r={componentStack:t.componentStack};return void n.componentDidCatch(t.error,r);case Ai:return void(null===j&&(j=t.error));default:i(!1,"Invalid type of work. This error is likely caused by a bug in React. Please file an issue.")}}function ae(e,t){return ue(e,t,!1)}function ue(e,t,n){M>W&&(L=!0,i(!1,"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.")),!k&&t<=E&&(N=null);for(var r=e,o=!0;null!==r&&o;){if(o=!1,(r.pendingWorkPriority===gi||r.pendingWorkPriority>t)&&(o=!0,r.pendingWorkPriority=t),null!==r.alternate&&(r.alternate.pendingWorkPriority===gi||r.alternate.pendingWorkPriority>t)&&(o=!0,r.alternate.pendingWorkPriority=t),null===r.return){if(r.tag!==Ai)return;if(a=r.stateNode,t!==gi&&(a.isScheduled||(a.isScheduled=!0,A?(A.nextScheduledRoot=a,A=a):(_=a,A=a))),!k)switch(t){case yi:ne(S?yi:mi,null);break;case mi:i(R,"Task updates can only be scheduled as a nested update or inside batchedUpdates.");break;default:H||(m(K),H=!0)}}r=r.return}var a}function le(e,t){var n=P;return n===gi&&(n=!b||e.internalContextTag&Pi||t?Ci:yi),n===yi&&(k||R)?mi:n}function se(e){ue(e,mi)}return{scheduleUpdate:ae,getPriorityContext:le,batchedUpdates:function(e,t){var n=R;R=!0;try{return e(t)}finally{R=n,k||R||ne(mi,null)}},unbatchedUpdates:function(e){var t=S,n=R;S=R,R=!1;try{return e()}finally{R=n,S=t}},flushSync:function(e){var t=R,n=P;R=!0,P=yi;try{return e()}finally{R=t,P=n,i(!k,"flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering."),ne(mi,null)}},deferredUpdates:function(e){var t=P;P=Ci;try{return e()}finally{P=t}}}},zi=Ie.addTopLevelUpdate,Wi=pt.findCurrentUnmaskedContext,Mi=pt.isContextProvider,Yi=pt.processChildContext,Bi=Ot,Qi=fe,Xi=Ge,Gi=Ve;var Vi={},$i=1,qi={},Ji=(function(){function e(){!(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e)}return e.register=function(e){var t=++$i;return Vi[t]=e,t},e.getByID=function(e){if(!e)return qi;return Vi[e]||(console.warn("Invalid style with id `"+e+"`. Skipping ..."),qi)},e})(),Ki={},Zi=null,eo=0;function to(e,t){return"object"!=typeof t||null===t||s(e,t)}function no(e){return"number"==typeof e?Ji.getByID(e):e}function ro(e,t,n){if(Array.isArray(t))for(var r=t.length;r--&&eo>0;)ro(e,t[r],n);else if(t&&eo>0){var i=no(t);for(var o in Zi)if(Zi[o]){var a=i[o];if(void 0!==a){var u=n[o];if(u){if("function"==typeof a&&(a=!0),void 0===a&&(a=null),"object"!=typeof u)e[o]=a;else if("function"==typeof u.diff||"function"==typeof u.process){var l="function"==typeof u.process?u.process(a):a;e[o]=l}Zi[o]=!1,eo--}}}}}function io(e,t,n,r){return e||t!==n?t&&n?Array.isArray(t)||Array.isArray(n)?Array.isArray(t)&&Array.isArray(n)?(function(e,t,n,r){var i,o=t.length0&&e&&(ro(e,o,i),Zi=null);for(u in t)void 0===n[u]&&(i=r[u])&&(e&&void 0!==e[u]||void 0!==(a=t[u])&&("object"!=typeof i||"function"==typeof i.diff||"function"==typeof i.process?((e||(e={}))[u]=null,Zi||(Zi={}),Zi[u]||(Zi[u]=!0,eo++)):e=ao(e,a,i)));return e}function lo(e,t,n){return uo(e,Ki,t,n)}var so={create:function(e,t){return lo(null,e,t)},diff:function(e,t,n){return uo(null,e,t,n)}};var co=function(e,t){return function(){if(t){if("boolean"==typeof e.__isMounted){if(!e.__isMounted)return}else if("function"==typeof e.isMounted&&!e.isMounted())return;return t.apply(e,arguments)}}};var fo=co,po=(function(){function e(t,n){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),this._nativeTag=t,this._children=[],this.viewConfig=n}return e.prototype.blur=function(){f.blurTextInput(this._nativeTag)},e.prototype.focus=function(){f.focusTextInput(this._nativeTag)},e.prototype.measure=function(e){d.measure(this._nativeTag,fo(this,e))},e.prototype.measureInWindow=function(e){d.measureInWindow(this._nativeTag,fo(this,e))},e.prototype.measureLayout=function(e,t,n){d.measureLayout(this._nativeTag,e,fo(this,n),fo(this,t))},e.prototype.setNativeProps=function(e){var t=so.create(e,this.viewConfig.validAttributes);null!=t&&d.updateView(this._nativeTag,this.viewConfig.uiViewClassName,t)},e})(),ho={tagsStartAt:1,tagCount:1,allocateTag:function(){for(;this.reactTagIsNativeTopRootID(ho.tagCount);)ho.tagCount++;var e=ho.tagCount;return ho.tagCount++,e},assertRootTag:function(e){i(this.reactTagIsNativeTopRootID(e),"Expect a native root tag, instead got %s",e)},reactTagIsNativeTopRootID:function(e){return e%10==1}},vo=ho,go=new Map,yo=new Map,mo={register:function(e,t){return i(!go.has(e),"Tried to register two views with the same name %s",e),go.set(e,t),e},get:function(e){var t=void 0;if(yo.has(e))t=yo.get(e);else{var n=go.get(e);i("function"==typeof n,"View config not found for name %s",e),go.set(e,null),t=n(),yo.set(e,t)}return i(t,"View config not found for name %s",e),t}},bo=W.precacheFiberNode,Co=W.uncacheFiberNode,To=W.updateFiberProps;function Po(e){"number"==typeof e?Co(e):(Co(e._nativeTag),e._children.forEach(Po))}var ko=(function(e){var t=e.getPublicInstance,n=Oi(e),r=n.scheduleUpdate,i=n.getPriorityContext,o=n.batchedUpdates,u=n.unbatchedUpdates,l=n.flushSync;return{createContainer:function(e){return Bi(e)},updateContainer:function(e,t,n,o){var u=t.current,l=(function(e){if(!e)return a;var t=Ae.get(e),n=Wi(t);return Mi(t)?Yi(t,n):n})(n);null===t.context?t.context=l:t.pendingContext=l,(function(e,t,n){var o=Y.enableAsyncSubtreeAPI&&null!=t&&null!=t.type&&null!=t.type.prototype&&!0===t.type.prototype.unstable_isAsyncReactComponent,a=i(e,o);zi(e,{element:t},n=void 0===n?null:n,a),r(e,a)})(u,e,o)},batchedUpdates:o,unbatchedUpdates:u,deferredUpdates:n.deferredUpdates,flushSync:l,getPublicRootInstance:function(e){var n=e.current;if(!n.child)return null;switch(n.child.tag){case Qi:return t(n.child.stateNode);default:return n.child.stateNode}},findHostInstance:function(e){var t=Xi(e);return null===t?null:t.stateNode},findHostInstanceWithNoPortals:function(e){var t=Gi(e);return null===t?null:t.stateNode}}})({appendChild:function(e,t){var n="number"==typeof t?t:t._nativeTag,r=e._children,i=r.indexOf(t);i>=0?(r.splice(i,1),r.push(t),d.manageChildren(e._nativeTag,[i],[r.length-1],[],[],[])):(r.push(t),d.manageChildren(e._nativeTag,[],[],[n],[r.length-1],[]))},appendChildToContainer:function(e,t){var n="number"==typeof t?t:t._nativeTag;d.setChildren(e,[n])},appendInitialChild:function(e,t){e._children.push(t)},commitTextUpdate:function(e,t,n){d.updateView(e,"RCTRawText",{text:n})},commitMount:function(e,t,n,r){},commitUpdate:function(e,t,n,r,i,o){var a=e.viewConfig;To(e._nativeTag,i);var u=so.diff(r,i,a.validAttributes);null!=u&&d.updateView(e._nativeTag,a.uiViewClassName,u)},createInstance:function(e,t,n,r,i){var o=vo.allocateTag(),a=mo.get(e),u=so.create(t,a.validAttributes);d.createView(o,a.uiViewClassName,n,u);var l=new po(o,a);return bo(i,o),To(o,t),l},createTextInstance:function(e,t,n,r){var i=vo.allocateTag();return d.createView(i,"RCTRawText",t,{text:e}),bo(r,i),i},finalizeInitialChildren:function(e,t,n,r){if(0===e._children.length)return!1;var i=e._children.map(function(e){return"number"==typeof e?e:e._nativeTag});return d.setChildren(e._nativeTag,i),!1},getRootHostContext:function(){return a},getChildHostContext:function(){return a},getPublicInstance:function(e){return e},insertBefore:function(e,t,n){var r=e._children,i=r.indexOf(t);if(i>=0){r.splice(i,1);var o=r.indexOf(n);r.splice(o,0,t),d.manageChildren(e._nativeTag,[i],[o],[],[],[])}else{var a=r.indexOf(n);r.splice(a,0,t);var u="number"==typeof t?t:t._nativeTag;d.manageChildren(e._nativeTag,[],[],[u],[a],[])}},insertInContainerBefore:function(e,t,n){i("number"!=typeof e,"Container does not support insertBefore operation")},prepareForCommit:function(){},prepareUpdate:function(e,t,n,r,i,o){return a},removeChild:function(e,t){Po(t);var n=e._children,r=n.indexOf(t);n.splice(r,1),d.manageChildren(e._nativeTag,[],[],[],[],[r])},removeChildFromContainer:function(e,t){Po(t),d.manageChildren(e,[],[],[],[],[0])},resetAfterCommit:function(){},resetTextContent:function(e){},shouldDeprioritizeSubtree:function(e,t){return!1},scheduleDeferredCallback:M.requestIdleCallback,shouldSetTextContent:function(e,t){return!1},useSyncScheduling:!0}),xo={getInspectorDataForViewTag:function(){i(!1,"getInspectorDataForViewTag() is not available in production")}};var Ro=function(e){if(null==e)return null;if("number"==typeof e)return e;var t=e,n=Ae.get(t);return n?ko.findHostInstance(n):t||(i("object"==typeof t&&"_nativeTag"in t||null!=t.render&&"function"==typeof t.render,"findNodeHandle(...): Argument is not a component (type: %s, keys: %s)",typeof t,Object.keys(t)),void i(!1,"findNodeHandle(...): Unable to find node handle for unmounted component."))},So=function(e){var t=Ro(e);return null==t||"number"==typeof t?t:t._nativeTag},No=null,Eo={};function wo(){if(No)for(var e in Eo){var t=Eo[e],n=No.indexOf(e);if(i(n>-1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e),!Ao.plugins[n]){i(t.extractEvents,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e),Ao.plugins[n]=t;var r=t.eventTypes;for(var o in r)i(Io(r[o],t,o),"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",o,e)}}}function Io(e,t,n){i(!Ao.eventNameDispatchConfigs.hasOwnProperty(n),"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",n),Ao.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){_o(r[o],t,n)}return!0}return!!e.registrationName&&(_o(e.registrationName,t,n),!0)}function _o(e,t,n){i(!Ao.registrationNameModules[e],"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e),Ao.registrationNameModules[e]=t,Ao.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var Ao={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){i(!No,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."),No=Array.prototype.slice.call(e),wo()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];Eo.hasOwnProperty(n)&&Eo[n]===r||(i(!Eo[n],"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",n),Eo[n]=r,t=!0)}t&&wo()}},Ho=Ao;var Do=function(e,t){return i(null!=t,"accumulateInto(...): Accumulated items must not be null or undefined."),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]};var Uo=function(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)},Fo=null,jo=function(e,t){e&&(R.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},Lo=function(e){return jo(e,!0)},Oo=function(e){return jo(e,!1)};var zo={injection:{injectEventPluginOrder:Ho.injectEventPluginOrder,injectEventPluginsByName:Ho.injectEventPluginsByName},getListener:function(e,t){var n,r=e.stateNode;if(!r)return null;var o=R.getFiberCurrentPropsFromNode(r);return o?(n=o[t],(function(e,t,n){switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||(r=t,"button"!==r&&"input"!==r&&"select"!==r&&"textarea"!==r));default:return!1}var r})(t,e.type,o)?null:(i(!n||"function"==typeof n,"Expected `%s` listener to be a function, instead got a value of `%s` type.",t,typeof n),n)):null},extractEvents:function(e,t,n,r){for(var i,o=Ho.plugins,a=0;a0;)e=Mo(e),n--;for(;i-n>0;)t=Mo(t),i--;for(var a=n;a--;){if(e===t||e===t.alternate)return e;e=Mo(e),t=Mo(t)}return null}var Bo={isAncestor:function(e,t){for(;t;){if(e===t||e===t.alternate)return!0;t=Mo(t)}return!1},getLowestCommonAncestor:Yo,getParentInstance:function(e){return Mo(e)},traverseTwoPhase:function(e,t,n){for(var r=[];e;)r.push(e),e=Mo(e);var i;for(i=r.length;i-- >0;)t(r[i],"captured",n);for(i=0;i0;)n(u[l],"captured",i)}},Qo=zo.getListener;function Xo(e,t,n){var r=(function(e,t,n){var r=t.dispatchConfig.phasedRegistrationNames[n];return Qo(e,r)})(e,n,t);r&&(n._dispatchListeners=Do(n._dispatchListeners,r),n._dispatchInstances=Do(n._dispatchInstances,e))}function Go(e){e&&e.dispatchConfig.phasedRegistrationNames&&Bo.traverseTwoPhase(e._targetInst,Xo,e)}function Vo(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._targetInst,n=t?Bo.getParentInstance(t):null;Bo.traverseTwoPhase(n,Xo,e)}}function $o(e,t,n){if(e&&n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,i=Qo(e,r);i&&(n._dispatchListeners=Do(n._dispatchListeners,i),n._dispatchInstances=Do(n._dispatchInstances,e))}}function qo(e){e&&e.dispatchConfig.registrationName&&$o(e._targetInst,0,e)}var Jo={accumulateTwoPhaseDispatches:function(e){Uo(e,Go)},accumulateTwoPhaseDispatchesSkipTarget:function(e){Uo(e,Vo)},accumulateDirectDispatches:function(e){Uo(e,qo)},accumulateEnterLeaveDispatches:function(e,t,n,r){Bo.traverseEnterLeave(n,r,$o,e,t)}},Ko=10,Zo=["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"],ea={type:null,target:null,currentTarget:h.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};function ta(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n;var i=this.constructor.Interface;for(var o in i)if(i.hasOwnProperty(o)){var a=i[o];a?this[o]=a(n):"target"===o?this.target=r:this[o]=n[o]}var u=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=u?h.thatReturnsTrue:h.thatReturnsFalse,this.isPropagationStopped=h.thatReturnsFalse,this}babelHelpers.extends(ta.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=h.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=h.thatReturnsTrue)},persist:function(){this.isPersistent=h.thatReturnsTrue},isPersistent:h.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var t in e)this[t]=null;for(var n=0;nTa&&(e+=" (original size: "+Pa.length+")"),e}var _a={recordTouchTrack:function(e,t){if(ba(e))t.changedTouches.forEach(Na);else if(Ca(e))t.changedTouches.forEach(Sa),ka.numberActiveTouches=t.touches.length,1===ka.numberActiveTouches&&(ka.indexOfSingleActiveTouch=t.touches[0].identifier);else if(ma(e)&&(t.changedTouches.forEach(Ea),ka.numberActiveTouches=t.touches.length,1===ka.numberActiveTouches))for(var n=0;n=0))return console.error("Ended a touch event which was not counted in `trackedTouchCount`."),null;za-=1}_a.recordTouchTrack(e,n);var i,o,a,u=(i=e,o=t,a=n,o&&("topScroll"===i&&!a.responderIgnoreScroll||za>0&&"topSelectionChange"===i||Ha(i)||Da(i))?(function(e,t,n,r){var i=Ha(e)?Ya.startShouldSetResponder:Da(e)?Ya.moveShouldSetResponder:"topSelectionChange"===e?Ya.selectionChangeShouldSetResponder:Ya.scrollShouldSetResponder,o=Oa?Bo.getLowestCommonAncestor(Oa,t):t,a=o===Oa,u=ya.getPooled(i,o,n,r);u.touchHistory=_a.touchHistory,a?Jo.accumulateTwoPhaseDispatchesSkipTarget(u):Jo.accumulateTwoPhaseDispatches(u);var l=La(u);if(u.isPersistent()||u.constructor.release(u),!l||l===Oa)return null;var s,c=ya.getPooled(Ya.responderGrant,l,n,r);c.touchHistory=_a.touchHistory,Jo.accumulateDirectDispatches(c);var f=!0===Fa(c);if(Oa){var d=ya.getPooled(Ya.responderTerminationRequest,Oa,n,r);d.touchHistory=_a.touchHistory,Jo.accumulateDirectDispatches(d);var p=!ja(d)||Fa(d);if(d.isPersistent()||d.constructor.release(d),p){var h=ya.getPooled(Ya.responderTerminate,Oa,n,r);h.touchHistory=_a.touchHistory,Jo.accumulateDirectDispatches(h),s=Aa(s,[c,h]),Ma(l,f)}else{var v=ya.getPooled(Ya.responderReject,l,n,r);v.touchHistory=_a.touchHistory,Jo.accumulateDirectDispatches(v),s=Aa(s,v)}}else s=Aa(s,c),Ma(l,f);return s})(e,t,n,r):null),l=Oa&&Ha(e),s=Oa&&Da(e),c=Oa&&Ua(e),f=l?Ya.responderStart:s?Ya.responderMove:c?Ya.responderEnd:null;if(f){var d=ya.getPooled(f,Oa,n,r);d.touchHistory=_a.touchHistory,Jo.accumulateDirectDispatches(d),u=Aa(u,d)}var p=Oa&&"topTouchCancel"===e,h=Oa&&!p&&Ua(e)&&(function(e){var t=e.touches;if(!t||0===t.length)return!0;for(var n=0;nt&&(o+=r&&n?u.currentPageX:r&&!n?u.currentPageY:!r&&n?u.previousPageX:u.previousPageY,a=1);else for(var l=0;l=t){o+=r&&n?s.currentPageX:r&&!n?s.currentPageY:!r&&n?s.previousPageX:s.previousPageY,a++}}return a>0?o/a:qa.noCentroid},currentCentroidXOfTouchesChangedAfter:function(e,t){return qa.centroidDimension(e,t,!0,!0)},currentCentroidYOfTouchesChangedAfter:function(e,t){return qa.centroidDimension(e,t,!1,!0)},previousCentroidXOfTouchesChangedAfter:function(e,t){return qa.centroidDimension(e,t,!0,!1)},previousCentroidYOfTouchesChangedAfter:function(e,t){return qa.centroidDimension(e,t,!1,!1)},currentCentroidX:function(e){return qa.centroidDimension(e,0,!0,!0)},currentCentroidY:function(e){return qa.centroidDimension(e,0,!1,!0)},noCentroid:-1},Ja=qa,Ka=function(e,t){return mo.register(e,t)};var Za=function(e,t){return"number"!=typeof e&&"window"!==e&&(e=So(e)||"window"),d.__takeSnapshot(e,t)},eu=Lr.injectInternals;D.injection.injectFiberBatchedUpdates(ko.batchedUpdates);var tu=new Map;m.injection.injectDialog(U.showDialog);var nu={NativeComponent:Ga,findNodeHandle:So,render:function(e,t,n){var r=tu.get(t);return r||(r=ko.createContainer(t),tu.set(t,r)),ko.updateContainer(e,r,null,n),ko.getPublicRootInstance(r)},unmountComponentAtNode:function(e){var t=tu.get(e);t&&ko.updateContainer(null,t,null,function(){tu.delete(e)})},unmountComponentAtNodeAndRemoveContainer:function(e){nu.unmountComponentAtNode(e),d.removeRootView(e)},createPortal:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return j.createPortal(e,t,null,n)},unstable_batchedUpdates:D.batchedUpdates,flushSync:ko.flushSync,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{NativeMethodsMixin:$a,ReactNativeBridgeEventPlugin:sa,ReactGlobalSharedState:He,ReactNativeComponentTree:W,ReactNativePropRegistry:Ji,TouchHistoryMath:Ja,createReactNativeComponentClass:Ka,takeSnapshot:Za}};eu({findFiberByHostInstance:W.getClosestInstanceFromNode,findHostInstanceByFiber:ko.findHostInstance,getInspectorDataForViewTag:xo.getInspectorDataForViewTag,bundleType:0,version:"16.0.0",rendererPackageName:"react-native"});var ru=nu;n.exports=ru},44); -__d(function(r,o,e,n){'use strict';var s=0;function i(r,e){var n=o(20).ExceptionsManager;if(n){var i=o(46)(r),c=++s;e?n.reportFatalException(r.message,i,c):n.reportSoftException(r.message,i,c)}}function c(){if(console._errorOriginal.apply(console,arguments),console.reportErrorsAsExceptions)if(arguments[0]&&arguments[0].stack)i(arguments[0],!1);else{var r=o(26),e=Array.prototype.map.call(arguments,r).join(', ');if('"Warning: '===e.slice(0,10))return;var n=new Error('console.error: '+e);n.framesToPop=1,i(n,!1)}}e.exports={handleException:function(r,o){r.message||(r=new Error(r)),console._errorOriginal?console._errorOriginal(r.message):console.error(r.message),i(r,o)},installConsoleErrorReporter:function(){console._errorOriginal||(console._errorOriginal=console.error.bind(console),console.error=c,void 0===console.reportErrorsAsExceptions&&(console.reportErrorsAsExceptions=!0))}}},45); -__d(function(r,t,s,a){'use strict';s.exports=function(r){if(!r||!r.stack)return[];for(var s=t(47),a=Array.isArray(r.stack)?r.stack:s.parse(r.stack),e='number'==typeof r.framesToPop?r.framesToPop:0;e--;)a.shift();return a}},46); -__d(function(n,o,t,_){t.exports=o(48)},47); -__d(function(e,n,o,t){var l={parse:function(e){for(var n,o,t=/^\s*at (?:(?:(?:Anonymous function)?|((?:\[object object\])?\S+(?: \[as \S+\])?)) )?\(?((?:file|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i,l=/^(?:\s*([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,u=/^\s*at (?:((?:\[object object\])?\S+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=e.split('\n'),s=[],c=0,m=i.length;c",lineNumber:+n[4],column:n[5]?+n[5]:null};else if(n=t.exec(i[c]))o={file:n[2],methodName:n[1]||"",lineNumber:+n[3],column:n[4]?+n[4]:null};else{if(!(n=u.exec(i[c])))continue;o={file:n[2],methodName:n[1]||"",lineNumber:+n[3],column:n[4]?+n[4]:null}}s.push(o)}return s}};o.exports=l},48); -__d(function(t,e,r,n){'use strict';var o=Object.prototype.hasOwnProperty;function u(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!=t&&e!=e}r.exports=function(t,e){if(u(t,e))return!0;if('object'!=typeof t||null===t||'object'!=typeof e||null===e)return!1;var r=Object.keys(t),n=Object.keys(e);if(r.length!==n.length)return!1;for(var c=0;c=n?(this._iteratedObject=void 0,r(void 0,!0)):(this._nextIndex=i+1,"key"===a?r(i,!1):"value"===a?r(e[i],!1):"key+value"===a?r([i,e[i]],!1):void 0)}},{key:'@@iterator',value:function(){return this}}]),t})(),e=(function(){function t(e){if(babelHelpers.classCallCheck(this,t),'string'!=typeof e)throw new TypeError('Object is not a string');this._iteratedString=e,this._nextIndex=0}return babelHelpers.createClass(t,[{key:"next",value:function(){if(!this instanceof t)throw new TypeError('Object is not a StringIterator');if(null==this._iteratedString)return r(void 0,!0);var e=this._nextIndex,n=this._iteratedString,i=n.length;if(e>=i)return this._iteratedString=void 0,r(void 0,!0);var a,o=n.charCodeAt(e);if(o<55296||o>56319||e+1===i)a=n[e];else{var s=n.charCodeAt(e+1);a=s<56320||s>57343?n[e]:n[e]+n[e+1]}return this._nextIndex=e+a.length,r(a,!1)}},{key:'@@iterator',value:function(){return this}}]),t})();function r(t,e){return{value:t,done:e}}return function(r,n){return'string'==typeof r?new e(r):Array.isArray(r)?new t(r,n||"value"):r[i]()}})();babelHelpers.extends(a,{KIND_KEY:"key",KIND_VALUE:"value",KIND_KEY_VAL:"key+value",ITERATOR_SYMBOL:i}),r.exports=a},60); -__d(function(e,t,n,s){'use strict';var i=t(57),r=t(56),a=t(60);n.exports=(function(e){if(!r('Set'))return e.Set;var t=(function(){function e(t){if(babelHelpers.classCallCheck(this,e),null==this||'object'!=typeof this&&'function'!=typeof this)throw new TypeError('Wrong set object type.');if(n(this),null!=t)for(var s,i=a(t);!(s=i.next()).done;)this.add(s.value)}return babelHelpers.createClass(e,[{key:"add",value:function(e){return this._map.set(e,e),this.size=this._map.size,this}},{key:"clear",value:function(){n(this)}},{key:"delete",value:function(e){var t=this._map.delete(e);return this.size=this._map.size,t}},{key:"entries",value:function(){return this._map.entries()}},{key:"forEach",value:function(e){for(var t,n=arguments[1],s=this._map.keys();!(t=s.next()).done;)e.call(n,t.value,t.value,this)}},{key:"has",value:function(e){return this._map.has(e)}},{key:"values",value:function(){return this._map.values()}}]),e})();t.prototype[a.ITERATOR_SYMBOL]=t.prototype.values,t.prototype.keys=t.prototype.values;function n(e){e._map=new i,e.size=e._map.size}return t})(Function('return this')())},61); -__d(function(t,r,s,c){'use strict';var e=r(63);s.exports=e},62); -__d(function(t,n,r,e){'use strict';var i=n(64);n(66),i.prototype.finally=function(t){return this.then(t,t)},r.exports=i},63); -__d(function(n,t,e,r){'use strict';var o=t(65);e.exports=o;var f=h(!0),i=h(!1),u=h(null),c=h(void 0),a=h(0),l=h('');function h(n){var t=new o(o._61);return t._65=1,t._55=n,t}o.resolve=function(n){if(n instanceof o)return n;if(null===n)return u;if(void 0===n)return c;if(!0===n)return f;if(!1===n)return i;if(0===n)return a;if(''===n)return l;if('object'==typeof n||'function'==typeof n)try{var t=n.then;if('function'==typeof t)return new o(t.bind(n))}catch(n){return new o(function(t,e){e(n)})}return h(n)},o.all=function(n){var t=Array.prototype.slice.call(n);return new o(function(n,e){if(0===t.length)return n([]);var r=t.length;function f(i,u){if(u&&('object'==typeof u||'function'==typeof u)){if(u instanceof o&&u.then===o.prototype.then){for(;3===u._65;)u=u._55;return 1===u._65?f(i,u._55):(2===u._65&&e(u._55),void u.then(function(n){f(i,n)},e))}var c=u.then;if('function'==typeof c){return void new o(c.bind(u)).then(function(n){f(i,n)},e)}}t[i]=u,0==--r&&n(t)}for(var i=0;i=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=o.call(a,"catchLoc"),h=o.call(a,"finallyLoc");if(u&&h){if(this.prev=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),N(e),v}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;N(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:F(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=r),v}}}function L(t,r,e,n){var o=r&&r.prototype instanceof E?r:E,i=Object.create(o.prototype),a=new P(n||[]);return i._invoke=(function(t,r,e){var n=s;return function(o,i){if(n===p)throw new Error("Generator is already running");if(n===y){if("throw"===o)throw i;return S()}for(e.method=o,e.arg=i;;){var a=e.delegate;if(a){var c=k(a,e);if(c){if(c===v)continue;return c}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(n===s)throw n=y,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);n=p;var u=x(t,r,e);if("normal"===u.type){if(n=e.done?y:l,u.arg===v)continue;return{value:u.arg,done:e.done}}"throw"===u.type&&(n=y,e.method="throw",e.arg=u.arg)}}})(t,e,a),i}function x(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}function E(){}function b(){}function _(){}function j(t){["next","throw","return"].forEach(function(r){t[r]=function(t){return this._invoke(r,t)}})}function O(t){function r(e,n,i,a){var c=x(t[e],t,n);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&o.call(h,"__await")?Promise.resolve(h.__await).then(function(t){r("next",t,i,a)},function(t){r("throw",t,i,a)}):Promise.resolve(h).then(function(t){u.value=t,i(u)},a)}a(c.arg)}var e;this._invoke=function(t,n){function o(){return new Promise(function(e,o){r(t,n,e,o)})}return e=e?e.then(o,o):o()}}function k(t,e){var n=t.iterator[e.method];if(n===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=r,k(t,e),"throw"===e.method))return v;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var o=x(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,v;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=r),e.delegate=null,v):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,v)}function G(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function N(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(G,this),this.reset(!0)}function F(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0,loaded:t,total:s})}},{key:"__didCompleteResponse",value:function(e,t,r){e===this._requestId&&(t&&(''!==this._responseType&&'text'!==this._responseType||(this._response=t),this._hasError=!0,r&&(this._timedOut=!0)),this._clearSubscriptions(),this._requestId=null,this.setReadyState(this.DONE),t?s._interceptor&&s._interceptor.loadingFailed(e,t):s._interceptor&&s._interceptor.loadingFinished(e,this._response.length))}},{key:"_clearSubscriptions",value:function(){(this._subscriptions||[]).forEach(function(e){e&&e.remove()}),this._subscriptions=[]}},{key:"getAllResponseHeaders",value:function(){if(!this.responseHeaders)return null;var e=this.responseHeaders||{};return Object.keys(e).map(function(t){return t+': '+e[t]}).join('\r\n')}},{key:"getResponseHeader",value:function(e){var t=this._lowerCaseResponseHeaders[e.toLowerCase()];return void 0!==t?t:null}},{key:"setRequestHeader",value:function(e,t){if(this.readyState!==this.OPENED)throw new Error('Request has not been opened');this._headers[e.toLowerCase()]=String(t)}},{key:"setTrackingName",value:function(e){return this._trackingName=e,this}},{key:"open",value:function(e,t,s){if(this.readyState!==this.UNSENT)throw new Error('Cannot open, already sending');if(void 0!==s&&!s)throw new Error('Synchronous http requests are not supported');if(!t)throw new Error('Cannot load an empty url');this._method=e.toUpperCase(),this._url=t,this._aborted=!1,this.setReadyState(this.OPENED)}},{key:"send",value:function(e){var t=this;if(this.readyState!==this.OPENED)throw new Error('Request has not been opened');if(this._sent)throw new Error('Request has already been sent');this._sent=!0;var s=this._incrementalEvents||!!this.onreadystatechange||!!this.onprogress;this._subscriptions.push(n.addListener('didSendNetworkData',function(e){return t.__didUploadProgress.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener('didReceiveNetworkResponse',function(e){return t.__didReceiveResponse.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener('didReceiveNetworkData',function(e){return t.__didReceiveData.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener('didReceiveNetworkIncrementalData',function(e){return t.__didReceiveIncrementalData.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener('didReceiveNetworkDataProgress',function(e){return t.__didReceiveDataProgress.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener('didCompleteNetworkResponse',function(e){return t.__didCompleteResponse.apply(t,babelHelpers.toConsumableArray(e))}));var r='text';'arraybuffer'!==this._responseType&&'blob'!==this._responseType||(r='base64'),a(this._method,'Request method needs to be defined.'),a(this._url,'Request URL needs to be defined.'),n.sendRequest(this._method,this._trackingName,this._url,this._headers,e,r,s,this.timeout,this.__didCreateRequest.bind(this),this.withCredentials)}},{key:"abort",value:function(){this._aborted=!0,this._requestId&&n.abortRequest(this._requestId),this.readyState===this.UNSENT||this.readyState===this.OPENED&&!this._sent||this.readyState===this.DONE||(this._reset(),this.setReadyState(this.DONE)),this._reset()}},{key:"setResponseHeaders",value:function(e){this.responseHeaders=e||null;var t=e||{};this._lowerCaseResponseHeaders=Object.keys(t).reduce(function(e,s){return e[s.toLowerCase()]=t[s],e},{})}},{key:"setReadyState",value:function(e){this.readyState=e,this.dispatchEvent({type:'readystatechange'}),e===this.DONE&&(this._aborted?this.dispatchEvent({type:'abort'}):this._hasError?this._timedOut?this.dispatchEvent({type:'timeout'}):this.dispatchEvent({type:'error'}):this.dispatchEvent({type:'load'}),this.dispatchEvent({type:'loadend'}))}},{key:"addEventListener",value:function(e,t){'readystatechange'!==e&&'progress'!==e||(this._incrementalEvents=!0),babelHelpers.get(s.prototype.__proto__||Object.getPrototypeOf(s.prototype),"addEventListener",this).call(this,e,t)}},{key:"responseType",get:function(){return this._responseType},set:function(e){if(this._sent)throw new Error("Failed to set the 'responseType' property on 'XMLHttpRequest': The response type cannot be set after the request has been sent.");c.hasOwnProperty(e)?(a(c[e]||'document'===e,"The provided value '"+e+"' is unsupported in this environment."),this._responseType=e):h(!1,"The provided value '"+e+"' is not a valid 'responseType'.")}},{key:"responseText",get:function(){if(''!==this._responseType&&'text'!==this._responseType)throw new Error("The 'responseText' property is only available if 'responseType' is set to '' or 'text', but it is '"+this._responseType+"'.");return this.readyState0){for(var t=Array(arguments.length),n=0;n0?u-4:u;var A=0;for(t=0;t>16&255,c[A++]=n>>8&255,c[A++]=255&n;2===o?(n=a[r.charCodeAt(t)]<<2|a[r.charCodeAt(t+1)]>>4,c[A++]=255&n):1===o&&(n=a[r.charCodeAt(t)]<<10|a[r.charCodeAt(t+1)]<<4|a[r.charCodeAt(t+2)]>>2,c[A++]=n>>8&255,c[A++]=255&n);return c},n.fromByteArray=function(r){for(var t,e=r.length,n=e%3,a='',h=[],c=0,u=e-n;cu?u:c+16383));1===n?(t=r[e-1],a+=o[t>>2],a+=o[t<<4&63],a+='=='):2===n&&(t=(r[e-2]<<8)+r[e-1],a+=o[t>>10],a+=o[t>>4&63],a+=o[t<<2&63],a+='=');return h.push(a),h.join('')};for(var o=[],a=[],h='undefined'!=typeof Uint8Array?Uint8Array:Array,c='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',u=0,A=c.length;u0)throw new Error('Invalid string. Length must be a multiple of 4');return'='===r[t-2]?2:'='===r[t-1]?1:0}function i(r,t,e){for(var n,a=[],h=t;h>18&63]+o[c>>12&63]+o[c>>6&63]+o[63&c]);var c;return a.join('')}},78); -__d(function(e,t,n,s){'use strict';var a=(function(){function e(){babelHelpers.classCallCheck(this,e),this._parts=[]}return babelHelpers.createClass(e,[{key:"append",value:function(e,t){this._parts.push([e,t])}},{key:"getParts",value:function(){return this._parts.map(function(e){var t=babelHelpers.slicedToArray(e,2),n=t[0],s=t[1],a={'content-disposition':'form-data; name="'+n+'"'};return'object'==typeof s&&s?('string'==typeof s.name&&(a['content-disposition']+='; filename="'+s.name+'"'),'string'==typeof s.type&&(a['content-type']=s.type),babelHelpers.extends({},s,{headers:a,fieldName:n})):{string:String(s),headers:a,fieldName:n}})}}]),e})();n.exports=a},79); -__d(function(e,t,s,r){'use strict';var u=t(81),a=babelHelpers.interopRequireDefault(u);a.default&&a.default.fetch?s.exports=a.default:s.exports={fetch:fetch,Headers:Headers,Request:Request,Response:Response}},80); -__d(function(t,e,r,o){!(function(t){'use strict';if(!t.fetch){var e={searchParams:'URLSearchParams'in t,iterable:'Symbol'in t&&'iterator'in Symbol,blob:'FileReader'in t&&'Blob'in t&&(function(){try{return new Blob,!0}catch(t){return!1}})(),formData:'FormData'in t,arrayBuffer:'ArrayBuffer'in t};if(e.arrayBuffer)var r=['[object Int8Array]','[object Uint8Array]','[object Uint8ClampedArray]','[object Int16Array]','[object Uint16Array]','[object Int32Array]','[object Uint32Array]','[object Float32Array]','[object Float64Array]'],o=function(t){return t&&DataView.prototype.isPrototypeOf(t)},n=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};h.prototype.append=function(t,e){t=a(t),e=u(e);var r=this.map[t];r||(r=[],this.map[t]=r),r.push(e)},h.prototype.delete=function(t){delete this.map[a(t)]},h.prototype.get=function(t){var e=this.map[a(t)];return e?e[0]:null},h.prototype.getAll=function(t){return this.map[a(t)]||[]},h.prototype.has=function(t){return this.map.hasOwnProperty(a(t))},h.prototype.set=function(t,e){this.map[a(t)]=[u(e)]},h.prototype.forEach=function(t,e){Object.getOwnPropertyNames(this.map).forEach(function(r){this.map[r].forEach(function(o){t.call(e,o,r,this)},this)},this)},h.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),f(t)},h.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),f(t)},h.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),f(t)},e.iterable&&(h.prototype["function"==typeof Symbol?Symbol.iterator:"@@iterator"]=h.prototype.entries);var i=['DELETE','GET','HEAD','OPTIONS','POST','PUT'];b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},p.call(b.prototype),p.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},w.error=function(){var t=new w(null,{status:0,statusText:''});return t.type='error',t};var s=[301,302,303,307,308];w.redirect=function(t,e){if(-1===s.indexOf(e))throw new RangeError('Invalid status code');return new w(null,{status:e,headers:{location:t}})},t.Headers=h,t.Request=b,t.Response=w,t.fetch=function(t,r){return new Promise(function(o,n){var i=new b(t,r),s=new XMLHttpRequest;s.onload=function(){var t={status:s.status,statusText:s.statusText,headers:(function(t){var e=new h;return t.split('\r\n').forEach(function(t){var r=t.split(':'),o=r.shift().trim();if(o){var n=r.join(':').trim();e.append(o,n)}}),e})(s.getAllResponseHeaders()||'')};t.url='responseURL'in s?s.responseURL:t.headers.get('X-Request-URL');var e='response'in s?s.response:s.responseText;o(new w(e,t))},s.onerror=function(){n(new TypeError('Network request failed'))},s.ontimeout=function(){n(new TypeError('Network request failed'))},s.open(i.method,i.url,!0),'include'===i.credentials&&(s.withCredentials=!0),'responseType'in s&&e.blob&&(s.responseType='blob'),i.headers.forEach(function(t,e){s.setRequestHeader(e,t)}),s.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function a(t){if('string'!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError('Invalid character in header field name');return t.toLowerCase()}function u(t){return'string'!=typeof t&&(t=String(t)),t}function f(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r["function"==typeof Symbol?Symbol.iterator:"@@iterator"]=function(){return r}),r}function h(t){this.map={},t instanceof h?t.forEach(function(t,e){this.append(e,t)},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function y(t){if(t.bodyUsed)return Promise.reject(new TypeError('Already read'));t.bodyUsed=!0}function d(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function c(t){var e=new FileReader,r=d(e);return e.readAsArrayBuffer(t),r}function l(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function p(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if('string'==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&o(t))this._bodyArrayBuffer=l(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!n(t))throw new Error('unsupported BodyInit type');this._bodyArrayBuffer=l(t)}else this._bodyText='';this.headers.get('content-type')||('string'==typeof t?this.headers.set('content-type','text/plain;charset=UTF-8'):this._bodyBlob&&this._bodyBlob.type?this.headers.set('content-type',this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set('content-type','application/x-www-form-urlencoded;charset=UTF-8'))},e.blob&&(this.blob=function(){var t=y(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error('could not read FormData body as blob');return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?y(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(c)}),this.text=function(){var t=y(this);if(t)return t;if(this._bodyBlob)return(function(t){var e=new FileReader,r=d(e);return e.readAsText(t),r})(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve((function(t){for(var e=new Uint8Array(t),r=new Array(e.length),o=0;o-1?e:t})(e.method||this.method||'GET'),this.mode=e.mode||this.mode||null,this.referrer=null,('GET'===this.method||'HEAD'===this.method)&&r)throw new TypeError('Body not allowed for GET or HEAD requests');this._initBody(r)}function m(t){var e=new FormData;return t.trim().split('&').forEach(function(t){if(t){var r=t.split('='),o=r.shift().replace(/\+/g,' '),n=r.join('=').replace(/\+/g,' ');e.append(decodeURIComponent(o),decodeURIComponent(n))}}),e}function w(t,e){e||(e={}),this.type='default',this.status='status'in e?e.status:200,this.ok=this.status>=200&&this.status<300,this.statusText='statusText'in e?e.statusText:'OK',this.headers=new h(e.headers),this.url=e.url||'',this._initBody(t)}})('undefined'!=typeof self?self:this)},81); -__d(function(e,t,s,i){'use strict';var r=t(83),o=t(69),n=t(75),a=t(20),c=(t(28),t(89)),d=t(78),l=t(77),u=t(18),b=a.WebSocketModule,h=0,p=1,y=2,f=3,_=0,v=(function(e){babelHelpers.inherits(t,e);function t(e,s,i){babelHelpers.classCallCheck(this,t);var r=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));r.CONNECTING=h,r.OPEN=p,r.CLOSING=y,r.CLOSED=f,r.readyState=h,'string'==typeof s&&(s=[s]);var o=i||{},a=o.headers,c=void 0===a?{}:a,d=babelHelpers.objectWithoutProperties(o,["headers"]);if(d&&'string'==typeof d.origin&&(console.warn('Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.'),c.origin=d.origin,delete d.origin),Object.keys(d).length>0&&console.warn('Unrecognized WebSocket connection option(s) `'+Object.keys(d).join('`, `')+"`. Did you mean to put these under `headers`?"),Array.isArray(s)||(s=null),!t.isAvailable)throw new Error("Cannot initialize WebSocket module. Native module WebSocketModule is missing.");return r._eventEmitter=new n(b),r._socketId=_++,r._registerEvents(),b.connect(e,s,{headers:c},r._socketId),r}return babelHelpers.createClass(t,[{key:"close",value:function(e,t){this.readyState!==this.CLOSING&&this.readyState!==this.CLOSED&&(this.readyState=this.CLOSING,this._close(e,t))}},{key:"send",value:function(e){if(this.readyState===this.CONNECTING)throw new Error('INVALID_STATE_ERR');if(e instanceof r){var t=a.BlobModule;return u(t,'Native module BlobModule is required for blob support'),void t.sendBlob(e,this._socketId)}if('string'!=typeof e){if(!(e instanceof ArrayBuffer||ArrayBuffer.isView(e)))throw new Error('Unsupported data type');b.sendBinary(l(e),this._socketId)}else b.send(e,this._socketId)}},{key:"ping",value:function(){if(this.readyState===this.CONNECTING)throw new Error('INVALID_STATE_ERR');b.ping(this._socketId)}},{key:"_close",value:function(e,t){var s='number'==typeof e?e:1e3,i='string'==typeof t?t:'';b.close(s,i,this._socketId)}},{key:"_unregisterEvents",value:function(){this._subscriptions.forEach(function(e){return e.remove()}),this._subscriptions=[]}},{key:"_registerEvents",value:function(){var e=this;this._subscriptions=[this._eventEmitter.addListener('websocketMessage',function(t){if(t.id===e._socketId){var s=t.data;switch(t.type){case'binary':s=d.toByteArray(t.data).buffer;break;case'blob':s=r.create(t.data)}e.dispatchEvent(new c('message',{data:s}))}}),this._eventEmitter.addListener('websocketOpen',function(t){t.id===e._socketId&&(e.readyState=e.OPEN,e.dispatchEvent(new c('open')))}),this._eventEmitter.addListener('websocketClosed',function(t){t.id===e._socketId&&(e.readyState=e.CLOSED,e.dispatchEvent(new c('close',{code:t.code,reason:t.reason})),e._unregisterEvents(),e.close())}),this._eventEmitter.addListener('websocketFailed',function(t){t.id===e._socketId&&(e.readyState=e.CLOSED,e.dispatchEvent(new c('error',{message:t.message})),e.dispatchEvent(new c('close',{message:t.message})),e._unregisterEvents(),e.close())})]}},{key:"binaryType",get:function(){return this._binaryType},set:function(e){if('blob'!==e&&'arraybuffer'!==e)throw new Error('binaryType must be either \'blob\' or \'arraybuffer\'');if('blob'===this._binaryType||'blob'===e){var t=a.BlobModule;u(t,'Native module BlobModule is required for blob support'),t&&('blob'===e?t.enableBlobSupport(this._socketId):t.disableBlobSupport(this._socketId))}this._binaryType=e}}]),t})(o.apply(void 0,['close','error','message','open']));v.CONNECTING=h,v.OPEN=p,v.CLOSING=y,v.CLOSED=f,v.isAvailable=!!b,s.exports=v},82); -__d(function(e,t,r,s){'use strict';var l=t(18),o=t(84),a=t(20).BlobModule,n=(function(){babelHelpers.createClass(e,null,[{key:"create",value:function(t){return babelHelpers.extends(Object.create(e.prototype),t)}}]);function e(t,r){babelHelpers.classCallCheck(this,e);var s=o(),n=0;return t.forEach(function(t){l(t instanceof e,'Can currently only create a Blob from other Blobs'),n+=t.size}),a.createFromParts(t,s),e.create({blobId:s,offset:0,size:n})}return babelHelpers.createClass(e,[{key:"slice",value:function(t,r){var s=this.offset,l=this.size;return'number'==typeof t&&(t>l&&(t=l),s+=t,l-=t,'number'==typeof r&&(r<0&&(r=this.size+r),l=r-t)),e.create({blobId:this.blobId,offset:s,size:l})}},{key:"close",value:function(){a.release(this.blobId)}}]),e})();r.exports=n},83); -__d(function(v,n,o,r){var t=n(85),_=n(88),a=_;a.v1=t,a.v4=_,o.exports=a},84); -__d(function(e,o,s,c){var r=o(86),n=o(87),i=r(),v=[1|i[0],i[1],i[2],i[3],i[4],i[5]],t=16383&(i[6]<<8|i[7]),a=0,d=0;s.exports=function(e,o,s){var c=o&&s||0,r=o||[],i=void 0!==(e=e||{}).clockseq?e.clockseq:t,u=void 0!==e.msecs?e.msecs:(new Date).getTime(),f=void 0!==e.nsecs?e.nsecs:d+1,m=u-a+(f-d)/1e4;if(m<0&&void 0===e.clockseq&&(i=i+1&16383),(m<0||u>a)&&void 0===e.nsecs&&(f=0),f>=1e4)throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');a=u,d=f,t=i;var k=(1e4*(268435455&(u+=122192928e5))+f)%4294967296;r[c++]=k>>>24&255,r[c++]=k>>>16&255,r[c++]=k>>>8&255,r[c++]=255&k;var l=u/4294967296*1e4&268435455;r[c++]=l>>>8&255,r[c++]=255&l,r[c++]=l>>>24&15|16,r[c++]=l>>>16&255,r[c++]=i>>>8|128,r[c++]=255&i;for(var q=e.node||v,w=0;w<6;++w)r[c+w]=q[w];return o||n(r)}},85); -__d(function(r,n,a,t){var o,e=r.crypto||r.msCrypto;if(e&&e.getRandomValues){var u=new Uint8Array(16);o=function(){return e.getRandomValues(u),u}}if(!o){var f=new Array(16);o=function(){for(var r,n=0;n<16;n++)0==(3&n)&&(r=4294967296*Math.random()),f[n]=r>>>((3&n)<<3)&255;return f}}a.exports=o},86); -__d(function(r,t,n,o){for(var u=[],f=0;f<256;++f)u[f]=(f+256).toString(16).substr(1);n.exports=function(r,t){var n=t||0,o=u;return o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]+'-'+o[r[n++]]+o[r[n++]]+'-'+o[r[n++]]+o[r[n++]]+'-'+o[r[n++]]+o[r[n++]]+'-'+o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]}},87); -__d(function(r,n,a,o){var t=n(86),f=n(87);a.exports=function(r,n,a){var o=n&&a||0;'string'==typeof r&&(n='binary'==r?new Array(16):null,r=null);var i=(r=r||{}).random||(r.rng||t)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,n)for(var u=0;u<16;++u)n[o+u]=i[u];return n||f(i)}},88); -__d(function(e,t,s,i){'use strict';s.exports=function e(t,s){babelHelpers.classCallCheck(this,e),this.type=t.toString(),babelHelpers.extends(this,s)}},89); -__d(function(e,t,r,o){'use strict';t(83);var n=t(20).BlobModule,l=null;n&&'string'==typeof n.BLOB_URI_SCHEME&&(l=n.BLOB_URI_SCHEME+':','string'==typeof n.BLOB_URI_HOST&&(l+="//"+n.BLOB_URI_HOST+"/"));var s=(function(){function e(){throw babelHelpers.classCallCheck(this,e),new Error('Creating BlobURL objects is not supported yet.')}return babelHelpers.createClass(e,null,[{key:"createObjectURL",value:function(e){if(null===l)throw new Error('Cannot create URL for blob!');return""+l+e.blobId+"?offset="+e.offset+"&size="+e.size}},{key:"revokeObjectURL",value:function(e){}}]),e})();r.exports=s},90); -__d(function(e,n,t,s){'use strict';n(92);var a=n(20),l=(n(28),(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"alert",value:function(e,n,t,s,a){r.alert(e,n,t,s)}}]),e})()),r=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"alert",value:function(e,n,t,s){var l={title:e||'',message:n||''};s&&(l=babelHelpers.extends({},l,{cancelable:s.cancelable}));var r=t?t.slice(0,3):[{text:'OK'}],o=r.pop(),i=r.pop(),u=r.pop();u&&(l=babelHelpers.extends({},l,{buttonNeutral:u.text||''})),i&&(l=babelHelpers.extends({},l,{buttonNegative:i.text||''})),o&&(l=babelHelpers.extends({},l,{buttonPositive:o.text||''})),a.DialogManagerAndroid.showAlert(l,function(e){return console.warn(e)},function(e,n){e===a.DialogManagerAndroid.buttonClicked?n===a.DialogManagerAndroid.buttonNeutral?u.onPress&&u.onPress():n===a.DialogManagerAndroid.buttonNegative?i.onPress&&i.onPress():n===a.DialogManagerAndroid.buttonPositive&&o.onPress&&o.onPress():e===a.DialogManagerAndroid.dismissed&&s&&s.onDismiss&&s.onDismiss()})}}]),e})();t.exports=l},91); -__d(function(e,t,a,r){'use strict';var n=t(20).AlertManager,l=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"alert",value:function(e,t,a,r){if(void 0!==r)return console.warn('AlertIOS.alert() with a 4th "type" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.'),void this.prompt(e,t,a,r);this.prompt(e,t,a,'default')}},{key:"prompt",value:function(e,t,a){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:'plain-text',l=arguments[4],i=arguments[5];if('function'!=typeof r){var o,s,u=[],c=[];'function'==typeof a?u=[a]:a instanceof Array&&a.forEach(function(e,t){if(u[t]=e.onPress,'cancel'===e.style?o=String(t):'destructive'===e.style&&(s=String(t)),e.text||t<(a||[]).length-1){var r={};r[t]=e.text||'',c.push(r)}}),n.alertWithArgs({title:e||'',message:t||void 0,buttons:c,type:r||void 0,defaultValue:l,cancelButtonKey:o,destructiveButtonKey:s,keyboardType:i},function(e,t){var a=u[e];a&&a(t)})}else{console.warn("You passed a callback function as the \"type\" argument to AlertIOS.prompt(). React Native is assuming you want to use the deprecated AlertIOS.prompt(title, defaultValue, buttons, callback) signature. The current signature is AlertIOS.prompt(title, message, callbackOrButtons, type, defaultValue, keyboardType) and the old syntax will be removed in a future version.");var p=r;l=t;n.alertWithArgs({title:e||'',type:'plain-text',defaultValue:l},function(e,t){p(t)})}}}]),e})();a.exports=l},92); -__d(function(e,t,n,r){'use strict';var i=t(75),o=t(20).LocationObserver,s=t(18),a=t(94),u=t(32),c=new i(o),v=t(28),f=t(95),g=[],l=!1,h={setRNConfiguration:function(e){o.setConfiguration&&o.setConfiguration(e)},requestAuthorization:function(){o.requestAuthorization()},getCurrentPosition:function(e,t,n){var r,i;return regeneratorRuntime.async(function(u){for(;;)switch(u.prev=u.next){case 0:if(s('function'==typeof e,'Must provide a valid geo_success callback.'),r=!0,!(v.Version>=23)){u.next=11;break}return u.next=5,regeneratorRuntime.awrap(f.check(f.PERMISSIONS.ACCESS_FINE_LOCATION));case 5:if(r=u.sent){u.next=11;break}return u.next=9,regeneratorRuntime.awrap(f.request(f.PERMISSIONS.ACCESS_FINE_LOCATION));case 9:i=u.sent,r=i===f.RESULTS.GRANTED;case 11:r&&o.getCurrentPosition(n||{},e,t||a);case 12:case"end":return u.stop()}},null,this)},watchPosition:function(e,t,n){l||(o.startObserving(n||{}),l=!0);var r=g.length;return g.push([c.addListener('geolocationDidChange',e),t?c.addListener('geolocationError',t):null]),r},clearWatch:function(e){var t=g[e];if(t){t[0].remove();var n=t[1];n&&n.remove(),g[e]=void 0;for(var r=!0,i=0;i1?e-1:0),a=1;a1?n-1:0),i=1;i3?n-3:0),l=3;l5?d-5:0),f=5;f4?o-4:0),l=4;l4?e-4:0),v=4;v3?c-3:0),u=3;u>>8)>>>0,r|=0}},129); -__d(function(t,n,r,u){'use strict';n(131),n(28),n(18),n(26);r.exports=function(t){return t}},130); -__d(function(t,e,n,a){'use strict';var r=e(18),o={createIdentityMatrix:function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},createCopy:function(t){return[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},createOrthographic:function(t,e,n,a,r,o){return[2/(e-t),0,0,0,0,2/(a-n),0,0,0,0,-2/(o-r),0,-(e+t)/(e-t),-(a+n)/(a-n),-(o+r)/(o-r),1]},createFrustum:function(t,e,n,a,r,o){var i=1/(e-t),u=1/(a-n),s=1/(r-o);return[r*i*2,0,0,0,0,r*u*2,0,0,(e+t)*i,(a+n)*u,(o+r)*s,-1,0,0,o*r*s*2,0]},createPerspective:function(t,e,n,a){var r=1/Math.tan(t/2),o=1/(n-a);return[r/e,0,0,0,0,r,0,0,0,0,(a+n)*o,-1,0,0,a*n*o*2,0]},createTranslate2d:function(t,e){var n=o.createIdentityMatrix();return o.reuseTranslate2dCommand(n,t,e),n},reuseTranslate2dCommand:function(t,e,n){t[12]=e,t[13]=n},reuseTranslate3dCommand:function(t,e,n,a){t[12]=e,t[13]=n,t[14]=a},createScale:function(t){var e=o.createIdentityMatrix();return o.reuseScaleCommand(e,t),e},reuseScaleCommand:function(t,e){t[0]=e,t[5]=e},reuseScale3dCommand:function(t,e,n,a){t[0]=e,t[5]=n,t[10]=a},reusePerspectiveCommand:function(t,e){t[11]=-1/e},reuseScaleXCommand:function(t,e){t[0]=e},reuseScaleYCommand:function(t,e){t[5]=e},reuseScaleZCommand:function(t,e){t[10]=e},reuseRotateXCommand:function(t,e){t[5]=Math.cos(e),t[6]=Math.sin(e),t[9]=-Math.sin(e),t[10]=Math.cos(e)},reuseRotateYCommand:function(t,e){t[0]=Math.cos(e),t[2]=-Math.sin(e),t[8]=Math.sin(e),t[10]=Math.cos(e)},reuseRotateZCommand:function(t,e){t[0]=Math.cos(e),t[1]=Math.sin(e),t[4]=-Math.sin(e),t[5]=Math.cos(e)},createRotateZ:function(t){var e=o.createIdentityMatrix();return o.reuseRotateZCommand(e,t),e},reuseSkewXCommand:function(t,e){t[4]=Math.tan(e)},reuseSkewYCommand:function(t,e){t[1]=Math.tan(e)},multiplyInto:function(t,e,n){var a=e[0],r=e[1],o=e[2],i=e[3],u=e[4],s=e[5],c=e[6],m=e[7],v=e[8],l=e[9],f=e[10],d=e[11],h=e[12],M=e[13],C=e[14],p=e[15],T=n[0],x=n[1],y=n[2],b=n[3];t[0]=T*a+x*u+y*v+b*h,t[1]=T*r+x*s+y*l+b*M,t[2]=T*o+x*c+y*f+b*C,t[3]=T*i+x*m+y*d+b*p,T=n[4],x=n[5],y=n[6],b=n[7],t[4]=T*a+x*u+y*v+b*h,t[5]=T*r+x*s+y*l+b*M,t[6]=T*o+x*c+y*f+b*C,t[7]=T*i+x*m+y*d+b*p,T=n[8],x=n[9],y=n[10],b=n[11],t[8]=T*a+x*u+y*v+b*h,t[9]=T*r+x*s+y*l+b*M,t[10]=T*o+x*c+y*f+b*C,t[11]=T*i+x*m+y*d+b*p,T=n[12],x=n[13],y=n[14],b=n[15],t[12]=T*a+x*u+y*v+b*h,t[13]=T*r+x*s+y*l+b*M,t[14]=T*o+x*c+y*f+b*C,t[15]=T*i+x*m+y*d+b*p},determinant:function(t){var e=babelHelpers.slicedToArray(t,16),n=e[0],a=e[1],r=e[2],o=e[3],i=e[4],u=e[5],s=e[6],c=e[7],m=e[8],v=e[9],l=e[10],f=e[11],d=e[12],h=e[13],M=e[14],C=e[15];return o*s*v*d-r*c*v*d-o*u*l*d+a*c*l*d+r*u*f*d-a*s*f*d-o*s*m*h+r*c*m*h+o*i*l*h-n*c*l*h-r*i*f*h+n*s*f*h+o*u*m*M-a*c*m*M-o*i*v*M+n*c*v*M+a*i*f*M-n*u*f*M-r*u*m*C+a*s*m*C+r*i*v*C-n*s*v*C-a*i*l*C+n*u*l*C},inverse:function(t){var e=o.determinant(t);if(!e)return t;var n=babelHelpers.slicedToArray(t,16),a=n[0],r=n[1],i=n[2],u=n[3],s=n[4],c=n[5],m=n[6],v=n[7],l=n[8],f=n[9],d=n[10],h=n[11],M=n[12],C=n[13],p=n[14],T=n[15];return[(m*h*C-v*d*C+v*f*p-c*h*p-m*f*T+c*d*T)/e,(u*d*C-i*h*C-u*f*p+r*h*p+i*f*T-r*d*T)/e,(i*v*C-u*m*C+u*c*p-r*v*p-i*c*T+r*m*T)/e,(u*m*f-i*v*f-u*c*d+r*v*d+i*c*h-r*m*h)/e,(v*d*M-m*h*M-v*l*p+s*h*p+m*l*T-s*d*T)/e,(i*h*M-u*d*M+u*l*p-a*h*p-i*l*T+a*d*T)/e,(u*m*M-i*v*M-u*s*p+a*v*p+i*s*T-a*m*T)/e,(i*v*l-u*m*l+u*s*d-a*v*d-i*s*h+a*m*h)/e,(c*h*M-v*f*M+v*l*C-s*h*C-c*l*T+s*f*T)/e,(u*f*M-r*h*M-u*l*C+a*h*C+r*l*T-a*f*T)/e,(r*v*M-u*c*M+u*s*C-a*v*C-r*s*T+a*c*T)/e,(u*c*l-r*v*l-u*s*f+a*v*f+r*s*h-a*c*h)/e,(m*f*M-c*d*M-m*l*C+s*d*C+c*l*p-s*f*p)/e,(r*d*M-i*f*M+i*l*C-a*d*C-r*l*p+a*f*p)/e,(i*c*M-r*m*M-i*s*C+a*m*C+r*s*p-a*c*p)/e,(r*m*l-i*c*l+i*s*f-a*m*f-r*s*d+a*c*d)/e]},transpose:function(t){return[t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]]},multiplyVectorByMatrix:function(t,e){var n=babelHelpers.slicedToArray(t,4),a=n[0],r=n[1],o=n[2],i=n[3];return[a*e[0]+r*e[4]+o*e[8]+i*e[12],a*e[1]+r*e[5]+o*e[9]+i*e[13],a*e[2]+r*e[6]+o*e[10]+i*e[14],a*e[3]+r*e[7]+o*e[11]+i*e[15]]},v3Length:function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])},v3Normalize:function(t,e){var n=1/(e||o.v3Length(t));return[t[0]*n,t[1]*n,t[2]*n]},v3Dot:function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},v3Combine:function(t,e,n,a){return[n*t[0]+a*e[0],n*t[1]+a*e[1],n*t[2]+a*e[2]]},v3Cross:function(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]},quaternionToDegreesXYZ:function(t,e,n){var a=babelHelpers.slicedToArray(t,4),r=a[0],i=a[1],u=a[2],s=a[3],c=r*r,m=i*i,v=u*u,l=r*i+u*s,f=s*s+c+m+v,d=180/Math.PI;return l>.49999*f?[0,2*Math.atan2(r,s)*d,90]:l<-.49999*f?[0,-2*Math.atan2(r,s)*d,-90]:[o.roundTo3Places(Math.atan2(2*r*s-2*i*u,1-2*c-2*v)*d),o.roundTo3Places(Math.atan2(2*i*s-2*r*u,1-2*m-2*v)*d),o.roundTo3Places(Math.asin(2*r*i+2*u*s)*d)]},roundTo3Places:function(t){var e=t.toString().split('e');return.001*Math.round(e[0]+'e'+(e[1]?+e[1]-3:3))},decomposeMatrix:function(t){r(16===t.length,'Matrix decomposition needs a list of 3d matrix values, received %s',t);var e=[],n=[],a=[],i=[],u=[];if(t[15]){for(var s=[],c=[],m=0;m<4;m++){s.push([]);for(var v=0;v<4;v++){var l=t[4*m+v]/t[15];s[m].push(l),c.push(3===v?0:l)}}if(c[15]=1,o.determinant(c)){if(0!==s[0][3]||0!==s[1][3]||0!==s[2][3]){var f=[s[0][3],s[1][3],s[2][3],s[3][3]],d=o.inverse(c),h=o.transpose(d);e=o.multiplyVectorByMatrix(f,h)}else e[0]=e[1]=e[2]=0,e[3]=1;for(m=0;m<3;m++)u[m]=s[3][m];var M=[];for(m=0;m<3;m++)M[m]=[s[m][0],s[m][1],s[m][2]];a[0]=o.v3Length(M[0]),M[0]=o.v3Normalize(M[0],a[0]),i[0]=o.v3Dot(M[0],M[1]),M[1]=o.v3Combine(M[1],M[0],1,-i[0]),i[0]=o.v3Dot(M[0],M[1]),M[1]=o.v3Combine(M[1],M[0],1,-i[0]),a[1]=o.v3Length(M[1]),M[1]=o.v3Normalize(M[1],a[1]),i[0]/=a[1],i[1]=o.v3Dot(M[0],M[2]),M[2]=o.v3Combine(M[2],M[0],1,-i[1]),i[2]=o.v3Dot(M[1],M[2]),M[2]=o.v3Combine(M[2],M[1],1,-i[2]),a[2]=o.v3Length(M[2]),M[2]=o.v3Normalize(M[2],a[2]),i[1]/=a[2],i[2]/=a[2];var C=o.v3Cross(M[1],M[2]);if(o.v3Dot(M[0],C)<0)for(m=0;m<3;m++)a[m]*=-1,M[m][0]*=-1,M[m][1]*=-1,M[m][2]*=-1;n[0]=.5*Math.sqrt(Math.max(1+M[0][0]-M[1][1]-M[2][2],0)),n[1]=.5*Math.sqrt(Math.max(1-M[0][0]+M[1][1]-M[2][2],0)),n[2]=.5*Math.sqrt(Math.max(1-M[0][0]-M[1][1]+M[2][2],0)),n[3]=.5*Math.sqrt(Math.max(1+M[0][0]+M[1][1]+M[2][2],0)),M[2][1]>M[1][2]&&(n[0]=-n[0]),M[0][2]>M[2][0]&&(n[1]=-n[1]),M[1][0]>M[0][1]&&(n[2]=-n[2]);var p;return{rotationDegrees:p=n[0]<.001&&n[0]>=0&&n[1]<.001&&n[1]>=0?[0,0,o.roundTo3Places(180*Math.atan2(M[0][1],M[0][0])/Math.PI)]:o.quaternionToDegreesXYZ(n,s,M),perspective:e,quaternion:n,scale:a,skew:i,translation:u,rotate:p[2],rotateX:p[0],rotateY:p[1],scaleX:a[0],scaleY:a[1],translateX:u[0],translateY:u[1]}}}}};n.exports=o},131); -__d(function(t,i,h,d){'use strict';var e={width:void 0,height:void 0};h.exports=function(t,i){return(t=t||e)!==(i=i||e)&&(t.width!==i.width||t.height!==i.height)}},132); -__d(function(_,t,e,E){'use strict';var a=t(43).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;e.exports=a.createReactNativeComponentClass},133); -__d(function(t,o,i,r){'use strict';var e={top:void 0,left:void 0,right:void 0,bottom:void 0};i.exports=function(t,o){return(t=t||e)!==(o=o||e)&&(t.top!==o.top||t.left!==o.left||t.right!==o.right||t.bottom!==o.bottom)}},134); -__d(function(t,n,r,u){'use strict';r.exports=function(t,n){return!(t===n||t&&n&&t[12]===n[12]&&t[13]===n[13]&&t[14]===n[14]&&t[5]===n[5]&&t[10]===n[10]&&t[1]===n[1]&&t[2]===n[2]&&t[3]===n[3]&&t[4]===n[4]&&t[6]===n[6]&&t[7]===n[7]&&t[8]===n[8]&&t[9]===n[9]&&t[11]===n[11]&&t[15]===n[15])}},135); -__d(function(t,i,n,o){'use strict';var r={x:void 0,y:void 0};n.exports=function(t,i){return(t=t||r)!==(i=i||r)&&(t.x!==i.x||t.y!==i.y)}},136); -__d(function(t,r,e,i){'use strict';var n=r(138),s=r(139),u=r(20),o=void 0,c=void 0,f=void 0;e.exports=function(t){if('object'==typeof t)return t;var r=n.getAssetByID(t);if(!r)return null;var e=new s((function(){if(void 0===c){var t=u.SourceCode.scriptURL,r=t&&t.match(/^https?:\/\/.*?\//);c=r?r[0]:null}return c})(),(function(){if(void 0===f){var t=u.SourceCode.scriptURL;if(!t)return f=null;if(t.startsWith('assets://'))return f=null;f=t.substring(0,t.lastIndexOf('/')+1),t.startsWith('file://')||(f='file://'+f)}return f})(),r);return o?o(e):e.defaultAsset()},e.exports.pickScale=s.pickScale,e.exports.setCustomSourceTransformer=function(t){o=t}},137); -__d(function(t,e,r,s){'use strict';var n=[];r.exports={registerAsset:function(t){return n.push(t)},getAssetByID:function(t){return n[t-1]}}},138); -__d(function(e,r,t,s){'use strict';var i=r(140),a=(r(28),r(143)),n=r(18);function u(e){var r=l.pickScale(e.scales,i.get()),t=1===r?'':'@'+r+'x';return a.getBasePath(e)+'/'+e.name+t+'.'+e.type}var l=(function(){function e(r,t,s){babelHelpers.classCallCheck(this,e),this.serverUrl=r,this.bundleUrl=t,this.asset=s}return babelHelpers.createClass(e,[{key:"isLoadedFromServer",value:function(){return!!this.serverUrl}},{key:"isLoadedFromFileSystem",value:function(){return!!this.bundleUrl}},{key:"defaultAsset",value:function(){return this.isLoadedFromServer()?this.assetServerURL():this.isLoadedFromFileSystem()?this.drawableFolderInBundle():this.resourceIdentifierWithoutScale()}},{key:"assetServerURL",value:function(){return n(!!this.serverUrl,'need server to load from'),this.fromSource(this.serverUrl+u(this.asset)+"?platform=android&hash="+this.asset.hash)}},{key:"scaledAssetPath",value:function(){return this.fromSource(u(this.asset))}},{key:"scaledAssetURLInBundle",value:function(){var e=this.bundleUrl||'file://';return this.fromSource(e+u(this.asset))}},{key:"resourceIdentifierWithoutScale",value:function(){return n(!0,'resource identifiers work on Android'),this.fromSource(a.getAndroidResourceIdentifier(this.asset))}},{key:"drawableFolderInBundle",value:function(){var e=this.bundleUrl||'file://';return this.fromSource(e+(function(e){var r=l.pickScale(e.scales,i.get());return a.getAndroidResourceFolderName(e,r)+'/'+a.getAndroidResourceIdentifier(e)+'.'+e.type})(this.asset))}},{key:"fromSource",value:function(r){return{__packager_asset:!0,width:this.asset.width,height:this.asset.height,uri:r,scale:e.pickScale(this.asset.scales,i.get())}}}],[{key:"pickScale",value:function(e,r){for(var t=0;t=r)return e[t];return e[e.length-1]||1}}]),e})();t.exports=l},139); -__d(function(e,t,n,u){'use strict';var r=t(141),a=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"get",value:function(){return r.get('window').scale}},{key:"getFontScale",value:function(){return r.get('window').fontScale||e.get()}},{key:"getPixelSizeForLayoutSize",value:function(t){return Math.round(t*e.get())}},{key:"roundToNearestPixel",value:function(t){var n=e.get();return Math.round(t*n)/n}},{key:"startDetecting",value:function(){}}]),e})();n.exports=a},140); -__d(function(e,n,s,i){'use strict';var t=n(142),l=n(35),a=(n(28),n(34)),c=n(18),r=new l,o=!1,d={},h=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"set",value:function(e){if(e&&e.windowPhysicalPixels){var n=(e=JSON.parse(JSON.stringify(e))).windowPhysicalPixels;e.window={width:n.width/n.scale,height:n.height/n.scale,scale:n.scale,fontScale:n.fontScale};var s=e.screenPhysicalPixels;e.screen={width:s.width/s.scale,height:s.height/s.scale,scale:s.scale,fontScale:s.fontScale},delete e.screenPhysicalPixels,delete e.windowPhysicalPixels}babelHelpers.extends(d,e),o?r.emit('change',{window:d.window,screen:d.screen}):o=!0}},{key:"get",value:function(e){return c(d[e],'No dimension set for key '+e),d[e]}},{key:"addEventListener",value:function(e,n){c('change'===e,'Trying to subscribe to unknown event: "%s"',e),r.addListener(e,n)}},{key:"removeEventListener",value:function(e,n){c('change'===e,'Trying to remove listener for unknown event: "%s"',e),r.removeListener(e,n)}}]),e})();h.set(t.Dimensions),a.addListener('didUpdateDimensions',function(e){h.set(e)}),s.exports=h},141); -__d(function(e,t,i,n){'use strict';var o=t(20).DeviceInfo;t(18)(o,'DeviceInfo native module is not installed correctly'),i.exports=o},142); -__d(function(e,r,t,n){'use strict';function s(e){switch(e){case.75:return'ldpi';case 1:return'mdpi';case 1.5:return'hdpi';case 2:return'xhdpi';case 3:return'xxhdpi';case 4:return'xxxhdpi'}throw new Error('no such scale')}var a=new Set(['gif','jpeg','jpg','png','svg','webp','xml']);function i(e){var r=e.httpServerLocation;return'/'===r[0]&&(r=r.substr(1)),r}t.exports={getAndroidAssetSuffix:s,getAndroidResourceFolderName:function(e,r){if(!a.has(e.type))return'raw';var t=s(r);if(!t)throw new Error('Don\'t know which android drawable suffix to use for asset: '+JSON.stringify(e));return'drawable-'+t},getAndroidResourceIdentifier:function(e){return(i(e)+'/'+e.name).toLowerCase().replace(/\//g,'_').replace(/([^a-z0-9_])/g,'').replace(/^assets_/,'')},getBasePath:i}},143); -__d(function(e,o,r,a){'use strict';var n=o(124);r.exports=function(e,o,r){if(o){var a=e.displayName||e.name||'unknown',t=e.__propTypesSecretDontUseThesePlease||e.propTypes;if(!t)throw new Error('`'+a+'` has no propTypes defined`');var p=o.NativeProps;for(var s in p)if(!(t[s]||n[s]||r&&r[s])){var i;throw i=t.hasOwnProperty(s)?'`'+a+'` has incorrectly defined propType for native prop `'+o.uiViewClassName+'.'+s+'` of native type `'+p[s]:'`'+a+'` has no propType for native prop `'+o.uiViewClassName+'.'+s+'` of native type `'+p[s]+'`',i+="\nIf you haven't changed this prop yourself, this usually means that your versions of the native code and JavaScript code are out of sync. Updating both should make this error go away.",new Error(i)}}}},144); -__d(function(e,t,r,o){'use strict';var i=t(140),s=t(52),l=t(124),a=t(146),n=t(51),u=i.roundToNearestPixel(.4);0===u&&(u=1/i.get());var b={position:'absolute',left:0,right:0,top:0,bottom:0},c=s.register(b);r.exports={hairlineWidth:u,absoluteFill:c,absoluteFillObject:b,flatten:n,setStyleAttributePreprocessor:function(e,t){var r=void 0;if('string'==typeof l[e])r={};else{if('object'!=typeof l[e])return void console.error(e+" is not a valid style attribute");r=l[e]}l[e]=babelHelpers.extends({},r,{process:t})},create:function(e){var t={};for(var r in e)a.validateStyle(r,e),t[r]=e[r]&&s.register(e[r]);return t}}},145); -__d(function(e,l,a,t){'use strict';var r=l(125),n=l(128),d=l(116),i=(l(18),(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"validateStyleProp",value:function(e,l,a){return}},{key:"validateStyle",value:function(e,l){return}},{key:"addValidStylePropTypes",value:function(e){for(var l in e)s[l]=e[l]}}]),e})()),s={};i.addValidStylePropTypes(r),i.addValidStylePropTypes(n),i.addValidStylePropTypes(d),a.exports=i},146); -__d(function(e,i,t,n){'use strict';var o=i(42),r=(i(28),i(104)),s=i(107),a=(i(124),i(148)),d=i(108),p=i(149),u=i(18),w=i(122)('RCTView',p({displayName:'View',mixins:[o],propTypes:d,viewConfig:{uiViewClassName:'RCTView',validAttributes:a.RCTView},contextTypes:{isInAParentText:r.bool},render:function(){return u(!this.context.isInAParentText,'Nesting of within is not supported on Android.'),s.createElement(w,this.props)}}),{nativeOnly:{nativeBackgroundAndroid:!0,nativeForegroundAndroid:!0}}),T=w;t.exports=T},147); -__d(function(e,i,s,t){'use strict';var a=i(124),c={};c.UIView={pointerEvents:!0,accessible:!0,accessibilityLabel:!0,accessibilityComponentType:!0,accessibilityLiveRegion:!0,accessibilityTraits:!0,importantForAccessibility:!0,nativeID:!0,testID:!0,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,onLayout:!0,onAccessibilityTap:!0,onMagicTap:!0,collapsable:!0,needsOffscreenAlphaCompositing:!0,style:a},c.RCTView=babelHelpers.extends({},c.UIView,{removeClippedSubviews:!0}),s.exports=c},148); -__d(function(e,t,a,r){'use strict';var o=t(12),c=t(150);if(void 0===o)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var s=(new o.Component).updater;a.exports=c(o.Component,o.isValidElement,s)},149); -__d(function(t,e,n,o){'use strict';var i=e(14),a=e(15),r=e(18),s='mixins';n.exports=function(t,e,n){var o=[],p={mixins:'DEFINE_MANY',statics:'DEFINE_MANY',propTypes:'DEFINE_MANY',contextTypes:'DEFINE_MANY',childContextTypes:'DEFINE_MANY',getDefaultProps:'DEFINE_MANY_MERGED',getInitialState:'DEFINE_MANY_MERGED',getChildContext:'DEFINE_MANY_MERGED',render:'DEFINE_ONCE',componentWillMount:'DEFINE_MANY',componentDidMount:'DEFINE_MANY',componentWillReceiveProps:'DEFINE_MANY',shouldComponentUpdate:'DEFINE_ONCE',componentWillUpdate:'DEFINE_MANY',componentDidUpdate:'DEFINE_MANY',componentWillUnmount:'DEFINE_MANY',updateComponent:'OVERRIDE_BASE'},c={displayName:function(t,e){t.displayName=e},mixins:function(t,e){if(e)for(var n=0;n must be a child of a '),s.createElement(k,{opacity:A(e),transform:T(e)},this.props.children)}}]),t})(s.Component);O.contextTypes={isInSurface:a.bool.isRequired};var W=(function(e){babelHelpers.inherits(t,e);function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.createClass(t,[{key:"render",value:function(){var e=this.props,t=[H(e.x,0),H(e.y,0),H(e.width,0),H(e.height,0)],r=c(e);return delete r.x,delete r.y,s.createElement(k,{clipping:t,opacity:A(e),transform:T(r)},this.props.children)}}]),t})(s.Component),P=0,J=1,V=2,j=3;function G(e,t,r){var n=new i(e);t[r+0]=n.red/255,t[r+1]=n.green/255,t[r+2]=n.blue/255,t[r+3]=n.alpha}function I(e,t,r){var n=0;if('length'in e)for(;nY?(p-=v,c-=X):l>0&&0!=Y&&(p-=l/Y*v,c-=l/Y*X),a=p*p+c*c,(l=(p=s-t)*v+(c=h-i)*X)>Y?(p-=v,c-=X):l>0&&0!=Y&&(p-=l/Y*v,c-=l/Y*X),u=p*p+c*c,a<.01&&u<.01)this.onLine(t,i,o,r);else{if(isNaN(a)||isNaN(u))throw new Error('Bad input');var f=.5*(n+s),M=.5*(e+h),b=.5*(n+t),T=.5*(e+i),k=.5*(b+f),w=.5*(T+M),_=.5*(o+s),D=.5*(r+h),z=.5*(_+f),C=.5*(D+M),m=.5*(k+z),B=.5*(w+C);this.onBezierCurve(t,i,b,T,k,w,m,B),this.onBezierCurve(m,B,z,C,_,D,o,r)}},onArc:function(t,i,n,e,s,h,o,r,a,u,p,c){var l=c?c*Math.PI/180:0,v=Math.cos(l),X=Math.sin(l),Y=v*o,f=-X*r,M=X*o,b=v*r,T=u-a;T<0&&!p?T+=2*Math.PI:T>0&&p&&(T-=2*Math.PI);for(var k=Math.ceil(Math.abs(T/(Math.PI/2))),w=T/k,_=1.3333333333333333*Math.tan(w/4),D=Math.cos(a),z=Math.sin(a),C=0;Cthis.yy/this.xy?-1:1;return(this.xx<0?this.xy>=0:this.xy<0)&&(h=-h),this.rotate(t-180*Math.atan2(h*this.yx,h*this.xx)/Math.PI,i,s)},scaleTo:function(t,i){var s=Math.sqrt(this.xx*this.xx+this.yx*this.yx);return this.xx/=s,this.yx/=s,s=Math.sqrt(this.yy*this.yy+this.xy*this.xy),this.yy/=s,this.xy/=s,this.scale(t,i)},resizeTo:function(t,i){var s=this.width,h=this.height;return s&&h?this.scaleTo(t/s,i/h):this},inversePoint:function(t,i){var s=this.xx,h=this.yx,x=this.xy,y=this.yy,n=this.x,r=this.y,o=h*x-s*y;return 0==o?null:{x:(y*(n-t)+x*(i-r))/o,y:(s*(r-i)+h*(t-n))/o}},point:function(t,i){return{x:this.xx*t+this.xy*i+this.x,y:this.yx*t+this.yy*i+this.y}}})},156); -__d(function(e,t,s,r){'use strict';var o=t(40),i=(t(28),t(107)),a=t(104),l=t(145),n=t(158),b=t(166),c=(t(170),t(147)),u=t(18),d=(function(e){babelHelpers.inherits(t,e);function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.createClass(t,[{key:"render",value:function(){var e=this.props,t=e.accessibilityLabel,s=e.color,r=e.onPress,o=e.title,a=e.hasTVPreferredFocus,l=e.disabled,d=e.testID,h=[p.button],f=[p.text];s&&h.push({backgroundColor:s});var y=['button'];l&&(h.push(p.buttonDisabled),f.push(p.textDisabled),y.push('disabled')),u('string'==typeof o,'The title prop of a Button must be a string');var g=o.toUpperCase(),C=b;return i.createElement(C,{accessibilityComponentType:"button",accessibilityLabel:t,accessibilityTraits:y,hasTVPreferredFocus:a,testID:d,disabled:l,onPress:r},i.createElement(c,{style:h},i.createElement(n,{style:f,disabled:l},g)))}}]),t})(i.Component);d.propTypes={title:a.string.isRequired,accessibilityLabel:a.string,color:o,disabled:a.bool,onPress:a.func.isRequired,testID:a.string,hasTVPreferredFocus:a.bool};var p=l.create({button:{elevation:4,backgroundColor:'#2196F3',borderRadius:2},text:{color:'white',textAlign:'center',padding:8,fontWeight:'500'},buttonDisabled:{elevation:0,backgroundColor:'#dfdfdf'},textDisabled:{color:'#a1a1a1'}});s.exports=d},157); -__d(function(e,t,s,n){'use strict';var o=t(40),i=t(109),r=t(42),l=(t(28),t(107)),a=t(104),p=t(148),h=t(115),u=t(128),d=t(159),c=t(149),b=t(133),g=t(165),f=t(129),R=h(u),H={validAttributes:g(p.UIView,{isHighlighted:!0,numberOfLines:!0,ellipsizeMode:!0,allowFontScaling:!0,disabled:!0,selectable:!0,selectionColor:!0,adjustsFontSizeToFit:!0,minimumFontScale:!0,textBreakStrategy:!0}),uiViewClassName:'RCTText'},P=c({displayName:'Text',propTypes:{ellipsizeMode:a.oneOf(['head','middle','tail','clip']),numberOfLines:a.number,textBreakStrategy:a.oneOf(['simple','highQuality','balanced']),onLayout:a.func,onPress:a.func,onLongPress:a.func,pressRetentionOffset:i,selectable:a.bool,selectionColor:o,suppressHighlighting:a.bool,style:R,testID:a.string,nativeID:a.string,allowFontScaling:a.bool,accessible:a.bool,adjustsFontSizeToFit:a.bool,minimumFontScale:a.number,disabled:a.bool},getDefaultProps:function(){return{accessible:!0,allowFontScaling:!0,ellipsizeMode:'tail'}},getInitialState:function(){return g(d.Mixin.touchableGetInitialState(),{isHighlighted:!1})},mixins:[r],viewConfig:H,getChildContext:function(){return{isInAParentText:!0}},childContextTypes:{isInAParentText:a.bool},contextTypes:{isInAParentText:a.bool},_handlers:null,_hasPressHandler:function(){return!!this.props.onPress||!!this.props.onLongPress},touchableHandleActivePressIn:null,touchableHandleActivePressOut:null,touchableHandlePress:null,touchableHandleLongPress:null,touchableGetPressRectOffset:null,render:function(){var e=this,t=this.props;return(this.props.onStartShouldSetResponder||this._hasPressHandler())&&(this._handlers||(this._handlers={onStartShouldSetResponder:function(){var t=e.props.onStartShouldSetResponder&&e.props.onStartShouldSetResponder()||e._hasPressHandler();if(t&&!e.touchableHandleActivePressIn){for(var s in d.Mixin)'function'==typeof d.Mixin[s]&&(e[s]=d.Mixin[s].bind(e));e.touchableHandleActivePressIn=function(){!e.props.suppressHighlighting&&e._hasPressHandler()&&e.setState({isHighlighted:!0})},e.touchableHandleActivePressOut=function(){!e.props.suppressHighlighting&&e._hasPressHandler()&&e.setState({isHighlighted:!1})},e.touchableHandlePress=function(t){e.props.onPress&&e.props.onPress(t)},e.touchableHandleLongPress=function(t){e.props.onLongPress&&e.props.onLongPress(t)},e.touchableGetPressRectOffset=function(){return this.props.pressRetentionOffset||m}}return t},onResponderGrant:function(e,t){this.touchableHandleResponderGrant(e,t),this.props.onResponderGrant&&this.props.onResponderGrant.apply(this,arguments)}.bind(this),onResponderMove:function(e){this.touchableHandleResponderMove(e),this.props.onResponderMove&&this.props.onResponderMove.apply(this,arguments)}.bind(this),onResponderRelease:function(e){this.touchableHandleResponderRelease(e),this.props.onResponderRelease&&this.props.onResponderRelease.apply(this,arguments)}.bind(this),onResponderTerminate:function(e){this.touchableHandleResponderTerminate(e),this.props.onResponderTerminate&&this.props.onResponderTerminate.apply(this,arguments)}.bind(this),onResponderTerminationRequest:function(){var e=this.touchableHandleResponderTerminationRequest();return e&&this.props.onResponderTerminationRequest&&(e=this.props.onResponderTerminationRequest.apply(this,arguments)),e}.bind(this)}),t=babelHelpers.extends({},this.props,this._handlers,{isHighlighted:this.state.isHighlighted})),null!=t.selectionColor&&(t=babelHelpers.extends({},t,{selectionColor:f(t.selectionColor)})),d.TOUCH_TARGET_DEBUG&&t.onPress&&(t=babelHelpers.extends({},t,{style:[this.props.style,{color:'magenta'}]})),this.context.isInAParentText?l.createElement(S,t):l.createElement(T,t)}}),m={top:20,left:20,right:20,bottom:30},T=b(H.uiViewClassName,function(){return H}),S=T;S=b('RCTVirtualText',function(){return{validAttributes:g(p.UIView,{isHighlighted:!0}),uiViewClassName:'RCTVirtualText'}}),s.exports=P},158); -__d(function(E,t,e,R){'use strict';var i=t(160),_=t(28),s=t(162),S=(t(107),t(43)),o=t(163),n=t(164),a=t(54),l=(t(147),t(127)),N=(t(41),l({NOT_RESPONDER:null,RESPONDER_INACTIVE_PRESS_IN:null,RESPONDER_INACTIVE_PRESS_OUT:null,RESPONDER_ACTIVE_PRESS_IN:null,RESPONDER_ACTIVE_PRESS_OUT:null,RESPONDER_ACTIVE_LONG_PRESS_IN:null,RESPONDER_ACTIVE_LONG_PRESS_OUT:null,ERROR:null})),T={RESPONDER_ACTIVE_PRESS_OUT:!0,RESPONDER_ACTIVE_PRESS_IN:!0},h={RESPONDER_INACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_LONG_PRESS_IN:!0},P={RESPONDER_ACTIVE_LONG_PRESS_IN:!0},O=l({DELAY:null,RESPONDER_GRANT:null,RESPONDER_RELEASE:null,RESPONDER_TERMINATED:null,ENTER_PRESS_RECT:null,LEAVE_PRESS_RECT:null,LONG_PRESS_DETECTED:null}),u={NOT_RESPONDER:{DELAY:N.ERROR,RESPONDER_GRANT:N.RESPONDER_INACTIVE_PRESS_IN,RESPONDER_RELEASE:N.ERROR,RESPONDER_TERMINATED:N.ERROR,ENTER_PRESS_RECT:N.ERROR,LEAVE_PRESS_RECT:N.ERROR,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_INACTIVE_PRESS_IN:{DELAY:N.RESPONDER_ACTIVE_PRESS_IN,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_INACTIVE_PRESS_OUT:{DELAY:N.RESPONDER_ACTIVE_PRESS_OUT,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_ACTIVE_PRESS_IN:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.RESPONDER_ACTIVE_LONG_PRESS_IN},RESPONDER_ACTIVE_PRESS_OUT:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_ACTIVE_LONG_PRESS_IN:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_OUT,LONG_PRESS_DETECTED:N.RESPONDER_ACTIVE_LONG_PRESS_IN},RESPONDER_ACTIVE_LONG_PRESS_OUT:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},error:{DELAY:N.NOT_RESPONDER,RESPONDER_GRANT:N.RESPONDER_INACTIVE_PRESS_IN,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.NOT_RESPONDER,LEAVE_PRESS_RECT:N.NOT_RESPONDER,LONG_PRESS_DETECTED:N.NOT_RESPONDER}},r={Mixin:{componentDidMount:function(){_.isTVOS&&(this._tvEventHandler=new o,this._tvEventHandler.enable(this,function(E,t){var e=S.findNodeHandle(E);t.dispatchConfig={},e===t.tag&&('focus'===t.eventType?E.touchableHandleActivePressIn&&E.touchableHandleActivePressIn(t):'blur'===t.eventType?E.touchableHandleActivePressOut&&E.touchableHandleActivePressOut(t):'select'===t.eventType&&E.touchableHandlePress&&E.touchableHandlePress(t))}))},componentWillUnmount:function(){this._tvEventHandler&&(this._tvEventHandler.disable(),delete this._tvEventHandler),this.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout),this.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout)},touchableGetInitialState:function(){return{touchable:{touchState:void 0,responderID:null}}},touchableHandleResponderTerminationRequest:function(){return!this.props.rejectResponderTermination},touchableHandleStartShouldSetResponder:function(){return!this.props.disabled},touchableLongPressCancelsPress:function(){return!0},touchableHandleResponderGrant:function(E){var t=E.currentTarget;E.persist(),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout),this.pressOutDelayTimeout=null,this.state.touchable.touchState=N.NOT_RESPONDER,this.state.touchable.responderID=t,this._receiveSignal(O.RESPONDER_GRANT,E);var e=void 0!==this.touchableGetHighlightDelayMS?Math.max(this.touchableGetHighlightDelayMS(),0):130;0!==(e=isNaN(e)?130:e)?this.touchableDelayTimeout=setTimeout(this._handleDelay.bind(this,E),e):this._handleDelay(E);var R=void 0!==this.touchableGetLongPressDelayMS?Math.max(this.touchableGetLongPressDelayMS(),10):370;R=isNaN(R)?370:R,this.longPressDelayTimeout=setTimeout(this._handleLongDelay.bind(this,E),R+e)},touchableHandleResponderRelease:function(E){this._receiveSignal(O.RESPONDER_RELEASE,E)},touchableHandleResponderTerminate:function(E){this._receiveSignal(O.RESPONDER_TERMINATED,E)},touchableHandleResponderMove:function(E){if(this.state.touchable.touchState!==N.RESPONDER_INACTIVE_PRESS_IN&&this.state.touchable.positionOnActivate){var t=this.state.touchable.positionOnActivate,e=this.state.touchable.dimensionsOnActivate,R=this.touchableGetPressRectOffset?this.touchableGetPressRectOffset():{left:20,right:20,top:20,bottom:20},i=R.left,_=R.top,s=R.right,S=R.bottom,o=this.touchableGetHitSlop?this.touchableGetHitSlop():null;o&&(i+=o.left,_+=o.top,s+=o.right,S+=o.bottom);var a=n.extractSingleTouch(E.nativeEvent),l=a&&a.pageX,T=a&&a.pageY;if(this.pressInLocation){this._getDistanceBetweenPoints(l,T,this.pressInLocation.pageX,this.pressInLocation.pageY)>10&&this._cancelLongPressDelayTimeout()}if(l>t.left-i&&T>t.top-_&&l0,u=n&&n.length>0;return!c&&u?n[0]:c?e[0]:t}}},164); -__d(function(r,n,t,i){'use strict';t.exports=function(r,n){var t={};for(var i in r)t[i]=r[i];for(var o in n)t[o]=n[o];return t}},165); -__d(function(e,t,o,s){'use strict';var r=t(28),n=t(107),i=t(104),a=t(43),p=t(159),l=t(167),d=t(54),c=t(149),u=t(169),h=t(129),b=i.shape({type:i.oneOf(['RippleAndroid']),color:i.number,borderless:i.bool}),f=i.shape({type:i.oneOf(['ThemeAttrAndroid']),attribute:i.string.isRequired}),y=i.oneOfType([b,f]),P={top:20,left:20,right:20,bottom:30},g=c({displayName:'TouchableNativeFeedback',propTypes:babelHelpers.extends({},l.propTypes,{background:y,useForeground:i.bool}),statics:{SelectableBackground:function(){return{type:'ThemeAttrAndroid',attribute:'selectableItemBackground'}},SelectableBackgroundBorderless:function(){return{type:'ThemeAttrAndroid',attribute:'selectableItemBackgroundBorderless'}},Ripple:function(e,t){return{type:'RippleAndroid',color:h(e),borderless:t}},canUseNativeForeground:function(){return r.Version>=23}},mixins:[p.Mixin],getDefaultProps:function(){return{background:this.SelectableBackground()}},getInitialState:function(){return this.touchableGetInitialState()},componentDidMount:function(){u(this.props)},componentWillReceiveProps:function(e){u(e)},touchableHandleActivePressIn:function(e){this.props.onPressIn&&this.props.onPressIn(e),this._dispatchPressedStateChange(!0),this._dispatchHotspotUpdate(this.pressInLocation.locationX,this.pressInLocation.locationY)},touchableHandleActivePressOut:function(e){this.props.onPressOut&&this.props.onPressOut(e),this._dispatchPressedStateChange(!1)},touchableHandlePress:function(e){this.props.onPress&&this.props.onPress(e)},touchableHandleLongPress:function(e){this.props.onLongPress&&this.props.onLongPress(e)},touchableGetPressRectOffset:function(){return this.props.pressRetentionOffset||P},touchableGetHitSlop:function(){return this.props.hitSlop},touchableGetHighlightDelayMS:function(){return this.props.delayPressIn},touchableGetLongPressDelayMS:function(){return this.props.delayLongPress},touchableGetPressOutDelayMS:function(){return this.props.delayPressOut},_handleResponderMove:function(e){this.touchableHandleResponderMove(e),this._dispatchHotspotUpdate(e.nativeEvent.locationX,e.nativeEvent.locationY)},_dispatchHotspotUpdate:function(e,t){d.dispatchViewManagerCommand(a.findNodeHandle(this),d.RCTView.Commands.hotspotUpdate,[e||0,t||0])},_dispatchPressedStateChange:function(e){d.dispatchViewManagerCommand(a.findNodeHandle(this),d.RCTView.Commands.setPressed,[e])},render:function(){var e,t=n.Children.only(this.props.children),o=t.props.children;p.TOUCH_TARGET_DEBUG&&'View'===t.type.displayName&&(Array.isArray(o)||(o=[o]),o.push(p.renderDebugView({color:'brown',hitSlop:this.props.hitSlop}))),this.props.useForeground&&!g.canUseNativeForeground()&&console.warn("Requested foreground ripple, but it is not available on this version of Android. Consider calling TouchableNativeFeedback.canUseNativeForeground() and using a different Touchable if the result is false.");var s=this.props.useForeground&&g.canUseNativeForeground()?'nativeForegroundAndroid':'nativeBackgroundAndroid',r=babelHelpers.extends({},t.props,(e={},babelHelpers.defineProperty(e,s,this.props.background),babelHelpers.defineProperty(e,"accessible",!1!==this.props.accessible),babelHelpers.defineProperty(e,"accessibilityLabel",this.props.accessibilityLabel),babelHelpers.defineProperty(e,"accessibilityComponentType",this.props.accessibilityComponentType),babelHelpers.defineProperty(e,"accessibilityTraits",this.props.accessibilityTraits),babelHelpers.defineProperty(e,"children",o),babelHelpers.defineProperty(e,"testID",this.props.testID),babelHelpers.defineProperty(e,"onLayout",this.props.onLayout),babelHelpers.defineProperty(e,"hitSlop",this.props.hitSlop),babelHelpers.defineProperty(e,"onStartShouldSetResponder",this.touchableHandleStartShouldSetResponder),babelHelpers.defineProperty(e,"onResponderTerminationRequest",this.touchableHandleResponderTerminationRequest),babelHelpers.defineProperty(e,"onResponderGrant",this.touchableHandleResponderGrant),babelHelpers.defineProperty(e,"onResponderMove",this._handleResponderMove),babelHelpers.defineProperty(e,"onResponderRelease",this.touchableHandleResponderRelease),babelHelpers.defineProperty(e,"onResponderTerminate",this.touchableHandleResponderTerminate),e));return n.cloneElement(t,r)}});o.exports=g},166); -__d(function(e,s,t,o){'use strict';var n=s(109),i=s(107),r=s(104),p=s(168),a=s(159),l=s(149),c=s(169),h=s(32),u=s(121),d=u.AccessibilityComponentTypes,y=u.AccessibilityTraits,b={top:20,left:20,right:20,bottom:30},f=l({displayName:'TouchableWithoutFeedback',mixins:[p,a.Mixin],propTypes:{accessible:r.bool,accessibilityComponentType:r.oneOf(d),accessibilityTraits:r.oneOfType([r.oneOf(y),r.arrayOf(r.oneOf(y))]),disabled:r.bool,onPress:r.func,onPressIn:r.func,onPressOut:r.func,onLayout:r.func,onLongPress:r.func,delayPressIn:r.number,delayPressOut:r.number,delayLongPress:r.number,pressRetentionOffset:n,hitSlop:n},getInitialState:function(){return this.touchableGetInitialState()},componentDidMount:function(){c(this.props)},componentWillReceiveProps:function(e){c(e)},touchableHandlePress:function(e){this.props.onPress&&this.props.onPress(e)},touchableHandleActivePressIn:function(e){this.props.onPressIn&&this.props.onPressIn(e)},touchableHandleActivePressOut:function(e){this.props.onPressOut&&this.props.onPressOut(e)},touchableHandleLongPress:function(e){this.props.onLongPress&&this.props.onLongPress(e)},touchableGetPressRectOffset:function(){return this.props.pressRetentionOffset||b},touchableGetHitSlop:function(){return this.props.hitSlop},touchableGetHighlightDelayMS:function(){return this.props.delayPressIn||0},touchableGetLongPressDelayMS:function(){return 0===this.props.delayLongPress?0:this.props.delayLongPress||500},touchableGetPressOutDelayMS:function(){return this.props.delayPressOut||0},render:function(){var e=i.Children.only(this.props.children),s=e.props.children;h(!e.type||'Text'!==e.type.displayName,'TouchableWithoutFeedback does not work well with Text children. Wrap children in a View instead. See '+(e._owner&&e._owner.getName&&e._owner.getName()||'')),a.TOUCH_TARGET_DEBUG&&e.type&&'View'===e.type.displayName&&(s=i.Children.toArray(s)).push(a.renderDebugView({color:'red',hitSlop:this.props.hitSlop}));var t=a.TOUCH_TARGET_DEBUG&&e.type&&'Text'===e.type.displayName?[e.props.style,{color:'red'}]:e.props.style;return i.cloneElement(e,{accessible:!1!==this.props.accessible,accessibilityLabel:this.props.accessibilityLabel,accessibilityComponentType:this.props.accessibilityComponentType,accessibilityTraits:this.props.accessibilityTraits,nativeID:this.props.nativeID,testID:this.props.testID,onLayout:this.props.onLayout,hitSlop:this.props.hitSlop,onStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,onResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,onResponderGrant:this.touchableHandleResponderGrant,onResponderMove:this.touchableHandleResponderMove,onResponderRelease:this.touchableHandleResponderRelease,onResponderTerminate:this.touchableHandleResponderTerminate,style:t,children:s})}});t.exports=f},167); -__d(function(i,t,e,n){'use strict';var a='undefined'==typeof window?i:window,r=function(i,t,e){return function(n,a){var r=i(function(){t.call(this,r),n.apply(this,arguments)}.bind(this),a);return this[e]?this[e].push(r):this[e]=[r],r}},s=function(i,t){return function(e){if(this[t]){var n=this[t].indexOf(e);-1!==n&&this[t].splice(n,1)}i(e)}},c='TimerMixin_timeouts',m=s(a.clearTimeout,c),o=r(a.setTimeout,m,c),l='TimerMixin_intervals',u=s(a.clearInterval,l),h=r(a.setInterval,function(){},l),f='TimerMixin_immediates',d=s(a.clearImmediate,f),I=r(a.setImmediate,d,f),v='TimerMixin_rafs',T=s(a.cancelAnimationFrame,v),p={componentWillUnmount:function(){this[c]&&this[c].forEach(function(i){a.clearTimeout(i)}),this[c]=null,this[l]&&this[l].forEach(function(i){a.clearInterval(i)}),this[l]=null,this[f]&&this[f].forEach(function(i){a.clearImmediate(i)}),this[f]=null,this[v]&&this[v].forEach(function(i){a.cancelAnimationFrame(i)}),this[v]=null},setTimeout:o,clearTimeout:m,setInterval:h,clearInterval:u,setImmediate:I,clearImmediate:d,requestAnimationFrame:r(a.requestAnimationFrame,T,v),cancelAnimationFrame:T};e.exports=p},168); -__d(function(e,n,s,t){'use strict';var a=n(18);s.exports=function(e){a(!(e.delayPressIn<0||e.delayPressOut<0||e.delayLongPress<0),'Touchable components cannot have negative delay properties')}},169); -__d(function(t,e,s,i){'use strict';var o=e(171),n=e(196),r=e(42),a=e(107),p=e(104),c=e(168),l=e(159),h=e(167),u=e(149),d=e(169),y=e(51),b={top:20,left:20,right:20,bottom:30},f=u({displayName:'TouchableOpacity',mixins:[c,l.Mixin,r],propTypes:babelHelpers.extends({},h.propTypes,{activeOpacity:p.number,hasTVPreferredFocus:p.bool,tvParallaxProperties:p.object}),getDefaultProps:function(){return{activeOpacity:.2}},getInitialState:function(){return babelHelpers.extends({},this.touchableGetInitialState(),{anim:new o.Value(this._getChildStyleOpacityWithDefault())})},componentDidMount:function(){d(this.props)},componentWillReceiveProps:function(t){d(t)},setOpacityTo:function(t,e){o.timing(this.state.anim,{toValue:t,duration:e,easing:n.inOut(n.quad),useNativeDriver:!0}).start()},touchableHandleActivePressIn:function(t){'onResponderGrant'===t.dispatchConfig.registrationName?this._opacityActive(0):this._opacityActive(150),this.props.onPressIn&&this.props.onPressIn(t)},touchableHandleActivePressOut:function(t){this._opacityInactive(250),this.props.onPressOut&&this.props.onPressOut(t)},touchableHandlePress:function(t){this.props.onPress&&this.props.onPress(t)},touchableHandleLongPress:function(t){this.props.onLongPress&&this.props.onLongPress(t)},touchableGetPressRectOffset:function(){return this.props.pressRetentionOffset||b},touchableGetHitSlop:function(){return this.props.hitSlop},touchableGetHighlightDelayMS:function(){return this.props.delayPressIn||0},touchableGetLongPressDelayMS:function(){return 0===this.props.delayLongPress?0:this.props.delayLongPress||500},touchableGetPressOutDelayMS:function(){return this.props.delayPressOut},_opacityActive:function(t){this.setOpacityTo(this.props.activeOpacity,t)},_opacityInactive:function(t){this.setOpacityTo(this._getChildStyleOpacityWithDefault(),t)},_getChildStyleOpacityWithDefault:function(){var t=y(this.props.style)||{};return void 0==t.opacity?1:t.opacity},render:function(){return a.createElement(o.View,{accessible:!1!==this.props.accessible,accessibilityLabel:this.props.accessibilityLabel,accessibilityComponentType:this.props.accessibilityComponentType,accessibilityTraits:this.props.accessibilityTraits,style:[this.props.style,{opacity:this.state.anim}],nativeID:this.props.nativeID,testID:this.props.testID,onLayout:this.props.onLayout,isTVSelectable:!0,hasTVPreferredFocus:this.props.hasTVPreferredFocus,tvParallaxProperties:this.props.tvParallaxProperties,hitSlop:this.props.hitSlop,onStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,onResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,onResponderGrant:this.touchableHandleResponderGrant,onResponderMove:this.touchableHandleResponderMove,onResponderRelease:this.touchableHandleResponderRelease,onResponderTerminate:this.touchableHandleResponderTerminate},this.props.children,l.renderDebugView({color:'cyan',hitSlop:this.props.hitSlop}))}});s.exports=f},170); -__d(function(e,t,n,o){'use strict';var a=t(172),r=t(199),i=t(158),m=t(147),c=void 0,d={View:a.createAnimatedComponent(m),Text:a.createAnimatedComponent(i),Image:a.createAnimatedComponent(r),get ScrollView(){return c||(c=a.createAnimatedComponent(t(201))),c}};babelHelpers.extends(d,a),n.exports=d},171); -__d(function(n,t,e,i){'use strict';var r=t(173),o=r.AnimatedEvent,a=r.attachNativeEvent,u=t(181),s=t(182),c=t(183),f=t(175),v=t(184),p=t(185),l=t(176),d=t(186),g=t(189),h=t(174),m=t(190),_=t(191),N=t(193),w=t(195),y=t(198),E=function(n,t){return n&&t.onComplete?function(){t.onComplete&&t.onComplete.apply(t,arguments),n&&n.apply(void 0,arguments)}:n||t.onComplete},L=function(n,t,e){if(n instanceof m){var i=babelHelpers.extends({},t),r=babelHelpers.extends({},t);for(var o in t){var a=t[o],u=a.x,s=a.y;void 0!==u&&void 0!==s&&(i[o]=u,r[o]=s)}var c=e(n.x,i),f=e(n.y,r);return b([c,f],{stopTogether:!1})}return null},A=function n(t,e){var i=function(n,t,e){e=E(e,t);var i=n,r=t;i.stopTracking(),t.toValue instanceof l?i.track(new g(i,t.toValue,w,r,e)):i.animate(new w(r),e)};return L(t,e,n)||{start:(function(n){function t(t){return n.apply(this,arguments)}return t.toString=function(){return n.toString()},t})(function(n){i(t,e,n)}),stop:function(){t.stopAnimation()},reset:function(){t.resetAnimation()},_startNativeLoop:function(n){var r=babelHelpers.extends({},e,{iterations:n});i(t,r)},_isUsingNativeDriver:function(){return e.useNativeDriver||!1}}},D=function(n){var t=0;return{start:function(e){var i=function i(r){r.finished&&++t!==n.length?n[t].start(i):e&&e(r)};0===n.length?e&&e({finished:!0}):n[t].start(i)},stop:function(){t1&&void 0!==arguments[1]?arguments[1]:{}).iterations,e=void 0===t?-1:t,i=!1,r=0;return{start:function(t){n&&0!==e?n._isUsingNativeDriver()?n._startNativeLoop(e):(function o(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{finished:!0};i||r===e||!1===a.finished?t&&t(a):(r++,n.reset(),n.start(o))})():t&&t({finished:!0})},stop:function(){i=!0,n.stop()},reset:function(){r=0,i=!1,n.reset()},_startNativeLoop:function(){throw new Error('Loops run using the native driver cannot contain Animated.loop animations')},_isUsingNativeDriver:function(){return n._isUsingNativeDriver()}}},event:function(n,t){var e=new o(n,t);return e.__isNative?e:e.__getHandler()},createAnimatedComponent:y,attachNativeEvent:a,forkEvent:function(n,t){return n?n instanceof o?(n.__addListener(t),n):function(){'function'==typeof n&&n.apply(void 0,arguments),t.apply(void 0,arguments)}:t},unforkEvent:function(n,t){n&&n instanceof o&&n.__removeListener(t)},__PropsOnlyForTests:d}},172); -__d(function(e,t,n,i){'use strict';var a=t(174),s=t(177),r=t(43),v=t(18),l=t(177).shouldUseNativeDriver;function o(e,t,n){var i=[];v(n[0]&&n[0].nativeEvent,'Native driven events only support animated values contained inside `nativeEvent`.'),(function e(t,n){if(t instanceof a)t.__makeNative(),i.push({nativeEventPath:n,animatedValueTag:t.__getNativeTag()});else if('object'==typeof t)for(var s in t)e(t[s],n.concat(s))})(n[0].nativeEvent,[]);var l=r.findNodeHandle(e);return i.forEach(function(e){s.API.addAnimatedEventToView(l,t,e)}),{detach:function(){i.forEach(function(e){s.API.removeAnimatedEventFromView(l,t,e.animatedValueTag)})}}}var c=(function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};babelHelpers.classCallCheck(this,e),this._listeners=[],this._argMapping=t,n.listener&&this.__addListener(n.listener),this._callListeners=this._callListeners.bind(this),this._attachedEvent=null,this.__isNative=l(n)}return babelHelpers.createClass(e,[{key:"__addListener",value:function(e){this._listeners.push(e)}},{key:"__removeListener",value:function(e){this._listeners=this._listeners.filter(function(t){return t!==e})}},{key:"__attach",value:function(e,t){v(this.__isNative,'Only native driven events need to be attached.'),this._attachedEvent=o(e,t,this._argMapping)}},{key:"__detach",value:function(e,t){v(this.__isNative,'Only native driven events need to be detached.'),this._attachedEvent&&this._attachedEvent.detach()}},{key:"__getHandler",value:function(){var e=this;return this.__isNative?this._callListeners:function(){for(var t=arguments.length,n=Array(t),i=0;i=2,'Bad output range'),(function(t){for(var e=t[0].replace(f,''),n=1;n=2,'inputRange must have at least 2 elements');for(var e=1;e=t[e-1],'inputRange must be monotonically increasing '+t)})(n),i(n.length===e.length,'inputRange ('+n.length+') and outputRange ('+e.length+') must have the same length');var a=t.easing||u,r='extend';void 0!==t.extrapolateLeft?r=t.extrapolateLeft:void 0!==t.extrapolate&&(r=t.extrapolate);var o='extend';return void 0!==t.extrapolateRight?o=t.extrapolateRight:void 0!==t.extrapolate&&(o=t.extrapolate),function(t){i('number'==typeof t,'Cannot interpolation an input which is not a number');var u=(function(t,e){var n=void 0;for(n=1;n=t);++n);return n-1})(t,n);return(function(t,e,n,a,r,i,o,u){var p=t;if(pn){if('identity'===u)return p;'clamp'===u&&(p=n)}if(a===r)return a;if(e===n)return t<=e?a:r;e===-1/0?p=-p:n===1/0?p-=e:p=(p-e)/(n-e);p=i(p),a===-1/0?p=-p:r===1/0?p+=a:p=p*(r-a)+a;return p})(t,n[u],n[u+1],e[u],e[u+1],a,r,o)}}function l(t){var e=o(t);if(null===e)return t;return"rgba("+((4278190080&(e=e||0))>>>24)+", "+((16711680&e)>>>16)+", "+((65280&e)>>>8)+", "+(255&e)/255+")"}var f=/[0-9\.-]+/g;function s(t,e){i(e.length>=2,t+' must have at least 2 elements'),i(2!==e.length||e[0]!==-1/0||e[1]!==1/0,t+'cannot be ]-infinity;+infinity[ '+e)}var c=(function(t){babelHelpers.inherits(e,t);function e(t,n){babelHelpers.classCallCheck(this,e);var a=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a._parent=t,a._config=n,a._interpolation=p(n),a}return babelHelpers.createClass(e,[{key:"__makeNative",value:function(){this._parent.__makeNative(),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){var t=this._parent.__getValue();return i('number'==typeof t,'Cannot interpolate an input which is not a number.'),this._interpolation(t)}},{key:"interpolate",value:function(t){return new e(this,t)}},{key:"__attach",value:function(){this._parent.__addChild(this)}},{key:"__detach",value:function(){this._parent.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__transformDataType",value:function(t){return t.map(function(t){if('string'!=typeof t)return t;if(/deg$/.test(t)){return(parseFloat(t)||0)*Math.PI/180}return parseFloat(t)||0})}},{key:"__getNativeConfig",value:function(){return{inputRange:this._config.inputRange,outputRange:this.__transformDataType(this._config.outputRange),extrapolateLeft:this._config.extrapolateLeft||this._config.extrapolate||'extend',extrapolateRight:this._config.extrapolateRight||this._config.extrapolate||'extend',type:'interpolation'}}}]),e})(r);c.__createInterpolation=p,n.exports=c},175); -__d(function(e,t,a,n){'use strict';var i=t(177),_=t(18),o=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,[{key:"__attach",value:function(){}},{key:"__detach",value:function(){this.__isNative&&null!=this.__nativeTag&&(i.API.dropAnimatedNode(this.__nativeTag),this.__nativeTag=void 0)}},{key:"__getValue",value:function(){}},{key:"__getAnimatedValue",value:function(){return this.__getValue()}},{key:"__addChild",value:function(e){}},{key:"__removeChild",value:function(e){}},{key:"__getChildren",value:function(){return[]}},{key:"__makeNative",value:function(){if(!this.__isNative)throw new Error('This node cannot be made a "native" animated node')}},{key:"__getNativeTag",value:function(){if(i.assertNativeAnimatedModule(),_(this.__isNative,'Attempt to get native tag from node not marked as "native"'),null==this.__nativeTag){var e=i.generateNewNodeTag();i.API.createAnimatedNode(e,this.__getNativeConfig()),this.__nativeTag=e}return this.__nativeTag}},{key:"__getNativeConfig",value:function(){throw new Error('This JS animated node type cannot be used as native animated node')}},{key:"toJSON",value:function(){return this.__getValue()}}]),e})();a.exports=o},176); -__d(function(e,t,n,o){'use strict';var i=t(20).NativeAnimatedModule,a=t(75),r=t(18),d=1,s=1,m=void 0,c={createAnimatedNode:function(e,t){l(),i.createAnimatedNode(e,t)},startListeningToAnimatedNodeValue:function(e){l(),i.startListeningToAnimatedNodeValue(e)},stopListeningToAnimatedNodeValue:function(e){l(),i.stopListeningToAnimatedNodeValue(e)},connectAnimatedNodes:function(e,t){l(),i.connectAnimatedNodes(e,t)},disconnectAnimatedNodes:function(e,t){l(),i.disconnectAnimatedNodes(e,t)},startAnimatingNode:function(e,t,n,o){l(),i.startAnimatingNode(e,t,n,o)},stopAnimation:function(e){l(),i.stopAnimation(e)},setAnimatedNodeValue:function(e,t){l(),i.setAnimatedNodeValue(e,t)},setAnimatedNodeOffset:function(e,t){l(),i.setAnimatedNodeOffset(e,t)},flattenAnimatedNodeOffset:function(e){l(),i.flattenAnimatedNodeOffset(e)},extractAnimatedNodeOffset:function(e){l(),i.extractAnimatedNodeOffset(e)},connectAnimatedNodeToView:function(e,t){l(),i.connectAnimatedNodeToView(e,t)},disconnectAnimatedNodeFromView:function(e,t){l(),i.disconnectAnimatedNodeFromView(e,t)},dropAnimatedNode:function(e){l(),i.dropAnimatedNode(e)},addAnimatedEventToView:function(e,t,n){l(),i.addAnimatedEventToView(e,t,n)},removeAnimatedEventFromView:function(e,t,n){l(),i.removeAnimatedEventFromView(e,t,n)}},u={opacity:!0,transform:!0,scaleX:!0,scaleY:!0,translateX:!0,translateY:!0},f={translateX:!0,translateY:!0,scale:!0,scaleX:!0,scaleY:!0,rotate:!0,rotateX:!0,rotateY:!0,perspective:!0};function l(){r(i,'Native animated module is not available')}var p=!1;n.exports={API:c,validateStyles:function(e){for(var t in e)if(!u.hasOwnProperty(t))throw new Error("Style property '"+t+"' is not supported by native animated module")},validateTransform:function(e){e.forEach(function(e){if(!f.hasOwnProperty(e.property))throw new Error("Property '"+e.property+"' is not supported by native animated module")})},validateInterpolation:function(e){var t={inputRange:!0,outputRange:!0,extrapolate:!0,extrapolateRight:!0,extrapolateLeft:!0};for(var n in e)if(!t.hasOwnProperty(n))throw new Error("Interpolation property '"+n+"' is not supported by native animated module")},generateNewNodeTag:function(){return d++},generateNewAnimationId:function(){return s++},assertNativeAnimatedModule:l,shouldUseNativeDriver:function(e){return e.useNativeDriver&&!i?(p||(console.warn("Animated: `useNativeDriver` is not supported because the native animated module is missing. Falling back to JS-based animation. To resolve this, add `RCTAnimation` module to this app, or remove `useNativeDriver`. More info: https://github.com/facebook/react-native/issues/11094#issuecomment-263240420"),p=!0),!1):e.useNativeDriver||!1},get nativeEventEmitter(){return m||(m=new a(i)),m}}},177); -__d(function(e,t,i,a){'use strict';var _=t(176),n=t(177),s=(function(e){babelHelpers.inherits(t,e);function t(){babelHelpers.classCallCheck(this,t);var e=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e._children=[],e}return babelHelpers.createClass(t,[{key:"__makeNative",value:function(){if(!this.__isNative){this.__isNative=!0;var e=this._children,t=Array.isArray(e),i=0;for(e=t?e:e["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var a;if(t){if(i>=e.length)break;a=e[i++]}else{if((i=e.next()).done)break;a=i.value}var _=a;_.__makeNative(),n.API.connectAnimatedNodes(this.__getNativeTag(),_.__getNativeTag())}}}},{key:"__addChild",value:function(e){0===this._children.length&&this.__attach(),this._children.push(e),this.__isNative&&(e.__makeNative(),n.API.connectAnimatedNodes(this.__getNativeTag(),e.__getNativeTag()))}},{key:"__removeChild",value:function(e){var t=this._children.indexOf(e);-1!==t?(this.__isNative&&e.__isNative&&n.API.disconnectAnimatedNodes(this.__getNativeTag(),e.__getNativeTag()),this._children.splice(t,1),0===this._children.length&&this.__detach()):console.warn("Trying to remove a child that doesn't exist")}},{key:"__getChildren",value:function(){return this._children}}]),t})(_);i.exports=s},178); -__d(function(e,n,t,r){'use strict';var o=n(21),a=n(35),i=n(61),c=n(180),s=(n(101),n(18)),u=n(127),d=new a,l=0,f={Events:u({interactionStart:!0,interactionComplete:!0}),runAfterInteractions:function(e){var n=[],t=new Promise(function(t){k(),e&&n.push(e),n.push({run:t,name:'resolve '+(e&&e.name||'?')}),h.enqueueTasks(n)});return{then:t.then.bind(t),done:function(){if(t.done)return t.done.apply(t,arguments);console.warn('Tried to call done when not supported by current Promise implementation.')},cancel:function(){h.cancelTasks(n)}}},createInteractionHandle:function(){k();var e=++T;return p.add(e),e},clearInteractionHandle:function(e){s(!!e,'Must provide a handle to clear.'),k(),p.delete(e),v.add(e)},addListener:d.addListener.bind(d),setDeadline:function(e){E=e}},m=new i,p=new i,v=new i,h=new c({onMoreTasks:k}),w=0,T=0,E=-1;function k(){w||(w=E>0?setTimeout(b,0+l):setImmediate(b))}function b(){w=0;var e=m.size;p.forEach(function(e){return m.add(e)}),v.forEach(function(e){return m.delete(e)});var n=m.size;if(0!==e&&0===n?d.emit(f.Events.interactionComplete):0===e&&0!==n&&d.emit(f.Events.interactionStart),0===n)for(;h.hasTasksToProcess();)if(h.processNext(),E>0&&o.getEventLoopRunningTime()>=E){k();break}p.clear(),v.clear()}t.exports=f},179); -__d(function(e,t,s,u){'use strict';t(101);var n=t(18),a=(function(){function e(t){var s=t.onMoreTasks;babelHelpers.classCallCheck(this,e),this._onMoreTasks=s,this._queueStack=[{tasks:[],popable:!1}]}return babelHelpers.createClass(e,[{key:"enqueue",value:function(e){this._getCurrentQueue().push(e)}},{key:"enqueueTasks",value:function(e){var t=this;e.forEach(function(e){return t.enqueue(e)})}},{key:"cancelTasks",value:function(e){this._queueStack=this._queueStack.map(function(t){return babelHelpers.extends({},t,{tasks:t.tasks.filter(function(t){return-1===e.indexOf(t)})})}).filter(function(e,t){return e.tasks.length>0||0===t})}},{key:"hasTasksToProcess",value:function(){return this._getCurrentQueue().length>0}},{key:"processNext",value:function(){var e=this._getCurrentQueue();if(e.length){var t=e.shift();try{t.gen?this._genPromise(t):t.run?t.run():(n('function'==typeof t,'Expected Function, SimpleTask, or PromiseTask, but got:\n'+JSON.stringify(t,null,2)),t())}catch(e){throw e.message='TaskQueue: Error with task '+(t.name||'')+': '+e.message,e}}}},{key:"_getCurrentQueue",value:function(){var e=this._queueStack.length-1,t=this._queueStack[e];return t.popable&&0===t.tasks.length&&this._queueStack.length>1?(this._queueStack.pop(),this._getCurrentQueue()):t.tasks}},{key:"_genPromise",value:function(e){var t=this;this._queueStack.push({tasks:[],popable:!1});var s=this._queueStack.length-1;e.gen().then(function(){t._queueStack[s].popable=!0,t.hasTasksToProcess()&&t._onMoreTasks()}).catch(function(t){throw t.message="TaskQueue: Error resolving Promise in task "+e.name+": "+t.message,t}).done()}}]),e})();s.exports=a},180); -__d(function(e,t,_,a){'use strict';var i=t(175),o=(t(176),t(174)),r=(function(e){babelHelpers.inherits(t,e);function t(e,_){babelHelpers.classCallCheck(this,t);var a=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return a._a='number'==typeof e?new o(e):e,a._b='number'==typeof _?new o(_):_,a}return babelHelpers.createClass(t,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._a.__getValue()+this._b.__getValue()}},{key:"interpolate",value:function(e){return new i(this,e)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'addition',input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),t})(t(178));_.exports=r},181); -__d(function(t,e,a,_){'use strict';var i=e(175),l=(e(176),(function(t){babelHelpers.inherits(e,t);function e(t,a,_){babelHelpers.classCallCheck(this,e);var i=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i._a=t,i._min=a,i._max=_,i._value=i._lastValue=i._a.__getValue(),i}return babelHelpers.createClass(e,[{key:"__makeNative",value:function(){this._a.__makeNative(),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this)}},{key:"interpolate",value:function(t){return new i(this,t)}},{key:"__getValue",value:function(){var t=this._a.__getValue(),e=t-this._lastValue;return this._lastValue=t,this._value=Math.min(Math.max(this._value+e,this._min),this._max),this._value}},{key:"__attach",value:function(){this._a.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'diffclamp',input:this._a.__getNativeTag(),min:this._min,max:this._max}}}]),e})(e(178)));a.exports=l},182); -__d(function(e,t,i,_){'use strict';var a=t(175),o=(t(176),t(174)),r=(function(e){babelHelpers.inherits(t,e);function t(e,i){babelHelpers.classCallCheck(this,t);var _=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return _._a='number'==typeof e?new o(e):e,_._b='number'==typeof i?new o(i):i,_}return babelHelpers.createClass(t,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){var e=this._a.__getValue(),t=this._b.__getValue();return 0===t&&console.error('Detected division by zero in AnimatedDivision'),e/t}},{key:"interpolate",value:function(e){return new a(this,e)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'division',input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),t})(t(178));i.exports=r},183); -__d(function(t,e,_,a){'use strict';var o=e(175),s=(e(176),(function(t){babelHelpers.inherits(e,t);function e(t,_){babelHelpers.classCallCheck(this,e);var a=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a._a=t,a._modulus=_,a}return babelHelpers.createClass(e,[{key:"__makeNative",value:function(){this._a.__makeNative(),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return(this._a.__getValue()%this._modulus+this._modulus)%this._modulus}},{key:"interpolate",value:function(t){return new o(this,t)}},{key:"__attach",value:function(){this._a.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'modulus',input:this._a.__getNativeTag(),modulus:this._modulus}}}]),e})(e(178)));_.exports=s},184); -__d(function(e,t,_,i){'use strict';var a=t(175),o=(t(176),t(174)),r=(function(e){babelHelpers.inherits(t,e);function t(e,_){babelHelpers.classCallCheck(this,t);var i=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return i._a='number'==typeof e?new o(e):e,i._b='number'==typeof _?new o(_):_,i}return babelHelpers.createClass(t,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._a.__getValue()*this._b.__getValue()}},{key:"interpolate",value:function(e){return new a(this,e)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'multiplication',input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),t})(t(178));_.exports=r},185); -__d(function(e,t,i,a){'use strict';var n=t(173).AnimatedEvent,s=t(176),_=t(187),o=t(177),r=t(43),c=t(18),l=(function(e){babelHelpers.inherits(t,e);function t(e,i){babelHelpers.classCallCheck(this,t);var a=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.style&&(e=babelHelpers.extends({},e,{style:new _(e.style)})),a._props=e,a._callback=i,a.__attach(),a}return babelHelpers.createClass(t,[{key:"__getValue",value:function(){var e={};for(var t in this._props){var i=this._props[t];i instanceof s?(!i.__isNative||i instanceof _)&&(e[t]=i.__getValue()):e[t]=i instanceof n?i.__getHandler():i}return e}},{key:"__getAnimatedValue",value:function(){var e={};for(var t in this._props){var i=this._props[t];i instanceof s&&(e[t]=i.__getAnimatedValue())}return e}},{key:"__attach",value:function(){for(var e in this._props){var t=this._props[e];t instanceof s&&t.__addChild(this)}}},{key:"__detach",value:function(){this.__isNative&&this._animatedView&&this.__disconnectAnimatedView();for(var e in this._props){var i=this._props[e];i instanceof s&&i.__removeChild(this)}babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"update",value:function(){this._callback()}},{key:"__makeNative",value:function(){if(!this.__isNative){this.__isNative=!0;for(var e in this._props){var t=this._props[e];t instanceof s&&t.__makeNative()}this._animatedView&&this.__connectAnimatedView()}}},{key:"setNativeView",value:function(e){this._animatedView!==e&&(this._animatedView=e,this.__isNative&&this.__connectAnimatedView())}},{key:"__connectAnimatedView",value:function(){c(this.__isNative,'Expected node to be marked as "native"');var e=r.findNodeHandle(this._animatedView);c(null!=e,'Unable to locate attached view in the native tree'),o.API.connectAnimatedNodeToView(this.__getNativeTag(),e)}},{key:"__disconnectAnimatedView",value:function(){c(this.__isNative,'Expected node to be marked as "native"');var e=r.findNodeHandle(this._animatedView);c(null!=e,'Unable to locate attached view in the native tree'),o.API.disconnectAnimatedNodeFromView(this.__getNativeTag(),e)}},{key:"__getNativeConfig",value:function(){var e={};for(var t in this._props){var i=this._props[t];i instanceof s&&(e[t]=i.__getNativeTag())}return{type:'props',props:e}}}]),t})(s);i.exports=l},186); -__d(function(e,t,a,s){'use strict';var r=t(176),l=t(188),i=t(178),n=t(177),_=t(51),o=(function(e){babelHelpers.inherits(t,e);function t(e){babelHelpers.classCallCheck(this,t);var a=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return(e=_(e)||{}).transform&&(e=babelHelpers.extends({},e,{transform:new l(e.transform)})),a._style=e,a}return babelHelpers.createClass(t,[{key:"_walkStyleAndGetValues",value:function(e){var t={};for(var a in e){var s=e[a];s instanceof r?s.__isNative||(t[a]=s.__getValue()):s&&!Array.isArray(s)&&'object'==typeof s?t[a]=this._walkStyleAndGetValues(s):t[a]=s}return t}},{key:"__getValue",value:function(){return this._walkStyleAndGetValues(this._style)}},{key:"_walkStyleAndGetAnimatedValues",value:function(e){var t={};for(var a in e){var s=e[a];s instanceof r?t[a]=s.__getAnimatedValue():s&&!Array.isArray(s)&&'object'==typeof s&&(t[a]=this._walkStyleAndGetAnimatedValues(s))}return t}},{key:"__getAnimatedValue",value:function(){return this._walkStyleAndGetAnimatedValues(this._style)}},{key:"__attach",value:function(){for(var e in this._style){var t=this._style[e];t instanceof r&&t.__addChild(this)}}},{key:"__detach",value:function(){for(var e in this._style){var a=this._style[e];a instanceof r&&a.__removeChild(this)}babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__makeNative",value:function(){babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this);for(var e in this._style){var a=this._style[e];a instanceof r&&a.__makeNative()}}},{key:"__getNativeConfig",value:function(){var e={};for(var t in this._style)this._style[t]instanceof r&&(e[t]=this._style[t].__getNativeTag());return n.validateStyles(e),{type:'style',style:e}}}]),t})(i);a.exports=o},187); -__d(function(t,e,r,a){'use strict';var n=e(176),o=e(178),i=e(177),s=(function(t){babelHelpers.inherits(e,t);function e(t){babelHelpers.classCallCheck(this,e);var r=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r._transforms=t,r}return babelHelpers.createClass(e,[{key:"__makeNative",value:function(){babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this),this._transforms.forEach(function(t){for(var e in t){var r=t[e];r instanceof n&&r.__makeNative()}})}},{key:"__getValue",value:function(){return this._transforms.map(function(t){var e={};for(var r in t){var a=t[r];e[r]=a instanceof n?a.__getValue():a}return e})}},{key:"__getAnimatedValue",value:function(){return this._transforms.map(function(t){var e={};for(var r in t){var a=t[r];e[r]=a instanceof n?a.__getAnimatedValue():a}return e})}},{key:"__attach",value:function(){var t=this;this._transforms.forEach(function(e){for(var r in e){var a=e[r];a instanceof n&&a.__addChild(t)}})}},{key:"__detach",value:function(){var t=this;this._transforms.forEach(function(e){for(var r in e){var a=e[r];a instanceof n&&a.__removeChild(t)}}),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){var t=[];return this._transforms.forEach(function(e){for(var r in e){var a=e[r];a instanceof n?t.push({type:'animated',property:r,nodeTag:a.__getNativeTag()}):t.push({type:'static',property:r,value:a})}}),i.validateTransform(t),{type:'transform',transforms:t}}}]),e})(o);r.exports=s},188); -__d(function(t,e,a,i){'use strict';e(174);var _=(function(t){babelHelpers.inherits(e,t);function e(t,a,i,_,l){babelHelpers.classCallCheck(this,e);var n=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n._value=t,n._parent=a,n._animationClass=i,n._animationConfig=_,n._callback=l,n.__attach(),n}return babelHelpers.createClass(e,[{key:"__getValue",value:function(){return this._parent.__getValue()}},{key:"__attach",value:function(){this._parent.__addChild(this)}},{key:"__detach",value:function(){this._parent.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"update",value:function(){this._value.animate(new this._animationClass(babelHelpers.extends({},this._animationConfig,{toValue:this._animationConfig.toValue.__getValue()})),this._callback)}}]),e})(e(176));a.exports=_},189); -__d(function(e,t,s,i){'use strict';var n=t(174),a=t(178),r=t(18),l=1,u=(function(e){babelHelpers.inherits(t,e);function t(e){babelHelpers.classCallCheck(this,t);var s=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)),i=e||{x:0,y:0};return'number'==typeof i.x&&'number'==typeof i.y?(s.x=new n(i.x),s.y=new n(i.y)):(r(i.x instanceof n&&i.y instanceof n,"AnimatedValueXY must be initalized with an object of numbers or AnimatedValues."),s.x=i.x,s.y=i.y),s._listeners={},s}return babelHelpers.createClass(t,[{key:"setValue",value:function(e){this.x.setValue(e.x),this.y.setValue(e.y)}},{key:"setOffset",value:function(e){this.x.setOffset(e.x),this.y.setOffset(e.y)}},{key:"flattenOffset",value:function(){this.x.flattenOffset(),this.y.flattenOffset()}},{key:"extractOffset",value:function(){this.x.extractOffset(),this.y.extractOffset()}},{key:"__getValue",value:function(){return{x:this.x.__getValue(),y:this.y.__getValue()}}},{key:"resetAnimation",value:function(e){this.x.resetAnimation(),this.y.resetAnimation(),e&&e(this.__getValue())}},{key:"stopAnimation",value:function(e){this.x.stopAnimation(),this.y.stopAnimation(),e&&e(this.__getValue())}},{key:"addListener",value:function(e){var t=this,s=String(l++),i=function(s){s.value;e(t.__getValue())};return this._listeners[s]={x:this.x.addListener(i),y:this.y.addListener(i)},s}},{key:"removeListener",value:function(e){this.x.removeListener(this._listeners[e].x),this.y.removeListener(this._listeners[e].y),delete this._listeners[e]}},{key:"removeAllListeners",value:function(){this.x.removeAllListeners(),this.y.removeAllListeners(),this._listeners={}}},{key:"getLayout",value:function(){return{left:this.x,top:this.y}}},{key:"getTranslateTransform",value:function(){return[{translateX:this.x},{translateY:this.y}]}}]),t})(a);s.exports=u},190); -__d(function(t,e,i,a){'use strict';var s=e(192),n=e(177).shouldUseNativeDriver,o=(function(e){babelHelpers.inherits(i,e);function i(t){babelHelpers.classCallCheck(this,i);var e=babelHelpers.possibleConstructorReturn(this,(i.__proto__||Object.getPrototypeOf(i)).call(this));return e._deceleration=void 0!==t.deceleration?t.deceleration:.998,e._velocity=t.velocity,e._useNativeDriver=n(t),e.__isInteraction=void 0===t.isInteraction||t.isInteraction,e.__iterations=void 0!==t.iterations?t.iterations:1,e}return babelHelpers.createClass(i,[{key:"__getNativeAnimationConfig",value:function(){return{type:'decay',deceleration:this._deceleration,velocity:this._velocity,iterations:this.__iterations}}},{key:"start",value:function(t,e,i,a,s){this.__active=!0,this._lastValue=t,this._fromValue=t,this._onUpdate=e,this.__onEnd=i,this._startTime=Date.now(),this._useNativeDriver?this.__startNativeAnimation(s):this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this))}},{key:"onUpdate",value:function(){var t=Date.now(),e=this._fromValue+this._velocity/(1-this._deceleration)*(1-Math.exp(-(1-this._deceleration)*(t-this._startTime)));this._onUpdate(e),Math.abs(this._lastValue-e)<.1?this.__debouncedOnEnd({finished:!0}):(this._lastValue=e,this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this))))}},{key:"stop",value:function(){babelHelpers.get(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"stop",this).call(this),this.__active=!1,t.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}]),i})(s);i.exports=o},191); -__d(function(t,n,e,i){'use strict';var a=n(177),o=(function(){function t(){babelHelpers.classCallCheck(this,t)}return babelHelpers.createClass(t,[{key:"start",value:function(t,n,e,i,a){}},{key:"stop",value:function(){this.__nativeId&&a.API.stopAnimation(this.__nativeId)}},{key:"__getNativeAnimationConfig",value:function(){throw new Error('This animation type cannot be offloaded to native')}},{key:"__debouncedOnEnd",value:function(t){var n=this.__onEnd;this.__onEnd=null,n&&n(t)}},{key:"__startNativeAnimation",value:function(t){t.__makeNative(),this.__nativeId=a.generateNewAnimationId(),a.API.startAnimatingNode(this.__nativeId,t.__getNativeTag(),this.__getNativeAnimationConfig(),this.__debouncedOnEnd.bind(this))}}]),t})();e.exports=o},192); -__d(function(t,i,s,e){'use strict';i(174),i(190);var a=i(192),o=i(194),n=i(18),h=i(177).shouldUseNativeDriver;function r(t,i){return void 0===t||null===t?i:t}var l=(function(i){babelHelpers.inherits(s,i);function s(t){babelHelpers.classCallCheck(this,s);var i=babelHelpers.possibleConstructorReturn(this,(s.__proto__||Object.getPrototypeOf(s)).call(this));if(i._overshootClamping=r(t.overshootClamping,!1),i._restDisplacementThreshold=r(t.restDisplacementThreshold,.001),i._restSpeedThreshold=r(t.restSpeedThreshold,.001),i._initialVelocity=r(t.velocity,0),i._lastVelocity=r(t.velocity,0),i._toValue=t.toValue,i._delay=r(t.delay,0),i._useNativeDriver=h(t),i.__isInteraction=void 0===t.isInteraction||t.isInteraction,i.__iterations=void 0!==t.iterations?t.iterations:1,void 0!==t.stiffness||void 0!==t.damping||void 0!==t.mass)n(void 0===t.bounciness&&void 0===t.speed&&void 0===t.tension&&void 0===t.friction,'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one'),i._stiffness=r(t.stiffness,100),i._damping=r(t.damping,10),i._mass=r(t.mass,1);else if(void 0!==t.bounciness||void 0!==t.speed){n(void 0===t.tension&&void 0===t.friction&&void 0===t.stiffness&&void 0===t.damping&&void 0===t.mass,'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one');var e=o.fromBouncinessAndSpeed(r(t.bounciness,8),r(t.speed,12));i._stiffness=e.stiffness,i._damping=e.damping,i._mass=1}else{var a=o.fromOrigamiTensionAndFriction(r(t.tension,40),r(t.friction,7));i._stiffness=a.stiffness,i._damping=a.damping,i._mass=1}return n(i._stiffness>0,'Stiffness value must be greater than 0'),n(i._damping>0,'Damping value must be greater than 0'),n(i._mass>0,'Mass value must be greater than 0'),i}return babelHelpers.createClass(s,[{key:"__getNativeAnimationConfig",value:function(){return{type:'spring',overshootClamping:this._overshootClamping,restDisplacementThreshold:this._restDisplacementThreshold,restSpeedThreshold:this._restSpeedThreshold,stiffness:this._stiffness,damping:this._damping,mass:this._mass,initialVelocity:r(this._initialVelocity,this._lastVelocity),toValue:this._toValue,iterations:this.__iterations}}},{key:"start",value:function(t,i,e,a,o){var n=this;if(this.__active=!0,this._startPosition=t,this._lastPosition=this._startPosition,this._onUpdate=i,this.__onEnd=e,this._lastTime=Date.now(),this._frameTime=0,a instanceof s){var h=a.getInternalState();this._lastPosition=h.lastPosition,this._lastVelocity=h.lastVelocity,this._initialVelocity=this._lastVelocity,this._lastTime=h.lastTime}var r=function(){n._useNativeDriver?n.__startNativeAnimation(o):n.onUpdate()};this._delay?this._timeout=setTimeout(r,this._delay):r()}},{key:"getInternalState",value:function(){return{lastPosition:this._lastPosition,lastVelocity:this._lastVelocity,lastTime:this._lastTime}}},{key:"onUpdate",value:function(){var t=Date.now();t>this._lastTime+64&&(t=this._lastTime+64);var i=(t-this._lastTime)/1e3;this._frameTime+=i;var s=this._damping,e=this._mass,a=this._stiffness,o=-this._initialVelocity,n=s/(2*Math.sqrt(a*e)),h=Math.sqrt(a/e),r=h*Math.sqrt(1-n*n),l=this._toValue-this._startPosition,_=0,d=0,m=this._frameTime;if(n<1){var f=Math.exp(-n*h*m);_=this._toValue-f*((o+n*h*l)/r*Math.sin(r*m)+l*Math.cos(r*m)),d=n*h*f*(Math.sin(r*m)*(o+n*h*l)/r+l*Math.cos(r*m))-f*(Math.cos(r*m)*(o+n*h*l)-r*l*Math.sin(r*m))}else{var c=Math.exp(-h*m);_=this._toValue-c*(l+(o+h*l)*m),d=c*(o*(m*h-1)+m*l*(h*h))}if(this._lastTime=t,this._lastPosition=_,this._lastVelocity=d,this._onUpdate(_),this.__active){var u=!1;this._overshootClamping&&0!==this._stiffness&&(u=this._startPositionthis._toValue:_18&&n<=44?(r=n,44e-6*Math.pow(r,3)-.006*Math.pow(r,2)+.36*r+2):(t=n,4.5e-7*Math.pow(t,3)-332e-6*Math.pow(t,2)+.1078*t+5.84);var t,r,o})(f),.01);return{stiffness:e(f),damping:i(a)}}}},194); -__d(function(t,i,e,a){'use strict';i(174),i(190);var s=i(192),n=i(177).shouldUseNativeDriver,o=void 0;var r=(function(e){babelHelpers.inherits(a,e);function a(t){babelHelpers.classCallCheck(this,a);var e=babelHelpers.possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return e._toValue=t.toValue,e._easing=void 0!==t.easing?t.easing:(function(){if(!o){var t=i(196);o=t.inOut(t.ease)}return o})(),e._duration=void 0!==t.duration?t.duration:500,e._delay=void 0!==t.delay?t.delay:0,e.__iterations=void 0!==t.iterations?t.iterations:1,e.__isInteraction=void 0===t.isInteraction||t.isInteraction,e._useNativeDriver=n(t),e}return babelHelpers.createClass(a,[{key:"__getNativeAnimationConfig",value:function(){for(var t=[],i=0;i=this._startTime+this._duration)return 0===this._duration?this._onUpdate(this._toValue):this._onUpdate(this._fromValue+this._easing(1)*(this._toValue-this._fromValue)),void this.__debouncedOnEnd({finished:!0});this._onUpdate(this._fromValue+this._easing((t-this._startTime)/this._duration)*(this._toValue-this._fromValue)),this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this)))}},{key:"stop",value:function(){babelHelpers.get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"stop",this).call(this),this.__active=!1,clearTimeout(this._timeout),t.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}]),a})(s);e.exports=r},195); -__d(function(e,n,u,t){'use strict';var r=void 0,a=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"step0",value:function(e){return e>0?1:0}},{key:"step1",value:function(e){return e>=1?1:0}},{key:"linear",value:function(e){return e}},{key:"ease",value:function(n){return r||(r=e.bezier(.42,0,1,1)),r(n)}},{key:"quad",value:function(e){return e*e}},{key:"cubic",value:function(e){return e*e*e}},{key:"poly",value:function(e){return function(n){return Math.pow(n,e)}}},{key:"sin",value:function(e){return 1-Math.cos(e*Math.PI/2)}},{key:"circle",value:function(e){return 1-Math.sqrt(1-e*e)}},{key:"exp",value:function(e){return Math.pow(2,10*(e-1))}},{key:"elastic",value:function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*Math.PI;return function(n){return 1-Math.pow(Math.cos(n*Math.PI/2),3)*Math.cos(n*e)}}},{key:"back",value:function(e){return void 0===e&&(e=1.70158),function(n){return n*n*((e+1)*n-e)}}},{key:"bounce",value:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375}},{key:"bezier",value:function(e,u,t,r){return n(197)(e,u,t,r)}},{key:"in",value:function(e){return e}},{key:"out",value:function(e){return function(n){return 1-e(1-n)}}},{key:"inOut",value:function(e){return function(n){return n<.5?e(2*n)/2:1-e(2*(1-n))/2}}}]),e})();u.exports=a},196); -__d(function(r,n,t,u){'use strict';var e=4,o=.001,f=1e-7,i=10,a=11,c=1/(a-1),v='function'==typeof Float32Array;function s(r,n){return 1-3*n+3*r}function w(r,n){return 3*n-6*r}function l(r){return 3*r}function y(r,n,t){return((s(n,t)*r+w(n,t))*r+l(n))*r}function b(r,n,t){return 3*s(n,t)*r*r+2*w(n,t)*r+l(n)}t.exports=function(r,n,t,u){if(!(0<=r&&r<=1&&0<=t&&t<=1))throw new Error('bezier x values must be in [0, 1] range');var s=v?new Float32Array(a):new Array(a);if(r!==n||t!==u)for(var w=0;w=o?(function(r,n,t,u){for(var o=0;o0?t=a:n=a}while(Math.abs(o)>f&&++c component requires a `source` property rather than `src`.'),this.props.children)throw new Error('The component cannot contain children. If you want to render content on top of the image, consider using aboslute positioning.');if(e&&(e.uri||Array.isArray(e))){var n=void 0,t=void 0;if(e.uri){var o=e.width,i=e.height;n=m([{width:o,height:i},L.base,this.props.style]),t=[{uri:e.uri}]}else n=m([L.base,this.props.style]),t=e;var s=this.props,a=s.onLoadStart,u=s.onLoad,d=s.onLoadEnd,h=s.onError,l=y(this.props,{style:n,shouldNotifyLoadEvents:!!(a||u||d||h),src:t,headers:e.headers,loadingIndicatorSrc:r?r.uri:null});return this.context.isInAParentText?c.createElement(S,l):c.createElement(R,l)}return null}})),L=l.create({base:{overflow:'hidden'}}),O={nativeOnly:{src:!0,headers:!0,loadingIndicatorSrc:!0,shouldNotifyLoadEvents:!0}},R=v('RCTImageView',x,O),S=v('RCTTextInlineImage',x,O);n.exports=x},199); -__d(function(r,t,n,e){'use strict';var o=Object.prototype.hasOwnProperty;n.exports=function(r,t,n){if(!r)return null;var e={};for(var a in r)o.call(r,a)&&t.call(n,r[a],a,r)&&(e[a]=r[a]);return e}},200); -__d(function(e,o,n,t){'use strict';var l=o(171),r=o(40),s=o(109),i=(o(28),o(202)),a=o(104),c=o(107),d=o(43),h=o(203),p=o(210),u=o(145),m=o(115),f=o(147),S=o(108),y=o(116),R=o(149),v=o(206),b=(o(51),o(18)),_=o(211),w=o(122),H=(o(32),R({displayName:'ScrollView',propTypes:babelHelpers.extends({},S,{automaticallyAdjustContentInsets:a.bool,contentInset:s,contentOffset:i,bounces:a.bool,bouncesZoom:a.bool,alwaysBounceHorizontal:a.bool,alwaysBounceVertical:a.bool,centerContent:a.bool,contentContainerStyle:m(y),decelerationRate:a.oneOfType([a.oneOf(['fast','normal']),a.number]),horizontal:a.bool,indicatorStyle:a.oneOf(['default','black','white']),directionalLockEnabled:a.bool,canCancelContentTouches:a.bool,keyboardDismissMode:a.oneOf(['none','on-drag','interactive']),keyboardShouldPersistTaps:a.oneOf(['always','never','handled',!1,!0]),maximumZoomScale:a.number,minimumZoomScale:a.number,onMomentumScrollBegin:a.func,onMomentumScrollEnd:a.func,onScroll:a.func,onContentSizeChange:a.func,pagingEnabled:a.bool,pinchGestureEnabled:a.bool,scrollEnabled:a.bool,scrollEventThrottle:a.number,scrollIndicatorInsets:s,scrollsToTop:a.bool,showsHorizontalScrollIndicator:a.bool,showsVerticalScrollIndicator:a.bool,stickyHeaderIndices:a.arrayOf(a.number),snapToInterval:a.number,snapToAlignment:a.oneOf(['start','center','end']),removeClippedSubviews:a.bool,zoomScale:a.number,contentInsetAdjustmentBehavior:a.oneOf(['automatic','scrollableAxes','never','always']),refreshControl:a.element,endFillColor:r,scrollPerfTag:a.string,overScrollMode:a.oneOf(['auto','always','never']),DEPRECATED_sendUpdatedChildFrames:a.bool}),mixins:[h.Mixin],_scrollAnimatedValue:new l.Value(0),_scrollAnimatedValueAttachment:null,_stickyHeaderRefs:new Map,_headerLayoutYs:new Map,getInitialState:function(){return this.scrollResponderMixinGetInitialState()},componentWillMount:function(){this._scrollAnimatedValue=new l.Value(this.props.contentOffset?this.props.contentOffset.y:0),this._scrollAnimatedValue.setOffset(this.props.contentInset?this.props.contentInset.top:0),this._stickyHeaderRefs=new Map,this._headerLayoutYs=new Map},componentDidMount:function(){this._updateAnimatedNodeAttachment()},componentDidUpdate:function(){this._updateAnimatedNodeAttachment()},componentWillUnmount:function(){this._scrollAnimatedValueAttachment&&this._scrollAnimatedValueAttachment.detach()},setNativeProps:function(e){this._scrollViewRef&&this._scrollViewRef.setNativeProps(e)},getScrollResponder:function(){return this},getScrollableNode:function(){return d.findNodeHandle(this._scrollViewRef)},getInnerViewNode:function(){return d.findNodeHandle(this._innerViewRef)},scrollTo:function(e,o,n){if('number'==typeof e)console.warn("`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, animated: true})` instead.");else{var t=e||{};o=t.x,e=t.y,n=t.animated}this.getScrollResponder().scrollResponderScrollTo({x:o||0,y:e||0,animated:!1!==n})},scrollToEnd:function(e){var o=!1!==(e&&e.animated);this.getScrollResponder().scrollResponderScrollToEnd({animated:o})},scrollWithoutAnimationTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;console.warn('`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead'),this.scrollTo({x:o,y:e,animated:!1})},flashScrollIndicators:function(){this.getScrollResponder().scrollResponderFlashScrollIndicators()},_getKeyForIndex:function(e,o){var n=o[e];return n&&n.key},_updateAnimatedNodeAttachment:function(){this._scrollAnimatedValueAttachment&&this._scrollAnimatedValueAttachment.detach(),this.props.stickyHeaderIndices&&this.props.stickyHeaderIndices.length>0&&(this._scrollAnimatedValueAttachment=l.attachNativeEvent(this._scrollViewRef,'onScroll',[{nativeEvent:{contentOffset:{y:this._scrollAnimatedValue}}}]))},_setStickyHeaderRef:function(e,o){o?this._stickyHeaderRefs.set(e,o):this._stickyHeaderRefs.delete(e)},_onStickyHeaderLayout:function(e,o,n){if(this.props.stickyHeaderIndices){var t=c.Children.toArray(this.props.children);if(n===this._getKeyForIndex(e,t)){var l=o.nativeEvent.layout.y;this._headerLayoutYs.set(n,l);var r=this.props.stickyHeaderIndices.indexOf(e),s=this.props.stickyHeaderIndices[r-1];if(null!=s){var i=this._stickyHeaderRefs.get(this._getKeyForIndex(s,t));i&&i.setNextHeaderY(l)}}}},_handleScroll:function(e){'on-drag'===this.props.keyboardDismissMode&&v(),this.scrollResponderHandleScroll(e)},_handleContentOnLayout:function(e){var o=e.nativeEvent.layout,n=o.width,t=o.height;this.props.onContentSizeChange&&this.props.onContentSizeChange(n,t)},_scrollViewRef:null,_setScrollViewRef:function(e){this._scrollViewRef=e},_innerViewRef:null,_setInnerViewRef:function(e){this._innerViewRef=e},render:function(){var e=this,o=void 0,n=void 0;this.props.horizontal?(o=A,n=T):(o=g,n=f),b(void 0!==o,'ScrollViewClass must not be undefined'),b(void 0!==n,'ScrollContentContainerViewClass must not be undefined');var t=[this.props.horizontal&&C.contentContainerHorizontal,this.props.contentContainerStyle],l={};this.props.onContentSizeChange&&(l={onLayout:this._handleContentOnLayout});var r=this.props.stickyHeaderIndices,s=r&&r.length>0,i=s&&c.Children.toArray(this.props.children),a=s?i.map(function(o,n){var t=o?r.indexOf(n):-1;if(t>-1){var l=o.key,s=r[t+1];return c.createElement(p,{key:l,ref:function(o){return e._setStickyHeaderRef(l,o)},nextHeaderLayoutY:e._headerLayoutYs.get(e._getKeyForIndex(s,i)),onLayout:function(o){return e._onStickyHeaderLayout(n,o,l)},scrollAnimatedValue:e._scrollAnimatedValue},o)}return o}):this.props.children,d=c.createElement(n,babelHelpers.extends({},l,{ref:this._setInnerViewRef,style:t,removeClippedSubviews:!s&&this.props.removeClippedSubviews,collapsable:!1}),a),h=void 0!==this.props.alwaysBounceHorizontal?this.props.alwaysBounceHorizontal:this.props.horizontal,u=void 0!==this.props.alwaysBounceVertical?this.props.alwaysBounceVertical:!this.props.horizontal,m=!!this.props.DEPRECATED_sendUpdatedChildFrames,S=this.props.horizontal?C.baseHorizontal:C.baseVertical,y=babelHelpers.extends({},this.props,{alwaysBounceHorizontal:h,alwaysBounceVertical:u,style:[S,this.props.style],onContentSizeChange:null,onMomentumScrollBegin:this.scrollResponderHandleMomentumScrollBegin,onMomentumScrollEnd:this.scrollResponderHandleMomentumScrollEnd,onResponderGrant:this.scrollResponderHandleResponderGrant,onResponderReject:this.scrollResponderHandleResponderReject,onResponderRelease:this.scrollResponderHandleResponderRelease,onResponderTerminate:this.scrollResponderHandleTerminate,onResponderTerminationRequest:this.scrollResponderHandleTerminationRequest,onScroll:this._handleScroll,onScrollBeginDrag:this.scrollResponderHandleScrollBeginDrag,onScrollEndDrag:this.scrollResponderHandleScrollEndDrag,onScrollShouldSetResponder:this.scrollResponderHandleScrollShouldSetResponder,onStartShouldSetResponder:this.scrollResponderHandleStartShouldSetResponder,onStartShouldSetResponderCapture:this.scrollResponderHandleStartShouldSetResponderCapture,onTouchEnd:this.scrollResponderHandleTouchEnd,onTouchMove:this.scrollResponderHandleTouchMove,onTouchStart:this.scrollResponderHandleTouchStart,onTouchCancel:this.scrollResponderHandleTouchCancel,scrollEventThrottle:s?1:this.props.scrollEventThrottle,sendMomentumEvents:!(!this.props.onMomentumScrollBegin&&!this.props.onMomentumScrollEnd),DEPRECATED_sendUpdatedChildFrames:m}),R=this.props.decelerationRate;R&&(y.decelerationRate=_(R));var v=this.props.refreshControl;return v?c.cloneElement(v,{style:y.style},c.createElement(o,babelHelpers.extends({},y,{style:S,ref:this._setScrollViewRef}),d)):c.createElement(o,babelHelpers.extends({},y,{ref:this._setScrollViewRef}),d)}})),C=u.create({baseVertical:{flexGrow:1,flexShrink:1,flexDirection:'column',overflow:'scroll'},baseHorizontal:{flexGrow:1,flexShrink:1,flexDirection:'row',overflow:'scroll'},contentContainerHorizontal:{flexDirection:'row'}}),V=void 0,g=void 0,T=void 0,A=void 0;g=w('RCTScrollView',H,V={nativeOnly:{sendMomentumEvents:!0}}),A=w('AndroidHorizontalScrollView',H,V),T=w('AndroidHorizontalScrollContentView'),n.exports=H},201); -__d(function(r,e,n,t){'use strict';var u=e(104),s=e(110)({x:u.number,y:u.number});n.exports=s},202); -__d(function(e,o,n,s){'use strict';var r=o(141),l=o(204),t=o(205),i=o(43),d=o(207),a=o(53),c=o(54),p=o(18),h=o(208),u=o(29),S=o(32),m=o(20).ScrollViewManager,R=o(209).getInstanceFromNode;var T={Mixin:{mixins:[d.Mixin],scrollResponderMixinGetInitialState:function(){return{isTouching:!1,lastMomentumScrollBeginTime:0,lastMomentumScrollEndTime:0,observedScrollSinceBecomingResponder:!1,becameResponderWhileAnimating:!1}},scrollResponderHandleScrollShouldSetResponder:function(){return this.state.isTouching},scrollResponderHandleStartShouldSetResponder:function(e){var o=a.currentlyFocusedField();return'handled'===this.props.keyboardShouldPersistTaps&&null!=o&&e.target!==o},scrollResponderHandleStartShouldSetResponderCapture:function(e){var o=a.currentlyFocusedField(),n=this.props.keyboardShouldPersistTaps;return!(n&&'never'!==n||null==o||(function(e){var o=R(e);return o&&o.viewConfig&&('AndroidTextInput'===o.viewConfig.uiViewClassName||'RCTTextView'===o.viewConfig.uiViewClassName||'RCTTextField'===o.viewConfig.uiViewClassName)})(e.target))||this.scrollResponderIsAnimating()},scrollResponderHandleResponderReject:function(){},scrollResponderHandleTerminationRequest:function(){return!this.state.observedScrollSinceBecomingResponder},scrollResponderHandleTouchEnd:function(e){var o=e.nativeEvent;this.state.isTouching=0!==o.touches.length,this.props.onTouchEnd&&this.props.onTouchEnd(e)},scrollResponderHandleTouchCancel:function(e){this.state.isTouching=!1,this.props.onTouchCancel&&this.props.onTouchCancel(e)},scrollResponderHandleResponderRelease:function(e){this.props.onResponderRelease&&this.props.onResponderRelease(e);var o=a.currentlyFocusedField();!0===this.props.keyboardShouldPersistTaps||'always'===this.props.keyboardShouldPersistTaps||null==o||e.target===o||this.state.observedScrollSinceBecomingResponder||this.state.becameResponderWhileAnimating||(this.props.onScrollResponderKeyboardDismissed&&this.props.onScrollResponderKeyboardDismissed(e),a.blurTextInput(o))},scrollResponderHandleScroll:function(e){this.state.observedScrollSinceBecomingResponder=!0,this.props.onScroll&&this.props.onScroll(e)},scrollResponderHandleResponderGrant:function(e){this.state.observedScrollSinceBecomingResponder=!1,this.props.onResponderGrant&&this.props.onResponderGrant(e),this.state.becameResponderWhileAnimating=this.scrollResponderIsAnimating()},scrollResponderHandleScrollBeginDrag:function(e){l.beginScroll(),this.props.onScrollBeginDrag&&this.props.onScrollBeginDrag(e)},scrollResponderHandleScrollEndDrag:function(e){var o=e.nativeEvent.velocity;this.scrollResponderIsAnimating()||o&&(0!==o.x||0!==o.y)||l.endScroll(),this.props.onScrollEndDrag&&this.props.onScrollEndDrag(e)},scrollResponderHandleMomentumScrollBegin:function(e){this.state.lastMomentumScrollBeginTime=u(),this.props.onMomentumScrollBegin&&this.props.onMomentumScrollBegin(e)},scrollResponderHandleMomentumScrollEnd:function(e){l.endScroll(),this.state.lastMomentumScrollEndTime=u(),this.props.onMomentumScrollEnd&&this.props.onMomentumScrollEnd(e)},scrollResponderHandleTouchStart:function(e){this.state.isTouching=!0,this.props.onTouchStart&&this.props.onTouchStart(e)},scrollResponderHandleTouchMove:function(e){this.props.onTouchMove&&this.props.onTouchMove(e)},scrollResponderIsAnimating:function(){return u()-this.state.lastMomentumScrollEndTime<16||this.state.lastMomentumScrollEndTime=o?(l.push(p,p+1),i.push(p-o,p-o)):(l.push(o+1),i.push(1))}var y=this.props.scrollAnimatedValue.interpolate({inputRange:l,outputRange:i}),h=n.Children.only(this.props.children);return n.createElement(r.View,{collapsable:!1,onLayout:this._onLayout,style:[h.props.style,u.header,{transform:[{translateY:y}]}]},n.cloneElement(h,{style:u.fill,onLayout:void 0}))}}]),t})(n.Component),u=s.create({header:{zIndex:10},fill:{flex:1}});a.exports=l},210); -__d(function(t,n,r,o){'use strict';r.exports=function(t){return'normal'===t?t=.998:'fast'===t&&(t=.99),t}},211); -__d(function(e,n,t,o){'use strict';var s=n(42),r=n(104),a=n(107),i=n(145),h=n(108),p=n(149),l=n(122),u=p({displayName:'CheckBox',propTypes:babelHelpers.extends({},h,{value:r.bool,disabled:r.bool,onChange:r.func,onValueChange:r.func,testID:r.string}),getDefaultProps:function(){return{value:!1,disabled:!1}},mixins:[s],_rctCheckBox:{},_onChange:function(e){this._rctCheckBox.setNativeProps({value:this.props.value}),this.props.onChange&&this.props.onChange(e),this.props.onValueChange&&this.props.onValueChange(e.nativeEvent.value)},render:function(){var e=this,n=babelHelpers.extends({},this.props);return n.onStartShouldSetResponder=function(){return!0},n.onResponderTerminationRequest=function(){return!1},n.enabled=!this.props.disabled,n.on=this.props.value,n.style=[c.rctCheckBox,this.props.style],a.createElement(d,babelHelpers.extends({},n,{ref:function(n){e._rctCheckBox=n},onChange:this._onChange}))}}),c=i.create({rctCheckBox:{height:32,width:32}}),d=l('AndroidCheckBox',u,{nativeOnly:{onChange:!0,on:!0,enabled:!0}});t.exports=u},212); -__d(function(e,t,r,n){'use strict';var o=t(107),s=t(145),i=t(158),l=t(147),a=(function(e){babelHelpers.inherits(t,e);function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.createClass(t,[{key:"render",value:function(){return o.createElement(l,{style:[c.dummyDatePickerIOS,this.props.style]},o.createElement(i,{style:c.datePickerText},"DatePickerIOS is not supported on this platform!"))}}]),t})(o.Component),c=s.create({dummyDatePickerIOS:{height:100,width:300,backgroundColor:'#ffbcbc',borderWidth:1,borderColor:'red',alignItems:'center',justifyContent:'center',margin:10},datePickerText:{color:'#333333',margin:20}});r.exports=a},213); -__d(function(e,r,o,t){'use strict';var a=r(40),n=r(42),s=r(28),i=r(107),d=r(104),l=r(43),w=r(215),p=r(145),u=r(54),c=r(147),h=r(108),g=u.AndroidDrawerLayout.Constants,D=r(149),f=r(206),C=r(122),b=['Idle','Dragging','Settling'],m=D({displayName:'DrawerLayoutAndroid',statics:{positions:g.DrawerPosition},propTypes:babelHelpers.extends({},h,{keyboardDismissMode:d.oneOf(['none','on-drag']),drawerBackgroundColor:a,drawerPosition:d.oneOf([g.DrawerPosition.Left,g.DrawerPosition.Right]),drawerWidth:d.number,drawerLockMode:d.oneOf(['unlocked','locked-closed','locked-open']),onDrawerSlide:d.func,onDrawerStateChanged:d.func,onDrawerOpen:d.func,onDrawerClose:d.func,renderNavigationView:d.func.isRequired,statusBarBackgroundColor:a}),mixins:[n],getDefaultProps:function(){return{drawerBackgroundColor:'white'}},getInitialState:function(){return{statusBarBackgroundColor:void 0}},getInnerViewNode:function(){return this.refs.innerView.getInnerViewNode()},render:function(){var e=s.Version>=21&&this.props.statusBarBackgroundColor,r=i.createElement(c,{style:[S.drawerSubview,{width:this.props.drawerWidth,backgroundColor:this.props.drawerBackgroundColor}],collapsable:!1},this.props.renderNavigationView(),e&&i.createElement(c,{style:S.drawerStatusBar})),o=i.createElement(c,{ref:"innerView",style:S.mainSubview,collapsable:!1},e&&i.createElement(w,{translucent:!0,backgroundColor:this.props.statusBarBackgroundColor}),e&&i.createElement(c,{style:[S.statusBar,{backgroundColor:this.props.statusBarBackgroundColor}]}),this.props.children);return i.createElement(k,babelHelpers.extends({},this.props,{ref:"drawerlayout",drawerWidth:this.props.drawerWidth,drawerPosition:this.props.drawerPosition,drawerLockMode:this.props.drawerLockMode,style:[S.base,this.props.style],onDrawerSlide:this._onDrawerSlide,onDrawerOpen:this._onDrawerOpen,onDrawerClose:this._onDrawerClose,onDrawerStateChanged:this._onDrawerStateChanged}),o,r)},_onDrawerSlide:function(e){this.props.onDrawerSlide&&this.props.onDrawerSlide(e),'on-drag'===this.props.keyboardDismissMode&&f()},_onDrawerOpen:function(){this.props.onDrawerOpen&&this.props.onDrawerOpen()},_onDrawerClose:function(){this.props.onDrawerClose&&this.props.onDrawerClose()},_onDrawerStateChanged:function(e){this.props.onDrawerStateChanged&&this.props.onDrawerStateChanged(b[e.nativeEvent.drawerState])},openDrawer:function(){u.dispatchViewManagerCommand(this._getDrawerLayoutHandle(),u.AndroidDrawerLayout.Commands.openDrawer,null)},closeDrawer:function(){u.dispatchViewManagerCommand(this._getDrawerLayoutHandle(),u.AndroidDrawerLayout.Commands.closeDrawer,null)},_getDrawerLayoutHandle:function(){return l.findNodeHandle(this.refs.drawerlayout)}}),S=p.create({base:{flex:1,elevation:16},mainSubview:{position:'absolute',top:0,left:0,right:0,bottom:0},drawerSubview:{position:'absolute',top:0,bottom:0},statusBar:{height:w.currentHeight},drawerStatusBar:{position:'absolute',top:0,left:0,right:0,height:w.currentHeight,backgroundColor:'rgba(0, 0, 0, 0.251)'}}),k=C('AndroidDrawerLayout',m);o.exports=m},214); -__d(function(e,t,n,a){'use strict';var r=t(107),l=t(104),o=t(40),i=(t(28),t(129)),s=t(20).StatusBarManager;function u(e){return{backgroundColor:null!=e.backgroundColor?{value:e.backgroundColor,animated:e.animated}:null,barStyle:null!=e.barStyle?{value:e.barStyle,animated:e.animated}:null,translucent:e.translucent,hidden:null!=e.hidden?{value:e.hidden,animated:e.animated,transition:e.showHideTransition}:null,networkActivityIndicatorVisible:e.networkActivityIndicatorVisible}}var c=(function(e){babelHelpers.inherits(t,e);function t(){var e,n,a,r;babelHelpers.classCallCheck(this,t);for(var l=arguments.length,o=Array(l),u=0;u1){for(var s=[],o=0;o1?(l(Array.isArray(e),"FlatList: Encountered internal consistency error, expected each item to consist of an array with 1-%s columns; instead, received a single item.",o),e.map(function(e,n){return s(e,t*o+n)}).join(':')):s(e,t)},n._renderItem=function(e){var t=n.props,i=t.renderItem,s=t.numColumns,a=t.columnWrapperStyle;if(s>1){var u=e.item,c=e.index;return l(Array.isArray(u),'Expected array of items with numColumns > 1'),o.createElement(r,{style:[{flexDirection:'row'},a]},u.map(function(t,n){var r=i({item:t,index:c*s+n,separators:e.separators});return r&&o.cloneElement(r,{key:n})}))}return i(e)},n.props.viewabilityConfigCallbackPairs?n._virtualizedListPairs=n.props.viewabilityConfigCallbackPairs.map(function(e){return{viewabilityConfig:e.viewabilityConfig,onViewableItemsChanged:n._createOnViewableItemsChanged(e.onViewableItemsChanged)}}):n.props.onViewableItemsChanged&&n._virtualizedListPairs.push({viewabilityConfig:n.props.viewabilityConfig,onViewableItemsChanged:n._createOnViewableItemsChanged(n.props.onViewableItemsChanged)}),n}return babelHelpers.createClass(t,[{key:"_checkProps",value:function(e){var t=e.getItem,n=e.getItemCount,i=e.horizontal,s=e.legacyImplementation,o=e.numColumns,r=e.columnWrapperStyle,a=e.onViewableItemsChanged,u=e.viewabilityConfigCallbackPairs;l(!t&&!n,'FlatList does not support custom data formats.'),o>1?l(!i,'numColumns does not support horizontal.'):l(!r,'columnWrapperStyle not supported for single column lists'),s&&(l(1===o,'Legacy list does not support multiple columns.'),this._hasWarnedLegacy||(console.warn("FlatList: Using legacyImplementation - some features not supported and performance may suffer"),this._hasWarnedLegacy=!0)),l(!(a&&u),"FlatList does not support setting both onViewableItemsChanged and viewabilityConfigCallbackPairs.")}},{key:"_pushMultiColumnViewable",value:function(e,t){var n=this.props,i=n.numColumns,s=n.keyExtractor;t.item.forEach(function(n,o){l(null!=t.index,'Missing index!');var r=t.index*i+o;e.push(babelHelpers.extends({},t,{item:n,key:s(n,r),index:r}))})}},{key:"_createOnViewableItemsChanged",value:function(e){var t=this;return function(n){var i=t.props.numColumns;if(e)if(i>1){var s=[],o=[];n.viewableItems.forEach(function(e){return t._pushMultiColumnViewable(o,e)}),n.changed.forEach(function(e){return t._pushMultiColumnViewable(s,e)}),e({viewableItems:o,changed:s})}else e(n)}}},{key:"render",value:function(){return this.props.legacyImplementation?o.createElement(s,babelHelpers.extends({},this.props,{items:this.props.data,ref:this._captureRef})):o.createElement(a,babelHelpers.extends({},this.props,{renderItem:this._renderItem,getItem:this._getItem,getItemCount:this._getItemCount,keyExtractor:this._keyExtractor,ref:this._captureRef,viewabilityConfigCallbackPairs:this._virtualizedListPairs}))}}]),t})(o.PureComponent);c.defaultProps=u,n.exports=c},216); -__d(function(e,t,r,o){'use strict';var n=t(218),s=t(107),a=t(223),i=t(201),c=t(18),l=(function(e){babelHelpers.inherits(t,e);function t(){var e,r,o,a,i=this;babelHelpers.classCallCheck(this,t);for(var l=arguments.length,p=Array(l),u=0;u=this._prevRenderedRowsCount&&o.rowShouldUpdate(p,f),b=r.createElement(c,{key:'r_'+C,shouldUpdate:!!_,render:this.props.renderRow.bind(null,o.getRowData(p,f),g,m,this._onRowHighlighted)});if(e.push(b),h++,this.props.renderSeparator&&(f!==w.length-1||p===n.length-1)){var v=this.state.highlightedRow.sectionID===g&&(this.state.highlightedRow.rowID===m||this.state.highlightedRow.rowID===w[f+1]),y=this.props.renderSeparator(g,m,v);y&&(e.push(r.createElement(u,{key:'s_'+C},y)),h++)}if(++s===this.state.curRenderedRowsCount)break}if(s>=this.state.curRenderedRowsCount)break}var E=this.props,L=E.renderScrollComponent,I=babelHelpers.objectWithoutProperties(E,["renderScrollComponent"]);return I.scrollEventThrottle||(I.scrollEventThrottle=50),void 0===I.removeClippedSubviews&&(I.removeClippedSubviews=!0),babelHelpers.extends(I,{onScroll:this._onScroll,stickyHeaderIndices:this.props.stickyHeaderIndices.concat(i),onKeyboardWillShow:void 0,onKeyboardWillHide:void 0,onKeyboardDidShow:void 0,onKeyboardDidHide:void 0}),R(L(I),{ref:this._setScrollComponentRef,onContentSizeChange:this._onContentSizeChange,onLayout:this._onLayout,DEPRECATED_sendUpdatedChildFrames:void 0!==typeof I.onChangeVisibleRows},d,e,a)},_measureAndUpdateScrollProps:function(){var e=this.getScrollResponder();e&&e.getInnerViewNode&&d&&d.calculateChildFrames&&d.calculateChildFrames(l.findNodeHandle(e),this._updateVisibleRows)},_setScrollComponentRef:function(e){this._scrollComponent=e},_onContentSizeChange:function(e,t){var o=this.props.horizontal?e:t;o!==this.scrollProperties.contentLength&&(this.scrollProperties.contentLength=o,this._updateVisibleRows(),this._renderMoreRowsIfNeeded()),this.props.onContentSizeChange&&this.props.onContentSizeChange(e,t)},_onLayout:function(e){var t=e.nativeEvent.layout,o=t.width,n=t.height,s=this.props.horizontal?o:n;s!==this.scrollProperties.visibleLength&&(this.scrollProperties.visibleLength=s,this._updateVisibleRows(),this._renderMoreRowsIfNeeded()),this.props.onLayout&&this.props.onLayout(e)},_maybeCallOnEndReached:function(e){return!!(this.props.onEndReached&&this.scrollProperties.contentLength!==this._sentEndForContentLength&&this._getDistanceFromEnd(this.scrollProperties)r||_this.props.onEndReachedThreshold&&(this._sentEndForContentLength=null),this.props.onScroll&&this.props.onScroll(e)}});o.exports=f},218); -__d(function(t,e,i,n){'use strict';var s=e(18),a=e(220),o=e(32);function r(t,e,i){return t[e][i]}function h(t,e){return t[e]}var d=(function(){function t(e){babelHelpers.classCallCheck(this,t),s(e&&'function'==typeof e.rowHasChanged,'Must provide a rowHasChanged function.'),this._rowHasChanged=e.rowHasChanged,this._getRowData=e.getRowData||r,this._sectionHeaderHasChanged=e.sectionHeaderHasChanged,this._getSectionHeaderData=e.getSectionHeaderData||h,this._dataBlob=null,this._dirtyRows=[],this._dirtySections=[],this._cachedRowCount=0,this.rowIdentities=[],this.sectionIdentities=[]}return babelHelpers.createClass(t,[{key:"cloneWithRows",value:function(t,e){var i=e?[[].concat(babelHelpers.toConsumableArray(e))]:null;return this._sectionHeaderHasChanged||(this._sectionHeaderHasChanged=function(){return!1}),this.cloneWithRowsAndSections({s1:t},['s1'],i)}},{key:"cloneWithRowsAndSections",value:function(e,i,n){s('function'==typeof this._sectionHeaderHasChanged,'Must provide a sectionHeaderHasChanged function with section data.'),s(!i||!n||i.length===n.length,'row and section ids lengths must be the same');var a=new t({getRowData:this._getRowData,getSectionHeaderData:this._getSectionHeaderData,rowHasChanged:this._rowHasChanged,sectionHeaderHasChanged:this._sectionHeaderHasChanged});return a._dataBlob=e,a.sectionIdentities=i||Object.keys(e),n?a.rowIdentities=n:(a.rowIdentities=[],a.sectionIdentities.forEach(function(t){a.rowIdentities.push(Object.keys(e[t]))})),a._cachedRowCount=(function(t){for(var e=0,i=0;i=this.rowIdentities[i].length))return this.rowIdentities[i][e];e-=this.rowIdentities[i].length}return null}},{key:"getSectionIDForFlatIndex",value:function(t){for(var e=t,i=0;i=this.rowIdentities[i].length))return this.sectionIdentities[i];e-=this.rowIdentities[i].length}return null}},{key:"getSectionLengths",value:function(){for(var t=[],e=0;e2?o-2:0),a=2;a=0&&athis._highestMeasuredFrameIndex)return m(!!i,"scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, otherwise there is no way to know the location of offscreen indices or handle failures."),void i({averageItemLength:this._averageCellLength,highestMeasuredFrameIndex:this._highestMeasuredFrameIndex,index:a});var c=this._getFrameMetricsApprox(a),d=Math.max(0,c.offset-(p||0)*(this._scrollMetrics.visibleLength-c.length))-(h||0);this._scrollRef.scrollTo(s?{x:d,animated:l}:{y:d,animated:l})}},{key:"scrollToItem",value:function(e){for(var t=e.item,r=this.props,s=r.data,o=r.getItem,n=(0,r.getItemCount)(s),i=0;i0){g=!1;var _=i?'width':'height',v=this.props.initialScrollIndex?-1:this.props.initialNumToRender-1,y=this.state,b=y.first,x=y.last;this._pushCells(p,u,c,0,v,h);var L=Math.max(v+1,b);if(!a&&b>v+1){var S=!1;if(c.size>0)for(var E=s?1:0,I=L-1;I>v;I--)if(c.has(I+E)){var M=this._getFrameMetricsApprox(v),R=this._getFrameMetricsApprox(I),k=R.offset-(M.offset+M.length);p.push(l.createElement(d,{key:"$sticky_lead",style:babelHelpers.defineProperty({},_,k)})),this._pushCells(p,u,c,I,I,h);var w=this._getFrameMetricsApprox(b).offset-(R.offset+R.length);p.push(l.createElement(d,{key:"$sticky_trail",style:babelHelpers.defineProperty({},_,w)})),S=!0;break}if(!S){var T=this._getFrameMetricsApprox(v),H=this._getFrameMetricsApprox(b).offset-(T.offset+T.length);p.push(l.createElement(d,{key:"$lead_spacer",style:babelHelpers.defineProperty({},_,H)}))}}if(this._pushCells(p,u,c,L,x,h),!this._hasWarned.keys&&g&&(console.warn("VirtualizedList: missing keys for items, make sure to specify a key property on each item or provide a custom keyExtractor."),this._hasWarned.keys=!0),!a&&x0||r2&&p500&&e._scrollMetrics.dt>500&&o>5*s&&!e._hasWarned.perf&&(f("VirtualizedList: You have a large list that is slow to update - make sure your renderItem function renders components that follow React performance best practices like PureComponent, shouldComponentUpdate, etc.",{dt:i,prevDt:e._scrollMetrics.dt,contentLength:o}),e._hasWarned.perf=!0);var l=n-e._scrollMetrics.offset,a=l/i;e._scrollMetrics={contentLength:o,dt:i,dOffset:l,offset:n,timestamp:r,velocity:a,visibleLength:s},e._updateViewableItems(e.props.data),e.props&&(e._maybeCallOnEndReached(),0!==a&&e._fillRateHelper.activate(),e._computeBlankness(),e._scheduleCellsToRenderUpdate())},this._onScrollBeginDrag=function(t){e._viewabilityTuples.forEach(function(e){e.viewabilityHelper.recordInteraction()}),e.props.onScrollBeginDrag&&e.props.onScrollBeginDrag(t)},this._onScrollEndDrag=function(t){var r=t.nativeEvent.velocity;r&&(e._scrollMetrics.velocity=e._selectOffset(r)),e._computeBlankness(),e.props.onScrollEndDrag&&e.props.onScrollEndDrag(t)},this._onMomentumScrollEnd=function(t){e._scrollMetrics.velocity=0,e._computeBlankness(),e.props.onMomentumScrollEnd&&e.props.onMomentumScrollEnd(t)},this._updateCellsToRender=function(){var t=e.props,r=t.data,s=t.getItemCount,o=t.onEndReachedThreshold,n=e._isVirtualizationDisabled();e._updateViewableItems(r),r&&e.setState(function(t){var i=void 0;if(n){var l=e._scrollMetrics,a=l.contentLength,h=l.offset,p=l.visibleLength,c=a-p-ht,'Tried to get frame for out of range index '+t);var a=o(s,t),h=a&&e._frames[l(a,t)];return h&&h.index===t||i&&(h=i(s,t)),h}},b=(function(e){babelHelpers.inherits(t,e);function t(){var e,r,s,o;babelHelpers.classCallCheck(this,t);for(var n=arguments.length,i=Array(n),l=0;l0&&void 0!==arguments[0]?arguments[0]:{abort:!1};this._taskHandle&&(this._taskHandle.cancel(),t.abort||this._callback(),this._taskHandle=null)}},{key:"schedule",value:function(){var t=this;if(!this._taskHandle){var a=setTimeout(function(){t._taskHandle=n.runAfterInteractions(function(){t._taskHandle=null,t._callback()})},this._delay);this._taskHandle={cancel:function(){return clearTimeout(a)}}}}}]),t})();e.exports=s},225); -__d(function(t,e,a,s){'use strict';var n=e(29),i=e(32),l=function t(){babelHelpers.classCallCheck(this,t),this.any_blank_count=0,this.any_blank_ms=0,this.any_blank_speed_sum=0,this.mostly_blank_count=0,this.mostly_blank_ms=0,this.pixels_blank=0,this.pixels_sampled=0,this.pixels_scrolled=0,this.total_time_spent=0,this.sample_count=0},_=[],r=10,h=null,o=(function(){babelHelpers.createClass(t,null,[{key:"addListener",value:function(t){return i(null!==h,'Call `FillRateHelper.setSampleRate` before `addListener`.'),_.push(t),{remove:function(){_=_.filter(function(e){return t!==e})}}}},{key:"setSampleRate",value:function(t){h=t}},{key:"setMinSampleCount",value:function(t){r=t}}]);function t(e){babelHelpers.classCallCheck(this,t),this._anyBlankStartTime=null,this._enabled=!1,this._info=new l,this._mostlyBlankStartTime=null,this._samplesStartTime=null,this._getFrameMetrics=e,this._enabled=(h||0)>Math.random(),this._resetData()}return babelHelpers.createClass(t,[{key:"activate",value:function(){this._enabled&&null==this._samplesStartTime&&(this._samplesStartTime=n())}},{key:"deactivateAndFlush",value:function(){if(this._enabled){var t=this._samplesStartTime;if(null!=t)if(this._info.sample_count0&&(o=Math.min(_,Math.max(0,m.offset-i)));for(var f=0,c=e.last,k=this._getFrameMetrics(c);c>=e.first&&(!k||!k.inLayout);)k=this._getFrameMetrics(c),c--;if(k&&c0?(this._anyBlankStartTime=h,this._info.any_blank_speed_sum+=r,this._info.any_blank_count++,this._info.pixels_blank+=p,y>.5&&(this._mostlyBlankStartTime=h,this._info.mostly_blank_count++)):(r<.01||Math.abs(s)<1)&&this.deactivateAndFlush(),y}},{key:"enabled",value:function(){return this._enabled}},{key:"_resetData",value:function(){this._anyBlankStartTime=null,this._info=new l,this._mostlyBlankStartTime=null,this._samplesStartTime=null}}]),t})();a.exports=o},226); -__d(function(e,i,t,a){'use strict';var r=i(18),n=(function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{viewAreaCoveragePercentThreshold:0};babelHelpers.classCallCheck(this,e),this._hasInteracted=!1,this._lastUpdateTime=0,this._timers=new Set,this._viewableIndices=[],this._viewableItems=new Map,this._config=i}return babelHelpers.createClass(e,[{key:"dispose",value:function(){this._timers.forEach(clearTimeout)}},{key:"computeViewableItems",value:function(e,i,t,a,n){var l=this._config,o=l.itemVisiblePercentThreshold,h=l.viewAreaCoveragePercentThreshold,c=null!=h,f=c?h:o;r(null!=f&&null!=o!=(null!=h),'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold');var u=[];if(0===e)return u;var v=-1,m=n||{first:0,last:e-1},d=m.first,b=m.last;r(b0)v=_,s(c,f,y,w,t,p.length)&&u.push(_);else if(v>=0)break}}return u}},{key:"onUpdate",value:function(e,i,t,a,r,n,s){var l=this,o=Date.now();0===this._lastUpdateTime&&e>0&&a(0)&&(this._lastUpdateTime=o);var h=this._lastUpdateTime?o-this._lastUpdateTime:0;if(!this._config.waitForInteraction||this._hasInteracted){var c=[];if(e&&(c=this.computeViewableItems(e,i,t,a,s)),this._viewableIndices.length!==c.length||!this._viewableIndices.every(function(e,i){return e===c[i]}))if(this._viewableIndices=c,this._lastUpdateTime=o,this._config.minimumViewTime&&h=l.length)break;c=l[h++]}else{if((h=l.next()).done)break;c=h.value}var f=c,u=babelHelpers.slicedToArray(f,2),v=u[0],m=u[1];r.has(v)||s.push(m)}var d=r,b=Array.isArray(d),_=0;for(d=b?d:d["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var p;if(b){if(_>=d.length)break;p=d[_++]}else{if((_=d.next()).done)break;p=_.value}var y=p,w=babelHelpers.slicedToArray(y,2),g=w[0],I=w[1];n.has(g)||s.push(babelHelpers.extends({},I,{isViewable:!1}))}s.length>0&&(this._viewableItems=n,i({viewableItems:Array.from(n.values()),changed:s,viewabilityConfig:this._config}))}}]),e})();function s(e,i,t,a,r,n){if(o=a,(l=t)>=0&&o<=r&&o>l)return!0;var s=(function(e,i,t){var a=Math.min(i,t)-Math.max(e,0);return Math.max(0,a)})(t,a,r);return 100*(e?s/r:s/n)>=i;var l,o}t.exports=n},227); -__d(function(t,e,r,a){'use strict';var n=e(18);function i(t,e,r){for(var a=[],i=0;i=t[f]&&(a[f]=i,f===t.length-1))return n(a.length===t.length,'bad offsets input, should be in increasing order '+JSON.stringify(t)),a;return a}function s(t,e){return e.last-e.first+1-Math.max(0,1+Math.min(e.last,t.last)-Math.max(e.first,t.first))}var l={computeWindowedRenderLimits:function(t,e,r,a){var n=t.data,l=t.getItemCount,f=t.maxToRenderPerBatch,o=t.windowSize,u=l(n);if(0===u)return e;var h=a.offset,m=a.velocity,c=a.visibleLength,d=Math.max(0,h),v=d+c,g=(o-1)*c,b=m>1?'after':m<-1?'before':'none',w=i([Math.max(0,d-.5*g),d,v,Math.max(0,v+.5*g)],t.getItemCount(t.data),r),x=babelHelpers.slicedToArray(w,4),M=x[0],p=x[1],y=x[2],C=x[3];M=null==M?0:M,p=null==p?Math.max(0,M):p,C=null==C?u-1:C;for(var O={first:p,last:y=null==y?Math.min(C,p+f-1):y},L=s(e,O);!(p<=M&&y>=C);){var R=L>=f,S=p<=e.first||p>e.last,T=p>M&&(!R||!S),B=y>=e.last||y=p&&p>=0&&y=M&&y<=C&&p<=O.first&&y>=O.last))throw new Error('Bad window calculation '+JSON.stringify({first:p,last:y,itemCount:u,overscanFirst:M,overscanLast:C,visible:O}));return{first:p,last:y}},elementsThatOverlapOffsets:i,newRangeCount:s};r.exports=l},228); -__d(function(e,t,r,l){'use strict';var s=t(199),i=t(107),a=t(145),n=t(147),o=t(230),c=(function(e){babelHelpers.inherits(t,e);function t(){var e,r,l,s;babelHelpers.classCallCheck(this,t);for(var i=arguments.length,a=Array(i),n=0;n=0){var i=n.Children.toArray(e.props.children)[s].props.value;e.props.onValueChange(i,s)}else e.props.onValueChange(null,s)}e._lastNativePosition=t.nativeEvent.position,e.forceUpdate()}},f=l.create({pickerAndroid:{height:50}}),m={nativeOnly:{items:!0,selected:!0}},_=h('AndroidDropdownPicker',v,m),y=h('AndroidDialogPicker',v,m);s.exports=v},243); -__d(function(e,t,r,o){'use strict';var s=t(107),n=t(145),l=t(158),i=t(147),c=(function(e){babelHelpers.inherits(t,e);function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.createClass(t,[{key:"render",value:function(){return s.createElement(i,{style:[a.dummy,this.props.style]},s.createElement(l,{style:a.text},"ProgressViewIOS is not supported on this platform!"))}}]),t})(s.Component),a=n.create({dummy:{width:120,height:20,backgroundColor:'#ffbcbc',borderWidth:1,borderColor:'red',alignItems:'center',justifyContent:'center'},text:{color:'#333333',margin:5,fontSize:10}});r.exports=c},244); -__d(function(t,s,c,e){'use strict';c.exports=s(147)},245); -__d(function(e,t,r,s){'use strict';var a=t(217),i=(t(28),t(107)),o=(t(201),t(247)),l=babelHelpers.extends({},o.defaultProps,{stickySectionHeadersEnabled:!1}),n=(function(e){babelHelpers.inherits(t,e);function t(){var e,r,s,a;babelHelpers.classCallCheck(this,t);for(var i=arguments.length,o=Array(i),l=0;l=a.data.length+1)){if(-1===t)return{section:a,key:i+':header',index:null,header:!0,trailingSection:this.props.sections[n+1]};if(t===a.data.length)return{section:a,key:i+':footer',index:null,header:!1,trailingSection:this.props.sections[n+1]};return{section:a,key:i+':'+(a.keyExtractor||r)(a.data[t],t),index:t,leadingItem:a.data[t-1],leadingSection:this.props.sections[n-1],trailingItem:a.data[t+1],trailingSection:this.props.sections[n+1]}}t-=a.data.length+1}}},{key:"_getSeparatorComponent",value:function(e,t){if(!(t=t||this._subExtractor(e)))return null;var r=t.section.ItemSeparatorComponent||this.props.ItemSeparatorComponent,n=this.props.SectionSeparatorComponent,a=e===this.state.childProps.getItemCount()-1,i=t.index===t.section.data.length-1;return n&&i?n:!r||i||a?null:r}},{key:"_computeState",value:function(e){var t=e.ListHeaderComponent?1:0,r=[],n=e.sections.reduce(function(e,n){return r.push(e+t),e+n.data.length+2},0);return{childProps:babelHelpers.extends({},e,{renderItem:this._renderItem,ItemSeparatorComponent:void 0,data:e.sections,getItemCount:function(){return n},getItem:c,keyExtractor:this._keyExtractor,onViewableItemsChanged:e.onViewableItemsChanged?this._onViewableItemsChanged:void 0,stickyHeaderIndices:e.stickySectionHeadersEnabled?r:void 0})}}}]);function t(e,r){babelHelpers.classCallCheck(this,t);var n=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r));return n._keyExtractor=function(e,t){var r=n._subExtractor(t);return r&&r.key||String(t)},n._convertViewable=function(e){s(null!=e.index,'Received a broken ViewToken');var t=n._subExtractor(e.index);if(!t)return null;var r=t.section.keyExtractor||n.props.keyExtractor;return babelHelpers.extends({},e,{index:t.index,key:r(e.item,t.index),section:t.section})},n._onViewableItemsChanged=function(e){var t=e.viewableItems,r=e.changed;n.props.onViewableItemsChanged&&n.props.onViewableItemsChanged({viewableItems:t.map(n._convertViewable,n).filter(Boolean),changed:r.map(n._convertViewable,n).filter(Boolean)})},n._renderItem=function(e){var t=e.item,r=e.index,i=n._subExtractor(r);if(!i)return null;var o=i.index;if(null==o){var l=i.section;if(!0===i.header){var c=n.props.renderSectionHeader;return c?c({section:l}):null}var d=n.props.renderSectionFooter;return d?d({section:l}):null}var u=i.section.renderItem||n.props.renderItem,g=n._getSeparatorComponent(r,i);return s(u,'no renderItem!'),a.createElement(p,{SeparatorComponent:g,LeadingSeparatorComponent:0===o?n.props.SectionSeparatorComponent:void 0,cellKey:i.key,index:o,item:t,leadingItem:i.leadingItem,leadingSection:i.leadingSection,onUpdateSeparator:n._onUpdateSeparator,prevCellKey:(n._subExtractor(r-1)||{}).key,ref:function(e){n._cellRefs[i.key]=e},renderItem:u,section:i.section,trailingItem:i.trailingItem,trailingSection:i.trailingSection})},n._onUpdateSeparator=function(e,t){var r=n._cellRefs[e];r&&r.updateSeparatorProps(t)},n._cellRefs={},n._captureRef=function(e){n._listRef=e},n.state=n._computeState(e),n}return babelHelpers.createClass(t,[{key:"componentWillReceiveProps",value:function(e){this.setState(this._computeState(e))}},{key:"render",value:function(){return a.createElement(o,babelHelpers.extends({},this.state.childProps,{ref:this._captureRef}))}}]),t})(a.PureComponent);l.defaultProps=babelHelpers.extends({},o.defaultProps,{data:[]});var p=(function(e){babelHelpers.inherits(t,e);function t(){var e,r,n,a;babelHelpers.classCallCheck(this,t);for(var i=arguments.length,o=Array(i),s=0;s0},_swipeFullSpeed:function(e){this.state.currentLeft.setValue(this._previousLeft+e.dx)},_swipeSlowSpeed:function(e){this.state.currentLeft.setValue(this._previousLeft+e.dx/4)},_isSwipingExcessivelyRightFromClosedPosition:function(e){var i=_?-e.dx:e.dx;return this._isSwipingRightFromClosed(e)&&i>120},_onPanResponderTerminationRequest:function(e,i){return!1},_animateTo:function(e){var i=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:c;o.timing(this.state.currentLeft,{duration:n,toValue:e,useNativeDriver:!0}).start(function(){i._previousLeft=e,t()})},_animateToOpenPosition:function(){var e=_?-this.props.maxSwipeDistance:this.props.maxSwipeDistance;this._animateTo(-e)},_animateToOpenPositionWith:function(e,i){e=e>.3?e:.3;var n=Math.abs((this.props.maxSwipeDistance-Math.abs(i))/e),t=_?-this.props.maxSwipeDistance:this.props.maxSwipeDistance;this._animateTo(-t,n)},_animateToClosedPosition:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:300;this._animateTo(0,e)},_animateToClosedPositionDuringBounce:function(){this._animateToClosedPosition(300)},_animateBounceBack:function(e){var i=_?-30:30;this._animateTo(-i,e,this._animateToClosedPositionDuringBounce)},_isValidSwipe:function(e){return!(this.props.preventSwipeRight&&0===this._previousLeft&&e.dx>0)&&Math.abs(e.dx)>10},_shouldAnimateRemainder:function(e){return Math.abs(e.dx)>this.props.swipeThreshold||e.vx>.3},_handlePanResponderEnd:function(e,i){var n=_?-i.dx:i.dx;this._isSwipingRightFromClosed(i)?(this.props.onOpen(),this._animateBounceBack(300)):this._shouldAnimateRemainder(i)?n<0?(this.props.onOpen(),this._animateToOpenPositionWith(i.vx,n)):(this.props.onClose(),this._animateToClosedPosition()):0===this._previousLeft?this._animateToClosedPosition():this._animateToOpenPosition(),this.props.onSwipeEnd()}}),w=u.create({slideOutContainer:{bottom:0,left:0,position:'absolute',right:0,top:0}});n.exports=m},253); -__d(function(e,n,o,t){'use strict';var r=n(179),a=n(255),u=a.currentCentroidXOfTouchesChangedAfter,s=a.currentCentroidYOfTouchesChangedAfter,d=a.previousCentroidXOfTouchesChangedAfter,i=a.previousCentroidYOfTouchesChangedAfter,c=a.currentCentroidX,p=a.currentCentroidY,v={_initializeGestureState:function(e){e.moveX=0,e.moveY=0,e.x0=0,e.y0=0,e.dx=0,e.dy=0,e.vx=0,e.vy=0,e.numberActiveTouches=0,e._accountsForMovesUpTo=0},_updateGestureStateOnMove:function(e,n){e.numberActiveTouches=n.numberActiveTouches,e.moveX=u(n,e._accountsForMovesUpTo),e.moveY=s(n,e._accountsForMovesUpTo);var o=e._accountsForMovesUpTo,t=d(n,o),r=u(n,o),a=i(n,o),c=s(n,o),p=e.dx+(r-t),v=e.dy+(c-a),h=n.mostRecentTimeStamp-e._accountsForMovesUpTo;e.vx=(p-e.dx)/h,e.vy=(v-e.dy)/h,e.dx=p,e.dy=v,e._accountsForMovesUpTo=n.mostRecentTimeStamp},create:function(e){var n={handle:null},o={stateID:Math.random()};v._initializeGestureState(o);return{panHandlers:{onStartShouldSetResponder:function(n){return void 0!==e.onStartShouldSetPanResponder&&e.onStartShouldSetPanResponder(n,o)},onMoveShouldSetResponder:function(n){return void 0!==e.onMoveShouldSetPanResponder&&e.onMoveShouldSetPanResponder(n,o)},onStartShouldSetResponderCapture:function(n){return 1===n.nativeEvent.touches.length&&v._initializeGestureState(o),o.numberActiveTouches=n.touchHistory.numberActiveTouches,void 0!==e.onStartShouldSetPanResponderCapture&&e.onStartShouldSetPanResponderCapture(n,o)},onMoveShouldSetResponderCapture:function(n){var t=n.touchHistory;return o._accountsForMovesUpTo!==t.mostRecentTimeStamp&&(v._updateGestureStateOnMove(o,t),!!e.onMoveShouldSetPanResponderCapture&&e.onMoveShouldSetPanResponderCapture(n,o))},onResponderGrant:function(t){return n.handle||(n.handle=r.createInteractionHandle()),o.x0=c(t.touchHistory),o.y0=p(t.touchHistory),o.dx=0,o.dy=0,e.onPanResponderGrant&&e.onPanResponderGrant(t,o),void 0===e.onShouldBlockNativeResponder||e.onShouldBlockNativeResponder()},onResponderReject:function(t){h(n,e.onPanResponderReject,t,o)},onResponderRelease:function(t){h(n,e.onPanResponderRelease,t,o),v._initializeGestureState(o)},onResponderStart:function(n){var t=n.touchHistory;o.numberActiveTouches=t.numberActiveTouches,e.onPanResponderStart&&e.onPanResponderStart(n,o)},onResponderMove:function(n){var t=n.touchHistory;o._accountsForMovesUpTo!==t.mostRecentTimeStamp&&(v._updateGestureStateOnMove(o,t),e.onPanResponderMove&&e.onPanResponderMove(n,o))},onResponderEnd:function(t){var r=t.touchHistory;o.numberActiveTouches=r.numberActiveTouches,h(n,e.onPanResponderEnd,t,o)},onResponderTerminate:function(t){h(n,e.onPanResponderTerminate,t,o),v._initializeGestureState(o)},onResponderTerminationRequest:function(n){return void 0===e.onPanResponderTerminationRequest||e.onPanResponderTerminationRequest(n,o)}},getInteractionHandle:function(){return n.handle}}}};function h(e,n,o,t){e.handle&&(r.clearInteractionHandle(e.handle),e.handle=null),n&&n(o,t)}o.exports=v},254); -__d(function(_,t,E,o){'use strict';var r=t(43).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.exports=r.TouchHistoryMath},255); -__d(function(e,t,n,o){'use strict';var r=t(218),s=t(104),i=t(107),u=t(257),a=t(253),c=(function(e){babelHelpers.inherits(t,e),babelHelpers.createClass(t,null,[{key:"getNewDataSource",value:function(){return new u({getRowData:function(e,t,n){return e[t][n]},getSectionHeaderData:function(e,t){return e[t]},rowHasChanged:function(e,t){return e!==t},sectionHeaderHasChanged:function(e,t){return e!==t}})}}]);function t(e,n){babelHelpers.classCallCheck(this,t);var o=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return o._listViewRef=null,o._shouldBounceFirstRowOnMount=!1,o._onScroll=function(e){o.props.dataSource.getOpenRowID()&&o.setState({dataSource:o.state.dataSource.setOpenRowID(null)}),o.props.onScroll&&o.props.onScroll(e)},o._renderRow=function(e,t,n){var r=o.props.renderQuickActions(e,t,n);if(!r)return o.props.renderRow(e,t,n);var s=!1;return o._shouldBounceFirstRowOnMount&&(o._shouldBounceFirstRowOnMount=!1,s=n===o.props.dataSource.getFirstRowID()),i.createElement(a,{slideoutView:r,isOpen:e.id===o.props.dataSource.getOpenRowID(),maxSwipeDistance:o._getMaxSwipeDistance(e,t,n),key:n,onOpen:function(){return o._onOpen(e.id)},onClose:function(){return o._onClose(e.id)},onSwipeEnd:function(){return o._setListViewScrollable(!0)},onSwipeStart:function(){return o._setListViewScrollable(!1)},shouldBounceOnMount:s},o.props.renderRow(e,t,n))},o._shouldBounceFirstRowOnMount=o.props.bounceFirstRowOnMount,o.state={dataSource:o.props.dataSource},o}return babelHelpers.createClass(t,[{key:"componentWillReceiveProps",value:function(e){this.state.dataSource.getDataSource()!==e.dataSource.getDataSource()&&this.setState({dataSource:e.dataSource})}},{key:"render",value:function(){var e=this;return i.createElement(r,babelHelpers.extends({},this.props,{ref:function(t){e._listViewRef=t},dataSource:this.state.dataSource.getDataSource(),onScroll:this._onScroll,renderRow:this._renderRow}))}},{key:"_setListViewScrollable",value:function(e){this._listViewRef&&'function'==typeof this._listViewRef.setNativeProps&&this._listViewRef.setNativeProps({scrollEnabled:e})}},{key:"getScrollResponder",value:function(){if(this._listViewRef&&'function'==typeof this._listViewRef.getScrollResponder)return this._listViewRef.getScrollResponder()}},{key:"_getMaxSwipeDistance",value:function(e,t,n){return'function'==typeof this.props.maxSwipeDistance?this.props.maxSwipeDistance(e,t,n):this.props.maxSwipeDistance}},{key:"_onOpen",value:function(e){this.setState({dataSource:this.state.dataSource.setOpenRowID(e)})}},{key:"_onClose",value:function(e){this.setState({dataSource:this.state.dataSource.setOpenRowID(null)})}}]),t})(i.Component);c.propTypes={bounceFirstRowOnMount:s.bool.isRequired,dataSource:s.instanceOf(u).isRequired,maxSwipeDistance:s.oneOfType([s.number,s.func]).isRequired,renderRow:s.func.isRequired,renderQuickActions:s.func.isRequired},c.defaultProps={bounceFirstRowOnMount:!1,renderQuickActions:function(){return null}},n.exports=c},256); -__d(function(e,t,i,o){'use strict';var n=t(219),s=(function(){function e(t){var i=this;babelHelpers.classCallCheck(this,e),this._dataSource=new n({getRowData:t.getRowData,getSectionHeaderData:t.getSectionHeaderData,rowHasChanged:function(e,o){return e.id!==i._previousOpenRowID&&o.id===i._openRowID||e.id===i._previousOpenRowID&&o.id!==i._openRowID||t.rowHasChanged(e,o)},sectionHeaderHasChanged:t.sectionHeaderHasChanged})}return babelHelpers.createClass(e,[{key:"cloneWithRowsAndSections",value:function(e,t,i){return this._dataSource=this._dataSource.cloneWithRowsAndSections(e,t,i),this._dataBlob=e,this.rowIdentities=this._dataSource.rowIdentities,this.sectionIdentities=this._dataSource.sectionIdentities,this}},{key:"getDataSource",value:function(){return this._dataSource}},{key:"getOpenRowID",value:function(){return this._openRowID}},{key:"getFirstRowID",value:function(){return this.rowIdentities?this.rowIdentities[0]&&this.rowIdentities[0][0]:Object.keys(this._dataBlob)[0]}},{key:"setOpenRowID",value:function(e){return this._previousOpenRowID=this._openRowID,this._openRowID=e,this._dataSource=this._dataSource.cloneWithRowsAndSections(this._dataBlob,this.sectionIdentities,this.rowIdentities),this}}]),e})();i.exports=s},257); -__d(function(e,t,r,s){'use strict';var l=t(107),n=t(145),o=t(259),p=t(147),a=(function(e){babelHelpers.inherits(t,e);function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.createClass(t,[{key:"render",value:function(){return l.createElement(p,{style:[this.props.style,i.tabGroup]},this.props.children)}}]),t})(l.Component);a.Item=o;var i=n.create({tabGroup:{flex:1}});r.exports=a},258); -__d(function(e,t,r,s){'use strict';var l=t(107),o=t(147),n=t(145),p=(function(e){babelHelpers.inherits(t,e);function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.createClass(t,[{key:"render",value:function(){return this.props.selected?l.createElement(o,{style:[this.props.style,i.tab]},this.props.children):l.createElement(o,null)}}]),t})(l.Component),i=n.create({tab:{top:0,right:0,bottom:0,left:0,borderColor:'red',borderWidth:1}});r.exports=p},259); -__d(function(e,t,n,o){'use strict';var s=t(40),i=t(261),a=t(35),r=t(42),l=(t(28),t(107)),u=t(149),c=t(104),p=t(43),h=t(145),d=t(158),f=t(53),g=t(168),b=t(167),y=t(54),_=t(108),v=t(16),C=t(18),S=t(122),x=(t(32),S('AndroidTextInput',null)),m=['phoneNumber','link','address','calendarEvent','none','all'],T=u({displayName:'TextInput',statics:{State:f},propTypes:babelHelpers.extends({},_,{autoCapitalize:c.oneOf(['none','sentences','words','characters']),autoCorrect:c.bool,spellCheck:c.bool,autoFocus:c.bool,autoGrow:c.bool,allowFontScaling:c.bool,editable:c.bool,keyboardType:c.oneOf(['default','email-address','numeric','phone-pad','ascii-capable','numbers-and-punctuation','url','number-pad','name-phone-pad','decimal-pad','twitter','web-search','visible-password']),keyboardAppearance:c.oneOf(['default','light','dark']),returnKeyType:c.oneOf(['done','go','next','search','send','none','previous','default','emergency-call','google','join','route','yahoo']),returnKeyLabel:c.string,maxLength:c.number,maxHeight:c.number,numberOfLines:c.number,disableFullscreenUI:c.bool,enablesReturnKeyAutomatically:c.bool,multiline:c.bool,textBreakStrategy:c.oneOf(['simple','highQuality','balanced']),onBlur:c.func,onFocus:c.func,onChange:c.func,onChangeText:c.func,onContentSizeChange:c.func,onEndEditing:c.func,onSelectionChange:c.func,onSubmitEditing:c.func,onKeyPress:c.func,onLayout:c.func,onScroll:c.func,placeholder:c.string,placeholderTextColor:s,secureTextEntry:c.bool,selectionColor:s,selectionState:c.instanceOf(i),selection:c.shape({start:c.number.isRequired,end:c.number}),value:c.string,defaultValue:c.string,clearButtonMode:c.oneOf(['never','while-editing','unless-editing','always']),clearTextOnFocus:c.bool,selectTextOnFocus:c.bool,blurOnSubmit:c.bool,style:d.propTypes.style,underlineColorAndroid:s,inlineImageLeft:c.string,inlineImagePadding:c.number,dataDetectorTypes:c.oneOfType([c.oneOf(m),c.arrayOf(c.oneOf(m))]),caretHidden:c.bool}),getDefaultProps:function(){return{allowFontScaling:!0}},mixins:[r,g],getInitialState:function(){return{layoutHeight:this._layoutHeight}},isFocused:function(){return f.currentlyFocusedField()===p.findNodeHandle(this._inputRef)},contextTypes:{onFocusRequested:c.func,focusEmitter:c.instanceOf(a)},_inputRef:void 0,_focusSubscription:void 0,_lastNativeText:void 0,_lastNativeSelection:void 0,_layoutHeight:-1,componentDidMount:function(){var e=this;this._lastNativeText=this.props.value,this.context.focusEmitter?(this._focusSubscription=this.context.focusEmitter.addListener('focus',function(t){e===t?e.requestAnimationFrame(e.focus):e.isFocused()&&e.blur()}),this.props.autoFocus&&this.context.onFocusRequested(this)):this.props.autoFocus&&this.requestAnimationFrame(this.focus)},componentWillUnmount:function(){this._focusSubscription&&this._focusSubscription.remove(),this.isFocused()&&this.blur()},getChildContext:function(){return{isInAParentText:!0}},childContextTypes:{isInAParentText:c.bool},clear:function(){this.setNativeProps({text:''})},render:function(){return this._renderAndroid()},_getText:function(){return'string'==typeof this.props.value?this.props.value:'string'==typeof this.props.defaultValue?this.props.defaultValue:''},_setNativeRef:function(e){this._inputRef=e},_renderIOS:function(){var e,t=babelHelpers.extends({},this.props);if(t.style=[this.props.style],t.selection&&null==t.selection.end&&(t.selection={start:t.selection.start,end:t.selection.start}),t.multiline){var n=t.children,o=0;l.Children.forEach(n,function(){return++o}),C(!(t.value&&o),'Cannot specify both value and children.'),o>=1&&(n=l.createElement(d,{style:t.style,allowFontScaling:t.allowFontScaling},n)),t.inputView&&(n=[n,t.inputView]),t.style.unshift(F.multilineInput),e=l.createElement(RCTTextView,babelHelpers.extends({ref:this._setNativeRef},t,{children:n,onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onContentSizeChange:this.props.onContentSizeChange,onSelectionChange:this._onSelectionChange,onTextInput:this._onTextInput,onSelectionChangeShouldSetResponder:v.thatReturnsTrue,text:this._getText(),dataDetectorTypes:this.props.dataDetectorTypes,onScroll:this._onScroll}))}else e=l.createElement(RCTTextField,babelHelpers.extends({ref:this._setNativeRef},t,{onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onSelectionChange:this._onSelectionChange,onSelectionChangeShouldSetResponder:v.thatReturnsTrue,text:this._getText()}));return l.createElement(b,{onLayout:t.onLayout,onPress:this._onPress,rejectResponderTermination:!0,accessible:t.accessible,accessibilityLabel:t.accessibilityLabel,accessibilityTraits:t.accessibilityTraits,nativeID:this.props.nativeID,testID:t.testID},e)},_renderAndroid:function(){var e=babelHelpers.extends({},this.props);e.style=this.props.style,this.state.layoutHeight>=0&&(e.style=[e.style,{height:this.state.layoutHeight}]),e.autoCapitalize=y.AndroidTextInput.Constants.AutoCapitalizationType[e.autoCapitalize||'sentences'];var t=this.props.children,n=0;l.Children.forEach(t,function(){return++n}),C(!(this.props.value&&n),'Cannot specify both value and children.'),n>1&&(t=l.createElement(d,null,t)),e.selection&&null==e.selection.end&&(e.selection={start:e.selection.start,end:e.selection.start});var o=l.createElement(x,babelHelpers.extends({ref:this._setNativeRef},e,{mostRecentEventCount:0,onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onContentSizeChange:this._onContentSizeChange,onSelectionChange:this._onSelectionChange,onTextInput:this._onTextInput,text:this._getText(),children:t,disableFullscreenUI:this.props.disableFullscreenUI,textBreakStrategy:this.props.textBreakStrategy,onScroll:this._onScroll}));return l.createElement(b,{onLayout:this._onLayout,onPress:this._onPress,accessible:this.props.accessible,accessibilityLabel:this.props.accessibilityLabel,accessibilityComponentType:this.props.accessibilityComponentType,nativeID:this.props.nativeID,testID:this.props.testID},o)},_onFocus:function(e){this.props.onFocus&&this.props.onFocus(e),this.props.selectionState&&this.props.selectionState.focus()},_onPress:function(e){(this.props.editable||void 0===this.props.editable)&&this.focus()},_onChange:function(e){this._inputRef&&this._inputRef.setNativeProps({mostRecentEventCount:e.nativeEvent.eventCount});var t=e.nativeEvent.text;this.props.onChange&&this.props.onChange(e),this.props.onChangeText&&this.props.onChangeText(t),this._inputRef&&(this._lastNativeText=t,this.forceUpdate())},_onContentSizeChange:function(e){var t=e.nativeEvent.contentSize.height;this.props.autoGrow&&(this.props.maxHeight&&(t=Math.min(this.props.maxHeight,t)),this.setState({layoutHeight:Math.max(this._layoutHeight,t)})),this.props.onContentSizeChange&&this.props.onContentSizeChange(e)},_onLayout:function(e){e.nativeEvent.layout.height&&(this._layoutHeight=e.nativeEvent.layout.height),this.props.onLayout&&this.props.onLayout(e)},_onSelectionChange:function(e){this.props.onSelectionChange&&this.props.onSelectionChange(e),this._inputRef&&(this._lastNativeSelection=e.nativeEvent.selection,(this.props.selection||this.props.selectionState)&&this.forceUpdate())},componentDidUpdate:function(){var e={};this._lastNativeText!==this.props.value&&'string'==typeof this.props.value&&(e.text=this.props.value);var t=this.props.selection;this._lastNativeSelection&&t&&(this._lastNativeSelection.start!==t.start||this._lastNativeSelection.end!==t.end)&&(e.selection=this.props.selection),Object.keys(e).length>0&&this._inputRef&&this._inputRef.setNativeProps(e),this.props.selectionState&&t&&this.props.selectionState.update(t.start,t.end)},_onBlur:function(e){this.blur(),this.props.onBlur&&this.props.onBlur(e),this.props.selectionState&&this.props.selectionState.blur()},_onTextInput:function(e){this.props.onTextInput&&this.props.onTextInput(e)},_onScroll:function(e){this.props.onScroll&&this.props.onScroll(e)}}),F=h.create({multilineInput:{paddingTop:5}});n.exports=T},260); -__d(function(s,t,e,f){'use strict';var u=t(262),h=(function(){function s(t,e){babelHelpers.classCallCheck(this,s),this._anchorOffset=t,this._focusOffset=e,this._hasFocus=!1}return babelHelpers.createClass(s,[{key:"update",value:function(s,t){this._anchorOffset===s&&this._focusOffset===t||(this._anchorOffset=s,this._focusOffset=t,this.emit('update'))}},{key:"constrainLength",value:function(s){this.update(Math.min(this._anchorOffset,s),Math.min(this._focusOffset,s))}},{key:"focus",value:function(){this._hasFocus||(this._hasFocus=!0,this.emit('focus'))}},{key:"blur",value:function(){this._hasFocus&&(this._hasFocus=!1,this.emit('blur'))}},{key:"hasFocus",value:function(){return this._hasFocus}},{key:"isCollapsed",value:function(){return this._anchorOffset===this._focusOffset}},{key:"isBackward",value:function(){return this._anchorOffset>this._focusOffset}},{key:"getAnchorOffset",value:function(){return this._hasFocus?this._anchorOffset:null}},{key:"getFocusOffset",value:function(){return this._hasFocus?this._focusOffset:null}},{key:"getStartOffset",value:function(){return this._hasFocus?Math.min(this._anchorOffset,this._focusOffset):null}},{key:"getEndOffset",value:function(){return this._hasFocus?Math.max(this._anchorOffset,this._focusOffset):null}},{key:"overlaps",value:function(s,t){return this.hasFocus()&&this.getStartOffset()<=t&&s<=this.getEndOffset()}}]),s})();u(h,{blur:!0,focus:!0,update:!0}),e.exports=h},261); -__d(function(e,t,n,r){'use strict';var i=t(35),s=t(263),_=t(264),a=t(18),o=t(265)({__types:!0});var v={emit:function(e,t,n,r,i,s,_){return this.__getEventEmitter().emit(e,t,n,r,i,s,_)},emitAndHold:function(e,t,n,r,i,s,_){return this.__getEventEmitter().emitAndHold(e,t,n,r,i,s,_)},addListener:function(e,t,n){return this.__getEventEmitter().addListener(e,t,n)},once:function(e,t,n){return this.__getEventEmitter().once(e,t,n)},addRetroactiveListener:function(e,t,n){return this.__getEventEmitter().addRetroactiveListener(e,t,n)},addListenerMap:function(e,t){return this.__getEventEmitter().addListenerMap(e,t)},addRetroactiveListenerMap:function(e,t){return this.__getEventEmitter().addListenerMap(e,t)},removeAllListeners:function(){this.__getEventEmitter().removeAllListeners()},removeCurrentListener:function(){this.__getEventEmitter().removeCurrentListener()},releaseHeldEventType:function(e){this.__getEventEmitter().releaseHeldEventType(e)},__getEventEmitter:function(){if(!this.__eventEmitter){var e=new i,t=new _;this.__eventEmitter=new s(e,t)}return this.__eventEmitter}};n.exports=function(e,t){a(t,'Must supply set of valid event types');var n=e.prototype||e;a(!n.__eventEmitter,'An active emitter is already mixed in');var r=e.constructor;r&&a(r===Object||r===Function,'Mix EventEmitter into a class, not an instance'),n.hasOwnProperty(o)?babelHelpers.extends(n.__types,t):n.__types?n.__types=babelHelpers.extends({},n.__types,t):n.__types=t,babelHelpers.extends(n,v)}},262); -__d(function(e,t,n,r){'use strict';var i=(function(){function e(t,n){babelHelpers.classCallCheck(this,e),this._emitter=t,this._eventHolder=n,this._currentEventToken=null,this._emittingHeldEvents=!1}return babelHelpers.createClass(e,[{key:"addListener",value:function(e,t,n){return this._emitter.addListener(e,t,n)}},{key:"once",value:function(e,t,n){return this._emitter.once(e,t,n)}},{key:"addRetroactiveListener",value:function(e,t,n){var r=this._emitter.addListener(e,t,n);return this._emittingHeldEvents=!0,this._eventHolder.emitToListener(e,t,n),this._emittingHeldEvents=!1,r}},{key:"removeAllListeners",value:function(e){this._emitter.removeAllListeners(e)}},{key:"removeCurrentListener",value:function(){this._emitter.removeCurrentListener()}},{key:"listeners",value:function(e){return this._emitter.listeners(e)}},{key:"emit",value:function(e){for(var t,n=arguments.length,r=Array(n>1?n-1:0),i=1;i1?r-1:0),s=1;s1?r-1:0),i=1;i. Was '+e.type.displayName),a.createElement(e.type,n)})},o._onPageScroll=function(e){o.props.onPageScroll&&o.props.onPageScroll(e),'on-drag'===o.props.keyboardDismissMode&&p()},o._onPageScrollStateChanged=function(e){o.props.onPageScrollStateChanged&&o.props.onPageScrollStateChanged(e.nativeEvent.pageScrollState)},o._onPageSelected=function(e){o.props.onPageSelected&&o.props.onPageSelected(e)},o.setPage=function(e){i.dispatchViewManagerCommand(l.findNodeHandle(o),i.AndroidViewPager.Commands.setPage,[e])},o.setPageWithoutAnimation=function(e){i.dispatchViewManagerCommand(l.findNodeHandle(o),i.AndroidViewPager.Commands.setPageWithoutAnimation,[e])},r=t,babelHelpers.possibleConstructorReturn(o,r)}return babelHelpers.createClass(n,[{key:"componentDidMount",value:function(){null!=this.props.initialPage&&this.setPageWithoutAnimation(this.props.initialPage)}},{key:"render",value:function(){return a.createElement(u,babelHelpers.extends({},this.props,{ref:c,style:this.props.style,onPageScroll:this._onPageScroll,onPageScrollStateChanged:this._onPageScrollStateChanged,onPageSelected:this._onPageSelected,children:this._childrenWithOverridenStyle()}))}}]),n})(a.Component);g.propTypes=babelHelpers.extends({},s,{initialPage:r.number,onPageScroll:r.func,onPageScrollStateChanged:r.func,onPageSelected:r.func,pageMargin:r.number,keyboardDismissMode:r.oneOf(['none','on-drag']),scrollEnabled:r.bool,peekEnabled:r.bool});var u=d('AndroidViewPager',g);t.exports=g},269); -__d(function(e,t,n,a){'use strict';var o=t(109),s=t(39),r=t(107),i=t(104),l=t(43),d=t(145),p=t(54),c=t(147),g=t(108),u=t(120),h=t(127),b=t(122),m=t(137),v='webview',f=h({IDLE:null,LOADING:null,ERROR:null}),C=(function(e){babelHelpers.inherits(t,e);function t(){var e,n,a,o;babelHelpers.classCallCheck(this,t);for(var s=arguments.length,r=Array(s),i=0;i=t.length)break;i=t[l++]}else{if((l=t.next()).done)break;i=l.value}var u=i,c=babelHelpers.slicedToArray(u,2),s=c[0],f=c[1];a[s]=f()}var d={},b=e._fileSources,y=Array.isArray(b),v=0;for(b=y?b:b["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var _;if(y){if(v>=b.length)break;_=b[v++]}else{if((v=b.next()).done)break;_=v.value}var S=_,p=babelHelpers.slicedToArray(S,2),x=p[0],k=p[1];d[x]=k()}n('BugReporting extraData:',a);var m=r(20).BugReporting;return m&&m.setExtraData&&m.setExtraData(a,d),{extras:a,files:d}}}]),e})();i._extraSources=new l,i._fileSources=new l,i._subscription=null,a.exports=i},273); -__d(function(e,t,r,a){'use strict';r.exports=function(){try{return"React tree dumps have been temporarily disabled while React is upgraded to Fiber."}catch(e){return'Failed to dump react tree: '+e}}},274); -__d(function(e,n,t,c){'use strict';var r=[],u={name:'default'},i={setActiveScene:function(e){u=e,r.forEach(function(e){return e(u)})},getActiveScene:function(){return u},addActiveSceneChangedListener:function(e){return r.push(e),{remove:function(){r=r.filter(function(n){return e!==n})}}}};t.exports=i},275); -__d(function(e,t,o,r){'use strict';var a=t(238),n=t(107),c=t(43),p=t(18);t(277);o.exports=function(e,t,o,r){p(o,'Expect to have a valid rootTag, instead got ',o),c.render(n.createElement(a,{rootTag:o,WrapperComponent:r},n.createElement(e,babelHelpers.extends({},t,{rootTag:o}))),o)}},276); -__d(function(e,r,n,t){'use strict';var a=r(20).DeviceEventManager,i=r(34),v=new Set;i.addListener('hardwareBackPress',function(){for(var e=!0,r=Array.from(v.values()).reverse(),n=0;n=0&&(s='video'),a.saveToCameraRoll(e,s)}},{key:"getPhotos",value:function(e){if(arguments.length>1){console.warn('CameraRoll.getPhotos(tag, success, error) is deprecated. Use the returned Promise instead');var r=arguments[1],s=arguments[2]||function(){};a.getPhotos(e).then(r,s)}return a.getPhotos(e)}}]),e})());d.GroupTypesOptions=l,d.AssetTypeOptions=u,s.exports=d},281); -__d(function(t,n,r,i){'use strict';var e=n(20).Clipboard;r.exports={getString:function(){return e.getString()},setString:function(t){e.setString(t)}}},282); -__d(function(e,t,n,r){'use strict';var i=t(20).DatePickerAndroid;function c(e,t){var n=e[t];'object'==typeof n&&'function'==typeof n.getMonth&&(e[t]=n.getTime())}var o=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"open",value:function(e){return regeneratorRuntime.async(function(t){for(;;)switch(t.prev=t.next){case 0:return e&&(c(e,'date'),c(e,'minDate'),c(e,'maxDate')),t.abrupt("return",i.open(e));case 3:case"end":return t.stop()}},null,this)}},{key:"dateSetAction",get:function(){return'dateSetAction'}},{key:"dismissedAction",get:function(){return'dismissedAction'}}]),e})();n.exports=o},283); -__d(function(e,n,o,a){'use strict';var r=n(20).ImagePickerIOS,t={canRecordVideos:function(e){return r.canRecordVideos(e)},canUseCamera:function(e){return r.canUseCamera(e)},openCameraDialog:function(e,n,o){return e=babelHelpers.extends({videoMode:!1},e),r.openCameraDialog(e,n,o)},openSelectDialog:function(e,n,o){return e=babelHelpers.extends({showImages:!0,showVideos:!1},e),r.openSelectDialog(e,n,o)}};o.exports=t},284); -__d(function(e,t,n,i){'use strict';var a=t(75),r=t(20),s=(t(28),t(18)),l=r.IntentAndroid,o=(function(e){babelHelpers.inherits(t,e);function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,l))}return babelHelpers.createClass(t,[{key:"addEventListener",value:function(e,t){this.addListener(e,t)}},{key:"removeEventListener",value:function(e,t){this.removeListener(e,t)}},{key:"openURL",value:function(e){return this._validateURL(e),l.openURL(e)}},{key:"canOpenURL",value:function(e){return this._validateURL(e),l.canOpenURL(e)}},{key:"getInitialURL",value:function(){return l.getInitialURL()}},{key:"_validateURL",value:function(e){s('string'==typeof e,'Invalid URL: should be a string. Was: '+e),s(e,'Invalid URL: cannot be empty')}}]),t})(a);n.exports=new o},285); -__d(function(e,n,t,o){'use strict';var i=n(57),r=n(75),c=n(20),f=(n(28),c.NetInfo),u=new r(f),v='networkStatusDidChange',s=new i,a=void 0;a=function(e){return'NONE'!==e&&'UNKNOWN'!==e};function d(e){return'none'!==e.type&&'unknown'!==e.type}var C=new i,g={addEventListener:function(e,n){var t=void 0;if('connectionChange'===e)t=u.addListener(v,function(e){n({type:e.connectionType,effectiveType:e.effectiveConnectionType})});else{if('change'!==e)return console.warn('Trying to subscribe to unknown event: "'+e+'"'),{remove:function(){}};console.warn('NetInfo\'s "change" event is deprecated. Listen to the "connectionChange" event instead.'),t=u.addListener(v,function(e){n(e.network_info)})}return s.set(n,t),{remove:function(){return g.removeEventListener(e,n)}}},removeEventListener:function(e,n){var t=s.get(n);t&&(t.remove(),s.delete(n))},fetch:function(){return console.warn('NetInfo.fetch() is deprecated. Use NetInfo.getConnectionInfo() instead.'),f.getCurrentConnectivity().then(function(e){return e.network_info})},getConnectionInfo:function(){return f.getCurrentConnectivity().then(function(e){return{type:e.connectionType,effectiveType:e.effectiveConnectionType}})},isConnected:{addEventListener:function(e,n){var t=function(t){'change'===e?n(a(t)):'connectionChange'===e&&n(d(t))};return C.set(n,t),g.addEventListener(e,t),{remove:function(){return g.isConnected.removeEventListener(e,n)}}},removeEventListener:function(e,n){var t=C.get(n);g.removeEventListener(e,t),C.delete(n)},fetch:function(){return g.getConnectionInfo().then(d)}},isConnectionExpensive:function(){return f.isConnectionMetered()}};t.exports=g},286); -__d(function(e,t,i,o){'use strict';var n=t(75),a=t(20).PushNotificationManager,c=t(18),r=new n(a),l=new Map,s=(function(){babelHelpers.createClass(e,null,[{key:"presentLocalNotification",value:function(e){a.presentLocalNotification(e)}},{key:"scheduleLocalNotification",value:function(e){a.scheduleLocalNotification(e)}},{key:"cancelAllLocalNotifications",value:function(){a.cancelAllLocalNotifications()}},{key:"removeAllDeliveredNotifications",value:function(){a.removeAllDeliveredNotifications()}},{key:"getDeliveredNotifications",value:function(e){a.getDeliveredNotifications(e)}},{key:"removeDeliveredNotifications",value:function(e){a.removeDeliveredNotifications(e)}},{key:"setApplicationIconBadgeNumber",value:function(e){a.setApplicationIconBadgeNumber(e)}},{key:"getApplicationIconBadgeNumber",value:function(e){a.getApplicationIconBadgeNumber(e)}},{key:"cancelLocalNotifications",value:function(e){a.cancelLocalNotifications(e)}},{key:"getScheduledLocalNotifications",value:function(e){a.getScheduledLocalNotifications(e)}},{key:"addEventListener",value:function(t,i){c('notification'===t||'register'===t||'registrationError'===t||'localNotification'===t,'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events');var o;'notification'===t?o=r.addListener("remoteNotificationReceived",function(t){i(new e(t))}):'localNotification'===t?o=r.addListener("localNotificationReceived",function(t){i(new e(t))}):'register'===t?o=r.addListener("remoteNotificationsRegistered",function(e){i(e.deviceToken)}):'registrationError'===t&&(o=r.addListener("remoteNotificationRegistrationError",function(e){i(e)})),l.set(t,o)}},{key:"removeEventListener",value:function(e,t){c('notification'===e||'register'===e||'registrationError'===e||'localNotification'===e,'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events');var i=l.get(e);i&&(i.remove(),l.delete(e))}},{key:"requestPermissions",value:function(e){var t={};return t=e?{alert:!!e.alert,badge:!!e.badge,sound:!!e.sound}:{alert:!0,badge:!0,sound:!0},a.requestPermissions(t)}},{key:"abandonPermissions",value:function(){a.abandonPermissions()}},{key:"checkPermissions",value:function(e){c('function'==typeof e,'Must provide a valid callback'),a.checkPermissions(e)}},{key:"getInitialNotification",value:function(){return a.getInitialNotification().then(function(t){return t&&new e(t)})}}]);function e(t){var i=this;babelHelpers.classCallCheck(this,e),this._data={},this._remoteNotificationCompleteCallbackCalled=!1,this._isRemote=t.remote,this._isRemote&&(this._notificationId=t.notificationId),t.remote?Object.keys(t).forEach(function(e){var o=t[e];'aps'===e?(i._alert=o.alert,i._sound=o.sound,i._badgeCount=o.badge,i._category=o.category,i._contentAvailable=o['content-available']):i._data[e]=o}):(this._badgeCount=t.applicationIconBadgeNumber,this._sound=t.soundName,this._alert=t.alertBody,this._data=t.userInfo,this._category=t.category)}return babelHelpers.createClass(e,[{key:"finish",value:function(e){this._isRemote&&this._notificationId&&!this._remoteNotificationCompleteCallbackCalled&&(this._remoteNotificationCompleteCallbackCalled=!0,a.onFinishRemoteNotification(this._notificationId,e))}},{key:"getMessage",value:function(){return this._alert}},{key:"getSound",value:function(){return this._sound}},{key:"getCategory",value:function(){return this._category}},{key:"getAlert",value:function(){return this._alert}},{key:"getContentAvailable",value:function(){return this._contentAvailable}},{key:"getBadgeCount",value:function(){return this._badgeCount}},{key:"getData",value:function(){return this._data}}]),e})();s.FetchResult={NewData:'UIBackgroundFetchResultNewData',NoData:'UIBackgroundFetchResultNoData',ResultFailed:'UIBackgroundFetchResultFailed'},i.exports=s},287); -__d(function(n,t,o,e){'use strict';var s={get:function(n){return console.warn('Settings is not yet supported on Android'),null},set:function(n){console.warn('Settings is not yet supported on Android')},watchKeys:function(n,t){return console.warn('Settings is not yet supported on Android'),-1},clearWatch:function(n){console.warn('Settings is not yet supported on Android')}};o.exports=s},288); -__d(function(e,t,n,s){'use strict';t(28);var i=t(18),o=(t(129),t(20)),l=(o.ActionSheetManager,o.ShareModule),r=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"share",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i('object'==typeof e&&null!==e,'Content to share must be a valid object'),i('string'==typeof e.url||'string'==typeof e.message,'At least one of URL and message is required'),i('object'==typeof t&&null!==t,'Options must be a valid object'),i(!e.title||'string'==typeof e.title,'Invalid title: title should be a string.'),l.share(e,t.dialogTitle)}},{key:"sharedAction",get:function(){return'sharedAction'}},{key:"dismissedAction",get:function(){return'dismissedAction'}}]),e})();n.exports=r},289); -__d(function(t,a,r,e){'use strict';var n=a(75);r.exports=new n('StatusBarManager')},290); -__d(function(e,t,n,r){'use strict';var i=t(20).TimePickerAndroid,s=(function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"open",value:function(e){return regeneratorRuntime.async(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.open(e));case 1:case"end":return t.stop()}},null,this)}},{key:"timeSetAction",get:function(){return'timeSetAction'}},{key:"dismissedAction",get:function(){return'dismissedAction'}}]),e})();n.exports=s},291); -__d(function(r,t,e,a){'use strict';var n=t(20).Vibration;t(28);var i={vibrate:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if('number'==typeof r)n.vibrate(r);else{if(!Array.isArray(r))throw new Error('Vibration pattern should be a number or array');n.vibrateByPattern(r,t?0:-1)}},cancel:function(){n.cancel()}};e.exports=i},292); -__d(function(t,i,o,n){'use strict';var r=i(32),s={vibrate:function(){r('VibrationIOS is not supported on this platform!')}};o.exports=s},293); -__d(function(_,t,E,s){'use strict';var O=t(43).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.exports=O.takeSnapshot},294); -;require(55); -;require(0); \ No newline at end of file +var __DEV__=true,__BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.now(),process=this.process||{};process.env=process.env||{};process.env.NODE_ENV='development'; +(function (global) { + 'use strict'; + + function _toConsumableArray(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return Array.from(arr); + } + } + + global.require = _require; + global.__d = define; + var modules = Object.create(null); + + if (__DEV__) { + var verboseNamesToModuleIds = Object.create(null); + } + + function define(factory, moduleId, dependencyMap) { + if (moduleId in modules) { + if (__DEV__) { + var inverseDependencies = arguments[4]; + + if (inverseDependencies) { + global.__accept(moduleId, factory, dependencyMap, inverseDependencies); + } else { + console.warn("Trying to define twice module ID " + moduleId + " in the same bundle"); + } + } + + return; + } + + modules[moduleId] = { + dependencyMap: dependencyMap, + exports: undefined, + factory: factory, + hasError: false, + isInitialized: false + }; + + if (__DEV__) { + modules[moduleId].hot = createHotReloadingObject(); + var verboseName = arguments[3]; + + if (verboseName) { + modules[moduleId].verboseName = verboseName; + verboseNamesToModuleIds[verboseName] = moduleId; + } + } + } + + function _require(moduleId) { + if (__DEV__ && typeof moduleId === 'string') { + var verboseName = moduleId; + moduleId = verboseNamesToModuleIds[verboseName]; + + if (moduleId == null) { + throw new Error("Unknown named module: '" + verboseName + "'"); + } else { + console.warn("Requiring module '" + verboseName + "' by name is only supported for " + 'debugging purposes and will BREAK IN PRODUCTION!'); + } + } + + var moduleIdReallyIsNumber = moduleId; + var module = modules[moduleIdReallyIsNumber]; + return module && module.isInitialized ? module.exports : guardedLoadModule(moduleIdReallyIsNumber, module); + } + + var inGuard = false; + + function guardedLoadModule(moduleId, module) { + if (!inGuard && global.ErrorUtils) { + inGuard = true; + var returnValue = void 0; + + try { + returnValue = loadModuleImplementation(moduleId, module); + } catch (e) { + global.ErrorUtils.reportFatalError(e); + } + + inGuard = false; + return returnValue; + } else { + return loadModuleImplementation(moduleId, module); + } + } + + var ID_MASK_SHIFT = 16; + var LOCAL_ID_MASK = ~0 >>> ID_MASK_SHIFT; + + function unpackModuleId(moduleId) { + var segmentId = moduleId >>> ID_MASK_SHIFT; + var localId = moduleId & LOCAL_ID_MASK; + return { + segmentId: segmentId, + localId: localId + }; + } + + _require.unpackModuleId = unpackModuleId; + + function packModuleId(value) { + return value.segmentId << ID_MASK_SHIFT + value.localId; + } + + _require.packModuleId = packModuleId; + + function loadModuleImplementation(moduleId, module) { + var nativeRequire = global.nativeRequire; + + if (!module && nativeRequire) { + var _unpackModuleId = unpackModuleId(moduleId); + + var segmentId = _unpackModuleId.segmentId, + localId = _unpackModuleId.localId; + nativeRequire(localId, segmentId); + module = modules[moduleId]; + } + + if (!module) { + throw unknownModuleError(moduleId); + } + + if (module.hasError) { + throw moduleThrewError(moduleId, module.error); + } + + if (__DEV__) { + var Systrace = _require.Systrace; + } + + module.isInitialized = true; + var exports = module.exports = {}; + var _module = module; + var factory = _module.factory, + dependencyMap = _module.dependencyMap; + + try { + if (__DEV__) { + Systrace.beginEvent('JS_require_' + (module.verboseName || moduleId)); + } + + var moduleObject = { + exports: exports + }; + + if (__DEV__ && module.hot) { + moduleObject.hot = module.hot; + } + + factory(global, _require, moduleObject, exports, dependencyMap); + + if (!__DEV__) { + module.factory = undefined; + module.dependencyMap = undefined; + } + + if (__DEV__) { + Systrace.endEvent(); + } + + return module.exports = moduleObject.exports; + } catch (e) { + module.hasError = true; + module.error = e; + module.isInitialized = false; + module.exports = undefined; + throw e; + } + } + + function unknownModuleError(id) { + var message = 'Requiring unknown module "' + id + '".'; + + if (__DEV__) { + message += 'If you are sure the module is there, try restarting Metro Bundler. ' + 'You may also want to run `yarn`, or `npm install` (depending on your environment).'; + } + + return Error(message); + } + + function moduleThrewError(id, error) { + var displayName = __DEV__ && modules[id] && modules[id].verboseName || id; + return Error('Requiring module "' + displayName + '", which threw an exception: ' + error); + } + + if (__DEV__) { + _require.Systrace = { + beginEvent: function beginEvent() {}, + endEvent: function endEvent() {} + }; + + _require.getModules = function () { + return modules; + }; + + var createHotReloadingObject = function createHotReloadingObject() { + var hot = { + acceptCallback: null, + accept: function accept(callback) { + hot.acceptCallback = callback; + } + }; + return hot; + }; + + var acceptAll = function acceptAll(dependentModules, inverseDependencies) { + if (!dependentModules || dependentModules.length === 0) { + return true; + } + + var notAccepted = dependentModules.filter(function (module) { + return !accept(module, undefined, undefined, inverseDependencies); + }); + var parents = []; + + for (var i = 0; i < notAccepted.length; i++) { + if (inverseDependencies[notAccepted[i]].length === 0) { + return false; + } + + parents.push.apply(parents, _toConsumableArray(inverseDependencies[notAccepted[i]])); + } + + return acceptAll(parents, inverseDependencies); + }; + + var accept = function accept(id, factory, dependencyMap, inverseDependencies) { + var mod = modules[id]; + + if (!mod && factory) { + return true; + } + + var hot = mod.hot; + + if (!hot) { + console.warn('Cannot accept module because Hot Module Replacement ' + 'API was not installed.'); + return false; + } + + if (factory) { + mod.factory = factory; + } + + if (dependencyMap) { + mod.dependencyMap = dependencyMap; + } + + mod.hasError = false; + mod.isInitialized = false; + + _require(id); + + if (hot.acceptCallback) { + hot.acceptCallback(); + return true; + } else { + if (!inverseDependencies) { + throw new Error('Undefined `inverseDependencies`'); + } + + return acceptAll(inverseDependencies[id], inverseDependencies); + } + }; + + global.__accept = accept; + } +})(this); +(function (global) { + Object.assign = function (target, sources) { + if (__DEV__) { + if (target == null) { + throw new TypeError('Object.assign target cannot be null or undefined'); + } + + if (typeof target !== 'object' && typeof target !== 'function') { + throw new TypeError('In this environment the target of assign MUST be an object. ' + 'This error is a performance optimization and not spec compliant.'); + } + } + + for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) { + var nextSource = arguments[nextIndex]; + + if (nextSource == null) { + continue; + } + + if (__DEV__) { + if (typeof nextSource !== 'object' && typeof nextSource !== 'function') { + throw new TypeError('In this environment the sources for assign MUST be an object. ' + 'This error is a performance optimization and not spec compliant.'); + } + } + + for (var key in nextSource) { + if (__DEV__) { + var hasOwnProperty = Object.prototype.hasOwnProperty; + + if (!hasOwnProperty.call(nextSource, key)) { + throw new TypeError('One of the sources for assign has an enumerable key on the ' + 'prototype chain. Are you trying to assign a prototype property? ' + 'We don\'t allow it, as this is an edge case that we do not support. ' + 'This error is a performance optimization and not spec compliant.'); + } + } + + target[key] = nextSource[key]; + } + } + + return target; + }; +})(this); +(function (global) { + var inspect = function () { + function inspect(obj, opts) { + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + return formatValue(ctx, obj, opts.depth); + } + + function stylizeNoColor(str, styleType) { + return str; + } + + function arrayToHash(array) { + var hash = {}; + array.forEach(function (val, idx) { + hash[val] = true; + }); + return hash; + } + + function formatValue(ctx, value, recurseTimes) { + var primitive = formatPrimitive(ctx, value); + + if (primitive) { + return primitive; + } + + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + + if (isError(value)) { + return formatError(value); + } + } + + var base = '', + array = false, + braces = ['{', '}']; + + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + var output; + + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function (key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + return reduceToSingleString(output, base, braces); + } + + function formatPrimitive(ctx, value) { + if (isUndefined(value)) return ctx.stylize('undefined', 'undefined'); + + if (isString(value)) { + var simple = "'" + JSON.stringify(value).replace(/^"|"$/g, '').replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; + return ctx.stylize(simple, 'string'); + } + + if (isNumber(value)) return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) return ctx.stylize('' + value, 'boolean'); + if (isNull(value)) return ctx.stylize('null', 'null'); + } + + function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; + } + + function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true)); + } else { + output.push(''); + } + } + + keys.forEach(function (key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); + } + }); + return output; + } + + function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { + value: value[key] + }; + + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function (line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function (line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + + name = JSON.stringify('' + key); + + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; + } + + function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function (prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + (base === '' ? '' : base + '\n ') + ' ' + output.join(',\n ') + ' ' + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; + } + + function isArray(ar) { + return Array.isArray(ar); + } + + function isBoolean(arg) { + return typeof arg === 'boolean'; + } + + function isNull(arg) { + return arg === null; + } + + function isNullOrUndefined(arg) { + return arg == null; + } + + function isNumber(arg) { + return typeof arg === 'number'; + } + + function isString(arg) { + return typeof arg === 'string'; + } + + function isSymbol(arg) { + return typeof arg === 'symbol'; + } + + function isUndefined(arg) { + return arg === void 0; + } + + function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; + } + + function isObject(arg) { + return typeof arg === 'object' && arg !== null; + } + + function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; + } + + function isError(e) { + return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error); + } + + function isFunction(arg) { + return typeof arg === 'function'; + } + + function isPrimitive(arg) { + return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || typeof arg === 'undefined'; + } + + function objectToString(o) { + return Object.prototype.toString.call(o); + } + + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + + return inspect; + }(); + + var OBJECT_COLUMN_NAME = '(index)'; + var LOG_LEVELS = { + trace: 0, + info: 1, + warn: 2, + error: 3 + }; + var INSPECTOR_LEVELS = []; + INSPECTOR_LEVELS[LOG_LEVELS.trace] = 'debug'; + INSPECTOR_LEVELS[LOG_LEVELS.info] = 'log'; + INSPECTOR_LEVELS[LOG_LEVELS.warn] = 'warning'; + INSPECTOR_LEVELS[LOG_LEVELS.error] = 'error'; + var INSPECTOR_FRAMES_TO_SKIP = __DEV__ ? 2 : 1; + + if (global.nativeLoggingHook) { + function getNativeLogFunction(level) { + return function () { + var str = void 0; + + if (arguments.length === 1 && typeof arguments[0] === 'string') { + str = arguments[0]; + } else { + str = Array.prototype.map.call(arguments, function (arg) { + return inspect(arg, { + depth: 10 + }); + }).join(', '); + } + + var logLevel = level; + + if (str.slice(0, 9) === 'Warning: ' && logLevel >= LOG_LEVELS.error) { + logLevel = LOG_LEVELS.warn; + } + + if (global.__inspectorLog) { + global.__inspectorLog(INSPECTOR_LEVELS[logLevel], str, [].slice.call(arguments), INSPECTOR_FRAMES_TO_SKIP); + } + + global.nativeLoggingHook(str, logLevel); + }; + } + + function repeat(element, n) { + return Array.apply(null, Array(n)).map(function () { + return element; + }); + } + + function consoleTablePolyfill(rows) { + if (!Array.isArray(rows)) { + var data = rows; + rows = []; + + for (var key in data) { + if (data.hasOwnProperty(key)) { + var row = data[key]; + row[OBJECT_COLUMN_NAME] = key; + rows.push(row); + } + } + } + + if (rows.length === 0) { + global.nativeLoggingHook('', LOG_LEVELS.info); + return; + } + + var columns = Object.keys(rows[0]).sort(); + var stringRows = []; + var columnWidths = []; + columns.forEach(function (k, i) { + columnWidths[i] = k.length; + + for (var j = 0; j < rows.length; j++) { + var cellStr = (rows[j][k] || '?').toString(); + stringRows[j] = stringRows[j] || []; + stringRows[j][i] = cellStr; + columnWidths[i] = Math.max(columnWidths[i], cellStr.length); + } + }); + + function joinRow(row, space) { + var cells = row.map(function (cell, i) { + var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join(''); + return cell + extraSpaces; + }); + space = space || ' '; + return cells.join(space + '|' + space); + } + + var separators = columnWidths.map(function (columnWidth) { + return repeat('-', columnWidth).join(''); + }); + var separatorRow = joinRow(separators, '-'); + var header = joinRow(columns); + var table = [header, separatorRow]; + + for (var i = 0; i < rows.length; i++) { + table.push(joinRow(stringRows[i])); + } + + global.nativeLoggingHook('\n' + table.join('\n'), LOG_LEVELS.info); + } + + var originalConsole = global.console; + global.console = { + error: getNativeLogFunction(LOG_LEVELS.error), + info: getNativeLogFunction(LOG_LEVELS.info), + log: getNativeLogFunction(LOG_LEVELS.info), + warn: getNativeLogFunction(LOG_LEVELS.warn), + trace: getNativeLogFunction(LOG_LEVELS.trace), + debug: getNativeLogFunction(LOG_LEVELS.trace), + table: consoleTablePolyfill + }; + + if (__DEV__ && originalConsole) { + var descriptor = Object.getOwnPropertyDescriptor(global, 'console'); + + if (descriptor) { + Object.defineProperty(global, 'originalConsole', descriptor); + } + + Object.keys(console).forEach(function (methodName) { + var reactNativeMethod = console[methodName]; + + if (originalConsole[methodName]) { + console[methodName] = function () { + originalConsole[methodName].apply(originalConsole, arguments); + reactNativeMethod.apply(console, arguments); + }; + } + }); + } + } else if (!global.console) { + var log = global.print || function consoleLoggingStub() {}; + + global.console = { + error: log, + info: log, + log: log, + warn: log, + trace: log, + debug: log, + table: log + }; + } +})(this); +(function (global) { + var _inGuard = 0; + + var _globalHandler = function onError(e) { + throw e; + }; + + var ErrorUtils = { + setGlobalHandler: function setGlobalHandler(fun) { + _globalHandler = fun; + }, + getGlobalHandler: function getGlobalHandler() { + return _globalHandler; + }, + reportError: function reportError(error) { + _globalHandler && _globalHandler(error); + }, + reportFatalError: function reportFatalError(error) { + _globalHandler && _globalHandler(error, true); + }, + applyWithGuard: function applyWithGuard(fun, context, args) { + try { + _inGuard++; + return fun.apply(context, args); + } catch (e) { + ErrorUtils.reportError(e); + } finally { + _inGuard--; + } + + return null; + }, + applyWithGuardIfNeeded: function applyWithGuardIfNeeded(fun, context, args) { + if (ErrorUtils.inGuard()) { + return fun.apply(context, args); + } else { + ErrorUtils.applyWithGuard(fun, context, args); + } + + return null; + }, + inGuard: function inGuard() { + return _inGuard; + }, + guard: function guard(fun, name, context) { + if (typeof fun !== 'function') { + console.warn('A function must be passed to ErrorUtils.guard, got ', fun); + return null; + } + + name = name || fun.name || ''; + + function guarded() { + return ErrorUtils.applyWithGuard(fun, context || this, arguments, null, name); + } + + return guarded; + } + }; + global.ErrorUtils = ErrorUtils; +})(this); +(function (global) { + if (Number.EPSILON === undefined) { + Object.defineProperty(Number, 'EPSILON', { + value: Math.pow(2, -52) + }); + } + + if (Number.MAX_SAFE_INTEGER === undefined) { + Object.defineProperty(Number, 'MAX_SAFE_INTEGER', { + value: Math.pow(2, 53) - 1 + }); + } + + if (Number.MIN_SAFE_INTEGER === undefined) { + Object.defineProperty(Number, 'MIN_SAFE_INTEGER', { + value: -(Math.pow(2, 53) - 1) + }); + } + + if (!Number.isNaN) { + var globalIsNaN = global.isNaN; + Object.defineProperty(Number, 'isNaN', { + configurable: true, + enumerable: false, + value: function isNaN(value) { + return typeof value === 'number' && globalIsNaN(value); + }, + writable: true + }); + } +})(this); +(function (global) { + if (!String.prototype.startsWith) { + String.prototype.startsWith = function (search) { + 'use strict'; + + if (this == null) { + throw TypeError(); + } + + var string = String(this); + var pos = arguments.length > 1 ? Number(arguments[1]) || 0 : 0; + var start = Math.min(Math.max(pos, 0), string.length); + return string.indexOf(String(search), pos) === start; + }; + } + + if (!String.prototype.endsWith) { + String.prototype.endsWith = function (search) { + 'use strict'; + + if (this == null) { + throw TypeError(); + } + + var string = String(this); + var stringLength = string.length; + var searchString = String(search); + var pos = arguments.length > 1 ? Number(arguments[1]) || 0 : stringLength; + var end = Math.min(Math.max(pos, 0), stringLength); + var start = end - searchString.length; + + if (start < 0) { + return false; + } + + return string.lastIndexOf(searchString, start) === start; + }; + } + + if (!String.prototype.repeat) { + String.prototype.repeat = function (count) { + 'use strict'; + + if (this == null) { + throw TypeError(); + } + + var string = String(this); + count = Number(count) || 0; + + if (count < 0 || count === Infinity) { + throw RangeError(); + } + + if (count === 1) { + return string; + } + + var result = ''; + + while (count) { + if (count & 1) { + result += string; + } + + if (count >>= 1) { + string += string; + } + } + + return result; + }; + } + + if (!String.prototype.includes) { + String.prototype.includes = function (search, start) { + 'use strict'; + + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; + } + }; + } + + if (!String.prototype.codePointAt) { + String.prototype.codePointAt = function (position) { + if (this == null) { + throw TypeError(); + } + + var string = String(this); + var size = string.length; + var index = position ? Number(position) : 0; + + if (Number.isNaN(index)) { + index = 0; + } + + if (index < 0 || index >= size) { + return undefined; + } + + var first = string.charCodeAt(index); + var second; + + if (first >= 0xd800 && first <= 0xdbff && size > index + 1) { + second = string.charCodeAt(index + 1); + + if (second >= 0xdc00 && second <= 0xdfff) { + return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000; + } + } + + return first; + }; + } +})(this); +(function (global) { + function findIndex(predicate, context) { + if (this == null) { + throw new TypeError('Array.prototype.findIndex called on null or undefined'); + } + + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + + var list = Object(this); + var length = list.length >>> 0; + + for (var i = 0; i < length; i++) { + if (predicate.call(context, list[i], i, list)) { + return i; + } + } + + return -1; + } + + if (!Array.prototype.findIndex) { + Object.defineProperty(Array.prototype, 'findIndex', { + enumerable: false, + writable: true, + configurable: true, + value: findIndex + }); + } + + if (!Array.prototype.find) { + Object.defineProperty(Array.prototype, 'find', { + enumerable: false, + writable: true, + configurable: true, + value: function value(predicate, context) { + if (this == null) { + throw new TypeError('Array.prototype.find called on null or undefined'); + } + + var index = findIndex.call(this, predicate, context); + return index === -1 ? undefined : this[index]; + } + }); + } + + if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, 'includes', { + enumerable: false, + writable: true, + configurable: true, + value: function value(searchElement) { + var O = Object(this); + var len = parseInt(O.length) || 0; + + if (len === 0) { + return false; + } + + var n = parseInt(arguments[1]) || 0; + var k; + + if (n >= 0) { + k = n; + } else { + k = len + n; + + if (k < 0) { + k = 0; + } + } + + var currentElement; + + while (k < len) { + currentElement = O[k]; + + if (searchElement === currentElement || searchElement !== searchElement && currentElement !== currentElement) { + return true; + } + + k++; + } + + return false; + } + }); + } +})(this); +(function (global) { + if (!Array.from) { + Array.from = function (arrayLike) { + if (arrayLike == null) { + throw new TypeError('Object is null or undefined'); + } + + var mapFn = arguments[1]; + var thisArg = arguments[2]; + var C = this; + var items = Object(arrayLike); + var symbolIterator = typeof Symbol === 'function' ? typeof Symbol === "function" ? Symbol.iterator : "@@iterator" : '@@iterator'; + var mapping = typeof mapFn === 'function'; + var usingIterator = typeof items[symbolIterator] === 'function'; + var key = 0; + var ret; + var value; + + if (usingIterator) { + ret = typeof C === 'function' ? new C() : []; + var it = items[symbolIterator](); + var next; + + while (!(next = it.next()).done) { + value = next.value; + + if (mapping) { + value = mapFn.call(thisArg, value, key); + } + + ret[key] = value; + key += 1; + } + + ret.length = key; + return ret; + } + + var len = items.length; + + if (isNaN(len) || len < 0) { + len = 0; + } + + ret = typeof C === 'function' ? new C(len) : new Array(len); + + while (key < len) { + value = items[key]; + + if (mapping) { + value = mapFn.call(thisArg, value, key); + } + + ret[key] = value; + key += 1; + } + + ret.length = key; + return ret; + }; + } +})(this); +(function (global) { + (function () { + 'use strict'; + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + if (typeof Object.entries !== 'function') { + Object.entries = function (object) { + if (object == null) { + throw new TypeError('Object.entries called on non-object'); + } + + var entries = []; + + for (var key in object) { + if (hasOwnProperty.call(object, key)) { + entries.push([key, object[key]]); + } + } + + return entries; + }; + } + + if (typeof Object.values !== 'function') { + Object.values = function (object) { + if (object == null) { + throw new TypeError('Object.values called on non-object'); + } + + var values = []; + + for (var key in object) { + if (hasOwnProperty.call(object, key)) { + values.push(object[key]); + } + } + + return values; + }; + } + })(); +})(this); +(function (global) { + var babelHelpers = global.babelHelpers = {}; + babelHelpers.typeof = typeof Symbol === "function" && typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }; + + babelHelpers.createRawReactElement = function () { + var REACT_ELEMENT_TYPE = typeof Symbol === "function" && (typeof Symbol === "function" ? Symbol.for : "@@for") && (typeof Symbol === "function" ? Symbol.for : "@@for")("react.element") || 0xeac7; + return function createRawReactElement(type, key, props) { + return { + $$typeof: REACT_ELEMENT_TYPE, + type: type, + key: key, + ref: null, + props: props, + _owner: null + }; + }; + }(); + + babelHelpers.classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + + babelHelpers.createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + babelHelpers.defineEnumerableProperties = function (obj, descs) { + for (var key in descs) { + var desc = descs[key]; + desc.configurable = desc.enumerable = true; + if ('value' in desc) desc.writable = true; + Object.defineProperty(obj, key, desc); + } + + return obj; + }; + + babelHelpers.defineProperty = function (obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + }; + + babelHelpers._extends = babelHelpers.extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + babelHelpers.get = function get(object, property, receiver) { + if (object === null) object = Function.prototype; + var desc = Object.getOwnPropertyDescriptor(object, property); + + if (desc === undefined) { + var parent = Object.getPrototypeOf(object); + + if (parent === null) { + return undefined; + } else { + return get(parent, property, receiver); + } + } else if ("value" in desc) { + return desc.value; + } else { + var getter = desc.get; + + if (getter === undefined) { + return undefined; + } + + return getter.call(receiver); + } + }; + + babelHelpers.inherits = function (subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + }; + + babelHelpers.interopRequireDefault = function (obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + }; + + babelHelpers.interopRequireWildcard = function (obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + }; + + babelHelpers.objectWithoutProperties = function (obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + }; + + babelHelpers.possibleConstructorReturn = function (self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + }; + + babelHelpers.slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((typeof Symbol === "function" ? Symbol.iterator : "@@iterator") in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + babelHelpers.taggedTemplateLiteral = function (strings, raw) { + return Object.freeze(Object.defineProperties(strings, { + raw: { + value: Object.freeze(raw) + } + })); + }; + + babelHelpers.toArray = function (arr) { + return Array.isArray(arr) ? arr : Array.from(arr); + }; + + babelHelpers.toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return Array.from(arr); + } + }; +})(this); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/index.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactRedux = require(_dependencyMap[1], "react-redux"); + + var _discover = require(_dependencyMap[2], "./page/discover"); + + var _discover2 = babelHelpers.interopRequireDefault(_discover); + + var _reactNative = require(_dependencyMap[3], "react-native"); + + var _redux = require(_dependencyMap[4], "redux"); + + var _reactNavigation = require(_dependencyMap[5], "react-navigation"); + + var _AppNavigator = require(_dependencyMap[6], "./component/AppNavigator"); + + var _AppNavigator2 = babelHelpers.interopRequireDefault(_AppNavigator); + + var _reduxPersist = require(_dependencyMap[7], "redux-persist"); + + var _reduxPersistTransformCompress = require(_dependencyMap[8], "redux-persist-transform-compress"); + + var _reduxPersistTransformCompress2 = babelHelpers.interopRequireDefault(_reduxPersistTransformCompress); + + var _reduxPersistTransformFilter = require(_dependencyMap[9], "redux-persist-transform-filter"); + + var _reduxPersistTransformFilter2 = babelHelpers.interopRequireDefault(_reduxPersistTransformFilter); + + var _reduxThunk = require(_dependencyMap[10], "redux-thunk"); + + var _reduxThunk2 = babelHelpers.interopRequireDefault(_reduxThunk); + + var _lbryRedux = require(_dependencyMap[11], "lbry-redux"); + + var _redux2 = require(_dependencyMap[12], "./utils/redux"); + + function isFunction(object) { + return typeof object === 'function'; + } + + function isNotFunction(object) { + return !isFunction(object); + } + + function createBulkThunkMiddleware() { + return function (_ref) { + var dispatch = _ref.dispatch, + getState = _ref.getState; + return function (next) { + return function (action) { + if (action.type === 'BATCH_ACTIONS') { + action.actions.filter(isFunction).map(function (actionFn) { + return actionFn(dispatch, getState); + }); + } + + return next(action); + }; + }; + }; + } + + function enableBatching(reducer) { + return function batchingReducer(state, action) { + switch (action.type) { + case 'BATCH_ACTIONS': + return action.actions.filter(isNotFunction).reduce(batchingReducer, state); + + default: + return reducer(state, action); + } + }; + } + + var router = _AppNavigator.AppNavigator.router; + var navAction = router.getActionForPathAndParams('Splash'); + var initialNavState = router.getStateForAction(navAction); + + var navigatorReducer = function navigatorReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialNavState; + var action = arguments[1]; + + var nextState = _AppNavigator.AppNavigator.router.getStateForAction(action, state); + + return nextState || state; + }; + + var reducers = (0, _redux.combineReducers)({ + claims: _lbryRedux.claimsReducer, + costInfo: _lbryRedux.costInfoReducer, + fileInfo: _lbryRedux.fileInfoReducer, + search: _lbryRedux.searchReducer, + wallet: _lbryRedux.walletReducer, + nav: navigatorReducer + }); + var bulkThunk = createBulkThunkMiddleware(); + var middleware = [_reduxThunk2.default, bulkThunk, _redux2.reactNavigationMiddleware]; + var composeEnhancers = _redux.compose; + var store = (0, _redux.createStore)(enableBatching(reducers), {}, composeEnhancers((0, _reduxPersist.autoRehydrate)(), _redux.applyMiddleware.apply(undefined, middleware))); + var compressor = (0, _reduxPersistTransformCompress2.default)(); + var saveClaimsFilter = (0, _reduxPersistTransformFilter2.default)('claims', ['byId', 'claimsByUri']); + var subscriptionsFilter = (0, _reduxPersistTransformFilter2.default)('subscriptions', ['subscriptions']); + var persistOptions = { + whitelist: ['claims', 'subscriptions'], + transforms: [saveClaimsFilter, subscriptionsFilter, compressor], + debounce: 10000, + storage: _reactNative.AsyncStorage + }; + (0, _reduxPersist.persistStore)(store, persistOptions, function (err) { + if (err) { + console.log('Unable to load saved SETTINGS'); + } + }); + + var LBRYApp = function (_React$Component) { + babelHelpers.inherits(LBRYApp, _React$Component); + + function LBRYApp() { + babelHelpers.classCallCheck(this, LBRYApp); + return babelHelpers.possibleConstructorReturn(this, (LBRYApp.__proto__ || Object.getPrototypeOf(LBRYApp)).apply(this, arguments)); + } + + babelHelpers.createClass(LBRYApp, [{ + key: "render", + value: function render() { + return _react2.default.createElement( + _reactRedux.Provider, + { + store: store, + __source: { + fileName: _jsxFileName, + lineNumber: 107 + } + }, + _react2.default.createElement(_AppNavigator2.default, { + __source: { + fileName: _jsxFileName, + lineNumber: 108 + } + }) + ); + } + }]); + return LBRYApp; + }(_react2.default.Component); + + _reactNative.AppRegistry.registerComponent('LBRYApp', function () { + return LBRYApp; + }); + + exports.default = LBRYApp; +},11,[12,22,61,66,36,376,609,621,633,635,642,62,616],"LBRYApp/src/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + if (process.env.NODE_ENV === 'production') { + module.exports = require(_dependencyMap[0], './cjs/react.production.min.js'); + } else { + module.exports = require(_dependencyMap[1], './cjs/react.development.js'); + } +},12,[13,17],"react/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + /** @license React v16.2.0 + * react.production.min.js + * + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */'use strict'; + + var m = require(_dependencyMap[0], "object-assign"), + n = require(_dependencyMap[1], "fbjs/lib/emptyObject"), + p = require(_dependencyMap[2], "fbjs/lib/emptyFunction"), + q = "function" === typeof Symbol && Symbol["for"], + r = q ? Symbol["for"]("react.element") : 60103, + t = q ? Symbol["for"]("react.call") : 60104, + u = q ? Symbol["for"]("react.return") : 60105, + v = q ? Symbol["for"]("react.portal") : 60106, + w = q ? Symbol["for"]("react.fragment") : 60107, + x = "function" === typeof Symbol && (typeof Symbol === "function" ? Symbol.iterator : "@@iterator"); + + function y(a) { + for (var b = arguments.length - 1, e = "Minified React error #" + a + "; visit http://facebook.github.io/react/docs/error-decoder.html?invariant\x3d" + a, c = 0; c < b; c++) { + e += "\x26args[]\x3d" + encodeURIComponent(arguments[c + 1]); + } + + b = Error(e + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."); + b.name = "Invariant Violation"; + b.framesToPop = 1; + throw b; + } + + var z = { + isMounted: function isMounted() { + return !1; + }, + enqueueForceUpdate: function enqueueForceUpdate() {}, + enqueueReplaceState: function enqueueReplaceState() {}, + enqueueSetState: function enqueueSetState() {} + }; + + function A(a, b, e) { + this.props = a; + this.context = b; + this.refs = n; + this.updater = e || z; + } + + A.prototype.isReactComponent = {}; + + A.prototype.setState = function (a, b) { + "object" !== typeof a && "function" !== typeof a && null != a ? y("85") : void 0; + this.updater.enqueueSetState(this, a, b, "setState"); + }; + + A.prototype.forceUpdate = function (a) { + this.updater.enqueueForceUpdate(this, a, "forceUpdate"); + }; + + function B(a, b, e) { + this.props = a; + this.context = b; + this.refs = n; + this.updater = e || z; + } + + function C() {} + + C.prototype = A.prototype; + var D = B.prototype = new C(); + D.constructor = B; + m(D, A.prototype); + D.isPureReactComponent = !0; + + function E(a, b, e) { + this.props = a; + this.context = b; + this.refs = n; + this.updater = e || z; + } + + var F = E.prototype = new C(); + F.constructor = E; + m(F, A.prototype); + F.unstable_isAsyncReactComponent = !0; + + F.render = function () { + return this.props.children; + }; + + var G = { + current: null + }, + H = Object.prototype.hasOwnProperty, + I = { + key: !0, + ref: !0, + __self: !0, + __source: !0 + }; + + function J(a, b, e) { + var c, + d = {}, + g = null, + k = null; + if (null != b) for (c in void 0 !== b.ref && (k = b.ref), void 0 !== b.key && (g = "" + b.key), b) { + H.call(b, c) && !I.hasOwnProperty(c) && (d[c] = b[c]); + } + var f = arguments.length - 2; + if (1 === f) d.children = e;else if (1 < f) { + for (var h = Array(f), l = 0; l < f; l++) { + h[l] = arguments[l + 2]; + } + + d.children = h; + } + if (a && a.defaultProps) for (c in f = a.defaultProps, f) { + void 0 === d[c] && (d[c] = f[c]); + } + return { + $$typeof: r, + type: a, + key: g, + ref: k, + props: d, + _owner: G.current + }; + } + + function K(a) { + return "object" === typeof a && null !== a && a.$$typeof === r; + } + + function escape(a) { + var b = { + "\x3d": "\x3d0", + ":": "\x3d2" + }; + return "$" + ("" + a).replace(/[=:]/g, function (a) { + return b[a]; + }); + } + + var L = /\/+/g, + M = []; + + function N(a, b, e, c) { + if (M.length) { + var d = M.pop(); + d.result = a; + d.keyPrefix = b; + d.func = e; + d.context = c; + d.count = 0; + return d; + } + + return { + result: a, + keyPrefix: b, + func: e, + context: c, + count: 0 + }; + } + + function O(a) { + a.result = null; + a.keyPrefix = null; + a.func = null; + a.context = null; + a.count = 0; + 10 > M.length && M.push(a); + } + + function P(a, b, e, c) { + var d = typeof a; + if ("undefined" === d || "boolean" === d) a = null; + var g = !1; + if (null === a) g = !0;else switch (d) { + case "string": + case "number": + g = !0; + break; + + case "object": + switch (a.$$typeof) { + case r: + case t: + case u: + case v: + g = !0; + } + + } + if (g) return e(c, a, "" === b ? "." + Q(a, 0) : b), 1; + g = 0; + b = "" === b ? "." : b + ":"; + if (Array.isArray(a)) for (var k = 0; k < a.length; k++) { + d = a[k]; + var f = b + Q(d, k); + g += P(d, f, e, c); + } else if (null === a || "undefined" === typeof a ? f = null : (f = x && a[x] || a["@@iterator"], f = "function" === typeof f ? f : null), "function" === typeof f) for (a = f.call(a), k = 0; !(d = a.next()).done;) { + d = d.value, f = b + Q(d, k++), g += P(d, f, e, c); + } else "object" === d && (e = "" + a, y("31", "[object Object]" === e ? "object with keys {" + Object.keys(a).join(", ") + "}" : e, "")); + return g; + } + + function Q(a, b) { + return "object" === typeof a && null !== a && null != a.key ? escape(a.key) : b.toString(36); + } + + function R(a, b) { + a.func.call(a.context, b, a.count++); + } + + function S(a, b, e) { + var c = a.result, + d = a.keyPrefix; + a = a.func.call(a.context, b, a.count++); + Array.isArray(a) ? T(a, c, e, p.thatReturnsArgument) : null != a && (K(a) && (b = d + (!a.key || b && b.key === a.key ? "" : ("" + a.key).replace(L, "$\x26/") + "/") + e, a = { + $$typeof: r, + type: a.type, + key: b, + ref: a.ref, + props: a.props, + _owner: a._owner + }), c.push(a)); + } + + function T(a, b, e, c, d) { + var g = ""; + null != e && (g = ("" + e).replace(L, "$\x26/") + "/"); + b = N(b, g, c, d); + null == a || P(a, "", S, b); + O(b); + } + + var U = { + Children: { + map: function map(a, b, e) { + if (null == a) return a; + var c = []; + T(a, c, null, b, e); + return c; + }, + forEach: function forEach(a, b, e) { + if (null == a) return a; + b = N(null, null, b, e); + null == a || P(a, "", R, b); + O(b); + }, + count: function count(a) { + return null == a ? 0 : P(a, "", p.thatReturnsNull, null); + }, + toArray: function toArray(a) { + var b = []; + T(a, b, null, p.thatReturnsArgument); + return b; + }, + only: function only(a) { + K(a) ? void 0 : y("143"); + return a; + } + }, + Component: A, + PureComponent: B, + unstable_AsyncComponent: E, + Fragment: w, + createElement: J, + cloneElement: function cloneElement(a, b, e) { + var c = m({}, a.props), + d = a.key, + g = a.ref, + k = a._owner; + + if (null != b) { + void 0 !== b.ref && (g = b.ref, k = G.current); + void 0 !== b.key && (d = "" + b.key); + if (a.type && a.type.defaultProps) var f = a.type.defaultProps; + + for (h in b) { + H.call(b, h) && !I.hasOwnProperty(h) && (c[h] = void 0 === b[h] && void 0 !== f ? f[h] : b[h]); + } + } + + var h = arguments.length - 2; + if (1 === h) c.children = e;else if (1 < h) { + f = Array(h); + + for (var l = 0; l < h; l++) { + f[l] = arguments[l + 2]; + } + + c.children = f; + } + return { + $$typeof: r, + type: a.type, + key: d, + ref: g, + props: c, + _owner: k + }; + }, + createFactory: function createFactory(a) { + var b = J.bind(null, a); + b.type = a; + return b; + }, + isValidElement: K, + version: "16.2.0", + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + ReactCurrentOwner: G, + assign: m + } + }, + V = Object.freeze({ + default: U + }), + W = V && U || V; + module.exports = W["default"] ? W["default"] : W; +},13,[14,15,16],"react/cjs/react.production.min.js"); +__d(function (global, require, module, exports, _dependencyMap) { + /* + object-assign + (c) Sindre Sorhus + @license MIT + */'use strict'; + + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var propIsEnumerable = Object.prototype.propertyIsEnumerable; + + function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); + } + + function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + var test1 = new String('abc'); + test1[5] = 'de'; + + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + var test2 = {}; + + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + + if (order2.join('') !== '0123456789') { + return false; + } + + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + + if (Object.keys(babelHelpers.extends({}, test3)).join('') !== 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + return false; + } + } + + module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; + }; +},14,[],"object-assign/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var emptyObject = {}; + + if (process.env.NODE_ENV !== 'production') { + Object.freeze(emptyObject); + } + + module.exports = emptyObject; +},15,[],"fbjs/lib/emptyObject.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + function makeEmptyFunction(arg) { + return function () { + return arg; + }; + } + + var emptyFunction = function emptyFunction() {}; + + emptyFunction.thatReturns = makeEmptyFunction; + emptyFunction.thatReturnsFalse = makeEmptyFunction(false); + emptyFunction.thatReturnsTrue = makeEmptyFunction(true); + emptyFunction.thatReturnsNull = makeEmptyFunction(null); + + emptyFunction.thatReturnsThis = function () { + return this; + }; + + emptyFunction.thatReturnsArgument = function (arg) { + return arg; + }; + + module.exports = emptyFunction; +},16,[],"fbjs/lib/emptyFunction.js"); +__d(function (global, require, module, exports, _dependencyMap) { + /** @license React v16.2.0 + * react.development.js + * + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */'use strict'; + + if (process.env.NODE_ENV !== "production") { + (function () { + 'use strict'; + + var _assign = require(_dependencyMap[0], 'object-assign'); + + var emptyObject = require(_dependencyMap[1], 'fbjs/lib/emptyObject'); + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var warning = require(_dependencyMap[3], 'fbjs/lib/warning'); + + var emptyFunction = require(_dependencyMap[4], 'fbjs/lib/emptyFunction'); + + var checkPropTypes = require(_dependencyMap[5], 'prop-types/checkPropTypes'); + + var ReactVersion = '16.2.0'; + var hasSymbol = typeof Symbol === 'function' && Symbol['for']; + var REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7; + var REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8; + var REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9; + var REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca; + var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb; + var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && (typeof Symbol === "function" ? Symbol.iterator : "@@iterator"); + var FAUX_ITERATOR_SYMBOL = '@@iterator'; + + function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable === 'undefined') { + return null; + } + + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + + if (typeof maybeIterator === 'function') { + return maybeIterator; + } + + return null; + } + + var lowPriorityWarning = function lowPriorityWarning() {}; + + { + var printWarning = function printWarning(format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + + if (typeof console !== 'undefined') { + console.warn(message); + } + + try { + throw new Error(message); + } catch (x) {} + }; + + lowPriorityWarning = function lowPriorityWarning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; + } + var lowPriorityWarning$1 = lowPriorityWarning; + var didWarnStateUpdateForUnmountedComponent = {}; + + function warnNoop(publicInstance, callerName) { + { + var constructor = publicInstance.constructor; + var componentName = constructor && (constructor.displayName || constructor.name) || 'ReactClass'; + var warningKey = componentName + '.' + callerName; + + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + + warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, componentName); + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } + } + + var ReactNoopUpdateQueue = { + isMounted: function isMounted(publicInstance) { + return false; + }, + enqueueForceUpdate: function enqueueForceUpdate(publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + enqueueSetState: function enqueueSetState(publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } + }; + + function Component(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + + Component.prototype.isReactComponent = {}; + + Component.prototype.setState = function (partialState, callback) { + !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0; + this.updater.enqueueSetState(this, partialState, callback, 'setState'); + }; + + Component.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); + }; + + { + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + + var defineDeprecationWarning = function defineDeprecationWarning(methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function get() { + lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); + return undefined; + } + }); + }; + + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } + } + + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + + function ComponentDummy() {} + + ComponentDummy.prototype = Component.prototype; + var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); + pureComponentPrototype.constructor = PureComponent; + + _assign(pureComponentPrototype, Component.prototype); + + pureComponentPrototype.isPureReactComponent = true; + + function AsyncComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + + var asyncComponentPrototype = AsyncComponent.prototype = new ComponentDummy(); + asyncComponentPrototype.constructor = AsyncComponent; + + _assign(asyncComponentPrototype, Component.prototype); + + asyncComponentPrototype.unstable_isAsyncReactComponent = true; + + asyncComponentPrototype.render = function () { + return this.props.children; + }; + + var ReactCurrentOwner = { + current: null + }; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + var specialPropKeyWarningShown; + var specialPropRefWarningShown; + + function hasValidRef(config) { + { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; + } + + function hasValidKey(config) { + { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; + } + + function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function warnAboutAccessingKey() { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); + } + }; + + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); + } + + function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function warnAboutAccessingRef() { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); + } + }; + + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); + } + + var ReactElement = function ReactElement(type, key, ref, self, source, owner, props) { + var element = { + $$typeof: REACT_ELEMENT_TYPE, + type: type, + key: key, + ref: ref, + props: props, + _owner: owner + }; + { + element._store = {}; + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + return element; + }; + + function createElement(type, config, children) { + var propName; + var props = {}; + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + } + + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } + + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + + { + if (key || ref) { + if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + } + + function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + return newElement; + } + + function cloneElement(element, config, children) { + var propName; + + var props = _assign({}, element.props); + + var key = element.key; + var ref = element.ref; + var self = element._self; + var source = element._source; + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + owner = ReactCurrentOwner.current; + } + + if (hasValidKey(config)) { + key = '' + config.key; + } + + var defaultProps; + + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); + } + + function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + + var ReactDebugCurrentFrame = {}; + { + ReactDebugCurrentFrame.getCurrentStack = null; + + ReactDebugCurrentFrame.getStackAddendum = function () { + var impl = ReactDebugCurrentFrame.getCurrentStack; + + if (impl) { + return impl(); + } + + return null; + }; + } + var SEPARATOR = '.'; + var SUBSEPARATOR = ':'; + + function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = ('' + key).replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + return '$' + escapedString; + } + + var didWarnAboutMaps = false; + var userProvidedKeyEscapeRegex = /\/+/g; + + function escapeUserProvidedKey(text) { + return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); + } + + var POOL_SIZE = 10; + var traverseContextPool = []; + + function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) { + if (traverseContextPool.length) { + var traverseContext = traverseContextPool.pop(); + traverseContext.result = mapResult; + traverseContext.keyPrefix = keyPrefix; + traverseContext.func = mapFunction; + traverseContext.context = mapContext; + traverseContext.count = 0; + return traverseContext; + } else { + return { + result: mapResult, + keyPrefix: keyPrefix, + func: mapFunction, + context: mapContext, + count: 0 + }; + } + } + + function releaseTraverseContext(traverseContext) { + traverseContext.result = null; + traverseContext.keyPrefix = null; + traverseContext.func = null; + traverseContext.context = null; + traverseContext.count = 0; + + if (traverseContextPool.length < POOL_SIZE) { + traverseContextPool.push(traverseContext); + } + } + + function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + children = null; + } + + var invokeCallback = false; + + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case 'string': + case 'number': + invokeCallback = true; + break; + + case 'object': + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_CALL_TYPE: + case REACT_RETURN_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + + } + } + + if (invokeCallback) { + callback(traverseContext, children, nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getComponentKey(child, i); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + var iteratorFn = getIteratorFn(children); + + if (typeof iteratorFn === 'function') { + { + if (iteratorFn === children.entries) { + warning(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', ReactDebugCurrentFrame.getStackAddendum()); + didWarnAboutMaps = true; + } + } + var iterator = iteratorFn.call(children); + var step; + var ii = 0; + + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getComponentKey(child, ii++); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else if (type === 'object') { + var addendum = ''; + { + addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum(); + } + var childrenString = '' + children; + invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum); + } + } + + return subtreeCount; + } + + function traverseAllChildren(children, callback, traverseContext) { + if (children == null) { + return 0; + } + + return traverseAllChildrenImpl(children, '', callback, traverseContext); + } + + function getComponentKey(component, index) { + if (typeof component === 'object' && component !== null && component.key != null) { + return escape(component.key); + } + + return index.toString(36); + } + + function forEachSingleChild(bookKeeping, child, name) { + var func = bookKeeping.func, + context = bookKeeping.context; + func.call(context, child, bookKeeping.count++); + } + + function forEachChildren(children, forEachFunc, forEachContext) { + if (children == null) { + return children; + } + + var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext); + traverseAllChildren(children, forEachSingleChild, traverseContext); + releaseTraverseContext(traverseContext); + } + + function mapSingleChildIntoContext(bookKeeping, child, childKey) { + var result = bookKeeping.result, + keyPrefix = bookKeeping.keyPrefix, + func = bookKeeping.func, + context = bookKeeping.context; + var mappedChild = func.call(context, child, bookKeeping.count++); + + if (Array.isArray(mappedChild)) { + mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + mappedChild = cloneAndReplaceKey(mappedChild, keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); + } + + result.push(mappedChild); + } + } + + function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { + var escapedPrefix = ''; + + if (prefix != null) { + escapedPrefix = escapeUserProvidedKey(prefix) + '/'; + } + + var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context); + traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); + releaseTraverseContext(traverseContext); + } + + function mapChildren(children, func, context) { + if (children == null) { + return children; + } + + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, func, context); + return result; + } + + function countChildren(children, context) { + return traverseAllChildren(children, emptyFunction.thatReturnsNull, null); + } + + function toArray(children) { + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument); + return result; + } + + function onlyChild(children) { + !isValidElement(children) ? invariant(false, 'React.Children.only expected to receive a single React element child.') : void 0; + return children; + } + + var describeComponentFrame = function describeComponentFrame(name, source, ownerName) { + return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); + }; + + function getComponentName(fiber) { + var type = fiber.type; + + if (typeof type === 'string') { + return type; + } + + if (typeof type === 'function') { + return type.displayName || type.name; + } + + return null; + } + + { + var currentlyValidatingElement = null; + var propTypesMisspellWarningShown = false; + + var getDisplayName = function getDisplayName(element) { + if (element == null) { + return '#empty'; + } else if (typeof element === 'string' || typeof element === 'number') { + return '#text'; + } else if (typeof element.type === 'string') { + return element.type; + } else if (element.type === REACT_FRAGMENT_TYPE) { + return 'React.Fragment'; + } else { + return element.type.displayName || element.type.name || 'Unknown'; + } + }; + + var getStackAddendum = function getStackAddendum() { + var stack = ''; + + if (currentlyValidatingElement) { + var name = getDisplayName(currentlyValidatingElement); + var owner = currentlyValidatingElement._owner; + stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner)); + } + + stack += ReactDebugCurrentFrame.getStackAddendum() || ''; + return stack; + }; + + var VALID_FRAGMENT_PROPS = new Map([['children', true], ['key', true]]); + } + + function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentName(ReactCurrentOwner.current); + + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + + return ''; + } + + function getSourceInfoErrorAddendum(elementProps) { + if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { + var source = elementProps.__source; + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + + return ''; + } + + var ownerHasKeyUseWarning = {}; + + function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + + if (parentName) { + info = '\n\nCheck the top-level render call using <' + parentName + '>.'; + } + } + + return info; + } + + function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + + element._store.validated = true; + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; + var childOwner = ''; + + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.'; + } + + currentlyValidatingElement = element; + { + warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum()); + } + currentlyValidatingElement = null; + } + + function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + + if (Array.isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + + if (typeof iteratorFn === 'function') { + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } + } + + function validatePropTypes(element) { + var componentClass = element.type; + + if (typeof componentClass !== 'function') { + return; + } + + var name = componentClass.displayName || componentClass.name; + var propTypes = componentClass.propTypes; + + if (propTypes) { + currentlyValidatingElement = element; + checkPropTypes(propTypes, element.props, 'prop', name, getStackAddendum); + currentlyValidatingElement = null; + } else if (componentClass.PropTypes !== undefined && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; + warning(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown'); + } + + if (typeof componentClass.getDefaultProps === 'function') { + warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); + } + } + + function validateFragmentProps(fragment) { + currentlyValidatingElement = fragment; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = Object.keys(fragment.props)[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var key = _step.value; + + if (!VALID_FRAGMENT_PROPS.has(key)) { + warning(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.%s', key, getStackAddendum()); + break; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator['return']) { + _iterator['return'](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + if (fragment.ref !== null) { + warning(false, 'Invalid attribute `ref` supplied to `React.Fragment`.%s', getStackAddendum()); + } + + currentlyValidatingElement = null; + } + + function createElementWithValidation(type, props, children) { + var validType = typeof type === 'string' || typeof type === 'function' || typeof type === 'symbol' || typeof type === 'number'; + + if (!validType) { + var info = ''; + + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + } + + var sourceInfo = getSourceInfoErrorAddendum(props); + + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + + info += getStackAddendum() || ''; + warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info); + } + + var element = createElement.apply(this, arguments); + + if (element == null) { + return element; + } + + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); + } + } + + if (typeof type === 'symbol' && type === REACT_FRAGMENT_TYPE) { + validateFragmentProps(element); + } else { + validatePropTypes(element); + } + + return element; + } + + function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + validatedFactory.type = type; + { + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function get() { + lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); + Object.defineProperty(this, 'type', { + value: type + }); + return type; + } + }); + } + return validatedFactory; + } + + function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); + } + + validatePropTypes(newElement); + return newElement; + } + + var React = { + Children: { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray: toArray, + only: onlyChild + }, + Component: Component, + PureComponent: PureComponent, + unstable_AsyncComponent: AsyncComponent, + Fragment: REACT_FRAGMENT_TYPE, + createElement: createElementWithValidation, + cloneElement: cloneElementWithValidation, + createFactory: createFactoryWithValidation, + isValidElement: isValidElement, + version: ReactVersion, + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + ReactCurrentOwner: ReactCurrentOwner, + assign: _assign + } + }; + { + _assign(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { + ReactDebugCurrentFrame: ReactDebugCurrentFrame, + ReactComponentTreeHook: {} + }); + } + var React$2 = Object.freeze({ + default: React + }); + var React$3 = React$2 && React || React$2; + var react = React$3['default'] ? React$3['default'] : React$3; + module.exports = react; + })(); + } +},17,[14,15,18,19,16,20],"react/cjs/react.development.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var validateFormat = function validateFormat(format) {}; + + if (process.env.NODE_ENV !== 'production') { + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; + } + + function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; + throw error; + } + } + + module.exports = invariant; +},18,[],"fbjs/lib/invariant.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var emptyFunction = require(_dependencyMap[0], './emptyFunction'); + + var warning = emptyFunction; + + if (process.env.NODE_ENV !== 'production') { + var printWarning = function printWarning(format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + + if (typeof console !== 'undefined') { + console.error(message); + } + + try { + throw new Error(message); + } catch (x) {} + }; + + warning = function warning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; + } + + module.exports = warning; +},19,[16],"fbjs/lib/warning.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + if (process.env.NODE_ENV !== 'production') { + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var warning = require(_dependencyMap[1], 'fbjs/lib/warning'); + + var ReactPropTypesSecret = require(_dependencyMap[2], './lib/ReactPropTypesSecret'); + + var loggedTypeFailures = {}; + } + + function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (process.env.NODE_ENV !== 'production') { + for (var typeSpecName in typeSpecs) { + if (typeSpecs.hasOwnProperty(typeSpecName)) { + var error; + + try { + invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]); + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + + warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); + + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + loggedTypeFailures[error.message] = true; + var stack = getStack ? getStack() : ''; + warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); + } + } + } + } + } + + module.exports = checkPropTypes; +},20,[18,19,21],"prop-types/checkPropTypes.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + module.exports = ReactPropTypesSecret; +},21,[],"prop-types/lib/ReactPropTypesSecret.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.connect = exports.connectAdvanced = exports.createProvider = exports.Provider = undefined; + + var _Provider = require(_dependencyMap[0], './components/Provider'); + + var _Provider2 = _interopRequireDefault(_Provider); + + var _connectAdvanced = require(_dependencyMap[1], './components/connectAdvanced'); + + var _connectAdvanced2 = _interopRequireDefault(_connectAdvanced); + + var _connect = require(_dependencyMap[2], './connect/connect'); + + var _connect2 = _interopRequireDefault(_connect); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + exports.Provider = _Provider2.default; + exports.createProvider = _Provider.createProvider; + exports.connectAdvanced = _connectAdvanced2.default; + exports.connect = _connect2.default; +},22,[23,29,33],"react-redux/lib/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.createProvider = createProvider; + + var _react = require(_dependencyMap[0], 'react'); + + var _propTypes = require(_dependencyMap[1], 'prop-types'); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + var _PropTypes = require(_dependencyMap[2], '../utils/PropTypes'); + + var _warning = require(_dependencyMap[3], '../utils/warning'); + + var _warning2 = _interopRequireDefault(_warning); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + } + + var didWarnAboutReceivingStore = false; + + function warnAboutReceivingStore() { + if (didWarnAboutReceivingStore) { + return; + } + + didWarnAboutReceivingStore = true; + (0, _warning2.default)(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reactjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.'); + } + + function createProvider() { + var _Provider$childContex; + + var storeKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'store'; + var subKey = arguments[1]; + var subscriptionKey = subKey || storeKey + 'Subscription'; + + var Provider = function (_Component) { + _inherits(Provider, _Component); + + Provider.prototype.getChildContext = function getChildContext() { + var _ref; + + return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref; + }; + + function Provider(props, context) { + _classCallCheck(this, Provider); + + var _this = _possibleConstructorReturn(this, _Component.call(this, props, context)); + + _this[storeKey] = props.store; + return _this; + } + + Provider.prototype.render = function render() { + return _react.Children.only(this.props.children); + }; + + return Provider; + }(_react.Component); + + if (process.env.NODE_ENV !== 'production') { + Provider.prototype.componentWillReceiveProps = function (nextProps) { + if (this[storeKey] !== nextProps.store) { + warnAboutReceivingStore(); + } + }; + } + + Provider.propTypes = { + store: _PropTypes.storeShape.isRequired, + children: _propTypes2.default.element.isRequired + }; + Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = _PropTypes.storeShape.isRequired, _Provider$childContex[subscriptionKey] = _PropTypes.subscriptionShape, _Provider$childContex); + return Provider; + } + + exports.default = createProvider(); +},23,[12,24,27,28],"react-redux/lib/components/Provider.js"); +__d(function (global, require, module, exports, _dependencyMap) { + if (process.env.NODE_ENV !== 'production') { + var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && (typeof Symbol === "function" ? Symbol.for : "@@for") && (typeof Symbol === "function" ? Symbol.for : "@@for")('react.element') || 0xeac7; + + var isValidElement = function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + }; + + var throwOnDirectAccess = true; + module.exports = require(_dependencyMap[0], './factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess); + } else { + module.exports = require(_dependencyMap[1], './factoryWithThrowingShims')(); + } +},24,[25,26],"prop-types/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var emptyFunction = require(_dependencyMap[0], 'fbjs/lib/emptyFunction'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var warning = require(_dependencyMap[2], 'fbjs/lib/warning'); + + var assign = require(_dependencyMap[3], 'object-assign'); + + var ReactPropTypesSecret = require(_dependencyMap[4], './lib/ReactPropTypesSecret'); + + var checkPropTypes = require(_dependencyMap[5], './checkPropTypes'); + + module.exports = function (isValidElement, throwOnDirectAccess) { + var ITERATOR_SYMBOL = typeof Symbol === 'function' && (typeof Symbol === "function" ? Symbol.iterator : "@@iterator"); + var FAUX_ITERATOR_SYMBOL = '@@iterator'; + + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + var ANONYMOUS = '<>'; + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker + }; + + function is(x, y) { + if (x === y) { + return x !== 0 || 1 / x === 1 / y; + } else { + return x !== x && y !== y; + } + } + + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (process.env.NODE_ENV !== 'production') { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + invariant(false, 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types'); + } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { + var cacheKey = componentName + ':' + propName; + + if (!manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3) { + warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + + if (propType !== expectedType) { + var preciseType = getPreciseType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunction.thatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + + var propValue = props[propName]; + + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + + if (error instanceof Error) { + return error; + } + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + + var propValue = props[propName]; + var propType = getPropType(propValue); + + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + + for (var key in propValue) { + if (propValue.hasOwnProperty(key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + + if (error instanceof Error) { + return error; + } + } + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + + if (typeof checker !== 'function') { + warning(false, 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received %s at index %s.', getPostfixForTypeWarning(checker), i); + return emptyFunction.thatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + + if (!checker) { + continue; + } + + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + + if (error) { + return error; + } + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + + var allKeys = assign({}, props[propName], shapeTypes); + + for (var key in allKeys) { + var checker = shapeTypes[key]; + + if (!checker) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')); + } + + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + + if (error) { + return error; + } + } + + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + + case 'boolean': + return !propValue; + + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + while (!(step = iterator.next()).done) { + var entry = step.value; + + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + + default: + return false; + } + } + + function isSymbol(propType, propValue) { + if (propType === 'symbol') { + return true; + } + + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + function getPropType(propValue) { + var propType = typeof propValue; + + if (Array.isArray(propValue)) { + return 'array'; + } + + if (propValue instanceof RegExp) { + return 'object'; + } + + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + + return propType; + } + + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + + var propType = getPropType(propValue); + + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + + return propType; + } + + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + + default: + return type; + } + } + + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.PropTypes = ReactPropTypes; + return ReactPropTypes; + }; +},25,[16,18,19,14,21,20],"prop-types/factoryWithTypeCheckers.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var emptyFunction = require(_dependencyMap[0], 'fbjs/lib/emptyFunction'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var ReactPropTypesSecret = require(_dependencyMap[2], './lib/ReactPropTypesSecret'); + + module.exports = function () { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + return; + } + + invariant(false, 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types'); + } + + ; + shim.isRequired = shim; + + function getShim() { + return shim; + } + + ; + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + any: shim, + arrayOf: getShim, + element: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim + }; + ReactPropTypes.checkPropTypes = emptyFunction; + ReactPropTypes.PropTypes = ReactPropTypes; + return ReactPropTypes; + }; +},26,[16,18,21],"prop-types/factoryWithThrowingShims.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.storeShape = exports.subscriptionShape = undefined; + + var _propTypes = require(_dependencyMap[0], 'prop-types'); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var subscriptionShape = exports.subscriptionShape = _propTypes2.default.shape({ + trySubscribe: _propTypes2.default.func.isRequired, + tryUnsubscribe: _propTypes2.default.func.isRequired, + notifyNestedSubs: _propTypes2.default.func.isRequired, + isSubscribed: _propTypes2.default.func.isRequired + }); + + var storeShape = exports.storeShape = _propTypes2.default.shape({ + subscribe: _propTypes2.default.func.isRequired, + dispatch: _propTypes2.default.func.isRequired, + getState: _propTypes2.default.func.isRequired + }); +},27,[24],"react-redux/lib/utils/PropTypes.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.default = warning; + + function warning(message) { + if (typeof console !== 'undefined' && typeof console.error === 'function') { + console.error(message); + } + + try { + throw new Error(message); + } catch (e) {} + } +},28,[],"react-redux/lib/utils/warning.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + exports.default = connectAdvanced; + + var _hoistNonReactStatics = require(_dependencyMap[0], 'hoist-non-react-statics'); + + var _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics); + + var _invariant = require(_dependencyMap[1], 'invariant'); + + var _invariant2 = _interopRequireDefault(_invariant); + + var _react = require(_dependencyMap[2], 'react'); + + var _Subscription = require(_dependencyMap[3], '../utils/Subscription'); + + var _Subscription2 = _interopRequireDefault(_Subscription); + + var _PropTypes = require(_dependencyMap[4], '../utils/PropTypes'); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + } + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + var hotReloadingVersion = 0; + var dummyState = {}; + + function noop() {} + + function makeSelectorStateful(sourceSelector, store) { + var selector = { + run: function runComponentSelector(props) { + try { + var nextProps = sourceSelector(store.getState(), props); + + if (nextProps !== selector.props || selector.error) { + selector.shouldComponentUpdate = true; + selector.props = nextProps; + selector.error = null; + } + } catch (error) { + selector.shouldComponentUpdate = true; + selector.error = error; + } + } + }; + return selector; + } + + function connectAdvanced(selectorFactory) { + var _contextTypes, _childContextTypes; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$getDisplayName = _ref.getDisplayName, + getDisplayName = _ref$getDisplayName === undefined ? function (name) { + return 'ConnectAdvanced(' + name + ')'; + } : _ref$getDisplayName, + _ref$methodName = _ref.methodName, + methodName = _ref$methodName === undefined ? 'connectAdvanced' : _ref$methodName, + _ref$renderCountProp = _ref.renderCountProp, + renderCountProp = _ref$renderCountProp === undefined ? undefined : _ref$renderCountProp, + _ref$shouldHandleStat = _ref.shouldHandleStateChanges, + shouldHandleStateChanges = _ref$shouldHandleStat === undefined ? true : _ref$shouldHandleStat, + _ref$storeKey = _ref.storeKey, + storeKey = _ref$storeKey === undefined ? 'store' : _ref$storeKey, + _ref$withRef = _ref.withRef, + withRef = _ref$withRef === undefined ? false : _ref$withRef, + connectOptions = _objectWithoutProperties(_ref, ['getDisplayName', 'methodName', 'renderCountProp', 'shouldHandleStateChanges', 'storeKey', 'withRef']); + + var subscriptionKey = storeKey + 'Subscription'; + var version = hotReloadingVersion++; + var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = _PropTypes.storeShape, _contextTypes[subscriptionKey] = _PropTypes.subscriptionShape, _contextTypes); + var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = _PropTypes.subscriptionShape, _childContextTypes); + return function wrapWithConnect(WrappedComponent) { + (0, _invariant2.default)(typeof WrappedComponent == 'function', 'You must pass a component to the function returned by ' + (methodName + '. Instead received ' + JSON.stringify(WrappedComponent))); + var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component'; + var displayName = getDisplayName(wrappedComponentName); + + var selectorFactoryOptions = _extends({}, connectOptions, { + getDisplayName: getDisplayName, + methodName: methodName, + renderCountProp: renderCountProp, + shouldHandleStateChanges: shouldHandleStateChanges, + storeKey: storeKey, + withRef: withRef, + displayName: displayName, + wrappedComponentName: wrappedComponentName, + WrappedComponent: WrappedComponent + }); + + var Connect = function (_Component) { + _inherits(Connect, _Component); + + function Connect(props, context) { + _classCallCheck(this, Connect); + + var _this = _possibleConstructorReturn(this, _Component.call(this, props, context)); + + _this.version = version; + _this.state = {}; + _this.renderCount = 0; + _this.store = props[storeKey] || context[storeKey]; + _this.propsMode = Boolean(props[storeKey]); + _this.setWrappedInstance = _this.setWrappedInstance.bind(_this); + (0, _invariant2.default)(_this.store, 'Could not find "' + storeKey + '" in either the context or props of ' + ('"' + displayName + '". Either wrap the root component in a , ') + ('or explicitly pass "' + storeKey + '" as a prop to "' + displayName + '".')); + + _this.initSelector(); + + _this.initSubscription(); + + return _this; + } + + Connect.prototype.getChildContext = function getChildContext() { + var _ref2; + + var subscription = this.propsMode ? null : this.subscription; + return _ref2 = {}, _ref2[subscriptionKey] = subscription || this.context[subscriptionKey], _ref2; + }; + + Connect.prototype.componentDidMount = function componentDidMount() { + if (!shouldHandleStateChanges) return; + this.subscription.trySubscribe(); + this.selector.run(this.props); + if (this.selector.shouldComponentUpdate) this.forceUpdate(); + }; + + Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { + this.selector.run(nextProps); + }; + + Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() { + return this.selector.shouldComponentUpdate; + }; + + Connect.prototype.componentWillUnmount = function componentWillUnmount() { + if (this.subscription) this.subscription.tryUnsubscribe(); + this.subscription = null; + this.notifyNestedSubs = noop; + this.store = null; + this.selector.run = noop; + this.selector.shouldComponentUpdate = false; + }; + + Connect.prototype.getWrappedInstance = function getWrappedInstance() { + (0, _invariant2.default)(withRef, 'To access the wrapped instance, you need to specify ' + ('{ withRef: true } in the options argument of the ' + methodName + '() call.')); + return this.wrappedInstance; + }; + + Connect.prototype.setWrappedInstance = function setWrappedInstance(ref) { + this.wrappedInstance = ref; + }; + + Connect.prototype.initSelector = function initSelector() { + var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions); + this.selector = makeSelectorStateful(sourceSelector, this.store); + this.selector.run(this.props); + }; + + Connect.prototype.initSubscription = function initSubscription() { + if (!shouldHandleStateChanges) return; + var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey]; + this.subscription = new _Subscription2.default(this.store, parentSub, this.onStateChange.bind(this)); + this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription); + }; + + Connect.prototype.onStateChange = function onStateChange() { + this.selector.run(this.props); + + if (!this.selector.shouldComponentUpdate) { + this.notifyNestedSubs(); + } else { + this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate; + this.setState(dummyState); + } + }; + + Connect.prototype.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() { + this.componentDidUpdate = undefined; + this.notifyNestedSubs(); + }; + + Connect.prototype.isSubscribed = function isSubscribed() { + return Boolean(this.subscription) && this.subscription.isSubscribed(); + }; + + Connect.prototype.addExtraProps = function addExtraProps(props) { + if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; + + var withExtras = _extends({}, props); + + if (withRef) withExtras.ref = this.setWrappedInstance; + if (renderCountProp) withExtras[renderCountProp] = this.renderCount++; + if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription; + return withExtras; + }; + + Connect.prototype.render = function render() { + var selector = this.selector; + selector.shouldComponentUpdate = false; + + if (selector.error) { + throw selector.error; + } else { + return (0, _react.createElement)(WrappedComponent, this.addExtraProps(selector.props)); + } + }; + + return Connect; + }(_react.Component); + + Connect.WrappedComponent = WrappedComponent; + Connect.displayName = displayName; + Connect.childContextTypes = childContextTypes; + Connect.contextTypes = contextTypes; + Connect.propTypes = contextTypes; + + if (process.env.NODE_ENV !== 'production') { + Connect.prototype.componentWillUpdate = function componentWillUpdate() { + var _this2 = this; + + if (this.version !== version) { + this.version = version; + this.initSelector(); + var oldListeners = []; + + if (this.subscription) { + oldListeners = this.subscription.listeners.get(); + this.subscription.tryUnsubscribe(); + } + + this.initSubscription(); + + if (shouldHandleStateChanges) { + this.subscription.trySubscribe(); + oldListeners.forEach(function (listener) { + return _this2.subscription.listeners.subscribe(listener); + }); + } + } + }; + } + + return (0, _hoistNonReactStatics2.default)(Connect, WrappedComponent); + }; + } +},29,[30,31,12,32,27],"react-redux/lib/components/connectAdvanced.js"); +__d(function (global, require, module, exports, _dependencyMap) { + (function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.hoistNonReactStatics = factory(); + })(this, function () { + 'use strict'; + + var REACT_STATICS = { + childContextTypes: true, + contextTypes: true, + defaultProps: true, + displayName: true, + getDefaultProps: true, + getDerivedStateFromProps: true, + mixins: true, + propTypes: true, + type: true + }; + var KNOWN_STATICS = { + name: true, + length: true, + prototype: true, + caller: true, + callee: true, + arguments: true, + arity: true + }; + var defineProperty = Object.defineProperty; + var getOwnPropertyNames = Object.getOwnPropertyNames; + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var getPrototypeOf = Object.getPrototypeOf; + var objectPrototype = getPrototypeOf && getPrototypeOf(Object); + return function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { + if (typeof sourceComponent !== 'string') { + if (objectPrototype) { + var inheritedComponent = getPrototypeOf(sourceComponent); + + if (inheritedComponent && inheritedComponent !== objectPrototype) { + hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); + } + } + + var keys = getOwnPropertyNames(sourceComponent); + + if (getOwnPropertySymbols) { + keys = keys.concat(getOwnPropertySymbols(sourceComponent)); + } + + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + + if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) { + var descriptor = getOwnPropertyDescriptor(sourceComponent, key); + + try { + defineProperty(targetComponent, key, descriptor); + } catch (e) {} + } + } + + return targetComponent; + } + + return targetComponent; + }; + }); +},30,[],"hoist-non-react-statics/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = function invariant(condition, format, a, b, c, d, e, f) { + if (process.env.NODE_ENV !== 'production') { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } + + if (!condition) { + var error; + + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; + throw error; + } + }; + + module.exports = invariant; +},31,[],"invariant/browser.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + exports.__esModule = true; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var CLEARED = null; + var nullListeners = { + notify: function notify() {} + }; + + function createListenerCollection() { + var current = []; + var next = []; + return { + clear: function clear() { + next = CLEARED; + current = CLEARED; + }, + notify: function notify() { + var listeners = current = next; + + for (var i = 0; i < listeners.length; i++) { + listeners[i](); + } + }, + get: function get() { + return next; + }, + subscribe: function subscribe(listener) { + var isSubscribed = true; + if (next === current) next = current.slice(); + next.push(listener); + return function unsubscribe() { + if (!isSubscribed || current === CLEARED) return; + isSubscribed = false; + if (next === current) next = current.slice(); + next.splice(next.indexOf(listener), 1); + }; + } + }; + } + + var Subscription = function () { + function Subscription(store, parentSub, onStateChange) { + _classCallCheck(this, Subscription); + + this.store = store; + this.parentSub = parentSub; + this.onStateChange = onStateChange; + this.unsubscribe = null; + this.listeners = nullListeners; + } + + Subscription.prototype.addNestedSub = function addNestedSub(listener) { + this.trySubscribe(); + return this.listeners.subscribe(listener); + }; + + Subscription.prototype.notifyNestedSubs = function notifyNestedSubs() { + this.listeners.notify(); + }; + + Subscription.prototype.isSubscribed = function isSubscribed() { + return Boolean(this.unsubscribe); + }; + + Subscription.prototype.trySubscribe = function trySubscribe() { + if (!this.unsubscribe) { + this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange); + this.listeners = createListenerCollection(); + } + }; + + Subscription.prototype.tryUnsubscribe = function tryUnsubscribe() { + if (this.unsubscribe) { + this.unsubscribe(); + this.unsubscribe = null; + this.listeners.clear(); + this.listeners = nullListeners; + } + }; + + return Subscription; + }(); + + exports.default = Subscription; +},32,[],"react-redux/lib/utils/Subscription.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + exports.createConnect = createConnect; + + var _connectAdvanced = require(_dependencyMap[0], '../components/connectAdvanced'); + + var _connectAdvanced2 = _interopRequireDefault(_connectAdvanced); + + var _shallowEqual = require(_dependencyMap[1], '../utils/shallowEqual'); + + var _shallowEqual2 = _interopRequireDefault(_shallowEqual); + + var _mapDispatchToProps = require(_dependencyMap[2], './mapDispatchToProps'); + + var _mapDispatchToProps2 = _interopRequireDefault(_mapDispatchToProps); + + var _mapStateToProps = require(_dependencyMap[3], './mapStateToProps'); + + var _mapStateToProps2 = _interopRequireDefault(_mapStateToProps); + + var _mergeProps = require(_dependencyMap[4], './mergeProps'); + + var _mergeProps2 = _interopRequireDefault(_mergeProps); + + var _selectorFactory = require(_dependencyMap[5], './selectorFactory'); + + var _selectorFactory2 = _interopRequireDefault(_selectorFactory); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function match(arg, factories, name) { + for (var i = factories.length - 1; i >= 0; i--) { + var result = factories[i](arg); + if (result) return result; + } + + return function (dispatch, options) { + throw new Error('Invalid value of type ' + typeof arg + ' for ' + name + ' argument when connecting component ' + options.wrappedComponentName + '.'); + }; + } + + function strictEqual(a, b) { + return a === b; + } + + function createConnect() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$connectHOC = _ref.connectHOC, + connectHOC = _ref$connectHOC === undefined ? _connectAdvanced2.default : _ref$connectHOC, + _ref$mapStateToPropsF = _ref.mapStateToPropsFactories, + mapStateToPropsFactories = _ref$mapStateToPropsF === undefined ? _mapStateToProps2.default : _ref$mapStateToPropsF, + _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories, + mapDispatchToPropsFactories = _ref$mapDispatchToPro === undefined ? _mapDispatchToProps2.default : _ref$mapDispatchToPro, + _ref$mergePropsFactor = _ref.mergePropsFactories, + mergePropsFactories = _ref$mergePropsFactor === undefined ? _mergeProps2.default : _ref$mergePropsFactor, + _ref$selectorFactory = _ref.selectorFactory, + selectorFactory = _ref$selectorFactory === undefined ? _selectorFactory2.default : _ref$selectorFactory; + + return function connect(mapStateToProps, mapDispatchToProps, mergeProps) { + var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}, + _ref2$pure = _ref2.pure, + pure = _ref2$pure === undefined ? true : _ref2$pure, + _ref2$areStatesEqual = _ref2.areStatesEqual, + areStatesEqual = _ref2$areStatesEqual === undefined ? strictEqual : _ref2$areStatesEqual, + _ref2$areOwnPropsEqua = _ref2.areOwnPropsEqual, + areOwnPropsEqual = _ref2$areOwnPropsEqua === undefined ? _shallowEqual2.default : _ref2$areOwnPropsEqua, + _ref2$areStatePropsEq = _ref2.areStatePropsEqual, + areStatePropsEqual = _ref2$areStatePropsEq === undefined ? _shallowEqual2.default : _ref2$areStatePropsEq, + _ref2$areMergedPropsE = _ref2.areMergedPropsEqual, + areMergedPropsEqual = _ref2$areMergedPropsE === undefined ? _shallowEqual2.default : _ref2$areMergedPropsE, + extraOptions = _objectWithoutProperties(_ref2, ['pure', 'areStatesEqual', 'areOwnPropsEqual', 'areStatePropsEqual', 'areMergedPropsEqual']); + + var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps'); + var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps'); + var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps'); + return connectHOC(selectorFactory, _extends({ + methodName: 'connect', + getDisplayName: function getDisplayName(name) { + return 'Connect(' + name + ')'; + }, + shouldHandleStateChanges: Boolean(mapStateToProps), + initMapStateToProps: initMapStateToProps, + initMapDispatchToProps: initMapDispatchToProps, + initMergeProps: initMergeProps, + pure: pure, + areStatesEqual: areStatesEqual, + areOwnPropsEqual: areOwnPropsEqual, + areStatePropsEqual: areStatePropsEqual, + areMergedPropsEqual: areMergedPropsEqual + }, extraOptions)); + }; + } + + exports.default = createConnect(); +},33,[29,34,35,57,58,59],"react-redux/lib/connect/connect.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.default = shallowEqual; + var hasOwn = Object.prototype.hasOwnProperty; + + function is(x, y) { + if (x === y) { + return x !== 0 || y !== 0 || 1 / x === 1 / y; + } else { + return x !== x && y !== y; + } + } + + function shallowEqual(objA, objB) { + if (is(objA, objB)) return true; + + if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { + return false; + } + + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); + if (keysA.length !== keysB.length) return false; + + for (var i = 0; i < keysA.length; i++) { + if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { + return false; + } + } + + return true; + } +},34,[],"react-redux/lib/utils/shallowEqual.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.whenMapDispatchToPropsIsFunction = whenMapDispatchToPropsIsFunction; + exports.whenMapDispatchToPropsIsMissing = whenMapDispatchToPropsIsMissing; + exports.whenMapDispatchToPropsIsObject = whenMapDispatchToPropsIsObject; + + var _redux = require(_dependencyMap[0], 'redux'); + + var _wrapMapToProps = require(_dependencyMap[1], './wrapMapToProps'); + + function whenMapDispatchToPropsIsFunction(mapDispatchToProps) { + return typeof mapDispatchToProps === 'function' ? (0, _wrapMapToProps.wrapMapToPropsFunc)(mapDispatchToProps, 'mapDispatchToProps') : undefined; + } + + function whenMapDispatchToPropsIsMissing(mapDispatchToProps) { + return !mapDispatchToProps ? (0, _wrapMapToProps.wrapMapToPropsConstant)(function (dispatch) { + return { + dispatch: dispatch + }; + }) : undefined; + } + + function whenMapDispatchToPropsIsObject(mapDispatchToProps) { + return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? (0, _wrapMapToProps.wrapMapToPropsConstant)(function (dispatch) { + return (0, _redux.bindActionCreators)(mapDispatchToProps, dispatch); + }) : undefined; + } + + exports.default = [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject]; +},35,[36,55],"react-redux/lib/connect/mapDispatchToProps.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined; + + var _createStore = require(_dependencyMap[0], './createStore'); + + var _createStore2 = _interopRequireDefault(_createStore); + + var _combineReducers = require(_dependencyMap[1], './combineReducers'); + + var _combineReducers2 = _interopRequireDefault(_combineReducers); + + var _bindActionCreators = require(_dependencyMap[2], './bindActionCreators'); + + var _bindActionCreators2 = _interopRequireDefault(_bindActionCreators); + + var _applyMiddleware = require(_dependencyMap[3], './applyMiddleware'); + + var _applyMiddleware2 = _interopRequireDefault(_applyMiddleware); + + var _compose = require(_dependencyMap[4], './compose'); + + var _compose2 = _interopRequireDefault(_compose); + + var _warning = require(_dependencyMap[5], './utils/warning'); + + var _warning2 = _interopRequireDefault(_warning); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + 'default': obj + }; + } + + function isCrushed() {} + + if (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') { + (0, _warning2['default'])('You are currently using minified code outside of NODE_ENV === \'production\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.'); + } + + exports.createStore = _createStore2['default']; + exports.combineReducers = _combineReducers2['default']; + exports.bindActionCreators = _bindActionCreators2['default']; + exports.applyMiddleware = _applyMiddleware2['default']; + exports.compose = _compose2['default']; +},36,[37,50,52,53,54,51],"redux/lib/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.ActionTypes = undefined; + exports['default'] = createStore; + + var _isPlainObject = require(_dependencyMap[0], 'lodash/isPlainObject'); + + var _isPlainObject2 = _interopRequireDefault(_isPlainObject); + + var _symbolObservable = require(_dependencyMap[1], 'symbol-observable'); + + var _symbolObservable2 = _interopRequireDefault(_symbolObservable); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + 'default': obj + }; + } + + var ActionTypes = exports.ActionTypes = { + INIT: '@@redux/INIT' + }; + + function createStore(reducer, preloadedState, enhancer) { + var _ref2; + + if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { + enhancer = preloadedState; + preloadedState = undefined; + } + + if (typeof enhancer !== 'undefined') { + if (typeof enhancer !== 'function') { + throw new Error('Expected the enhancer to be a function.'); + } + + return enhancer(createStore)(reducer, preloadedState); + } + + if (typeof reducer !== 'function') { + throw new Error('Expected the reducer to be a function.'); + } + + var currentReducer = reducer; + var currentState = preloadedState; + var currentListeners = []; + var nextListeners = currentListeners; + var isDispatching = false; + + function ensureCanMutateNextListeners() { + if (nextListeners === currentListeners) { + nextListeners = currentListeners.slice(); + } + } + + function getState() { + return currentState; + } + + function subscribe(listener) { + if (typeof listener !== 'function') { + throw new Error('Expected listener to be a function.'); + } + + var isSubscribed = true; + ensureCanMutateNextListeners(); + nextListeners.push(listener); + return function unsubscribe() { + if (!isSubscribed) { + return; + } + + isSubscribed = false; + ensureCanMutateNextListeners(); + var index = nextListeners.indexOf(listener); + nextListeners.splice(index, 1); + }; + } + + function dispatch(action) { + if (!(0, _isPlainObject2['default'])(action)) { + throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.'); + } + + if (typeof action.type === 'undefined') { + throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?'); + } + + if (isDispatching) { + throw new Error('Reducers may not dispatch actions.'); + } + + try { + isDispatching = true; + currentState = currentReducer(currentState, action); + } finally { + isDispatching = false; + } + + var listeners = currentListeners = nextListeners; + + for (var i = 0; i < listeners.length; i++) { + var listener = listeners[i]; + listener(); + } + + return action; + } + + function replaceReducer(nextReducer) { + if (typeof nextReducer !== 'function') { + throw new Error('Expected the nextReducer to be a function.'); + } + + currentReducer = nextReducer; + dispatch({ + type: ActionTypes.INIT + }); + } + + function observable() { + var _ref; + + var outerSubscribe = subscribe; + return _ref = { + subscribe: function subscribe(observer) { + if (typeof observer !== 'object') { + throw new TypeError('Expected the observer to be an object.'); + } + + function observeState() { + if (observer.next) { + observer.next(getState()); + } + } + + observeState(); + var unsubscribe = outerSubscribe(observeState); + return { + unsubscribe: unsubscribe + }; + } + }, _ref[_symbolObservable2['default']] = function () { + return this; + }, _ref; + } + + dispatch({ + type: ActionTypes.INIT + }); + return _ref2 = { + dispatch: dispatch, + subscribe: subscribe, + getState: getState, + replaceReducer: replaceReducer + }, _ref2[_symbolObservable2['default']] = observable, _ref2; + } +},37,[38,48],"redux/lib/createStore.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetTag = require(_dependencyMap[0], './_baseGetTag'), + getPrototype = require(_dependencyMap[1], './_getPrototype'), + isObjectLike = require(_dependencyMap[2], './isObjectLike'); + + var objectTag = '[object Object]'; + var funcProto = Function.prototype, + objectProto = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectCtorString = funcToString.call(Object); + + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + + var proto = getPrototype(value); + + if (proto === null) { + return true; + } + + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + + module.exports = isPlainObject; +},38,[39,45,47],"lodash/isPlainObject.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Symbol = require(_dependencyMap[0], './_Symbol'), + getRawTag = require(_dependencyMap[1], './_getRawTag'), + objectToString = require(_dependencyMap[2], './_objectToString'); + + var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + var symToStringTag = Symbol ? typeof Symbol === "function" ? Symbol.toStringTag : "@@toStringTag" : undefined; + + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + + return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); + } + + module.exports = baseGetTag; +},39,[40,43,44],"lodash/_baseGetTag.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var root = require(_dependencyMap[0], './_root'); + + var Symbol = root.Symbol; + module.exports = Symbol; +},40,[41],"lodash/_Symbol.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var freeGlobal = require(_dependencyMap[0], './_freeGlobal'); + + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function('return this')(); + module.exports = root; +},41,[42],"lodash/_root.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + module.exports = freeGlobal; +},42,[],"lodash/_freeGlobal.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Symbol = require(_dependencyMap[0], './_Symbol'); + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var nativeObjectToString = objectProto.toString; + var symToStringTag = Symbol ? typeof Symbol === "function" ? Symbol.toStringTag : "@@toStringTag" : undefined; + + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + + return result; + } + + module.exports = getRawTag; +},43,[40],"lodash/_getRawTag.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var objectProto = Object.prototype; + var nativeObjectToString = objectProto.toString; + + function objectToString(value) { + return nativeObjectToString.call(value); + } + + module.exports = objectToString; +},44,[],"lodash/_objectToString.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var overArg = require(_dependencyMap[0], './_overArg'); + + var getPrototype = overArg(Object.getPrototypeOf, Object); + module.exports = getPrototype; +},45,[46],"lodash/_getPrototype.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function overArg(func, transform) { + return function (arg) { + return func(transform(arg)); + }; + } + + module.exports = overArg; +},46,[],"lodash/_overArg.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + module.exports = isObjectLike; +},47,[],"lodash/isObjectLike.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _ponyfill = require(_dependencyMap[0], './ponyfill.js'); + + var _ponyfill2 = _interopRequireDefault(_ponyfill); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + 'default': obj + }; + } + + var root; + + if (typeof self !== 'undefined') { + root = self; + } else if (typeof window !== 'undefined') { + root = window; + } else if (typeof global !== 'undefined') { + root = global; + } else if (typeof module !== 'undefined') { + root = module; + } else { + root = Function('return this')(); + } + + var result = (0, _ponyfill2['default'])(root); + exports['default'] = result; +},48,[49],"symbol-observable/lib/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports['default'] = symbolObservablePonyfill; + + function symbolObservablePonyfill(root) { + var result; + var _Symbol = root.Symbol; + + if (typeof _Symbol === 'function') { + if (_Symbol.observable) { + result = _Symbol.observable; + } else { + result = _Symbol('observable'); + _Symbol.observable = result; + } + } else { + result = '@@observable'; + } + + return result; + } + + ; +},49,[],"symbol-observable/lib/ponyfill.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports['default'] = combineReducers; + + var _createStore = require(_dependencyMap[0], './createStore'); + + var _isPlainObject = require(_dependencyMap[1], 'lodash/isPlainObject'); + + var _isPlainObject2 = _interopRequireDefault(_isPlainObject); + + var _warning = require(_dependencyMap[2], './utils/warning'); + + var _warning2 = _interopRequireDefault(_warning); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + 'default': obj + }; + } + + function getUndefinedStateErrorMessage(key, action) { + var actionType = action && action.type; + var actionName = actionType && '"' + actionType.toString() + '"' || 'an action'; + return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.'; + } + + function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) { + var reducerKeys = Object.keys(reducers); + var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer'; + + if (reducerKeys.length === 0) { + return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.'; + } + + if (!(0, _isPlainObject2['default'])(inputState)) { + return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"'); + } + + var unexpectedKeys = Object.keys(inputState).filter(function (key) { + return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]; + }); + unexpectedKeys.forEach(function (key) { + unexpectedKeyCache[key] = true; + }); + + if (unexpectedKeys.length > 0) { + return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.'); + } + } + + function assertReducerShape(reducers) { + Object.keys(reducers).forEach(function (key) { + var reducer = reducers[key]; + var initialState = reducer(undefined, { + type: _createStore.ActionTypes.INIT + }); + + if (typeof initialState === 'undefined') { + throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.'); + } + + var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.'); + + if (typeof reducer(undefined, { + type: type + }) === 'undefined') { + throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.'); + } + }); + } + + function combineReducers(reducers) { + var reducerKeys = Object.keys(reducers); + var finalReducers = {}; + + for (var i = 0; i < reducerKeys.length; i++) { + var key = reducerKeys[i]; + + if (process.env.NODE_ENV !== 'production') { + if (typeof reducers[key] === 'undefined') { + (0, _warning2['default'])('No reducer provided for key "' + key + '"'); + } + } + + if (typeof reducers[key] === 'function') { + finalReducers[key] = reducers[key]; + } + } + + var finalReducerKeys = Object.keys(finalReducers); + var unexpectedKeyCache = void 0; + + if (process.env.NODE_ENV !== 'production') { + unexpectedKeyCache = {}; + } + + var shapeAssertionError = void 0; + + try { + assertReducerShape(finalReducers); + } catch (e) { + shapeAssertionError = e; + } + + return function combination() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = arguments[1]; + + if (shapeAssertionError) { + throw shapeAssertionError; + } + + if (process.env.NODE_ENV !== 'production') { + var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache); + + if (warningMessage) { + (0, _warning2['default'])(warningMessage); + } + } + + var hasChanged = false; + var nextState = {}; + + for (var _i = 0; _i < finalReducerKeys.length; _i++) { + var _key = finalReducerKeys[_i]; + var reducer = finalReducers[_key]; + var previousStateForKey = state[_key]; + var nextStateForKey = reducer(previousStateForKey, action); + + if (typeof nextStateForKey === 'undefined') { + var errorMessage = getUndefinedStateErrorMessage(_key, action); + throw new Error(errorMessage); + } + + nextState[_key] = nextStateForKey; + hasChanged = hasChanged || nextStateForKey !== previousStateForKey; + } + + return hasChanged ? nextState : state; + }; + } +},50,[37,38,51],"redux/lib/combineReducers.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports['default'] = warning; + + function warning(message) { + if (typeof console !== 'undefined' && typeof console.error === 'function') { + console.error(message); + } + + try { + throw new Error(message); + } catch (e) {} + } +},51,[],"redux/lib/utils/warning.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports['default'] = bindActionCreators; + + function bindActionCreator(actionCreator, dispatch) { + return function () { + return dispatch(actionCreator.apply(undefined, arguments)); + }; + } + + function bindActionCreators(actionCreators, dispatch) { + if (typeof actionCreators === 'function') { + return bindActionCreator(actionCreators, dispatch); + } + + if (typeof actionCreators !== 'object' || actionCreators === null) { + throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?'); + } + + var keys = Object.keys(actionCreators); + var boundActionCreators = {}; + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var actionCreator = actionCreators[key]; + + if (typeof actionCreator === 'function') { + boundActionCreators[key] = bindActionCreator(actionCreator, dispatch); + } + } + + return boundActionCreators; + } +},52,[],"redux/lib/bindActionCreators.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + exports['default'] = applyMiddleware; + + var _compose = require(_dependencyMap[0], './compose'); + + var _compose2 = _interopRequireDefault(_compose); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + 'default': obj + }; + } + + function applyMiddleware() { + for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) { + middlewares[_key] = arguments[_key]; + } + + return function (createStore) { + return function (reducer, preloadedState, enhancer) { + var store = createStore(reducer, preloadedState, enhancer); + var _dispatch = store.dispatch; + var chain = []; + var middlewareAPI = { + getState: store.getState, + dispatch: function dispatch(action) { + return _dispatch(action); + } + }; + chain = middlewares.map(function (middleware) { + return middleware(middlewareAPI); + }); + _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch); + return _extends({}, store, { + dispatch: _dispatch + }); + }; + }; + } +},53,[54],"redux/lib/applyMiddleware.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + exports.__esModule = true; + exports["default"] = compose; + + function compose() { + for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { + funcs[_key] = arguments[_key]; + } + + if (funcs.length === 0) { + return function (arg) { + return arg; + }; + } + + if (funcs.length === 1) { + return funcs[0]; + } + + return funcs.reduce(function (a, b) { + return function () { + return a(b.apply(undefined, arguments)); + }; + }); + } +},54,[],"redux/lib/compose.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.wrapMapToPropsConstant = wrapMapToPropsConstant; + exports.getDependsOnOwnProps = getDependsOnOwnProps; + exports.wrapMapToPropsFunc = wrapMapToPropsFunc; + + var _verifyPlainObject = require(_dependencyMap[0], '../utils/verifyPlainObject'); + + var _verifyPlainObject2 = _interopRequireDefault(_verifyPlainObject); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function wrapMapToPropsConstant(getConstant) { + return function initConstantSelector(dispatch, options) { + var constant = getConstant(dispatch, options); + + function constantSelector() { + return constant; + } + + constantSelector.dependsOnOwnProps = false; + return constantSelector; + }; + } + + function getDependsOnOwnProps(mapToProps) { + return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1; + } + + function wrapMapToPropsFunc(mapToProps, methodName) { + return function initProxySelector(dispatch, _ref) { + var displayName = _ref.displayName; + + var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) { + return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch); + }; + + proxy.dependsOnOwnProps = true; + + proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) { + proxy.mapToProps = mapToProps; + proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps); + var props = proxy(stateOrDispatch, ownProps); + + if (typeof props === 'function') { + proxy.mapToProps = props; + proxy.dependsOnOwnProps = getDependsOnOwnProps(props); + props = proxy(stateOrDispatch, ownProps); + } + + if (process.env.NODE_ENV !== 'production') (0, _verifyPlainObject2.default)(props, displayName, methodName); + return props; + }; + + return proxy; + }; + } +},55,[56],"react-redux/lib/connect/wrapMapToProps.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.default = verifyPlainObject; + + var _isPlainObject = require(_dependencyMap[0], 'lodash/isPlainObject'); + + var _isPlainObject2 = _interopRequireDefault(_isPlainObject); + + var _warning = require(_dependencyMap[1], './warning'); + + var _warning2 = _interopRequireDefault(_warning); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function verifyPlainObject(value, displayName, methodName) { + if (!(0, _isPlainObject2.default)(value)) { + (0, _warning2.default)(methodName + '() in ' + displayName + ' must return a plain object. Instead received ' + value + '.'); + } + } +},56,[38,28],"react-redux/lib/utils/verifyPlainObject.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.whenMapStateToPropsIsFunction = whenMapStateToPropsIsFunction; + exports.whenMapStateToPropsIsMissing = whenMapStateToPropsIsMissing; + + var _wrapMapToProps = require(_dependencyMap[0], './wrapMapToProps'); + + function whenMapStateToPropsIsFunction(mapStateToProps) { + return typeof mapStateToProps === 'function' ? (0, _wrapMapToProps.wrapMapToPropsFunc)(mapStateToProps, 'mapStateToProps') : undefined; + } + + function whenMapStateToPropsIsMissing(mapStateToProps) { + return !mapStateToProps ? (0, _wrapMapToProps.wrapMapToPropsConstant)(function () { + return {}; + }) : undefined; + } + + exports.default = [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing]; +},57,[55],"react-redux/lib/connect/mapStateToProps.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + exports.defaultMergeProps = defaultMergeProps; + exports.wrapMergePropsFunc = wrapMergePropsFunc; + exports.whenMergePropsIsFunction = whenMergePropsIsFunction; + exports.whenMergePropsIsOmitted = whenMergePropsIsOmitted; + + var _verifyPlainObject = require(_dependencyMap[0], '../utils/verifyPlainObject'); + + var _verifyPlainObject2 = _interopRequireDefault(_verifyPlainObject); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function defaultMergeProps(stateProps, dispatchProps, ownProps) { + return _extends({}, ownProps, stateProps, dispatchProps); + } + + function wrapMergePropsFunc(mergeProps) { + return function initMergePropsProxy(dispatch, _ref) { + var displayName = _ref.displayName, + pure = _ref.pure, + areMergedPropsEqual = _ref.areMergedPropsEqual; + var hasRunOnce = false; + var mergedProps = void 0; + return function mergePropsProxy(stateProps, dispatchProps, ownProps) { + var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps); + + if (hasRunOnce) { + if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps; + } else { + hasRunOnce = true; + mergedProps = nextMergedProps; + if (process.env.NODE_ENV !== 'production') (0, _verifyPlainObject2.default)(mergedProps, displayName, 'mergeProps'); + } + + return mergedProps; + }; + }; + } + + function whenMergePropsIsFunction(mergeProps) { + return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined; + } + + function whenMergePropsIsOmitted(mergeProps) { + return !mergeProps ? function () { + return defaultMergeProps; + } : undefined; + } + + exports.default = [whenMergePropsIsFunction, whenMergePropsIsOmitted]; +},58,[56],"react-redux/lib/connect/mergeProps.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.impureFinalPropsSelectorFactory = impureFinalPropsSelectorFactory; + exports.pureFinalPropsSelectorFactory = pureFinalPropsSelectorFactory; + exports.default = finalPropsSelectorFactory; + + var _verifySubselectors = require(_dependencyMap[0], './verifySubselectors'); + + var _verifySubselectors2 = _interopRequireDefault(_verifySubselectors); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) { + return function impureFinalPropsSelector(state, ownProps) { + return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps); + }; + } + + function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) { + var areStatesEqual = _ref.areStatesEqual, + areOwnPropsEqual = _ref.areOwnPropsEqual, + areStatePropsEqual = _ref.areStatePropsEqual; + var hasRunAtLeastOnce = false; + var state = void 0; + var ownProps = void 0; + var stateProps = void 0; + var dispatchProps = void 0; + var mergedProps = void 0; + + function handleFirstCall(firstState, firstOwnProps) { + state = firstState; + ownProps = firstOwnProps; + stateProps = mapStateToProps(state, ownProps); + dispatchProps = mapDispatchToProps(dispatch, ownProps); + mergedProps = mergeProps(stateProps, dispatchProps, ownProps); + hasRunAtLeastOnce = true; + return mergedProps; + } + + function handleNewPropsAndNewState() { + stateProps = mapStateToProps(state, ownProps); + if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps); + mergedProps = mergeProps(stateProps, dispatchProps, ownProps); + return mergedProps; + } + + function handleNewProps() { + if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps); + if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps); + mergedProps = mergeProps(stateProps, dispatchProps, ownProps); + return mergedProps; + } + + function handleNewState() { + var nextStateProps = mapStateToProps(state, ownProps); + var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps); + stateProps = nextStateProps; + if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps); + return mergedProps; + } + + function handleSubsequentCalls(nextState, nextOwnProps) { + var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps); + var stateChanged = !areStatesEqual(nextState, state); + state = nextState; + ownProps = nextOwnProps; + if (propsChanged && stateChanged) return handleNewPropsAndNewState(); + if (propsChanged) return handleNewProps(); + if (stateChanged) return handleNewState(); + return mergedProps; + } + + return function pureFinalPropsSelector(nextState, nextOwnProps) { + return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps); + }; + } + + function finalPropsSelectorFactory(dispatch, _ref2) { + var initMapStateToProps = _ref2.initMapStateToProps, + initMapDispatchToProps = _ref2.initMapDispatchToProps, + initMergeProps = _ref2.initMergeProps, + options = _objectWithoutProperties(_ref2, ['initMapStateToProps', 'initMapDispatchToProps', 'initMergeProps']); + + var mapStateToProps = initMapStateToProps(dispatch, options); + var mapDispatchToProps = initMapDispatchToProps(dispatch, options); + var mergeProps = initMergeProps(dispatch, options); + + if (process.env.NODE_ENV !== 'production') { + (0, _verifySubselectors2.default)(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName); + } + + var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory; + return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options); + } +},59,[60],"react-redux/lib/connect/selectorFactory.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.default = verifySubselectors; + + var _warning = require(_dependencyMap[0], '../utils/warning'); + + var _warning2 = _interopRequireDefault(_warning); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function verify(selector, methodName, displayName) { + if (!selector) { + throw new Error('Unexpected value for ' + methodName + ' in ' + displayName + '.'); + } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') { + if (!selector.hasOwnProperty('dependsOnOwnProps')) { + (0, _warning2.default)('The selector for ' + methodName + ' of ' + displayName + ' did not specify a value for dependsOnOwnProps.'); + } + } + } + + function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) { + verify(mapStateToProps, 'mapStateToProps', displayName); + verify(mapDispatchToProps, 'mapDispatchToProps', displayName); + verify(mergeProps, 'mergeProps', displayName); + } +},60,[28],"react-redux/lib/connect/verifySubselectors.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _view = require(_dependencyMap[2], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state) { + return { + featuredUris: (0, _lbryRedux.selectFeaturedUris)(state), + fetchingFeaturedUris: (0, _lbryRedux.selectFetchingFeaturedUris)(state) + }; + }; + + var perform = function perform(dispatch) { + return { + fetchFeaturedUris: function fetchFeaturedUris() { + return dispatch((0, _lbryRedux.doFetchFeaturedUris)()); + } + }; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},61,[22,62,63],"LBRYApp/src/page/discover/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + (function webpackUniversalModuleDefinition(root, factory) { + if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else { + var a = factory(); + + for (var i in a) { + (typeof exports === 'object' ? exports : root)[i] = a[i]; + } + } + })(typeof self !== 'undefined' ? self : this, function () { + return function (modules) { + var installedModules = {}; + + function __webpack_require__(moduleId) { + if (installedModules[moduleId]) { + return installedModules[moduleId].exports; + } + + var module = installedModules[moduleId] = { + i: moduleId, + l: false, + exports: {} + }; + modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + module.l = true; + return module.exports; + } + + __webpack_require__.m = modules; + __webpack_require__.c = installedModules; + + __webpack_require__.d = function (exports, name, getter) { + if (!__webpack_require__.o(exports, name)) { + Object.defineProperty(exports, name, { + configurable: false, + enumerable: true, + get: getter + }); + } + }; + + __webpack_require__.n = function (module) { + var getter = module && module.__esModule ? function getDefault() { + return module['default']; + } : function getModuleExports() { + return module; + }; + + __webpack_require__.d(getter, 'a', getter); + + return getter; + }; + + __webpack_require__.o = function (object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; + + __webpack_require__.p = ""; + return __webpack_require__(__webpack_require__.s = 14); + }([function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + var OPEN_MODAL = exports.OPEN_MODAL = 'OPEN_MODAL'; + var CLOSE_MODAL = exports.CLOSE_MODAL = 'CLOSE_MODAL'; + var SHOW_SNACKBAR = exports.SHOW_SNACKBAR = 'SHOW_SNACKBAR'; + var REMOVE_SNACKBAR_SNACK = exports.REMOVE_SNACKBAR_SNACK = 'REMOVE_SNACKBAR_SNACK'; + var WINDOW_FOCUSED = exports.WINDOW_FOCUSED = 'WINDOW_FOCUSED'; + var DAEMON_READY = exports.DAEMON_READY = 'DAEMON_READY'; + var DAEMON_VERSION_MATCH = exports.DAEMON_VERSION_MATCH = 'DAEMON_VERSION_MATCH'; + var DAEMON_VERSION_MISMATCH = exports.DAEMON_VERSION_MISMATCH = 'DAEMON_VERSION_MISMATCH'; + var VOLUME_CHANGED = exports.VOLUME_CHANGED = 'VOLUME_CHANGED'; + var CHANGE_AFTER_AUTH_PATH = exports.CHANGE_AFTER_AUTH_PATH = 'CHANGE_AFTER_AUTH_PATH'; + var WINDOW_SCROLLED = exports.WINDOW_SCROLLED = 'WINDOW_SCROLLED'; + var HISTORY_NAVIGATE = exports.HISTORY_NAVIGATE = 'HISTORY_NAVIGATE'; + var UPGRADE_CANCELLED = exports.UPGRADE_CANCELLED = 'UPGRADE_CANCELLED'; + var DOWNLOAD_UPGRADE = exports.DOWNLOAD_UPGRADE = 'DOWNLOAD_UPGRADE'; + var UPGRADE_DOWNLOAD_STARTED = exports.UPGRADE_DOWNLOAD_STARTED = 'UPGRADE_DOWNLOAD_STARTED'; + var UPGRADE_DOWNLOAD_COMPLETED = exports.UPGRADE_DOWNLOAD_COMPLETED = 'UPGRADE_DOWNLOAD_COMPLETED'; + var UPGRADE_DOWNLOAD_PROGRESSED = exports.UPGRADE_DOWNLOAD_PROGRESSED = 'UPGRADE_DOWNLOAD_PROGRESSED'; + var CHECK_UPGRADE_AVAILABLE = exports.CHECK_UPGRADE_AVAILABLE = 'CHECK_UPGRADE_AVAILABLE'; + var CHECK_UPGRADE_START = exports.CHECK_UPGRADE_START = 'CHECK_UPGRADE_START'; + var CHECK_UPGRADE_SUCCESS = exports.CHECK_UPGRADE_SUCCESS = 'CHECK_UPGRADE_SUCCESS'; + var CHECK_UPGRADE_FAIL = exports.CHECK_UPGRADE_FAIL = 'CHECK_UPGRADE_FAIL'; + var CHECK_UPGRADE_SUBSCRIBE = exports.CHECK_UPGRADE_SUBSCRIBE = 'CHECK_UPGRADE_SUBSCRIBE'; + var UPDATE_VERSION = exports.UPDATE_VERSION = 'UPDATE_VERSION'; + var UPDATE_REMOTE_VERSION = exports.UPDATE_REMOTE_VERSION = 'UPDATE_REMOTE_VERSION'; + var SKIP_UPGRADE = exports.SKIP_UPGRADE = 'SKIP_UPGRADE'; + var START_UPGRADE = exports.START_UPGRADE = 'START_UPGRADE'; + var GET_NEW_ADDRESS_STARTED = exports.GET_NEW_ADDRESS_STARTED = 'GET_NEW_ADDRESS_STARTED'; + var GET_NEW_ADDRESS_COMPLETED = exports.GET_NEW_ADDRESS_COMPLETED = 'GET_NEW_ADDRESS_COMPLETED'; + var FETCH_TRANSACTIONS_STARTED = exports.FETCH_TRANSACTIONS_STARTED = 'FETCH_TRANSACTIONS_STARTED'; + var FETCH_TRANSACTIONS_COMPLETED = exports.FETCH_TRANSACTIONS_COMPLETED = 'FETCH_TRANSACTIONS_COMPLETED'; + var UPDATE_BALANCE = exports.UPDATE_BALANCE = 'UPDATE_BALANCE'; + var CHECK_ADDRESS_IS_MINE_STARTED = exports.CHECK_ADDRESS_IS_MINE_STARTED = 'CHECK_ADDRESS_IS_MINE_STARTED'; + var CHECK_ADDRESS_IS_MINE_COMPLETED = exports.CHECK_ADDRESS_IS_MINE_COMPLETED = 'CHECK_ADDRESS_IS_MINE_COMPLETED'; + var SET_DRAFT_TRANSACTION_AMOUNT = exports.SET_DRAFT_TRANSACTION_AMOUNT = 'SET_DRAFT_TRANSACTION_AMOUNT'; + var SET_DRAFT_TRANSACTION_ADDRESS = exports.SET_DRAFT_TRANSACTION_ADDRESS = 'SET_DRAFT_TRANSACTION_ADDRESS'; + var SEND_TRANSACTION_STARTED = exports.SEND_TRANSACTION_STARTED = 'SEND_TRANSACTION_STARTED'; + var SEND_TRANSACTION_COMPLETED = exports.SEND_TRANSACTION_COMPLETED = 'SEND_TRANSACTION_COMPLETED'; + var SEND_TRANSACTION_FAILED = exports.SEND_TRANSACTION_FAILED = 'SEND_TRANSACTION_FAILED'; + var FETCH_BLOCK_SUCCESS = exports.FETCH_BLOCK_SUCCESS = 'FETCH_BLOCK_SUCCESS'; + var SUPPORT_TRANSACTION_STARTED = exports.SUPPORT_TRANSACTION_STARTED = 'SUPPORT_TRANSACTION_STARTED'; + var SUPPORT_TRANSACTION_COMPLETED = exports.SUPPORT_TRANSACTION_COMPLETED = 'SUPPORT_TRANSACTION_COMPLETED'; + var SUPPORT_TRANSACTION_FAILED = exports.SUPPORT_TRANSACTION_FAILED = 'SUPPORT_TRANSACTION_FAILED'; + var FETCH_FEATURED_CONTENT_STARTED = exports.FETCH_FEATURED_CONTENT_STARTED = 'FETCH_FEATURED_CONTENT_STARTED'; + var FETCH_FEATURED_CONTENT_COMPLETED = exports.FETCH_FEATURED_CONTENT_COMPLETED = 'FETCH_FEATURED_CONTENT_COMPLETED'; + var RESOLVE_URIS_STARTED = exports.RESOLVE_URIS_STARTED = 'RESOLVE_URIS_STARTED'; + var RESOLVE_URIS_COMPLETED = exports.RESOLVE_URIS_COMPLETED = 'RESOLVE_URIS_COMPLETED'; + var FETCH_CHANNEL_CLAIMS_STARTED = exports.FETCH_CHANNEL_CLAIMS_STARTED = 'FETCH_CHANNEL_CLAIMS_STARTED'; + var FETCH_CHANNEL_CLAIMS_COMPLETED = exports.FETCH_CHANNEL_CLAIMS_COMPLETED = 'FETCH_CHANNEL_CLAIMS_COMPLETED'; + var FETCH_CHANNEL_CLAIM_COUNT_STARTED = exports.FETCH_CHANNEL_CLAIM_COUNT_STARTED = 'FETCH_CHANNEL_CLAIM_COUNT_STARTED'; + var FETCH_CHANNEL_CLAIM_COUNT_COMPLETED = exports.FETCH_CHANNEL_CLAIM_COUNT_COMPLETED = 'FETCH_CHANNEL_CLAIM_COUNT_COMPLETED'; + var FETCH_CLAIM_LIST_MINE_STARTED = exports.FETCH_CLAIM_LIST_MINE_STARTED = 'FETCH_CLAIM_LIST_MINE_STARTED'; + var FETCH_CLAIM_LIST_MINE_COMPLETED = exports.FETCH_CLAIM_LIST_MINE_COMPLETED = 'FETCH_CLAIM_LIST_MINE_COMPLETED'; + var ABANDON_CLAIM_STARTED = exports.ABANDON_CLAIM_STARTED = 'ABANDON_CLAIM_STARTED'; + var ABANDON_CLAIM_SUCCEEDED = exports.ABANDON_CLAIM_SUCCEEDED = 'ABANDON_CLAIM_SUCCEEDED'; + var FETCH_CHANNEL_LIST_MINE_STARTED = exports.FETCH_CHANNEL_LIST_MINE_STARTED = 'FETCH_CHANNEL_LIST_MINE_STARTED'; + var FETCH_CHANNEL_LIST_MINE_COMPLETED = exports.FETCH_CHANNEL_LIST_MINE_COMPLETED = 'FETCH_CHANNEL_LIST_MINE_COMPLETED'; + var CREATE_CHANNEL_STARTED = exports.CREATE_CHANNEL_STARTED = 'CREATE_CHANNEL_STARTED'; + var CREATE_CHANNEL_COMPLETED = exports.CREATE_CHANNEL_COMPLETED = 'CREATE_CHANNEL_COMPLETED'; + var PUBLISH_STARTED = exports.PUBLISH_STARTED = 'PUBLISH_STARTED'; + var PUBLISH_COMPLETED = exports.PUBLISH_COMPLETED = 'PUBLISH_COMPLETED'; + var PUBLISH_FAILED = exports.PUBLISH_FAILED = 'PUBLISH_FAILED'; + var SET_PLAYING_URI = exports.SET_PLAYING_URI = 'PLAY_URI'; + var FILE_LIST_STARTED = exports.FILE_LIST_STARTED = 'FILE_LIST_STARTED'; + var FILE_LIST_SUCCEEDED = exports.FILE_LIST_SUCCEEDED = 'FILE_LIST_SUCCEEDED'; + var FETCH_FILE_INFO_STARTED = exports.FETCH_FILE_INFO_STARTED = 'FETCH_FILE_INFO_STARTED'; + var FETCH_FILE_INFO_COMPLETED = exports.FETCH_FILE_INFO_COMPLETED = 'FETCH_FILE_INFO_COMPLETED'; + var FETCH_COST_INFO_STARTED = exports.FETCH_COST_INFO_STARTED = 'FETCH_COST_INFO_STARTED'; + var FETCH_COST_INFO_COMPLETED = exports.FETCH_COST_INFO_COMPLETED = 'FETCH_COST_INFO_COMPLETED'; + var LOADING_VIDEO_STARTED = exports.LOADING_VIDEO_STARTED = 'LOADING_VIDEO_STARTED'; + var LOADING_VIDEO_COMPLETED = exports.LOADING_VIDEO_COMPLETED = 'LOADING_VIDEO_COMPLETED'; + var LOADING_VIDEO_FAILED = exports.LOADING_VIDEO_FAILED = 'LOADING_VIDEO_FAILED'; + var DOWNLOADING_STARTED = exports.DOWNLOADING_STARTED = 'DOWNLOADING_STARTED'; + var DOWNLOADING_PROGRESSED = exports.DOWNLOADING_PROGRESSED = 'DOWNLOADING_PROGRESSED'; + var DOWNLOADING_COMPLETED = exports.DOWNLOADING_COMPLETED = 'DOWNLOADING_COMPLETED'; + var PLAY_VIDEO_STARTED = exports.PLAY_VIDEO_STARTED = 'PLAY_VIDEO_STARTED'; + var FETCH_AVAILABILITY_STARTED = exports.FETCH_AVAILABILITY_STARTED = 'FETCH_AVAILABILITY_STARTED'; + var FETCH_AVAILABILITY_COMPLETED = exports.FETCH_AVAILABILITY_COMPLETED = 'FETCH_AVAILABILITY_COMPLETED'; + var FILE_DELETE = exports.FILE_DELETE = 'FILE_DELETE'; + var SEARCH_STARTED = exports.SEARCH_STARTED = 'SEARCH_STARTED'; + var SEARCH_COMPLETED = exports.SEARCH_COMPLETED = 'SEARCH_COMPLETED'; + var SEARCH_CANCELLED = exports.SEARCH_CANCELLED = 'SEARCH_CANCELLED'; + var DAEMON_SETTINGS_RECEIVED = exports.DAEMON_SETTINGS_RECEIVED = 'DAEMON_SETTINGS_RECEIVED'; + var CLIENT_SETTING_CHANGED = exports.CLIENT_SETTING_CHANGED = 'CLIENT_SETTING_CHANGED'; + var AUTHENTICATION_STARTED = exports.AUTHENTICATION_STARTED = 'AUTHENTICATION_STARTED'; + var AUTHENTICATION_SUCCESS = exports.AUTHENTICATION_SUCCESS = 'AUTHENTICATION_SUCCESS'; + var AUTHENTICATION_FAILURE = exports.AUTHENTICATION_FAILURE = 'AUTHENTICATION_FAILURE'; + var USER_EMAIL_DECLINE = exports.USER_EMAIL_DECLINE = 'USER_EMAIL_DECLINE'; + var USER_EMAIL_NEW_STARTED = exports.USER_EMAIL_NEW_STARTED = 'USER_EMAIL_NEW_STARTED'; + var USER_EMAIL_NEW_SUCCESS = exports.USER_EMAIL_NEW_SUCCESS = 'USER_EMAIL_NEW_SUCCESS'; + var USER_EMAIL_NEW_EXISTS = exports.USER_EMAIL_NEW_EXISTS = 'USER_EMAIL_NEW_EXISTS'; + var USER_EMAIL_NEW_FAILURE = exports.USER_EMAIL_NEW_FAILURE = 'USER_EMAIL_NEW_FAILURE'; + var USER_EMAIL_VERIFY_STARTED = exports.USER_EMAIL_VERIFY_STARTED = 'USER_EMAIL_VERIFY_STARTED'; + var USER_EMAIL_VERIFY_SUCCESS = exports.USER_EMAIL_VERIFY_SUCCESS = 'USER_EMAIL_VERIFY_SUCCESS'; + var USER_EMAIL_VERIFY_FAILURE = exports.USER_EMAIL_VERIFY_FAILURE = 'USER_EMAIL_VERIFY_FAILURE'; + var USER_IDENTITY_VERIFY_STARTED = exports.USER_IDENTITY_VERIFY_STARTED = 'USER_IDENTITY_VERIFY_STARTED'; + var USER_IDENTITY_VERIFY_SUCCESS = exports.USER_IDENTITY_VERIFY_SUCCESS = 'USER_IDENTITY_VERIFY_SUCCESS'; + var USER_IDENTITY_VERIFY_FAILURE = exports.USER_IDENTITY_VERIFY_FAILURE = 'USER_IDENTITY_VERIFY_FAILURE'; + var USER_FETCH_STARTED = exports.USER_FETCH_STARTED = 'USER_FETCH_STARTED'; + var USER_FETCH_SUCCESS = exports.USER_FETCH_SUCCESS = 'USER_FETCH_SUCCESS'; + var USER_FETCH_FAILURE = exports.USER_FETCH_FAILURE = 'USER_FETCH_FAILURE'; + var USER_INVITE_STATUS_FETCH_STARTED = exports.USER_INVITE_STATUS_FETCH_STARTED = 'USER_INVITE_STATUS_FETCH_STARTED'; + var USER_INVITE_STATUS_FETCH_SUCCESS = exports.USER_INVITE_STATUS_FETCH_SUCCESS = 'USER_INVITE_STATUS_FETCH_SUCCESS'; + var USER_INVITE_STATUS_FETCH_FAILURE = exports.USER_INVITE_STATUS_FETCH_FAILURE = 'USER_INVITE_STATUS_FETCH_FAILURE'; + var USER_INVITE_NEW_STARTED = exports.USER_INVITE_NEW_STARTED = 'USER_INVITE_NEW_STARTED'; + var USER_INVITE_NEW_SUCCESS = exports.USER_INVITE_NEW_SUCCESS = 'USER_INVITE_NEW_SUCCESS'; + var USER_INVITE_NEW_FAILURE = exports.USER_INVITE_NEW_FAILURE = 'USER_INVITE_NEW_FAILURE'; + var FETCH_ACCESS_TOKEN_SUCCESS = exports.FETCH_ACCESS_TOKEN_SUCCESS = 'FETCH_ACCESS_TOKEN_SUCCESS'; + var FETCH_REWARDS_STARTED = exports.FETCH_REWARDS_STARTED = 'FETCH_REWARDS_STARTED'; + var FETCH_REWARDS_COMPLETED = exports.FETCH_REWARDS_COMPLETED = 'FETCH_REWARDS_COMPLETED'; + var CLAIM_REWARD_STARTED = exports.CLAIM_REWARD_STARTED = 'CLAIM_REWARD_STARTED'; + var CLAIM_REWARD_SUCCESS = exports.CLAIM_REWARD_SUCCESS = 'CLAIM_REWARD_SUCCESS'; + var CLAIM_REWARD_FAILURE = exports.CLAIM_REWARD_FAILURE = 'CLAIM_REWARD_FAILURE'; + var CLAIM_REWARD_CLEAR_ERROR = exports.CLAIM_REWARD_CLEAR_ERROR = 'CLAIM_REWARD_CLEAR_ERROR'; + var FETCH_REWARD_CONTENT_COMPLETED = exports.FETCH_REWARD_CONTENT_COMPLETED = 'FETCH_REWARD_CONTENT_COMPLETED'; + var DOWNLOAD_LANGUAGE_SUCCEEDED = exports.DOWNLOAD_LANGUAGE_SUCCEEDED = 'DOWNLOAD_LANGUAGE_SUCCEEDED'; + var DOWNLOAD_LANGUAGE_FAILED = exports.DOWNLOAD_LANGUAGE_FAILED = 'DOWNLOAD_LANGUAGE_FAILED'; + var GET_SUPPORTED_COINS_START = exports.GET_SUPPORTED_COINS_START = 'GET_SUPPORTED_COINS_START'; + var GET_SUPPORTED_COINS_SUCCESS = exports.GET_SUPPORTED_COINS_SUCCESS = 'GET_SUPPORTED_COINS_SUCCESS'; + var GET_SUPPORTED_COINS_FAIL = exports.GET_SUPPORTED_COINS_FAIL = 'GET_SUPPORTED_COINS_FAIL'; + var GET_COIN_STATS_START = exports.GET_COIN_STATS_START = 'GET_COIN_STATS_START'; + var GET_COIN_STATS_SUCCESS = exports.GET_COIN_STATS_SUCCESS = 'GET_COIN_STATS_SUCCESS'; + var GET_COIN_STATS_FAIL = exports.GET_COIN_STATS_FAIL = 'GET_COIN_STATS_FAIL'; + var PREPARE_SHAPE_SHIFT_START = exports.PREPARE_SHAPE_SHIFT_START = 'PREPARE_SHAPE_SHIFT_START'; + var PREPARE_SHAPE_SHIFT_SUCCESS = exports.PREPARE_SHAPE_SHIFT_SUCCESS = 'PREPARE_SHAPE_SHIFT_SUCCESS'; + var PREPARE_SHAPE_SHIFT_FAIL = exports.PREPARE_SHAPE_SHIFT_FAIL = 'PREPARE_SHAPE_SHIFT_FAIL'; + var GET_ACTIVE_SHIFT_START = exports.GET_ACTIVE_SHIFT_START = 'GET_ACTIVE_SHIFT_START'; + var GET_ACTIVE_SHIFT_SUCCESS = exports.GET_ACTIVE_SHIFT_SUCCESS = 'GET_ACTIVE_SHIFT_SUCCESS'; + var GET_ACTIVE_SHIFT_FAIL = exports.GET_ACTIVE_SHIFT_FAIL = 'GET_ACTIVE_SHIFT_FAIL'; + var CLEAR_SHAPE_SHIFT = exports.CLEAR_SHAPE_SHIFT = 'CLEAR_SHAPE_SHIFT'; + var CHANNEL_SUBSCRIBE = exports.CHANNEL_SUBSCRIBE = 'CHANNEL_SUBSCRIBE'; + var CHANNEL_UNSUBSCRIBE = exports.CHANNEL_UNSUBSCRIBE = 'CHANNEL_UNSUBSCRIBE'; + var HAS_FETCHED_SUBSCRIPTIONS = exports.HAS_FETCHED_SUBSCRIPTIONS = 'HAS_FETCHED_SUBSCRIPTIONS'; + var SET_VIDEO_PAUSE = exports.SET_VIDEO_PAUSE = 'SET_VIDEO_PAUSE'; + var MEDIA_PLAY = exports.MEDIA_PLAY = 'MEDIA_PLAY'; + var MEDIA_PAUSE = exports.MEDIA_PAUSE = 'MEDIA_PAUSE'; + var MEDIA_POSITION = exports.MEDIA_POSITION = 'MEDIA_POSITION'; + var NOTIFICATION_CREATED = exports.NOTIFICATION_CREATED = 'NOTIFICATION_CREATED'; + var NOTIFICATION_DISPLAYED = exports.NOTIFICATION_DISPLAYED = 'NOTIFICATION_DISPLAYED'; + }, function (module, exports, __webpack_require__) { + "use strict"; + + exports.__esModule = true; + exports.defaultMemoize = defaultMemoize; + exports.createSelectorCreator = createSelectorCreator; + exports.createStructuredSelector = createStructuredSelector; + + function defaultEqualityCheck(a, b) { + return a === b; + } + + function areArgumentsShallowlyEqual(equalityCheck, prev, next) { + if (prev === null || next === null || prev.length !== next.length) { + return false; + } + + var length = prev.length; + + for (var i = 0; i < length; i++) { + if (!equalityCheck(prev[i], next[i])) { + return false; + } + } + + return true; + } + + function defaultMemoize(func) { + var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck; + var lastArgs = null; + var lastResult = null; + return function () { + if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) { + lastResult = func.apply(null, arguments); + } + + lastArgs = arguments; + return lastResult; + }; + } + + function getDependencies(funcs) { + var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs; + + if (!dependencies.every(function (dep) { + return typeof dep === 'function'; + })) { + var dependencyTypes = dependencies.map(function (dep) { + return typeof dep; + }).join(', '); + throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']')); + } + + return dependencies; + } + + function createSelectorCreator(memoize) { + for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + memoizeOptions[_key - 1] = arguments[_key]; + } + + return function () { + for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + funcs[_key2] = arguments[_key2]; + } + + var recomputations = 0; + var resultFunc = funcs.pop(); + var dependencies = getDependencies(funcs); + var memoizedResultFunc = memoize.apply(undefined, [function () { + recomputations++; + return resultFunc.apply(null, arguments); + }].concat(memoizeOptions)); + var selector = defaultMemoize(function () { + var params = []; + var length = dependencies.length; + + for (var i = 0; i < length; i++) { + params.push(dependencies[i].apply(null, arguments)); + } + + return memoizedResultFunc.apply(null, params); + }); + selector.resultFunc = resultFunc; + + selector.recomputations = function () { + return recomputations; + }; + + selector.resetRecomputations = function () { + return recomputations = 0; + }; + + return selector; + }; + } + + var createSelector = exports.createSelector = createSelectorCreator(defaultMemoize); + + function createStructuredSelector(selectors) { + var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector; + + if (typeof selectors !== 'object') { + throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors)); + } + + var objectKeys = Object.keys(selectors); + return selectorCreator(objectKeys.map(function (key) { + return selectors[key]; + }), function () { + for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + values[_key3] = arguments[_key3]; + } + + return values.reduce(function (composition, value, index) { + composition[objectKeys[index]] = value; + return composition; + }, {}); + }); + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + var _slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((typeof Symbol === "function" ? Symbol.iterator : "@@iterator") in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + exports.parseURI = parseURI; + exports.buildURI = buildURI; + exports.normalizeURI = normalizeURI; + exports.isURIValid = isURIValid; + exports.isNameValid = isNameValid; + exports.isURIClaimable = isURIClaimable; + var channelNameMinLength = 1; + var claimIdMaxLength = 40; + var regexInvalidURI = exports.regexInvalidURI = /[^A-Za-z0-9-]/g; + var regexAddress = exports.regexAddress = /^b(?=[^0OIl]{32,33})[0-9A-Za-z]{32,33}$/; + + function parseURI(URI) { + var requireProto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var componentsRegex = new RegExp('^((?:lbry://)?)' + '([^:$#/]*)' + '([:$#]?)([^/]*)' + '(/?)(.*)'); + + var _componentsRegex$exec = componentsRegex.exec(URI).slice(1).map(function (match) { + return match || null; + }), + _componentsRegex$exec2 = _slicedToArray(_componentsRegex$exec, 6), + proto = _componentsRegex$exec2[0], + name = _componentsRegex$exec2[1], + modSep = _componentsRegex$exec2[2], + modVal = _componentsRegex$exec2[3], + pathSep = _componentsRegex$exec2[4], + path = _componentsRegex$exec2[5]; + + var contentName = void 0; + + if (requireProto && !proto) { + throw new Error(__('LBRY URIs must include a protocol prefix (lbry://).')); + } + + if (!name) { + throw new Error(__('URI does not include name.')); + } + + var isChannel = name.startsWith('@'); + var channelName = isChannel ? name.slice(1) : name; + + if (isChannel) { + if (!channelName) { + throw new Error(__('No channel name after @.')); + } + + if (channelName.length < channelNameMinLength) { + throw new Error(__('Channel names must be at least %s characters.', channelNameMinLength)); + } + + contentName = path; + } + + var nameBadChars = (channelName || name).match(regexInvalidURI); + + if (nameBadChars) { + throw new Error(__('Invalid character %s in name: %s.', nameBadChars.length === 1 ? '' : 's', nameBadChars.join(', '))); + } + + var claimId = void 0; + var claimSequence = void 0; + var bidPosition = void 0; + + if (modSep) { + if (!modVal) { + throw new Error(__('No modifier provided after separator %s.', modSep)); + } + + if (modSep === '#') { + claimId = modVal; + } else if (modSep === ':') { + claimSequence = modVal; + } else if (modSep === '$') { + bidPosition = modVal; + } + } + + if (claimId && (claimId.length > claimIdMaxLength || !claimId.match(/^[0-9a-f]+$/)) && !claimId.match(/^pending/)) { + throw new Error(__('Invalid claim ID %s.', claimId)); + } + + if (claimSequence && !claimSequence.match(/^-?[1-9][0-9]*$/)) { + throw new Error(__('Claim sequence must be a number.')); + } + + if (bidPosition && !bidPosition.match(/^-?[1-9][0-9]*$/)) { + throw new Error(__('Bid position must be a number.')); + } + + if (path) { + if (!isChannel) { + throw new Error(__('Only channel URIs may have a path.')); + } + + var pathBadChars = path.match(regexInvalidURI); + + if (pathBadChars) { + throw new Error(__('Invalid character in path: %s', pathBadChars.join(', '))); + } + + contentName = path; + } else if (pathSep) { + throw new Error(__('No path provided after /')); + } + + return _extends({ + name: name, + path: path, + isChannel: isChannel + }, contentName ? { + contentName: contentName + } : {}, channelName ? { + channelName: channelName + } : {}, claimSequence ? { + claimSequence: parseInt(claimSequence, 10) + } : {}, bidPosition ? { + bidPosition: parseInt(bidPosition, 10) + } : {}, claimId ? { + claimId: claimId + } : {}, path ? { + path: path + } : {}); + } + + function buildURI(URIObj) { + var includeProto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var claimId = URIObj.claimId, + claimSequence = URIObj.claimSequence, + bidPosition = URIObj.bidPosition, + contentName = URIObj.contentName, + channelName = URIObj.channelName; + var name = URIObj.name, + path = URIObj.path; + + if (channelName) { + var channelNameFormatted = channelName.startsWith('@') ? channelName : '@' + channelName; + + if (!name) { + name = channelNameFormatted; + } else if (name !== channelNameFormatted) { + throw new Error(__('Received a channel content URI, but name and channelName do not match. "name" represents the value in the name position of the URI (lbry://name...), which for channel content will be the channel name. In most cases, to construct a channel URI you should just pass channelName and contentName.')); + } + } + + if (contentName) { + if (!name) { + name = contentName; + } else if (!path) { + path = contentName; + } + + if (path && path !== contentName) { + throw new Error(__('Path and contentName do not match. Only one is required; most likely you wanted contentName.')); + } + } + + return (includeProto ? 'lbry://' : '') + name + (claimId ? '#' + claimId : '') + (claimSequence ? ':' + claimSequence : '') + (bidPosition ? '' + bidPosition : '') + (path ? '/' + path : ''); + } + + function normalizeURI(URI) { + if (URI.match(/pending_claim/)) return URI; + + var _parseURI = parseURI(URI), + name = _parseURI.name, + path = _parseURI.path, + bidPosition = _parseURI.bidPosition, + claimSequence = _parseURI.claimSequence, + claimId = _parseURI.claimId; + + return buildURI({ + name: name, + path: path, + claimSequence: claimSequence, + bidPosition: bidPosition, + claimId: claimId + }); + } + + function isURIValid(URI) { + var parts = void 0; + + try { + parts = parseURI(normalizeURI(URI)); + } catch (error) { + return false; + } + + return parts && parts.name; + } + + function isNameValid(name) { + var checkCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var regexp = new RegExp('^[a-z0-9-]+$', checkCase ? '' : 'i'); + return regexp.test(name); + } + + function isURIClaimable(URI) { + var parts = void 0; + + try { + parts = parseURI(normalizeURI(URI)); + } catch (error) { + return false; + } + + return parts && parts.name && !parts.claimId && !parts.bidPosition && !parts.claimSequence && !parts.isChannel && !parts.path; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.selectRewardContentClaimIds = exports.makeSelectTotalPagesForChannel = exports.makeSelectTotalItemsForChannel = exports.selectChannelClaimCounts = exports.selectPlayingUri = exports.selectFetchingFeaturedUris = exports.selectFeaturedUris = exports.makeSelectIsUriResolving = exports.selectResolvingUris = exports.selectMyChannelClaims = exports.selectFetchingMyChannels = exports.selectMyClaimsOutpoints = exports.selectAllMyClaimsByOutpoint = exports.selectMyClaimsWithoutChannels = exports.selectMyClaims = exports.selectPendingClaims = exports.selectIsFetchingClaimListMine = exports.makeSelectContentTypeForUri = exports.makeSelectTitleForUri = exports.makeSelectMetadataForUri = exports.makeSelectClaimsInChannelForCurrentPage = exports.makeSelectFetchingChannelClaims = exports.selectAllFetchingChannelClaims = exports.makeSelectClaimIsMine = exports.selectMyActiveClaims = exports.selectAbandoningIds = exports.selectMyClaimsRaw = exports.makeSelectClaimForUri = exports.selectAllClaimsByChannel = exports.selectClaimsByUri = exports.selectClaimsById = undefined; + + var _lbryURI = __webpack_require__(2); + + var _navigation = __webpack_require__(4); + + var _reselect = __webpack_require__(1); + + function _toConsumableArray(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return Array.from(arr); + } + } + + var selectState = function selectState(state) { + return state.claims || {}; + }; + + var selectClaimsById = exports.selectClaimsById = (0, _reselect.createSelector)(selectState, function (state) { + return state.byId || {}; + }); + var selectClaimsByUri = exports.selectClaimsByUri = (0, _reselect.createSelector)(selectState, selectClaimsById, function (state, byId) { + var byUri = state.claimsByUri || {}; + var claims = {}; + Object.keys(byUri).forEach(function (uri) { + var claimId = byUri[uri]; + + if (claimId === null) { + claims[uri] = null; + } else { + claims[uri] = byId[claimId]; + } + }); + return claims; + }); + var selectAllClaimsByChannel = exports.selectAllClaimsByChannel = (0, _reselect.createSelector)(selectState, function (state) { + return state.claimsByChannel || {}; + }); + + var makeSelectClaimForUri = exports.makeSelectClaimForUri = function makeSelectClaimForUri(uri) { + return (0, _reselect.createSelector)(selectClaimsByUri, function (claims) { + return claims && claims[(0, _lbryURI.normalizeURI)(uri)]; + }); + }; + + var selectMyClaimsRaw = exports.selectMyClaimsRaw = (0, _reselect.createSelector)(selectState, function (state) { + return state.myClaims; + }); + var selectAbandoningIds = exports.selectAbandoningIds = (0, _reselect.createSelector)(selectState, function (state) { + return Object.keys(state.abandoningById || {}); + }); + var selectMyActiveClaims = exports.selectMyActiveClaims = (0, _reselect.createSelector)(selectMyClaimsRaw, selectAbandoningIds, function (claims, abandoningIds) { + return new Set(claims && claims.map(function (claim) { + return claim.claim_id; + }).filter(function (claimId) { + return Object.keys(abandoningIds).indexOf(claimId) === -1; + })); + }); + + var makeSelectClaimIsMine = exports.makeSelectClaimIsMine = function makeSelectClaimIsMine(rawUri) { + var uri = (0, _lbryURI.normalizeURI)(rawUri); + return (0, _reselect.createSelector)(selectClaimsByUri, selectMyActiveClaims, function (claims, myClaims) { + return claims && claims[uri] && claims[uri].claim_id && myClaims.has(claims[uri].claim_id); + }); + }; + + var selectAllFetchingChannelClaims = exports.selectAllFetchingChannelClaims = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingChannelClaims || {}; + }); + + var makeSelectFetchingChannelClaims = exports.makeSelectFetchingChannelClaims = function makeSelectFetchingChannelClaims(uri) { + return (0, _reselect.createSelector)(selectAllFetchingChannelClaims, function (fetching) { + return fetching && fetching[uri]; + }); + }; + + var makeSelectClaimsInChannelForCurrentPage = exports.makeSelectClaimsInChannelForCurrentPage = function makeSelectClaimsInChannelForCurrentPage(uri) { + var pageSelector = (0, _navigation.makeSelectCurrentParam)('page'); + return (0, _reselect.createSelector)(selectClaimsById, selectAllClaimsByChannel, pageSelector, function (byId, allClaims, page) { + var byChannel = allClaims[uri] || {}; + var claimIds = byChannel[page || 1]; + if (!claimIds) return claimIds; + return claimIds.map(function (claimId) { + return byId[claimId]; + }); + }); + }; + + var makeSelectMetadataForUri = exports.makeSelectMetadataForUri = function makeSelectMetadataForUri(uri) { + return (0, _reselect.createSelector)(makeSelectClaimForUri(uri), function (claim) { + var metadata = claim && claim.value && claim.value.stream && claim.value.stream.metadata; + return metadata || (claim === undefined ? undefined : null); + }); + }; + + var makeSelectTitleForUri = exports.makeSelectTitleForUri = function makeSelectTitleForUri(uri) { + return (0, _reselect.createSelector)(makeSelectMetadataForUri(uri), function (metadata) { + return metadata && metadata.title; + }); + }; + + var makeSelectContentTypeForUri = exports.makeSelectContentTypeForUri = function makeSelectContentTypeForUri(uri) { + return (0, _reselect.createSelector)(makeSelectClaimForUri(uri), function (claim) { + var source = claim && claim.value && claim.value.stream && claim.value.stream.source; + return source ? source.contentType : undefined; + }); + }; + + var selectIsFetchingClaimListMine = exports.selectIsFetchingClaimListMine = (0, _reselect.createSelector)(selectState, function (state) { + return state.isFetchingClaimListMine; + }); + var selectPendingClaims = exports.selectPendingClaims = (0, _reselect.createSelector)(selectState, function (state) { + return Object.values(state.pendingById || {}); + }); + var selectMyClaims = exports.selectMyClaims = (0, _reselect.createSelector)(selectMyActiveClaims, selectClaimsById, selectAbandoningIds, selectPendingClaims, function (myClaimIds, byId, abandoningIds, pendingClaims) { + var claims = []; + myClaimIds.forEach(function (id) { + var claim = byId[id]; + if (claim && abandoningIds.indexOf(id) === -1) claims.push(claim); + }); + return [].concat(claims, _toConsumableArray(pendingClaims)); + }); + var selectMyClaimsWithoutChannels = exports.selectMyClaimsWithoutChannels = (0, _reselect.createSelector)(selectMyClaims, function (myClaims) { + return myClaims.filter(function (claim) { + return !claim.name.match(/^@/); + }); + }); + var selectAllMyClaimsByOutpoint = exports.selectAllMyClaimsByOutpoint = (0, _reselect.createSelector)(selectMyClaimsRaw, function (claims) { + return new Set(claims && claims.length ? claims.map(function (claim) { + return claim.txid + ':' + claim.nout; + }) : null); + }); + var selectMyClaimsOutpoints = exports.selectMyClaimsOutpoints = (0, _reselect.createSelector)(selectMyClaims, function (myClaims) { + var outpoints = []; + myClaims.forEach(function (claim) { + return outpoints.push(claim.txid + ':' + claim.nout); + }); + return outpoints; + }); + var selectFetchingMyChannels = exports.selectFetchingMyChannels = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingMyChannels; + }); + var selectMyChannelClaims = exports.selectMyChannelClaims = (0, _reselect.createSelector)(selectState, selectClaimsById, function (state, byId) { + var ids = state.myChannelClaims || []; + var claims = []; + ids.forEach(function (id) { + if (byId[id]) { + claims.push(byId[id]); + } + }); + return claims; + }); + var selectResolvingUris = exports.selectResolvingUris = (0, _reselect.createSelector)(selectState, function (state) { + return state.resolvingUris || []; + }); + + var makeSelectIsUriResolving = exports.makeSelectIsUriResolving = function makeSelectIsUriResolving(uri) { + return (0, _reselect.createSelector)(selectResolvingUris, function (resolvingUris) { + return resolvingUris && resolvingUris.indexOf(uri) !== -1; + }); + }; + + var selectFeaturedUris = exports.selectFeaturedUris = (0, _reselect.createSelector)(selectState, function (state) { + return state.featuredUris; + }); + var selectFetchingFeaturedUris = exports.selectFetchingFeaturedUris = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingFeaturedContent; + }); + var selectPlayingUri = exports.selectPlayingUri = (0, _reselect.createSelector)(selectState, function (state) { + return state.playingUri; + }); + var selectChannelClaimCounts = exports.selectChannelClaimCounts = (0, _reselect.createSelector)(selectState, function (state) { + return state.channelClaimCounts || {}; + }); + + var makeSelectTotalItemsForChannel = exports.makeSelectTotalItemsForChannel = function makeSelectTotalItemsForChannel(uri) { + return (0, _reselect.createSelector)(selectChannelClaimCounts, function (byUri) { + return byUri && byUri[uri]; + }); + }; + + var makeSelectTotalPagesForChannel = exports.makeSelectTotalPagesForChannel = function makeSelectTotalPagesForChannel(uri) { + return (0, _reselect.createSelector)(selectChannelClaimCounts, function (byUri) { + return byUri && byUri[uri] && Math.ceil(byUri[uri] / 10); + }); + }; + + var selectRewardContentClaimIds = exports.selectRewardContentClaimIds = (0, _reselect.createSelector)(selectState, function (state) { + return state.rewardedContentClaimIds; + }); + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.selectActiveHistoryEntry = exports.selectHistoryStack = exports.selectHistoryIndex = exports.selectIsForwardDisabled = exports.selectIsBackDisabled = exports.selectPathAfterAuth = exports.selectPageTitle = exports.selectHeaderLinks = exports.makeSelectCurrentParam = exports.selectCurrentParams = exports.selectCurrentPage = exports.computePageFromPath = exports.selectCurrentPath = exports.selectState = undefined; + + var _reselect = __webpack_require__(1); + + var _lbryURI = __webpack_require__(2); + + var _query_params = __webpack_require__(11); + + var selectState = exports.selectState = function selectState(state) { + return state.navigation || {}; + }; + + var selectCurrentPath = exports.selectCurrentPath = (0, _reselect.createSelector)(selectState, function (state) { + return state.currentPath; + }); + + var computePageFromPath = exports.computePageFromPath = function computePageFromPath(path) { + return path.replace(/^\//, '').split('?')[0]; + }; + + var selectCurrentPage = exports.selectCurrentPage = (0, _reselect.createSelector)(selectCurrentPath, function (path) { + return computePageFromPath(path); + }); + var selectCurrentParams = exports.selectCurrentParams = (0, _reselect.createSelector)(selectCurrentPath, function (path) { + if (path === undefined) return {}; + if (!path.match(/\?/)) return {}; + return (0, _query_params.parseQueryParams)(path.split('?')[1]); + }); + + var makeSelectCurrentParam = exports.makeSelectCurrentParam = function makeSelectCurrentParam(param) { + return (0, _reselect.createSelector)(selectCurrentParams, function (params) { + return params ? params[param] : undefined; + }); + }; + + var selectHeaderLinks = exports.selectHeaderLinks = (0, _reselect.createSelector)(selectCurrentPage, function (page) { + switch (page) { + case 'wallet': + case 'history': + case 'send': + case 'getcredits': + case 'invite': + case 'rewards': + case 'backup': + return { + wallet: __('Overview'), + getcredits: __('Get Credits'), + send: __('Send / Receive'), + rewards: __('Rewards'), + invite: __('Invites'), + history: __('History') + }; + + case 'downloaded': + case 'published': + return { + downloaded: __('Downloaded'), + published: __('Published') + }; + + case 'settings': + case 'help': + return { + settings: __('Settings'), + help: __('Help') + }; + + case 'discover': + case 'subscriptions': + return { + discover: __('Discover'), + subscriptions: __('Subscriptions') + }; + + default: + return null; + } + }); + var selectPageTitle = exports.selectPageTitle = (0, _reselect.createSelector)(selectCurrentPage, selectCurrentParams, function (page, params) { + switch (page) { + case 'settings': + return __('Settings'); + + case 'report': + return __('Report'); + + case 'wallet': + return __('Wallet'); + + case 'send': + return __('Send or Receive LBRY Credits'); + + case 'getcredits': + return __('Get LBRY Credits'); + + case 'backup': + return __('Backup Your Wallet'); + + case 'rewards': + return __('Rewards'); + + case 'invite': + return __('Invites'); + + case 'start': + return __('Start'); + + case 'publish': + return params.id ? __('Edit') : __('Publish'); + + case 'help': + return __('Help'); + + case 'developer': + return __('Developer'); + + case 'show': + { + var parts = [(0, _lbryURI.normalizeURI)(params.uri)]; + + if (Object.keys(params).length > 1) { + parts.push((0, _query_params.toQueryString)(babelHelpers.extends({}, params, { + uri: null + }))); + } + + return parts.join('?'); + } + + case 'downloaded': + return __('Downloads & Purchases'); + + case 'published': + return __('Publications'); + + case 'search': + return params.query ? __('Search results for %s', params.query) : __('Search'); + + case 'subscriptions': + return __('Your Subscriptions'); + + case 'discover': + case false: + case null: + case '': + return ''; + + default: + return page[0].toUpperCase() + (page.length > 0 ? page.substr(1) : ''); + } + }); + var selectPathAfterAuth = exports.selectPathAfterAuth = (0, _reselect.createSelector)(selectState, function (state) { + return state.pathAfterAuth; + }); + var selectIsBackDisabled = exports.selectIsBackDisabled = (0, _reselect.createSelector)(selectState, function (state) { + return state.index === 0; + }); + var selectIsForwardDisabled = exports.selectIsForwardDisabled = (0, _reselect.createSelector)(selectState, function (state) { + return state.index === state.stack.length - 1; + }); + var selectHistoryIndex = exports.selectHistoryIndex = (0, _reselect.createSelector)(selectState, function (state) { + return state.index; + }); + var selectHistoryStack = exports.selectHistoryStack = (0, _reselect.createSelector)(selectState, function (state) { + return state.stack; + }); + var selectActiveHistoryEntry = exports.selectActiveHistoryEntry = (0, _reselect.createSelector)(selectState, function (state) { + return state.stack[state.index]; + }); + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + __webpack_require__(16); + + function _toConsumableArray(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return Array.from(arr); + } + } + + var CHECK_DAEMON_STARTED_TRY_NUMBER = 200; + var Lbry = { + isConnected: false, + daemonConnectionString: 'http://localhost:5279', + pendingPublishTimeout: 20 * 60 * 1000 + }; + + function checkAndParse(response) { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } + + return response.json().then(function (json) { + var error = void 0; + + if (json.error) { + error = new Error(json.error); + } else { + error = new Error('Protocol error with unknown response signature'); + } + + return Promise.reject(error); + }); + } + + function apiCall(method, params, resolve, reject) { + var counter = new Date().getTime(); + var options = { + method: 'POST', + body: JSON.stringify({ + jsonrpc: '2.0', + method: method, + params: params, + id: counter + }) + }; + return fetch(Lbry.daemonConnectionString, options).then(checkAndParse).then(function (response) { + var error = response.error || response.result && response.result.error; + + if (error) { + return reject(error); + } + + return resolve(response.result); + }).catch(reject); + } + + function getLocal(key) { + var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + var itemRaw = null; + return itemRaw === null ? fallback : JSON.parse(itemRaw); + } + + function setLocal(key, value) {} + + var pendingId = 0; + + function savePendingPublish(_ref) { + var name = _ref.name, + channelName = _ref.channelName; + pendingId += 1; + var pendingPublishes = getLocal('pendingPublishes') || []; + var newPendingPublish = { + name: name, + channelName: channelName, + claim_id: 'pending-' + pendingId, + txid: 'pending-' + pendingId, + nout: 0, + outpoint: 'pending-' + pendingId + ':0', + time: Date.now() + }; + setLocal('pendingPublishes', [].concat(_toConsumableArray(pendingPublishes), [newPendingPublish])); + return newPendingPublish; + } + + function removePendingPublishIfNeeded(_ref2) { + var name = _ref2.name, + channelName = _ref2.channelName, + outpoint = _ref2.outpoint; + + function pubMatches(pub) { + return pub.outpoint === outpoint || pub.name === name && (!channelName || pub.channel_name === channelName); + } + + setLocal('pendingPublishes', Lbry.getPendingPublishes().filter(function (pub) { + return !pubMatches(pub); + })); + } + + Lbry.getPendingPublishes = function () { + var pendingPublishes = getLocal('pendingPublishes') || []; + var newPendingPublishes = pendingPublishes.filter(function (pub) { + return Date.now() - pub.time <= Lbry.pendingPublishTimeout; + }); + setLocal('pendingPublishes', newPendingPublishes); + return newPendingPublishes; + }; + + function getPendingPublish(_ref3) { + var name = _ref3.name, + channelName = _ref3.channelName, + outpoint = _ref3.outpoint; + var pendingPublishes = Lbry.getPendingPublishes(); + return pendingPublishes.find(function (pub) { + return pub.outpoint === outpoint || pub.name === name && (!channelName || pub.channel_name === channelName); + }) || null; + } + + function pendingPublishToDummyClaim(_ref4) { + var channelName = _ref4.channelName, + name = _ref4.name, + outpoint = _ref4.outpoint, + claimId = _ref4.claimId, + txid = _ref4.txid, + nout = _ref4.nout; + return { + name: name, + outpoint: outpoint, + claimId: claimId, + txid: txid, + nout: nout, + channelName: channelName + }; + } + + function pendingPublishToDummyFileInfo(_ref5) { + var name = _ref5.name, + outpoint = _ref5.outpoint, + claimId = _ref5.claimId; + return { + name: name, + outpoint: outpoint, + claimId: claimId, + metadata: null + }; + } + + Lbry.status = function () { + return new Promise(function (resolve, reject) { + apiCall('status', {}, function (status) { + resolve(status); + }, reject); + }); + }; + + Lbry.connectPromise = null; + + Lbry.connect = function () { + if (Lbry.connectPromise === null) { + Lbry.connectPromise = new Promise(function (resolve, reject) { + var tryNum = 0; + + function checkDaemonStarted() { + tryNum += 1; + Lbry.status().then(resolve).catch(function () { + if (tryNum <= CHECK_DAEMON_STARTED_TRY_NUMBER) { + setTimeout(checkDaemonStarted, tryNum < 50 ? 400 : 1000); + } else { + reject(new Error('Unable to connect to LBRY')); + } + }); + } + + checkDaemonStarted(); + }); + } + + return Lbry.connectPromise; + }; + + Lbry.publishDeprecated = function (params, fileListedCallback, publishedCallback, errorCallback) { + var returnPendingTimeout = setTimeout(function () { + var name = params.name, + channelName = params.channel_name; + + if (publishedCallback || fileListedCallback) { + savePendingPublish({ + name: name, + channelName: channelName + }); + publishedCallback(true); + } + }, 2000, { + once: true + }); + lbryProxy.publish(params).then(function (result) { + if (returnPendingTimeout) clearTimeout(returnPendingTimeout); + publishedCallback(result); + }, function (err) { + if (returnPendingTimeout) clearTimeout(returnPendingTimeout); + errorCallback(err); + }); + }; + + Lbry.getMediaType = function (contentType, fileName) { + if (contentType) { + return (/^[^/]+/.exec(contentType)[0] + ); + } else if (fileName) { + var dotIndex = fileName.lastIndexOf('.'); + + if (dotIndex === -1) { + return 'unknown'; + } + + var ext = fileName.substr(dotIndex + 1); + + if (/^mp4|m4v|webm|flv|f4v|ogv$/i.test(ext)) { + return 'video'; + } else if (/^mp3|m4a|aac|wav|flac|ogg|opus$/i.test(ext)) { + return 'audio'; + } else if (/^html|htm|xml|pdf|odf|doc|docx|md|markdown|txt|epub|org$/i.test(ext)) { + return 'document'; + } + + return 'unknown'; + } + + return 'unknown'; + }; + + Lbry.file_list = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + var name = params.name, + channelName = params.channel_name, + outpoint = params.outpoint; + + if (outpoint) { + var pendingPublish = getPendingPublish({ + outpoint: outpoint + }); + + if (pendingPublish) { + resolve([pendingPublishToDummyFileInfo(pendingPublish)]); + return; + } + } + + apiCall('file_list', params, function (fileInfos) { + removePendingPublishIfNeeded({ + name: name, + channelName: channelName, + outpoint: outpoint + }); + + if (!name && !channelName && !outpoint) { + var dummyFileInfos = Lbry.getPendingPublishes().map(pendingPublishToDummyFileInfo); + resolve([].concat(_toConsumableArray(fileInfos), _toConsumableArray(dummyFileInfos))); + } else { + resolve(fileInfos); + } + }, reject); + }); + }; + + Lbry.claim_list_mine = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall('claim_list_mine', params, function (claims) { + claims.forEach(function (_ref6) { + var name = _ref6.name, + channelName = _ref6.channel_name, + txid = _ref6.txid, + nout = _ref6.nout; + removePendingPublishIfNeeded({ + name: name, + channelName: channelName, + outpoint: txid + ':' + nout + }); + }); + var dummyClaims = Lbry.getPendingPublishes().map(pendingPublishToDummyClaim); + resolve([].concat(_toConsumableArray(claims), _toConsumableArray(dummyClaims))); + }, reject); + }); + }; + + Lbry.resolve = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall('resolve', params, function (data) { + if ('uri' in params) { + resolve(data && data[params.uri] ? data[params.uri] : {}); + } else { + resolve(data || {}); + } + }, reject); + }); + }; + + var lbryProxy = new Proxy(Lbry, { + get: function get(target, name) { + if (name in target) { + return target[name]; + } + + return function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall(name, params, resolve, reject); + }); + }; + } + }); + exports.default = lbryProxy; + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((typeof Symbol === "function" ? Symbol.iterator : "@@iterator") in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + exports.doResolveUris = doResolveUris; + exports.doResolveUri = doResolveUri; + exports.doFetchClaimListMine = doFetchClaimListMine; + exports.doAbandonClaim = doAbandonClaim; + exports.doFetchFeaturedUris = doFetchFeaturedUris; + exports.doFetchRewardedContent = doFetchRewardedContent; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + var _lbry = __webpack_require__(5); + + var _lbry2 = _interopRequireDefault(_lbry); + + var _lbryapi = __webpack_require__(7); + + var _lbryapi2 = _interopRequireDefault(_lbryapi); + + var _lbryURI = __webpack_require__(2); + + var _claims = __webpack_require__(3); + + var _batchActions = __webpack_require__(8); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function _toConsumableArray(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return Array.from(arr); + } + } + + function doResolveUris(uris) { + return function (dispatch, getState) { + var normalizedUris = uris.map(_lbryURI.normalizeURI); + var state = getState(); + var resolvingUris = (0, _claims.selectResolvingUris)(state); + var urisToResolve = normalizedUris.filter(function (uri) { + return !resolvingUris.includes(uri); + }); + + if (urisToResolve.length === 0) { + return; + } + + dispatch({ + type: ACTIONS.RESOLVE_URIS_STARTED, + data: { + uris: normalizedUris + } + }); + var resolveInfo = {}; + + _lbry2.default.resolve({ + uris: urisToResolve + }).then(function (result) { + Object.entries(result).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + uri = _ref2[0], + uriResolveInfo = _ref2[1]; + + var fallbackResolveInfo = { + claim: null, + claimsInChannel: null, + certificate: null + }; + + var _ref3 = uriResolveInfo && !uriResolveInfo.error ? uriResolveInfo : fallbackResolveInfo, + claim = _ref3.claim, + certificate = _ref3.certificate, + claimsInChannel = _ref3.claims_in_channel; + + resolveInfo[uri] = { + claim: claim, + certificate: certificate, + claimsInChannel: claimsInChannel + }; + }); + dispatch({ + type: ACTIONS.RESOLVE_URIS_COMPLETED, + data: { + resolveInfo: resolveInfo + } + }); + }); + }; + } + + function doResolveUri(uri) { + return doResolveUris([uri]); + } + + function doFetchClaimListMine() { + return function (dispatch) { + dispatch({ + type: ACTIONS.FETCH_CLAIM_LIST_MINE_STARTED + }); + + _lbry2.default.claim_list_mine().then(function (claims) { + dispatch({ + type: ACTIONS.FETCH_CLAIM_LIST_MINE_COMPLETED, + data: { + claims: claims + } + }); + }); + }; + } + + function doAbandonClaim(txid, nout) { + return function (dispatch, getState) { + var state = getState(); + var myClaims = (0, _claims.selectMyClaimsRaw)(state); + + var _myClaims$find = myClaims.find(function (claim) { + return claim.txid === txid && claim.nout === nout; + }), + claimId = _myClaims$find.claim_id, + name = _myClaims$find.name; + + dispatch({ + type: ACTIONS.ABANDON_CLAIM_STARTED, + data: { + claimId: claimId + } + }); + + var errorCallback = function errorCallback() {}; + + var successCallback = function successCallback(results) { + if (results.txid) { + dispatch({ + type: ACTIONS.ABANDON_CLAIM_SUCCEEDED, + data: { + claimId: claimId + } + }); + dispatch(doResolveUri((0, _lbryURI.buildURI)({ + name: name, + claimId: claimId + }))); + dispatch(doFetchClaimListMine()); + } else {} + }; + + _lbry2.default.claim_abandon({ + txid: txid, + nout: nout + }).then(successCallback, errorCallback); + }; + } + + function doFetchFeaturedUris() { + return function (dispatch) { + dispatch({ + type: ACTIONS.FETCH_FEATURED_CONTENT_STARTED + }); + + var success = function success(_ref4) { + var Uris = _ref4.Uris; + var urisToResolve = []; + Object.keys(Uris).forEach(function (category) { + urisToResolve = [].concat(_toConsumableArray(urisToResolve), _toConsumableArray(Uris[category])); + }); + var actions = [doResolveUris(urisToResolve), { + type: ACTIONS.FETCH_FEATURED_CONTENT_COMPLETED, + data: { + uris: Uris, + success: true + } + }]; + dispatch(_batchActions.batchActions.apply(undefined, actions)); + }; + + var failure = function failure() { + dispatch({ + type: ACTIONS.FETCH_FEATURED_CONTENT_COMPLETED, + data: { + uris: {} + } + }); + }; + + _lbryapi2.default.call('file', 'list_homepage').then(success, failure); + }; + } + + function doFetchRewardedContent() { + return function (dispatch) { + var success = function success(nameToClaimId) { + dispatch({ + type: ACTIONS.FETCH_REWARD_CONTENT_COMPLETED, + data: { + claimIds: Object.values(nameToClaimId), + success: true + } + }); + }; + + var failure = function failure() { + dispatch({ + type: ACTIONS.FETCH_REWARD_CONTENT_COMPLETED, + data: { + claimIds: [], + success: false + } + }); + }; + + _lbryapi2.default.call('reward', 'list_featured').then(success, failure); + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + (function (process) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + var _querystring = __webpack_require__(19); + + var _querystring2 = _interopRequireDefault(_querystring); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var Lbryapi = { + enabled: true, + exchangePromise: null, + exchangeLastFetched: null + }; + var CONNECTION_STRING = process.env.LBRY_APP_API_URL ? process.env.LBRY_APP_API_URL.replace(/\/*$/, '/') : 'https://api.lbry.io/'; + var EXCHANGE_RATE_TIMEOUT = 20 * 60 * 1000; + + Lbryapi.getExchangeRates = function () { + if (!Lbryapi.exchangeLastFetched || Date.now() - Lbryapi.exchangeLastFetched > EXCHANGE_RATE_TIMEOUT) { + Lbryapi.exchangePromise = new Promise(function (resolve, reject) { + Lbryapi.call('lbc', 'exchange_rate', {}, 'get', true).then(function (_ref) { + var LBC_USD = _ref.lbc_usd, + LBC_BTC = _ref.lbc_btc, + BTC_USD = _ref.btc_usd; + var rates = { + LBC_USD: LBC_USD, + LBC_BTC: LBC_BTC, + BTC_USD: BTC_USD + }; + resolve(rates); + }).catch(reject); + }); + Lbryapi.exchangeLastFetched = Date.now(); + } + + return Lbryapi.exchangePromise; + }; + + Lbryapi.call = function (resource, action) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var method = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'get'; + + if (!Lbryapi.enabled) { + return Promise.reject(new Error(__('LBRY internal API is disabled'))); + } + + if (!(method === 'get' || method === 'post')) { + return Promise.reject(new Error(__('Invalid method'))); + } + + function checkAndParse(response) { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } + + return response.json().then(function (json) { + var error = void 0; + + if (json.error) { + error = new Error(json.error); + } else { + error = new Error('Unknown API error signature'); + } + + error.response = response; + return Promise.reject(error); + }); + } + + function makeRequest(url, options) { + return fetch(url, options).then(checkAndParse); + } + + var fullParams = _extends({}, params); + + var qs = _querystring2.default.stringify(fullParams); + + var url = '' + CONNECTION_STRING + resource + '/' + action + '?' + qs; + var options = { + method: 'GET' + }; + + if (method === 'post') { + options = { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: qs + }; + url = '' + CONNECTION_STRING + resource + '/' + action; + } + + return makeRequest(url, options).then(function (response) { + return response.data; + }); + }; + + exports.default = Lbryapi; + }).call(exports, __webpack_require__(18)); + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.batchActions = batchActions; + + function batchActions() { + for (var _len = arguments.length, actions = Array(_len), _key = 0; _key < _len; _key++) { + actions[_key] = arguments[_key]; + } + + return { + type: 'BATCH_ACTIONS', + actions: actions + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.doOpenModal = doOpenModal; + exports.doCloseModal = doCloseModal; + exports.doShowSnackBar = doShowSnackBar; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function doOpenModal(modal) { + var modalProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return { + type: ACTIONS.OPEN_MODAL, + data: { + modal: modal, + modalProps: modalProps + } + }; + } + + function doCloseModal() { + return { + type: ACTIONS.CLOSE_MODAL + }; + } + + function doShowSnackBar(data) { + return { + type: ACTIONS.SHOW_SNACKBAR, + data: data + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((typeof Symbol === "function" ? Symbol.iterator : "@@iterator") in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + exports.parseQueryParams = parseQueryParams; + exports.toQueryString = toQueryString; + + function parseQueryParams(queryString) { + if (queryString === '') return {}; + var parts = queryString.split('?').pop().split('&').map(function (p) { + return p.split('='); + }); + var params = {}; + parts.forEach(function (array) { + var _array = _slicedToArray(array, 2), + first = _array[0], + second = _array[1]; + + params[first] = second; + }); + return params; + } + + function toQueryString(params) { + if (!params) return ''; + var parts = []; + Object.keys(params).forEach(function (key) { + if (Object.prototype.hasOwnProperty.call(params, key) && params[key]) { + parts.push(key + '=' + params[key]); + } + }); + return parts.join('&'); + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.selectTotalDownloadProgress = exports.selectDownloadingFileInfos = exports.selectFileInfosDownloaded = exports.makeSelectLoadingForUri = exports.selectUrisLoading = exports.makeSelectDownloadingForUri = exports.selectDownloadingByOutpoint = exports.makeSelectFileInfoForUri = exports.selectIsFetchingFileListDownloadedOrPublished = exports.selectIsFetchingFileList = exports.selectFileInfosByOutpoint = exports.selectState = undefined; + + var _claims = __webpack_require__(3); + + var _reselect = __webpack_require__(1); + + var selectState = exports.selectState = function selectState(state) { + return state.fileInfo || {}; + }; + + var selectFileInfosByOutpoint = exports.selectFileInfosByOutpoint = (0, _reselect.createSelector)(selectState, function (state) { + return state.byOutpoint || {}; + }); + var selectIsFetchingFileList = exports.selectIsFetchingFileList = (0, _reselect.createSelector)(selectState, function (state) { + return state.isFetchingFileList; + }); + var selectIsFetchingFileListDownloadedOrPublished = exports.selectIsFetchingFileListDownloadedOrPublished = (0, _reselect.createSelector)(selectIsFetchingFileList, _claims.selectIsFetchingClaimListMine, function (isFetchingFileList, isFetchingClaimListMine) { + return isFetchingFileList || isFetchingClaimListMine; + }); + + var makeSelectFileInfoForUri = exports.makeSelectFileInfoForUri = function makeSelectFileInfoForUri(uri) { + return (0, _reselect.createSelector)(_claims.selectClaimsByUri, selectFileInfosByOutpoint, function (claims, byOutpoint) { + var claim = claims[uri]; + var outpoint = claim ? claim.txid + ':' + claim.nout : undefined; + return outpoint ? byOutpoint[outpoint] : undefined; + }); + }; + + var selectDownloadingByOutpoint = exports.selectDownloadingByOutpoint = (0, _reselect.createSelector)(selectState, function (state) { + return state.downloadingByOutpoint || {}; + }); + + var makeSelectDownloadingForUri = exports.makeSelectDownloadingForUri = function makeSelectDownloadingForUri(uri) { + return (0, _reselect.createSelector)(selectDownloadingByOutpoint, makeSelectFileInfoForUri(uri), function (byOutpoint, fileInfo) { + if (!fileInfo) return false; + return byOutpoint[fileInfo.outpoint]; + }); + }; + + var selectUrisLoading = exports.selectUrisLoading = (0, _reselect.createSelector)(selectState, function (state) { + return state.urisLoading || {}; + }); + + var makeSelectLoadingForUri = exports.makeSelectLoadingForUri = function makeSelectLoadingForUri(uri) { + return (0, _reselect.createSelector)(selectUrisLoading, function (byUri) { + return byUri && byUri[uri]; + }); + }; + + var selectFileInfosDownloaded = exports.selectFileInfosDownloaded = (0, _reselect.createSelector)(selectFileInfosByOutpoint, _claims.selectMyClaims, function (byOutpoint, myClaims) { + return Object.values(byOutpoint).filter(function (fileInfo) { + var myClaimIds = myClaims.map(function (claim) { + return claim.claim_id; + }); + return fileInfo && myClaimIds.indexOf(fileInfo.claim_id) === -1 && (fileInfo.completed || fileInfo.written_bytes); + }); + }); + var selectDownloadingFileInfos = exports.selectDownloadingFileInfos = (0, _reselect.createSelector)(selectDownloadingByOutpoint, selectFileInfosByOutpoint, function (downloadingByOutpoint, fileInfosByOutpoint) { + var outpoints = Object.keys(downloadingByOutpoint); + var fileInfos = []; + outpoints.forEach(function (outpoint) { + var fileInfo = fileInfosByOutpoint[outpoint]; + if (fileInfo) fileInfos.push(fileInfo); + }); + return fileInfos; + }); + var selectTotalDownloadProgress = exports.selectTotalDownloadProgress = (0, _reselect.createSelector)(selectDownloadingFileInfos, function (fileInfos) { + var progress = []; + fileInfos.forEach(function (fileInfo) { + progress.push(fileInfo.written_bytes / fileInfo.total_bytes * 100); + }); + var totalProgress = progress.reduce(function (a, b) { + return a + b; + }, 0); + if (fileInfos.length > 0) return totalProgress / fileInfos.length / 100.0; + return -1; + }); + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.makeSelectBlockDate = exports.selectBlocks = exports.selectDraftTransactionError = exports.selectDraftTransactionAddress = exports.selectDraftTransactionAmount = exports.selectDraftTransaction = exports.selectGettingNewAddress = exports.selectReceiveAddress = exports.selectIsSendingSupport = exports.selectIsFetchingTransactions = exports.selectHasTransactions = exports.selectRecentTransactions = exports.selectTransactionItems = exports.selectTransactionsById = exports.selectBalance = exports.selectState = undefined; + + var _reselect = __webpack_require__(1); + + function _toConsumableArray(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } else { + return Array.from(arr); + } + } + + var selectState = exports.selectState = function selectState(state) { + return state.wallet || {}; + }; + + var selectBalance = exports.selectBalance = (0, _reselect.createSelector)(selectState, function (state) { + return state.balance; + }); + var selectTransactionsById = exports.selectTransactionsById = (0, _reselect.createSelector)(selectState, function (state) { + return state.transactions; + }); + var selectTransactionItems = exports.selectTransactionItems = (0, _reselect.createSelector)(selectTransactionsById, function (byId) { + var items = []; + Object.keys(byId).forEach(function (txid) { + var tx = byId[txid]; + + if (Math.abs(tx.value) === Math.abs(tx.fee) && tx.claim_info.length === 0 && tx.support_info.length === 0 && tx.update_info.length === 0) { + return; + } + + var append = []; + append.push.apply(append, _toConsumableArray(tx.claim_info.map(function (item) { + return babelHelpers.extends({}, tx, item, { + type: item.claim_name[0] === '@' ? 'channel' : 'publish' + }); + }))); + append.push.apply(append, _toConsumableArray(tx.support_info.map(function (item) { + return babelHelpers.extends({}, tx, item, { + type: !item.is_tip ? 'support' : 'tip' + }); + }))); + append.push.apply(append, _toConsumableArray(tx.update_info.map(function (item) { + return babelHelpers.extends({}, tx, item, { + type: 'update' + }); + }))); + + if (!append.length) { + append.push(babelHelpers.extends({}, tx, { + type: tx.value < 0 ? 'spend' : 'receive' + })); + } + + items.push.apply(items, _toConsumableArray(append.map(function (item) { + var amount = parseFloat(item.balance_delta ? item.balance_delta : item.value); + return { + txid: txid, + date: tx.timestamp ? new Date(Number(tx.timestamp) * 1000) : null, + amount: amount, + fee: amount < 0 ? -1 * tx.fee / append.length : 0, + claim_id: item.claim_id, + claim_name: item.claim_name, + type: item.type || 'send', + nout: item.nout + }; + }))); + }); + return items.reverse(); + }); + var selectRecentTransactions = exports.selectRecentTransactions = (0, _reselect.createSelector)(selectTransactionItems, function (transactions) { + var threshold = new Date(); + threshold.setDate(threshold.getDate() - 7); + return transactions.filter(function (transaction) { + return transaction.date > threshold; + }); + }); + var selectHasTransactions = exports.selectHasTransactions = (0, _reselect.createSelector)(selectTransactionItems, function (transactions) { + return transactions && transactions.length > 0; + }); + var selectIsFetchingTransactions = exports.selectIsFetchingTransactions = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingTransactions; + }); + var selectIsSendingSupport = exports.selectIsSendingSupport = (0, _reselect.createSelector)(selectState, function (state) { + return state.sendingSupport; + }); + var selectReceiveAddress = exports.selectReceiveAddress = (0, _reselect.createSelector)(selectState, function (state) { + return state.receiveAddress; + }); + var selectGettingNewAddress = exports.selectGettingNewAddress = (0, _reselect.createSelector)(selectState, function (state) { + return state.gettingNewAddress; + }); + var selectDraftTransaction = exports.selectDraftTransaction = (0, _reselect.createSelector)(selectState, function (state) { + return state.draftTransaction || {}; + }); + var selectDraftTransactionAmount = exports.selectDraftTransactionAmount = (0, _reselect.createSelector)(selectDraftTransaction, function (draft) { + return draft.amount; + }); + var selectDraftTransactionAddress = exports.selectDraftTransactionAddress = (0, _reselect.createSelector)(selectDraftTransaction, function (draft) { + return draft.address; + }); + var selectDraftTransactionError = exports.selectDraftTransactionError = (0, _reselect.createSelector)(selectDraftTransaction, function (draft) { + return draft.error; + }); + var selectBlocks = exports.selectBlocks = (0, _reselect.createSelector)(selectState, function (state) { + return state.blocks; + }); + + var makeSelectBlockDate = exports.makeSelectBlockDate = function makeSelectBlockDate(block) { + return (0, _reselect.createSelector)(selectBlocks, function (blocks) { + return blocks && blocks[block] ? new Date(blocks[block].time * 1000) : undefined; + }); + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.selectBlocks = exports.selectDraftTransactionError = exports.selectDraftTransactionAddress = exports.selectDraftTransactionAmount = exports.selectDraftTransaction = exports.selectGettingNewAddress = exports.selectReceiveAddress = exports.selectIsSendingSupport = exports.selectIsFetchingTransactions = exports.selectHasTransactions = exports.selectRecentTransactions = exports.selectTransactionItems = exports.selectTransactionsById = exports.selectBalance = exports.makeSelectBlockDate = exports.selectWunderBarIcon = exports.selectWunderBarAddress = exports.selectSearchUrisByQuery = exports.selectIsSearching = exports.selectSearchQuery = exports.makeSelectSearchUris = exports.selectActiveHistoryEntry = exports.selectHistoryStack = exports.selectHistoryIndex = exports.selectIsForwardDisabled = exports.selectIsBackDisabled = exports.selectPathAfterAuth = exports.selectPageTitle = exports.selectHeaderLinks = undefined; + exports.selectCurrentParams = exports.selectCurrentPage = exports.selectCurrentPath = exports.makeSelectCurrentParam = exports.computePageFromPath = exports.selectTotalDownloadProgress = exports.selectDownloadingFileInfos = exports.selectFileInfosDownloaded = exports.selectUrisLoading = exports.selectDownloadingByOutpoint = exports.selectIsFetchingFileListDownloadedOrPublished = exports.selectIsFetchingFileList = exports.selectFileInfosByOutpoint = exports.makeSelectLoadingForUri = exports.makeSelectDownloadingForUri = exports.makeSelectFileInfoForUri = exports.selectFetchingCostInfo = exports.selectCostForCurrentPageUri = exports.selectAllCostInfoByUri = exports.makeSelectCostInfoForUri = exports.makeSelectFetchingCostInfoForUri = exports.selectRewardContentClaimIds = exports.selectChannelClaimCounts = exports.selectPlayingUri = exports.selectFetchingFeaturedUris = exports.selectFeaturedUris = exports.selectResolvingUris = exports.selectMyChannelClaims = exports.selectFetchingMyChannels = exports.selectMyClaimsOutpoints = exports.selectAllMyClaimsByOutpoint = exports.selectMyClaimsWithoutChannels = exports.selectMyClaims = exports.selectPendingClaims = exports.selectIsFetchingClaimListMine = exports.selectAllFetchingChannelClaims = exports.selectMyActiveClaims = exports.selectAbandoningIds = exports.selectMyClaimsRaw = exports.selectAllClaimsByChannel = exports.selectClaimsByUri = exports.selectClaimsById = exports.makeSelectTotalPagesForChannel = exports.makeSelectTotalItemsForChannel = exports.makeSelectIsUriResolving = exports.makeSelectContentTypeForUri = exports.makeSelectTitleForUri = exports.makeSelectMetadataForUri = exports.makeSelectClaimsInChannelForCurrentPage = exports.makeSelectFetchingChannelClaims = exports.makeSelectClaimIsMine = exports.makeSelectClaimForUri = exports.selectNotification = exports.walletReducer = exports.searchReducer = exports.notificationsReducer = exports.fileInfoReducer = exports.costInfoReducer = exports.claimsReducer = exports.formatFullPrice = exports.formatCredits = exports.toQueryString = exports.parseQueryParams = exports.batchActions = exports.doSendSupport = exports.doSetDraftTransactionAddress = exports.doSetDraftTransactionAmount = exports.doSendDraftTransaction = exports.doCheckAddressIsMine = exports.doGetNewAddress = exports.doFetchBlock = exports.doFetchTransactions = exports.doBalanceSubscribe = exports.doUpdateBalance = exports.doSearch = exports.doFetchFileInfosAndPublishedClaims = exports.doFileList = exports.doFetchFileInfo = exports.doFetchCostInfoForUri = exports.doFetchRewardedContent = exports.doFetchFeaturedUris = exports.doResolveUri = exports.doResolveUris = exports.doAbandonClaim = exports.doFetchClaimListMine = exports.doShowSnackBar = exports.doCloseModal = exports.doOpenModal = exports.doNotify = exports.isURIClaimable = exports.isURIValid = exports.normalizeURI = exports.buildURI = exports.parseURI = exports.regexAddress = exports.regexInvalidURI = exports.Lbryapi = exports.Lbry = exports.ACTIONS = exports.Notification = undefined; + + var _Notification = __webpack_require__(9); + + Object.defineProperty(exports, 'Notification', { + enumerable: true, + get: function get() { + return _Notification.Notification; + } + }); + + var _lbryURI = __webpack_require__(2); + + Object.defineProperty(exports, 'regexInvalidURI', { + enumerable: true, + get: function get() { + return _lbryURI.regexInvalidURI; + } + }); + Object.defineProperty(exports, 'regexAddress', { + enumerable: true, + get: function get() { + return _lbryURI.regexAddress; + } + }); + Object.defineProperty(exports, 'parseURI', { + enumerable: true, + get: function get() { + return _lbryURI.parseURI; + } + }); + Object.defineProperty(exports, 'buildURI', { + enumerable: true, + get: function get() { + return _lbryURI.buildURI; + } + }); + Object.defineProperty(exports, 'normalizeURI', { + enumerable: true, + get: function get() { + return _lbryURI.normalizeURI; + } + }); + Object.defineProperty(exports, 'isURIValid', { + enumerable: true, + get: function get() { + return _lbryURI.isURIValid; + } + }); + Object.defineProperty(exports, 'isURIClaimable', { + enumerable: true, + get: function get() { + return _lbryURI.isURIClaimable; + } + }); + + var _notifications = __webpack_require__(15); + + Object.defineProperty(exports, 'doNotify', { + enumerable: true, + get: function get() { + return _notifications.doNotify; + } + }); + + var _app = __webpack_require__(10); + + Object.defineProperty(exports, 'doOpenModal', { + enumerable: true, + get: function get() { + return _app.doOpenModal; + } + }); + Object.defineProperty(exports, 'doCloseModal', { + enumerable: true, + get: function get() { + return _app.doCloseModal; + } + }); + Object.defineProperty(exports, 'doShowSnackBar', { + enumerable: true, + get: function get() { + return _app.doShowSnackBar; + } + }); + + var _claims = __webpack_require__(6); + + Object.defineProperty(exports, 'doFetchClaimListMine', { + enumerable: true, + get: function get() { + return _claims.doFetchClaimListMine; + } + }); + Object.defineProperty(exports, 'doAbandonClaim', { + enumerable: true, + get: function get() { + return _claims.doAbandonClaim; + } + }); + Object.defineProperty(exports, 'doResolveUris', { + enumerable: true, + get: function get() { + return _claims.doResolveUris; + } + }); + Object.defineProperty(exports, 'doResolveUri', { + enumerable: true, + get: function get() { + return _claims.doResolveUri; + } + }); + Object.defineProperty(exports, 'doFetchFeaturedUris', { + enumerable: true, + get: function get() { + return _claims.doFetchFeaturedUris; + } + }); + Object.defineProperty(exports, 'doFetchRewardedContent', { + enumerable: true, + get: function get() { + return _claims.doFetchRewardedContent; + } + }); + + var _cost_info = __webpack_require__(22); + + Object.defineProperty(exports, 'doFetchCostInfoForUri', { + enumerable: true, + get: function get() { + return _cost_info.doFetchCostInfoForUri; + } + }); + + var _file_info = __webpack_require__(23); + + Object.defineProperty(exports, 'doFetchFileInfo', { + enumerable: true, + get: function get() { + return _file_info.doFetchFileInfo; + } + }); + Object.defineProperty(exports, 'doFileList', { + enumerable: true, + get: function get() { + return _file_info.doFileList; + } + }); + Object.defineProperty(exports, 'doFetchFileInfosAndPublishedClaims', { + enumerable: true, + get: function get() { + return _file_info.doFetchFileInfosAndPublishedClaims; + } + }); + + var _search = __webpack_require__(24); + + Object.defineProperty(exports, 'doSearch', { + enumerable: true, + get: function get() { + return _search.doSearch; + } + }); + + var _wallet = __webpack_require__(25); + + Object.defineProperty(exports, 'doUpdateBalance', { + enumerable: true, + get: function get() { + return _wallet.doUpdateBalance; + } + }); + Object.defineProperty(exports, 'doBalanceSubscribe', { + enumerable: true, + get: function get() { + return _wallet.doBalanceSubscribe; + } + }); + Object.defineProperty(exports, 'doFetchTransactions', { + enumerable: true, + get: function get() { + return _wallet.doFetchTransactions; + } + }); + Object.defineProperty(exports, 'doFetchBlock', { + enumerable: true, + get: function get() { + return _wallet.doFetchBlock; + } + }); + Object.defineProperty(exports, 'doGetNewAddress', { + enumerable: true, + get: function get() { + return _wallet.doGetNewAddress; + } + }); + Object.defineProperty(exports, 'doCheckAddressIsMine', { + enumerable: true, + get: function get() { + return _wallet.doCheckAddressIsMine; + } + }); + Object.defineProperty(exports, 'doSendDraftTransaction', { + enumerable: true, + get: function get() { + return _wallet.doSendDraftTransaction; + } + }); + Object.defineProperty(exports, 'doSetDraftTransactionAmount', { + enumerable: true, + get: function get() { + return _wallet.doSetDraftTransactionAmount; + } + }); + Object.defineProperty(exports, 'doSetDraftTransactionAddress', { + enumerable: true, + get: function get() { + return _wallet.doSetDraftTransactionAddress; + } + }); + Object.defineProperty(exports, 'doSendSupport', { + enumerable: true, + get: function get() { + return _wallet.doSendSupport; + } + }); + + var _batchActions = __webpack_require__(8); + + Object.defineProperty(exports, 'batchActions', { + enumerable: true, + get: function get() { + return _batchActions.batchActions; + } + }); + + var _query_params = __webpack_require__(11); + + Object.defineProperty(exports, 'parseQueryParams', { + enumerable: true, + get: function get() { + return _query_params.parseQueryParams; + } + }); + Object.defineProperty(exports, 'toQueryString', { + enumerable: true, + get: function get() { + return _query_params.toQueryString; + } + }); + + var _formatCredits = __webpack_require__(27); + + Object.defineProperty(exports, 'formatCredits', { + enumerable: true, + get: function get() { + return _formatCredits.formatCredits; + } + }); + Object.defineProperty(exports, 'formatFullPrice', { + enumerable: true, + get: function get() { + return _formatCredits.formatFullPrice; + } + }); + + var _claims2 = __webpack_require__(28); + + Object.defineProperty(exports, 'claimsReducer', { + enumerable: true, + get: function get() { + return _claims2.claimsReducer; + } + }); + + var _cost_info2 = __webpack_require__(29); + + Object.defineProperty(exports, 'costInfoReducer', { + enumerable: true, + get: function get() { + return _cost_info2.costInfoReducer; + } + }); + + var _file_info2 = __webpack_require__(30); + + Object.defineProperty(exports, 'fileInfoReducer', { + enumerable: true, + get: function get() { + return _file_info2.fileInfoReducer; + } + }); + + var _notifications2 = __webpack_require__(31); + + Object.defineProperty(exports, 'notificationsReducer', { + enumerable: true, + get: function get() { + return _notifications2.notificationsReducer; + } + }); + + var _search2 = __webpack_require__(32); + + Object.defineProperty(exports, 'searchReducer', { + enumerable: true, + get: function get() { + return _search2.searchReducer; + } + }); + + var _wallet2 = __webpack_require__(33); + + Object.defineProperty(exports, 'walletReducer', { + enumerable: true, + get: function get() { + return _wallet2.walletReducer; + } + }); + + var _notifications3 = __webpack_require__(34); + + Object.defineProperty(exports, 'selectNotification', { + enumerable: true, + get: function get() { + return _notifications3.selectNotification; + } + }); + + var _claims3 = __webpack_require__(3); + + Object.defineProperty(exports, 'makeSelectClaimForUri', { + enumerable: true, + get: function get() { + return _claims3.makeSelectClaimForUri; + } + }); + Object.defineProperty(exports, 'makeSelectClaimIsMine', { + enumerable: true, + get: function get() { + return _claims3.makeSelectClaimIsMine; + } + }); + Object.defineProperty(exports, 'makeSelectFetchingChannelClaims', { + enumerable: true, + get: function get() { + return _claims3.makeSelectFetchingChannelClaims; + } + }); + Object.defineProperty(exports, 'makeSelectClaimsInChannelForCurrentPage', { + enumerable: true, + get: function get() { + return _claims3.makeSelectClaimsInChannelForCurrentPage; + } + }); + Object.defineProperty(exports, 'makeSelectMetadataForUri', { + enumerable: true, + get: function get() { + return _claims3.makeSelectMetadataForUri; + } + }); + Object.defineProperty(exports, 'makeSelectTitleForUri', { + enumerable: true, + get: function get() { + return _claims3.makeSelectTitleForUri; + } + }); + Object.defineProperty(exports, 'makeSelectContentTypeForUri', { + enumerable: true, + get: function get() { + return _claims3.makeSelectContentTypeForUri; + } + }); + Object.defineProperty(exports, 'makeSelectIsUriResolving', { + enumerable: true, + get: function get() { + return _claims3.makeSelectIsUriResolving; + } + }); + Object.defineProperty(exports, 'makeSelectTotalItemsForChannel', { + enumerable: true, + get: function get() { + return _claims3.makeSelectTotalItemsForChannel; + } + }); + Object.defineProperty(exports, 'makeSelectTotalPagesForChannel', { + enumerable: true, + get: function get() { + return _claims3.makeSelectTotalPagesForChannel; + } + }); + Object.defineProperty(exports, 'selectClaimsById', { + enumerable: true, + get: function get() { + return _claims3.selectClaimsById; + } + }); + Object.defineProperty(exports, 'selectClaimsByUri', { + enumerable: true, + get: function get() { + return _claims3.selectClaimsByUri; + } + }); + Object.defineProperty(exports, 'selectAllClaimsByChannel', { + enumerable: true, + get: function get() { + return _claims3.selectAllClaimsByChannel; + } + }); + Object.defineProperty(exports, 'selectMyClaimsRaw', { + enumerable: true, + get: function get() { + return _claims3.selectMyClaimsRaw; + } + }); + Object.defineProperty(exports, 'selectAbandoningIds', { + enumerable: true, + get: function get() { + return _claims3.selectAbandoningIds; + } + }); + Object.defineProperty(exports, 'selectMyActiveClaims', { + enumerable: true, + get: function get() { + return _claims3.selectMyActiveClaims; + } + }); + Object.defineProperty(exports, 'selectAllFetchingChannelClaims', { + enumerable: true, + get: function get() { + return _claims3.selectAllFetchingChannelClaims; + } + }); + Object.defineProperty(exports, 'selectIsFetchingClaimListMine', { + enumerable: true, + get: function get() { + return _claims3.selectIsFetchingClaimListMine; + } + }); + Object.defineProperty(exports, 'selectPendingClaims', { + enumerable: true, + get: function get() { + return _claims3.selectPendingClaims; + } + }); + Object.defineProperty(exports, 'selectMyClaims', { + enumerable: true, + get: function get() { + return _claims3.selectMyClaims; + } + }); + Object.defineProperty(exports, 'selectMyClaimsWithoutChannels', { + enumerable: true, + get: function get() { + return _claims3.selectMyClaimsWithoutChannels; + } + }); + Object.defineProperty(exports, 'selectAllMyClaimsByOutpoint', { + enumerable: true, + get: function get() { + return _claims3.selectAllMyClaimsByOutpoint; + } + }); + Object.defineProperty(exports, 'selectMyClaimsOutpoints', { + enumerable: true, + get: function get() { + return _claims3.selectMyClaimsOutpoints; + } + }); + Object.defineProperty(exports, 'selectFetchingMyChannels', { + enumerable: true, + get: function get() { + return _claims3.selectFetchingMyChannels; + } + }); + Object.defineProperty(exports, 'selectMyChannelClaims', { + enumerable: true, + get: function get() { + return _claims3.selectMyChannelClaims; + } + }); + Object.defineProperty(exports, 'selectResolvingUris', { + enumerable: true, + get: function get() { + return _claims3.selectResolvingUris; + } + }); + Object.defineProperty(exports, 'selectFeaturedUris', { + enumerable: true, + get: function get() { + return _claims3.selectFeaturedUris; + } + }); + Object.defineProperty(exports, 'selectFetchingFeaturedUris', { + enumerable: true, + get: function get() { + return _claims3.selectFetchingFeaturedUris; + } + }); + Object.defineProperty(exports, 'selectPlayingUri', { + enumerable: true, + get: function get() { + return _claims3.selectPlayingUri; + } + }); + Object.defineProperty(exports, 'selectChannelClaimCounts', { + enumerable: true, + get: function get() { + return _claims3.selectChannelClaimCounts; + } + }); + Object.defineProperty(exports, 'selectRewardContentClaimIds', { + enumerable: true, + get: function get() { + return _claims3.selectRewardContentClaimIds; + } + }); + + var _cost_info3 = __webpack_require__(35); + + Object.defineProperty(exports, 'makeSelectFetchingCostInfoForUri', { + enumerable: true, + get: function get() { + return _cost_info3.makeSelectFetchingCostInfoForUri; + } + }); + Object.defineProperty(exports, 'makeSelectCostInfoForUri', { + enumerable: true, + get: function get() { + return _cost_info3.makeSelectCostInfoForUri; + } + }); + Object.defineProperty(exports, 'selectAllCostInfoByUri', { + enumerable: true, + get: function get() { + return _cost_info3.selectAllCostInfoByUri; + } + }); + Object.defineProperty(exports, 'selectCostForCurrentPageUri', { + enumerable: true, + get: function get() { + return _cost_info3.selectCostForCurrentPageUri; + } + }); + Object.defineProperty(exports, 'selectFetchingCostInfo', { + enumerable: true, + get: function get() { + return _cost_info3.selectFetchingCostInfo; + } + }); + + var _file_info3 = __webpack_require__(12); + + Object.defineProperty(exports, 'makeSelectFileInfoForUri', { + enumerable: true, + get: function get() { + return _file_info3.makeSelectFileInfoForUri; + } + }); + Object.defineProperty(exports, 'makeSelectDownloadingForUri', { + enumerable: true, + get: function get() { + return _file_info3.makeSelectDownloadingForUri; + } + }); + Object.defineProperty(exports, 'makeSelectLoadingForUri', { + enumerable: true, + get: function get() { + return _file_info3.makeSelectLoadingForUri; + } + }); + Object.defineProperty(exports, 'selectFileInfosByOutpoint', { + enumerable: true, + get: function get() { + return _file_info3.selectFileInfosByOutpoint; + } + }); + Object.defineProperty(exports, 'selectIsFetchingFileList', { + enumerable: true, + get: function get() { + return _file_info3.selectIsFetchingFileList; + } + }); + Object.defineProperty(exports, 'selectIsFetchingFileListDownloadedOrPublished', { + enumerable: true, + get: function get() { + return _file_info3.selectIsFetchingFileListDownloadedOrPublished; + } + }); + Object.defineProperty(exports, 'selectDownloadingByOutpoint', { + enumerable: true, + get: function get() { + return _file_info3.selectDownloadingByOutpoint; + } + }); + Object.defineProperty(exports, 'selectUrisLoading', { + enumerable: true, + get: function get() { + return _file_info3.selectUrisLoading; + } + }); + Object.defineProperty(exports, 'selectFileInfosDownloaded', { + enumerable: true, + get: function get() { + return _file_info3.selectFileInfosDownloaded; + } + }); + Object.defineProperty(exports, 'selectDownloadingFileInfos', { + enumerable: true, + get: function get() { + return _file_info3.selectDownloadingFileInfos; + } + }); + Object.defineProperty(exports, 'selectTotalDownloadProgress', { + enumerable: true, + get: function get() { + return _file_info3.selectTotalDownloadProgress; + } + }); + + var _navigation = __webpack_require__(4); + + Object.defineProperty(exports, 'computePageFromPath', { + enumerable: true, + get: function get() { + return _navigation.computePageFromPath; + } + }); + Object.defineProperty(exports, 'makeSelectCurrentParam', { + enumerable: true, + get: function get() { + return _navigation.makeSelectCurrentParam; + } + }); + Object.defineProperty(exports, 'selectCurrentPath', { + enumerable: true, + get: function get() { + return _navigation.selectCurrentPath; + } + }); + Object.defineProperty(exports, 'selectCurrentPage', { + enumerable: true, + get: function get() { + return _navigation.selectCurrentPage; + } + }); + Object.defineProperty(exports, 'selectCurrentParams', { + enumerable: true, + get: function get() { + return _navigation.selectCurrentParams; + } + }); + Object.defineProperty(exports, 'selectHeaderLinks', { + enumerable: true, + get: function get() { + return _navigation.selectHeaderLinks; + } + }); + Object.defineProperty(exports, 'selectPageTitle', { + enumerable: true, + get: function get() { + return _navigation.selectPageTitle; + } + }); + Object.defineProperty(exports, 'selectPathAfterAuth', { + enumerable: true, + get: function get() { + return _navigation.selectPathAfterAuth; + } + }); + Object.defineProperty(exports, 'selectIsBackDisabled', { + enumerable: true, + get: function get() { + return _navigation.selectIsBackDisabled; + } + }); + Object.defineProperty(exports, 'selectIsForwardDisabled', { + enumerable: true, + get: function get() { + return _navigation.selectIsForwardDisabled; + } + }); + Object.defineProperty(exports, 'selectHistoryIndex', { + enumerable: true, + get: function get() { + return _navigation.selectHistoryIndex; + } + }); + Object.defineProperty(exports, 'selectHistoryStack', { + enumerable: true, + get: function get() { + return _navigation.selectHistoryStack; + } + }); + Object.defineProperty(exports, 'selectActiveHistoryEntry', { + enumerable: true, + get: function get() { + return _navigation.selectActiveHistoryEntry; + } + }); + + var _search3 = __webpack_require__(36); + + Object.defineProperty(exports, 'makeSelectSearchUris', { + enumerable: true, + get: function get() { + return _search3.makeSelectSearchUris; + } + }); + Object.defineProperty(exports, 'selectSearchQuery', { + enumerable: true, + get: function get() { + return _search3.selectSearchQuery; + } + }); + Object.defineProperty(exports, 'selectIsSearching', { + enumerable: true, + get: function get() { + return _search3.selectIsSearching; + } + }); + Object.defineProperty(exports, 'selectSearchUrisByQuery', { + enumerable: true, + get: function get() { + return _search3.selectSearchUrisByQuery; + } + }); + Object.defineProperty(exports, 'selectWunderBarAddress', { + enumerable: true, + get: function get() { + return _search3.selectWunderBarAddress; + } + }); + Object.defineProperty(exports, 'selectWunderBarIcon', { + enumerable: true, + get: function get() { + return _search3.selectWunderBarIcon; + } + }); + + var _wallet3 = __webpack_require__(13); + + Object.defineProperty(exports, 'makeSelectBlockDate', { + enumerable: true, + get: function get() { + return _wallet3.makeSelectBlockDate; + } + }); + Object.defineProperty(exports, 'selectBalance', { + enumerable: true, + get: function get() { + return _wallet3.selectBalance; + } + }); + Object.defineProperty(exports, 'selectTransactionsById', { + enumerable: true, + get: function get() { + return _wallet3.selectTransactionsById; + } + }); + Object.defineProperty(exports, 'selectTransactionItems', { + enumerable: true, + get: function get() { + return _wallet3.selectTransactionItems; + } + }); + Object.defineProperty(exports, 'selectRecentTransactions', { + enumerable: true, + get: function get() { + return _wallet3.selectRecentTransactions; + } + }); + Object.defineProperty(exports, 'selectHasTransactions', { + enumerable: true, + get: function get() { + return _wallet3.selectHasTransactions; + } + }); + Object.defineProperty(exports, 'selectIsFetchingTransactions', { + enumerable: true, + get: function get() { + return _wallet3.selectIsFetchingTransactions; + } + }); + Object.defineProperty(exports, 'selectIsSendingSupport', { + enumerable: true, + get: function get() { + return _wallet3.selectIsSendingSupport; + } + }); + Object.defineProperty(exports, 'selectReceiveAddress', { + enumerable: true, + get: function get() { + return _wallet3.selectReceiveAddress; + } + }); + Object.defineProperty(exports, 'selectGettingNewAddress', { + enumerable: true, + get: function get() { + return _wallet3.selectGettingNewAddress; + } + }); + Object.defineProperty(exports, 'selectDraftTransaction', { + enumerable: true, + get: function get() { + return _wallet3.selectDraftTransaction; + } + }); + Object.defineProperty(exports, 'selectDraftTransactionAmount', { + enumerable: true, + get: function get() { + return _wallet3.selectDraftTransactionAmount; + } + }); + Object.defineProperty(exports, 'selectDraftTransactionAddress', { + enumerable: true, + get: function get() { + return _wallet3.selectDraftTransactionAddress; + } + }); + Object.defineProperty(exports, 'selectDraftTransactionError', { + enumerable: true, + get: function get() { + return _wallet3.selectDraftTransactionError; + } + }); + Object.defineProperty(exports, 'selectBlocks', { + enumerable: true, + get: function get() { + return _wallet3.selectBlocks; + } + }); + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + var _lbry = __webpack_require__(5); + + var _lbry2 = _interopRequireDefault(_lbry); + + var _lbryapi = __webpack_require__(7); + + var _lbryapi2 = _interopRequireDefault(_lbryapi); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + exports.ACTIONS = ACTIONS; + exports.Lbry = _lbry2.default; + exports.Lbryapi = _lbryapi2.default; + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.doNotify = doNotify; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + var _Notification = __webpack_require__(9); + + var _Notification2 = _interopRequireDefault(_Notification); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function doNotify(data) { + return { + type: ACTIONS.CREATE_NOTIFICATION, + data: data + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + (function (global) { + (function (scope) { + if (scope['Proxy']) { + return; + } + + var lastRevokeFn = null; + + function isObject(o) { + return o ? typeof o == 'object' || typeof o == 'function' : false; + } + + scope.Proxy = function (target, handler) { + if (!isObject(target) || !isObject(handler)) { + throw new TypeError('Cannot create proxy with a non-object as target or handler'); + } + + var throwRevoked = function throwRevoked() {}; + + lastRevokeFn = function lastRevokeFn() { + throwRevoked = function throwRevoked(trap) { + throw new TypeError("Cannot perform '" + trap + "' on a proxy that has been revoked"); + }; + }; + + var unsafeHandler = handler; + handler = { + 'get': null, + 'set': null, + 'apply': null, + 'construct': null + }; + + for (var k in unsafeHandler) { + if (!(k in handler)) { + throw new TypeError("Proxy polyfill does not support trap '" + k + "'"); + } + + handler[k] = unsafeHandler[k]; + } + + if (typeof unsafeHandler == 'function') { + handler.apply = unsafeHandler.apply.bind(unsafeHandler); + } + + var proxy = this; + var isMethod = false; + var targetIsFunction = typeof target == 'function'; + + if (handler.apply || handler['construct'] || targetIsFunction) { + proxy = function Proxy() { + var usingNew = this && this.constructor === proxy; + throwRevoked(usingNew ? 'construct' : 'apply'); + + if (usingNew && handler['construct']) { + return handler['construct'].call(this, target, arguments); + } else if (!usingNew && handler.apply) { + return handler.apply(target, this, arguments); + } else if (targetIsFunction) { + if (usingNew) { + var all = Array.prototype.slice.call(arguments); + all.unshift(target); + var f = target.bind.apply(target, all); + return new f(); + } + + return target.apply(this, arguments); + } + + throw new TypeError(usingNew ? 'not a constructor' : 'not a function'); + }; + + isMethod = true; + } + + var getter = handler.get ? function (prop) { + throwRevoked('get'); + return handler.get(this, prop, proxy); + } : function (prop) { + throwRevoked('get'); + return this[prop]; + }; + var setter = handler.set ? function (prop, value) { + throwRevoked('set'); + var status = handler.set(this, prop, value, proxy); + + if (!status) {} + } : function (prop, value) { + throwRevoked('set'); + this[prop] = value; + }; + var propertyNames = Object.getOwnPropertyNames(target); + var propertyMap = {}; + propertyNames.forEach(function (prop) { + if (isMethod && prop in proxy) { + return; + } + + var real = Object.getOwnPropertyDescriptor(target, prop); + var desc = { + enumerable: !!real.enumerable, + get: getter.bind(target, prop), + set: setter.bind(target, prop) + }; + Object.defineProperty(proxy, prop, desc); + propertyMap[prop] = true; + }); + var prototypeOk = true; + + if (Object.setPrototypeOf) { + Object.setPrototypeOf(proxy, Object.getPrototypeOf(target)); + } else if (proxy.__proto__) { + proxy.__proto__ = target.__proto__; + } else { + prototypeOk = false; + } + + if (handler.get || !prototypeOk) { + for (var _k in target) { + if (propertyMap[_k]) { + continue; + } + + Object.defineProperty(proxy, _k, { + get: getter.bind(target, _k) + }); + } + } + + Object.seal(target); + Object.seal(proxy); + return proxy; + }; + + scope.Proxy.revocable = function (target, handler) { + var p = new scope.Proxy(target, handler); + return { + 'proxy': p, + 'revoke': lastRevokeFn + }; + }; + + scope.Proxy['revocable'] = scope.Proxy.revocable; + scope['Proxy'] = scope.Proxy; + })(typeof module !== 'undefined' && module['exports'] ? global : window); + }).call(exports, __webpack_require__(17)); + }, function (module, exports) { + var g; + + g = function () { + return this; + }(); + + try { + g = g || Function("return this")() || (1, eval)("this"); + } catch (e) { + if (typeof window === "object") g = window; + } + + module.exports = g; + }, function (module, exports) { + var process = module.exports = {}; + var cachedSetTimeout; + var cachedClearTimeout; + + function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); + } + + function defaultClearTimeout() { + throw new Error('clearTimeout has not been defined'); + } + + (function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } + })(); + + function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + return setTimeout(fun, 0); + } + + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + + try { + return cachedSetTimeout(fun, 0); + } catch (e) { + try { + return cachedSetTimeout.call(null, fun, 0); + } catch (e) { + return cachedSetTimeout.call(this, fun, 0); + } + } + } + + function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + return clearTimeout(marker); + } + + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + + try { + return cachedClearTimeout(marker); + } catch (e) { + try { + return cachedClearTimeout.call(null, marker); + } catch (e) { + return cachedClearTimeout.call(this, marker); + } + } + } + + var queue = []; + var draining = false; + var currentQueue; + var queueIndex = -1; + + function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + + draining = false; + + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + + if (queue.length) { + drainQueue(); + } + } + + function drainQueue() { + if (draining) { + return; + } + + var timeout = runTimeout(cleanUpNextTick); + draining = true; + var len = queue.length; + + while (len) { + currentQueue = queue; + queue = []; + + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + + queueIndex = -1; + len = queue.length; + } + + currentQueue = null; + draining = false; + runClearTimeout(timeout); + } + + process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + + queue.push(new Item(fun, args)); + + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } + }; + + function Item(fun, array) { + this.fun = fun; + this.array = array; + } + + Item.prototype.run = function () { + this.fun.apply(null, this.array); + }; + + process.title = 'browser'; + process.browser = true; + process.env = {}; + process.argv = []; + process.version = ''; + process.versions = {}; + + function noop() {} + + process.on = noop; + process.addListener = noop; + process.once = noop; + process.off = noop; + process.removeListener = noop; + process.removeAllListeners = noop; + process.emit = noop; + process.prependListener = noop; + process.prependOnceListener = noop; + + process.listeners = function (name) { + return []; + }; + + process.binding = function (name) { + throw new Error('process.binding is not supported'); + }; + + process.cwd = function () { + return '/'; + }; + + process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); + }; + + process.umask = function () { + return 0; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + exports.decode = exports.parse = __webpack_require__(20); + exports.encode = exports.stringify = __webpack_require__(21); + }, function (module, exports, __webpack_require__) { + "use strict"; + + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + + module.exports = function (qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + var maxKeys = 1000; + + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, + vstr, + k, + v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; + }; + + var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var stringifyPrimitive = function stringifyPrimitive(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } + }; + + module.exports = function (obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function (k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + + if (isArray(obj[k])) { + return map(obj[k], function (v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj)); + }; + + var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; + }; + + function map(xs, f) { + if (xs.map) return xs.map(f); + var res = []; + + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + + return res; + } + + var objectKeys = Object.keys || function (obj) { + var res = []; + + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + + return res; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.doFetchCostInfoForUri = doFetchCostInfoForUri; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + var _lbryapi = __webpack_require__(7); + + var _lbryapi2 = _interopRequireDefault(_lbryapi); + + var _claims = __webpack_require__(3); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function doFetchCostInfoForUri(uri) { + return function (dispatch, getState) { + var state = getState(); + var claim = (0, _claims.selectClaimsByUri)(state)[uri]; + if (!claim) return; + + function resolve(costInfo) { + dispatch({ + type: ACTIONS.FETCH_COST_INFO_COMPLETED, + data: { + uri: uri, + costInfo: costInfo + } + }); + } + + var fee = claim.value && claim.value.stream && claim.value.stream.metadata ? claim.value.stream.metadata.fee : undefined; + + if (fee === undefined) { + resolve({ + cost: 0, + includesData: true + }); + } else if (fee.currency === 'LBC') { + resolve({ + cost: fee.amount, + includesData: true + }); + } else { + _lbryapi2.default.getExchangeRates().then(function (_ref) { + var LBC_USD = _ref.LBC_USD; + resolve({ + cost: fee.amount / LBC_USD, + includesData: true + }); + }); + } + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.doFetchFileInfo = doFetchFileInfo; + exports.doFileList = doFileList; + exports.doFetchFileInfosAndPublishedClaims = doFetchFileInfosAndPublishedClaims; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + var _lbry = __webpack_require__(5); + + var _lbry2 = _interopRequireDefault(_lbry); + + var _claims = __webpack_require__(6); + + var _claims2 = __webpack_require__(3); + + var _file_info = __webpack_require__(12); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function doFetchFileInfo(uri) { + return function (dispatch, getState) { + var state = getState(); + var claim = (0, _claims2.selectClaimsByUri)(state)[uri]; + var outpoint = claim ? claim.txid + ':' + claim.nout : null; + var alreadyFetching = !!(0, _file_info.selectUrisLoading)(state)[uri]; + + if (!alreadyFetching) { + dispatch({ + type: ACTIONS.FETCH_FILE_INFO_STARTED, + data: { + outpoint: outpoint + } + }); + + _lbry2.default.file_list({ + outpoint: outpoint, + full_status: true + }).then(function (fileInfos) { + dispatch({ + type: ACTIONS.FETCH_FILE_INFO_COMPLETED, + data: { + outpoint: outpoint, + fileInfo: fileInfos && fileInfos.length ? fileInfos[0] : null + } + }); + }); + } + }; + } + + function doFileList() { + return function (dispatch, getState) { + var state = getState(); + var isFetching = (0, _file_info.selectIsFetchingFileList)(state); + + if (!isFetching) { + dispatch({ + type: ACTIONS.FILE_LIST_STARTED + }); + + _lbry2.default.file_list().then(function (fileInfos) { + dispatch({ + type: ACTIONS.FILE_LIST_SUCCEEDED, + data: { + fileInfos: fileInfos + } + }); + }); + } + }; + } + + function doFetchFileInfosAndPublishedClaims() { + return function (dispatch, getState) { + var state = getState(); + var isFetchingClaimListMine = (0, _claims2.selectIsFetchingClaimListMine)(state); + var isFetchingFileInfo = (0, _file_info.selectIsFetchingFileList)(state); + if (!isFetchingClaimListMine) dispatch((0, _claims.doFetchClaimListMine)()); + if (!isFetchingFileInfo) dispatch(doFileList()); + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.doSearch = doSearch; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + var _lbryURI = __webpack_require__(2); + + var _claims = __webpack_require__(6); + + var _navigation = __webpack_require__(4); + + var _batchActions = __webpack_require__(8); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function doSearch(rawQuery, currentPageNotSearchHandler) { + return function (dispatch, getState) { + var state = getState(); + var page = (0, _navigation.selectCurrentPage)(state); + var query = rawQuery.replace(/^lbry:\/\//i, ''); + + if (!query) { + dispatch({ + type: ACTIONS.SEARCH_CANCELLED + }); + return; + } + + dispatch({ + type: ACTIONS.SEARCH_STARTED, + data: { + query: query + } + }); + + if (page !== 'search') { + if (currentPageNotSearchHandler) { + currentPageNotSearchHandler(); + } + } else { + fetch('https://lighthouse.lbry.io/search?s=' + query).then(function (response) { + return response.status === 200 ? Promise.resolve(response.json()) : Promise.reject(new Error(response.statusText)); + }).then(function (data) { + var uris = []; + var actions = []; + data.forEach(function (result) { + var uri = (0, _lbryURI.buildURI)({ + name: result.name, + claimId: result.claimId + }); + actions.push((0, _claims.doResolveUri)(uri)); + uris.push(uri); + }); + actions.push({ + type: ACTIONS.SEARCH_COMPLETED, + data: { + query: query, + uris: uris + } + }); + dispatch(_batchActions.batchActions.apply(undefined, actions)); + }).catch(function () { + dispatch({ + type: ACTIONS.SEARCH_CANCELLED + }); + }); + } + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.doUpdateBalance = doUpdateBalance; + exports.doBalanceSubscribe = doBalanceSubscribe; + exports.doFetchTransactions = doFetchTransactions; + exports.doFetchBlock = doFetchBlock; + exports.doGetNewAddress = doGetNewAddress; + exports.doCheckAddressIsMine = doCheckAddressIsMine; + exports.doSendDraftTransaction = doSendDraftTransaction; + exports.doSetDraftTransactionAmount = doSetDraftTransactionAmount; + exports.doSetDraftTransactionAddress = doSetDraftTransactionAddress; + exports.doSendSupport = doSendSupport; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + var _modal_types = __webpack_require__(26); + + var MODALS = _interopRequireWildcard(_modal_types); + + var _lbry = __webpack_require__(5); + + var _lbry2 = _interopRequireDefault(_lbry); + + var _app = __webpack_require__(10); + + var _wallet = __webpack_require__(13); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function doUpdateBalance() { + return function (dispatch) { + _lbry2.default.wallet_balance().then(function (balance) { + return dispatch({ + type: ACTIONS.UPDATE_BALANCE, + data: { + balance: balance + } + }); + }); + }; + } + + function doBalanceSubscribe() { + return function (dispatch) { + dispatch(doUpdateBalance()); + setInterval(function () { + return dispatch(doUpdateBalance()); + }, 5000); + }; + } + + function doFetchTransactions() { + return function (dispatch) { + dispatch({ + type: ACTIONS.FETCH_TRANSACTIONS_STARTED + }); + + _lbry2.default.transaction_list({ + include_tip_info: true + }).then(function (results) { + dispatch({ + type: ACTIONS.FETCH_TRANSACTIONS_COMPLETED, + data: { + transactions: results + } + }); + }); + }; + } + + function doFetchBlock(height) { + return function (dispatch) { + _lbry2.default.block_show({ + height: height + }).then(function (block) { + dispatch({ + type: ACTIONS.FETCH_BLOCK_SUCCESS, + data: { + block: block + } + }); + }); + }; + } + + function doGetNewAddress() { + return function (dispatch) { + dispatch({ + type: ACTIONS.GET_NEW_ADDRESS_STARTED + }); + + _lbry2.default.wallet_new_address().then(function (address) { + dispatch({ + type: ACTIONS.GET_NEW_ADDRESS_COMPLETED, + data: { + address: address + } + }); + }); + }; + } + + function doCheckAddressIsMine(address) { + return function (dispatch) { + dispatch({ + type: ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED + }); + + _lbry2.default.wallet_is_address_mine({ + address: address + }).then(function (isMine) { + if (!isMine) dispatch(doGetNewAddress()); + dispatch({ + type: ACTIONS.CHECK_ADDRESS_IS_MINE_COMPLETED + }); + }); + }; + } + + function doSendDraftTransaction() { + return function (dispatch, getState) { + var state = getState(); + var draftTx = (0, _wallet.selectDraftTransaction)(state); + var balance = (0, _wallet.selectBalance)(state); + var amount = (0, _wallet.selectDraftTransactionAmount)(state); + + if (balance - amount <= 0) { + dispatch((0, _app.doOpenModal)(MODALS.INSUFFICIENT_CREDITS)); + return; + } + + dispatch({ + type: ACTIONS.SEND_TRANSACTION_STARTED + }); + + var successCallback = function successCallback(results) { + if (results === true) { + dispatch({ + type: ACTIONS.SEND_TRANSACTION_COMPLETED + }); + dispatch((0, _app.doShowSnackBar)({ + message: __('You sent ' + amount + ' LBC'), + linkText: __('History'), + linkTarget: __('/wallet') + })); + } else { + dispatch({ + type: ACTIONS.SEND_TRANSACTION_FAILED, + data: { + error: results + } + }); + dispatch((0, _app.doOpenModal)(MODALS.TRANSACTION_FAILED)); + } + }; + + var errorCallback = function errorCallback(error) { + dispatch({ + type: ACTIONS.SEND_TRANSACTION_FAILED, + data: { + error: error.message + } + }); + dispatch((0, _app.doOpenModal)(MODALS.TRANSACTION_FAILED)); + }; + + _lbry2.default.wallet_send({ + amount: draftTx.amount, + address: draftTx.address + }).then(successCallback, errorCallback); + }; + } + + function doSetDraftTransactionAmount(amount) { + return { + type: ACTIONS.SET_DRAFT_TRANSACTION_AMOUNT, + data: { + amount: amount + } + }; + } + + function doSetDraftTransactionAddress(address) { + return { + type: ACTIONS.SET_DRAFT_TRANSACTION_ADDRESS, + data: { + address: address + } + }; + } + + function doSendSupport(amount, claimId, uri, successCallback, errorCallback) { + return function (dispatch, getState) { + var state = getState(); + var balance = (0, _wallet.selectBalance)(state); + + if (balance - amount <= 0) { + dispatch((0, _app.doOpenModal)(MODALS.INSUFFICIENT_CREDITS)); + return; + } + + dispatch({ + type: ACTIONS.SUPPORT_TRANSACTION_STARTED + }); + + _lbry2.default.wallet_send({ + claim_id: claimId, + amount: amount + }).then(successCallback, errorCallback); + }; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + var CONFIRM_FILE_REMOVE = exports.CONFIRM_FILE_REMOVE = 'confirmFileRemove'; + var INCOMPATIBLE_DAEMON = exports.INCOMPATIBLE_DAEMON = 'incompatibleDaemon'; + var FILE_TIMEOUT = exports.FILE_TIMEOUT = 'file_timeout'; + var DOWNLOADING = exports.DOWNLOADING = 'downloading'; + var ERROR = exports.ERROR = 'error'; + var INSUFFICIENT_CREDITS = exports.INSUFFICIENT_CREDITS = 'insufficient_credits'; + var UPGRADE = exports.UPGRADE = 'upgrade'; + var WELCOME = exports.WELCOME = 'welcome'; + var EMAIL_COLLECTION = exports.EMAIL_COLLECTION = 'email_collection'; + var FIRST_REWARD = exports.FIRST_REWARD = 'first_reward'; + var AUTHENTICATION_FAILURE = exports.AUTHENTICATION_FAILURE = 'auth_failure'; + var TRANSACTION_FAILED = exports.TRANSACTION_FAILED = 'transaction_failed'; + var REWARD_APPROVAL_REQUIRED = exports.REWARD_APPROVAL_REQUIRED = 'reward_approval_required'; + var AFFIRM_PURCHASE = exports.AFFIRM_PURCHASE = 'affirm_purchase'; + var CONFIRM_CLAIM_REVOKE = exports.CONFIRM_CLAIM_REVOKE = 'confirmClaimRevoke'; + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.formatCredits = formatCredits; + exports.formatFullPrice = formatFullPrice; + + function formatCredits(amount, precision) { + return amount.toFixed(precision || 1).replace(/\.?0+$/, ''); + } + + function formatFullPrice(amount) { + var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + var formated = ''; + var quantity = amount.toString().split('.'); + var fraction = quantity[1]; + + if (fraction) { + var decimals = fraction.split(''); + var first = decimals.filter(function (number) { + return number !== '0'; + })[0]; + var index = decimals.indexOf(first); + formated = '.' + fraction.substring(0, index + precision); + } + + return parseFloat(quantity[0] + formated); + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if ((typeof Symbol === "function" ? Symbol.iterator : "@@iterator") in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + exports.claimsReducer = claimsReducer; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + var reducers = {}; + var defaultState = { + rewardedContentClaimIds: [], + channelClaimCounts: {} + }; + + reducers[ACTIONS.RESOLVE_URIS_COMPLETED] = function (state, action) { + var resolveInfo = action.data.resolveInfo; + var byUri = babelHelpers.extends({}, state.claimsByUri); + var byId = babelHelpers.extends({}, state.byId); + var channelClaimCounts = babelHelpers.extends({}, state.channelClaimCounts); + Object.entries(resolveInfo).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + uri = _ref2[0], + _ref2$ = _ref2[1], + certificate = _ref2$.certificate, + claimsInChannel = _ref2$.claimsInChannel; + + if (certificate && !Number.isNaN(claimsInChannel)) { + channelClaimCounts[uri] = claimsInChannel; + } + }); + Object.entries(resolveInfo).forEach(function (_ref3) { + var _ref4 = _slicedToArray(_ref3, 2), + uri = _ref4[0], + _ref4$ = _ref4[1], + certificate = _ref4$.certificate, + claim = _ref4$.claim; + + if (claim) { + byId[claim.claim_id] = claim; + byUri[uri] = claim.claim_id; + } else if (claim === undefined && certificate !== undefined) { + byId[certificate.claim_id] = certificate; + + if (!uri.split(certificate.name)[1].match(/\//)) { + byUri[uri] = certificate.claim_id; + } else { + byUri[uri] = null; + } + } else { + byUri[uri] = null; + } + }); + return babelHelpers.extends({}, state, { + byId: byId, + claimsByUri: byUri, + channelClaimCounts: channelClaimCounts, + resolvingUris: (state.resolvingUris || []).filter(function (uri) { + return !resolveInfo[uri]; + }) + }); + }; + + reducers[ACTIONS.FETCH_CLAIM_LIST_MINE_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + isFetchingClaimListMine: true + }); + }; + + reducers[ACTIONS.FETCH_CLAIM_LIST_MINE_COMPLETED] = function (state, action) { + var claims = action.data.claims; + var byId = babelHelpers.extends({}, state.byId); + var pendingById = babelHelpers.extends({}, state.pendingById); + claims.filter(function (claim) { + return claim.category && claim.category.match(/claim/); + }).forEach(function (claim) { + byId[claim.claim_id] = claim; + var pending = Object.values(pendingById).find(function (pendingClaim) { + return pendingClaim.name === claim.name && pendingClaim.channel_name === claim.channel_name; + }); + + if (pending) { + delete pendingById[pending.claim_id]; + } + }); + Object.values(pendingById).filter(function (pendingClaim) { + return Date.now() - pendingClaim.time >= 20 * 60 * 1000; + }).forEach(function (pendingClaim) { + delete pendingById[pendingClaim.claim_id]; + }); + return babelHelpers.extends({}, state, { + isFetchingClaimListMine: false, + myClaims: claims, + byId: byId, + pendingById: pendingById + }); + }; + + reducers[ACTIONS.FETCH_CHANNEL_LIST_MINE_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + fetchingMyChannels: true + }); + }; + + reducers[ACTIONS.FETCH_CHANNEL_LIST_MINE_COMPLETED] = function (state, action) { + var claims = action.data.claims; + var myChannelClaims = new Set(state.myChannelClaims); + var byId = babelHelpers.extends({}, state.byId); + claims.forEach(function (claim) { + myChannelClaims.add(claim.claim_id); + byId[claims.claim_id] = claim; + }); + return babelHelpers.extends({}, state, { + byId: byId, + fetchingMyChannels: false, + myChannelClaims: myChannelClaims + }); + }; + + reducers[ACTIONS.FETCH_CHANNEL_CLAIMS_STARTED] = function (state, action) { + var _action$data = action.data, + uri = _action$data.uri, + page = _action$data.page; + var fetchingChannelClaims = babelHelpers.extends({}, state.fetchingChannelClaims); + fetchingChannelClaims[uri] = page; + return babelHelpers.extends({}, state, { + fetchingChannelClaims: fetchingChannelClaims + }); + }; + + reducers[ACTIONS.FETCH_CHANNEL_CLAIMS_COMPLETED] = function (state, action) { + var _action$data2 = action.data, + uri = _action$data2.uri, + claims = _action$data2.claims, + page = _action$data2.page; + var claimsByChannel = babelHelpers.extends({}, state.claimsByChannel); + var byChannel = babelHelpers.extends({}, claimsByChannel[uri]); + var allClaimIds = new Set(byChannel.all); + var currentPageClaimIds = []; + var byId = babelHelpers.extends({}, state.byId); + var fetchingChannelClaims = babelHelpers.extends({}, state.fetchingChannelClaims); + + if (claims !== undefined) { + claims.forEach(function (claim) { + allClaimIds.add(claim.claim_id); + currentPageClaimIds.push(claim.claim_id); + byId[claim.claim_id] = claim; + }); + } + + byChannel.all = allClaimIds; + byChannel[page] = currentPageClaimIds; + claimsByChannel[uri] = byChannel; + delete fetchingChannelClaims[uri]; + return babelHelpers.extends({}, state, { + claimsByChannel: claimsByChannel, + byId: byId, + fetchingChannelClaims: fetchingChannelClaims + }); + }; + + reducers[ACTIONS.ABANDON_CLAIM_STARTED] = function (state, action) { + var claimId = action.data.claimId; + var abandoningById = babelHelpers.extends({}, state.abandoningById); + abandoningById[claimId] = true; + return babelHelpers.extends({}, state, { + abandoningById: abandoningById + }); + }; + + reducers[ACTIONS.ABANDON_CLAIM_SUCCEEDED] = function (state, action) { + var claimId = action.data.claimId; + var byId = babelHelpers.extends({}, state.byId); + var claimsByUri = babelHelpers.extends({}, state.claimsByUri); + Object.keys(claimsByUri).forEach(function (uri) { + if (claimsByUri[uri] === claimId) { + delete claimsByUri[uri]; + } + }); + delete byId[claimId]; + return babelHelpers.extends({}, state, { + byId: byId, + claimsByUri: claimsByUri + }); + }; + + reducers[ACTIONS.CREATE_CHANNEL_COMPLETED] = function (state, action) { + var channelClaim = action.data.channelClaim; + var byId = babelHelpers.extends({}, state.byId); + var myChannelClaims = new Set(state.myChannelClaims); + byId[channelClaim.claim_id] = channelClaim; + myChannelClaims.add(channelClaim.claim_id); + return babelHelpers.extends({}, state, { + byId: byId, + myChannelClaims: myChannelClaims + }); + }; + + reducers[ACTIONS.FETCH_FEATURED_CONTENT_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + fetchingFeaturedContent: true + }); + }; + + reducers[ACTIONS.FETCH_FEATURED_CONTENT_COMPLETED] = function (state, action) { + var _action$data3 = action.data, + uris = _action$data3.uris, + success = _action$data3.success; + return babelHelpers.extends({}, state, { + fetchingFeaturedContent: false, + fetchingFeaturedContentFailed: !success, + featuredUris: uris + }); + }; + + reducers[ACTIONS.FETCH_REWARD_CONTENT_COMPLETED] = function (state, action) { + var claimIds = action.data.claimIds; + return babelHelpers.extends({}, state, { + rewardedContentClaimIds: claimIds + }); + }; + + reducers[ACTIONS.RESOLVE_URIS_STARTED] = function (state, action) { + var uris = action.data.uris; + var oldResolving = state.resolvingUris || []; + var newResolving = babelHelpers.extends([], oldResolving); + uris.forEach(function (uri) { + if (!newResolving.includes(uri)) { + newResolving.push(uri); + } + }); + return babelHelpers.extends({}, state, { + resolvingUris: newResolving + }); + }; + + reducers[ACTIONS.FETCH_CHANNEL_CLAIM_COUNT_COMPLETED] = function (state, action) { + var channelClaimCounts = babelHelpers.extends({}, state.channelClaimCounts); + var _action$data4 = action.data, + uri = _action$data4.uri, + totalClaims = _action$data4.totalClaims; + channelClaimCounts[uri] = totalClaims; + return babelHelpers.extends({}, state, { + channelClaimCounts: channelClaimCounts + }); + }; + + function claimsReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.costInfoReducer = costInfoReducer; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + var reducers = {}; + var defaultState = {}; + + reducers[ACTIONS.FETCH_COST_INFO_STARTED] = function (state, action) { + var uri = action.data.uri; + var newFetching = babelHelpers.extends({}, state.fetching); + newFetching[uri] = true; + return babelHelpers.extends({}, state, { + fetching: newFetching + }); + }; + + reducers[ACTIONS.FETCH_COST_INFO_COMPLETED] = function (state, action) { + var _action$data = action.data, + uri = _action$data.uri, + costInfo = _action$data.costInfo; + var newByUri = babelHelpers.extends({}, state.byUri); + var newFetching = babelHelpers.extends({}, state.fetching); + newByUri[uri] = costInfo; + delete newFetching[uri]; + return babelHelpers.extends({}, state, { + byUri: newByUri, + fetching: newFetching + }); + }; + + function costInfoReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.fileInfoReducer = fileInfoReducer; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + var reducers = {}; + var defaultState = {}; + + reducers[ACTIONS.FILE_LIST_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + isFetchingFileList: true + }); + }; + + reducers[ACTIONS.FILE_LIST_SUCCEEDED] = function (state, action) { + var fileInfos = action.data.fileInfos; + var newByOutpoint = babelHelpers.extends({}, state.byOutpoint); + var pendingByOutpoint = babelHelpers.extends({}, state.pendingByOutpoint); + fileInfos.forEach(function (fileInfo) { + var outpoint = fileInfo.outpoint; + if (outpoint) newByOutpoint[fileInfo.outpoint] = fileInfo; + }); + return babelHelpers.extends({}, state, { + isFetchingFileList: false, + byOutpoint: newByOutpoint, + pendingByOutpoint: pendingByOutpoint + }); + }; + + reducers[ACTIONS.FETCH_FILE_INFO_STARTED] = function (state, action) { + var outpoint = action.data.outpoint; + var newFetching = babelHelpers.extends({}, state.fetching); + newFetching[outpoint] = true; + return babelHelpers.extends({}, state, { + fetching: newFetching + }); + }; + + reducers[ACTIONS.FETCH_FILE_INFO_COMPLETED] = function (state, action) { + var _action$data = action.data, + fileInfo = _action$data.fileInfo, + outpoint = _action$data.outpoint; + var newByOutpoint = babelHelpers.extends({}, state.byOutpoint); + var newFetching = babelHelpers.extends({}, state.fetching); + newByOutpoint[outpoint] = fileInfo; + delete newFetching[outpoint]; + return babelHelpers.extends({}, state, { + byOutpoint: newByOutpoint, + fetching: newFetching + }); + }; + + reducers[ACTIONS.DOWNLOADING_STARTED] = function (state, action) { + var _action$data2 = action.data, + uri = _action$data2.uri, + outpoint = _action$data2.outpoint, + fileInfo = _action$data2.fileInfo; + var newByOutpoint = babelHelpers.extends({}, state.byOutpoint); + var newDownloading = babelHelpers.extends({}, state.downloadingByOutpoint); + var newLoading = babelHelpers.extends({}, state.urisLoading); + newDownloading[outpoint] = true; + newByOutpoint[outpoint] = fileInfo; + delete newLoading[uri]; + return babelHelpers.extends({}, state, { + downloadingByOutpoint: newDownloading, + urisLoading: newLoading, + byOutpoint: newByOutpoint + }); + }; + + reducers[ACTIONS.DOWNLOADING_PROGRESSED] = function (state, action) { + var _action$data3 = action.data, + outpoint = _action$data3.outpoint, + fileInfo = _action$data3.fileInfo; + var newByOutpoint = babelHelpers.extends({}, state.byOutpoint); + var newDownloading = babelHelpers.extends({}, state.downloadingByOutpoint); + newByOutpoint[outpoint] = fileInfo; + newDownloading[outpoint] = true; + return babelHelpers.extends({}, state, { + byOutpoint: newByOutpoint, + downloadingByOutpoint: newDownloading + }); + }; + + reducers[ACTIONS.DOWNLOADING_COMPLETED] = function (state, action) { + var _action$data4 = action.data, + outpoint = _action$data4.outpoint, + fileInfo = _action$data4.fileInfo; + var newByOutpoint = babelHelpers.extends({}, state.byOutpoint); + var newDownloading = babelHelpers.extends({}, state.downloadingByOutpoint); + newByOutpoint[outpoint] = fileInfo; + delete newDownloading[outpoint]; + return babelHelpers.extends({}, state, { + byOutpoint: newByOutpoint, + downloadingByOutpoint: newDownloading + }); + }; + + reducers[ACTIONS.FILE_DELETE] = function (state, action) { + var outpoint = action.data.outpoint; + var newByOutpoint = babelHelpers.extends({}, state.byOutpoint); + var downloadingByOutpoint = babelHelpers.extends({}, state.downloadingByOutpoint); + delete newByOutpoint[outpoint]; + delete downloadingByOutpoint[outpoint]; + return babelHelpers.extends({}, state, { + byOutpoint: newByOutpoint, + downloadingByOutpoint: downloadingByOutpoint + }); + }; + + reducers[ACTIONS.LOADING_VIDEO_STARTED] = function (state, action) { + var uri = action.data.uri; + var newLoading = babelHelpers.extends({}, state.urisLoading); + newLoading[uri] = true; + return babelHelpers.extends({}, state, { + urisLoading: newLoading + }); + }; + + reducers[ACTIONS.LOADING_VIDEO_FAILED] = function (state, action) { + var uri = action.data.uri; + var newLoading = babelHelpers.extends({}, state.urisLoading); + delete newLoading[uri]; + return babelHelpers.extends({}, state, { + urisLoading: newLoading + }); + }; + + reducers[ACTIONS.FETCH_DATE] = function (state, action) { + var time = action.data.time; + + if (time) { + return babelHelpers.extends({}, state, { + publishedDate: time + }); + } + + return null; + }; + + function fileInfoReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.notificationsReducer = notificationsReducer; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + var reducers = {}; + var defaultState = { + queue: [] + }; + + reducers[ACTIONS.NOTIFICATION_CREATED] = function (state, action) { + var _action$data = action.data, + title = _action$data.title, + message = _action$data.message, + type = _action$data.type, + errorCode = _action$data.errorCode, + displayType = _action$data.displayType; + var queue = babelHelpers.extends([], state.queue); + queue.push({ + title: title, + message: message, + type: type, + errorCode: errorCode, + displayType: displayType + }); + return babelHelpers.extends({}, state, { + queue: queue + }); + }; + + reducers[ACTIONS.NOTIFICATION_DISPLAYED] = function (state) { + var queue = babelHelpers.extends([], state.queue); + queue.shift(); + return babelHelpers.extends({}, state, { + queue: queue + }); + }; + + function notificationsReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.searchReducer = searchReducer; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + var reducers = {}; + var defaultState = { + urisByQuery: {}, + searching: false + }; + + reducers[ACTIONS.SEARCH_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + searching: true + }); + }; + + reducers[ACTIONS.SEARCH_COMPLETED] = function (state, action) { + var _action$data = action.data, + query = _action$data.query, + uris = _action$data.uris; + return babelHelpers.extends({}, state, { + searching: false, + urisByQuery: babelHelpers.extends({}, state.urisByQuery, _defineProperty({}, query, uris)) + }); + }; + + reducers[ACTIONS.SEARCH_CANCELLED] = function (state) { + return babelHelpers.extends({}, state, { + searching: false + }); + }; + + function searchReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.walletReducer = walletReducer; + + var _action_types = __webpack_require__(0); + + var ACTIONS = _interopRequireWildcard(_action_types); + + function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; + } + } + + newObj.default = obj; + return newObj; + } + } + + var reducers = {}; + var receiveAddress = null; + + var buildDraftTransaction = function buildDraftTransaction() { + return { + amount: undefined, + address: undefined + }; + }; + + var defaultState = { + balance: undefined, + blocks: {}, + transactions: {}, + fetchingTransactions: false, + receiveAddress: receiveAddress, + gettingNewAddress: false, + draftTransaction: buildDraftTransaction(), + sendingSupport: false + }; + + reducers[ACTIONS.FETCH_TRANSACTIONS_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + fetchingTransactions: true + }); + }; + + reducers[ACTIONS.FETCH_TRANSACTIONS_COMPLETED] = function (state, action) { + var byId = babelHelpers.extends({}, state.transactions); + var transactions = action.data.transactions; + transactions.forEach(function (transaction) { + byId[transaction.txid] = transaction; + }); + return babelHelpers.extends({}, state, { + transactions: byId, + fetchingTransactions: false + }); + }; + + reducers[ACTIONS.GET_NEW_ADDRESS_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + gettingNewAddress: true + }); + }; + + reducers[ACTIONS.GET_NEW_ADDRESS_COMPLETED] = function (state, action) { + var address = action.data.address; + return babelHelpers.extends({}, state, { + gettingNewAddress: false, + receiveAddress: address + }); + }; + + reducers[ACTIONS.UPDATE_BALANCE] = function (state, action) { + return babelHelpers.extends({}, state, { + balance: action.data.balance + }); + }; + + reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + checkingAddressOwnership: true + }); + }; + + reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_COMPLETED] = function (state) { + return babelHelpers.extends({}, state, { + checkingAddressOwnership: false + }); + }; + + reducers[ACTIONS.SET_DRAFT_TRANSACTION_AMOUNT] = function (state, action) { + var oldDraft = state.draftTransaction; + var newDraft = babelHelpers.extends({}, oldDraft, { + amount: parseFloat(action.data.amount) + }); + return babelHelpers.extends({}, state, { + draftTransaction: newDraft + }); + }; + + reducers[ACTIONS.SET_DRAFT_TRANSACTION_ADDRESS] = function (state, action) { + var oldDraft = state.draftTransaction; + var newDraft = babelHelpers.extends({}, oldDraft, { + address: action.data.address + }); + return babelHelpers.extends({}, state, { + draftTransaction: newDraft + }); + }; + + reducers[ACTIONS.SEND_TRANSACTION_STARTED] = function (state) { + var newDraftTransaction = babelHelpers.extends({}, state.draftTransaction, { + sending: true + }); + return babelHelpers.extends({}, state, { + draftTransaction: newDraftTransaction + }); + }; + + reducers[ACTIONS.SEND_TRANSACTION_COMPLETED] = function (state) { + return babelHelpers.extends({}, state, { + draftTransaction: buildDraftTransaction() + }); + }; + + reducers[ACTIONS.SEND_TRANSACTION_FAILED] = function (state, action) { + var newDraftTransaction = babelHelpers.extends({}, state.draftTransaction, { + sending: false, + error: action.data.error + }); + return babelHelpers.extends({}, state, { + draftTransaction: newDraftTransaction + }); + }; + + reducers[ACTIONS.SUPPORT_TRANSACTION_STARTED] = function (state) { + return babelHelpers.extends({}, state, { + sendingSupport: true + }); + }; + + reducers[ACTIONS.SUPPORT_TRANSACTION_COMPLETED] = function (state) { + return babelHelpers.extends({}, state, { + sendingSupport: false + }); + }; + + reducers[ACTIONS.SUPPORT_TRANSACTION_FAILED] = function (state, action) { + return babelHelpers.extends({}, state, { + error: action.data.error, + sendingSupport: false + }); + }; + + reducers[ACTIONS.FETCH_BLOCK_SUCCESS] = function (state, action) { + var _action$data = action.data, + block = _action$data.block, + height = _action$data.block.height; + var blocks = babelHelpers.extends({}, state.blocks); + blocks[height] = block; + return babelHelpers.extends({}, state, { + blocks: blocks + }); + }; + + function walletReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; + } + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.selectNotification = exports.selectState = undefined; + + var _reselect = __webpack_require__(1); + + var selectState = exports.selectState = function selectState(state) { + return state.notifications || {}; + }; + + var selectNotification = exports.selectNotification = (0, _reselect.createSelector)(selectState, function (state) { + return state.queue.length > 0 ? state.queue[0] : {}; + }); + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.makeSelectFetchingCostInfoForUri = exports.selectFetchingCostInfo = exports.selectCostForCurrentPageUri = exports.makeSelectCostInfoForUri = exports.selectAllCostInfoByUri = exports.selectState = undefined; + + var _reselect = __webpack_require__(1); + + var _navigation = __webpack_require__(4); + + var selectState = exports.selectState = function selectState(state) { + return state.costInfo || {}; + }; + + var selectAllCostInfoByUri = exports.selectAllCostInfoByUri = (0, _reselect.createSelector)(selectState, function (state) { + return state.byUri || {}; + }); + + var makeSelectCostInfoForUri = exports.makeSelectCostInfoForUri = function makeSelectCostInfoForUri(uri) { + return (0, _reselect.createSelector)(selectAllCostInfoByUri, function (costInfos) { + return costInfos && costInfos[uri]; + }); + }; + + var selectCostForCurrentPageUri = exports.selectCostForCurrentPageUri = (0, _reselect.createSelector)(selectAllCostInfoByUri, _navigation.selectCurrentParams, function (costInfo, params) { + return params.uri && costInfo[params.uri] ? costInfo[params.uri].cost : undefined; + }); + var selectFetchingCostInfo = exports.selectFetchingCostInfo = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetching || {}; + }); + + var makeSelectFetchingCostInfoForUri = exports.makeSelectFetchingCostInfoForUri = function makeSelectFetchingCostInfoForUri(uri) { + return (0, _reselect.createSelector)(selectFetchingCostInfo, function (fetchingByUri) { + return fetchingByUri && fetchingByUri[uri]; + }); + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.selectWunderBarIcon = exports.selectWunderBarAddress = exports.makeSelectSearchUris = exports.selectSearchUrisByQuery = exports.selectIsSearching = exports.selectSearchQuery = exports.selectState = undefined; + + var _navigation = __webpack_require__(4); + + var _reselect = __webpack_require__(1); + + var selectState = exports.selectState = function selectState(state) { + return state.search || {}; + }; + + var selectSearchQuery = exports.selectSearchQuery = (0, _reselect.createSelector)(_navigation.selectCurrentPage, _navigation.selectCurrentParams, function (page, params) { + return page === 'search' ? params && params.query : null; + }); + var selectIsSearching = exports.selectIsSearching = (0, _reselect.createSelector)(selectState, function (state) { + return state.searching; + }); + var selectSearchUrisByQuery = exports.selectSearchUrisByQuery = (0, _reselect.createSelector)(selectState, function (state) { + return state.urisByQuery; + }); + + var makeSelectSearchUris = exports.makeSelectSearchUris = function makeSelectSearchUris(query) { + return (0, _reselect.createSelector)(selectSearchUrisByQuery, function (byQuery) { + return byQuery[query ? query.replace(/^lbry:\/\//i, '') : query]; + }); + }; + + var selectWunderBarAddress = exports.selectWunderBarAddress = (0, _reselect.createSelector)(_navigation.selectCurrentPage, _navigation.selectPageTitle, selectSearchQuery, function (page, title, query) { + return page !== 'search' ? title : query || title; + }); + var selectWunderBarIcon = exports.selectWunderBarIcon = (0, _reselect.createSelector)(_navigation.selectCurrentPage, _navigation.selectCurrentParams, function (page, params) { + switch (page) { + case 'auth': + return 'icon-user'; + + case 'settings': + return 'icon-gear'; + + case 'help': + return 'icon-question'; + + case 'report': + return 'icon-file'; + + case 'downloaded': + return 'icon-folder'; + + case 'published': + return 'icon-folder'; + + case 'history': + return 'icon-history'; + + case 'send': + return 'icon-send'; + + case 'rewards': + return 'icon-rocket'; + + case 'invite': + return 'icon-envelope-open'; + + case 'getcredits': + return 'icon-shopping-cart'; + + case 'wallet': + case 'backup': + return 'icon-bank'; + + case 'show': + return 'icon-file'; + + case 'publish': + return params.id ? __('icon-pencil') : __('icon-upload'); + + case 'developer': + return 'icon-code'; + + case 'discover': + case 'search': + return 'icon-search'; + + case 'subscriptions': + return 'icon-th-list'; + + default: + return 'icon-file'; + } + }); + }]); + }); +},62,[],"lbry-redux/build/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/page/discover/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _featuredCategory = require(_dependencyMap[1], "../../component/featuredCategory"); + + var _featuredCategory2 = babelHelpers.interopRequireDefault(_featuredCategory); + + var _reactNavigation = require(_dependencyMap[2], "react-navigation"); + + var _reactNavigation2 = babelHelpers.interopRequireDefault(_reactNavigation); + + var _reactNative = require(_dependencyMap[3], "react-native"); + + var _discover = require(_dependencyMap[4], "../../styles/discover"); + + var _discover2 = babelHelpers.interopRequireDefault(_discover); + + var _Feather = require(_dependencyMap[5], "react-native-vector-icons/Feather"); + + var _Feather2 = babelHelpers.interopRequireDefault(_Feather); + + var DiscoverPage = function (_React$PureComponent) { + babelHelpers.inherits(DiscoverPage, _React$PureComponent); + + function DiscoverPage() { + babelHelpers.classCallCheck(this, DiscoverPage); + return babelHelpers.possibleConstructorReturn(this, (DiscoverPage.__proto__ || Object.getPrototypeOf(DiscoverPage)).apply(this, arguments)); + } + + babelHelpers.createClass(DiscoverPage, [{ + key: "componentWillMount", + value: function componentWillMount() { + this.props.fetchFeaturedUris(); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _props = this.props, + featuredUris = _props.featuredUris, + fetchingFeaturedUris = _props.fetchingFeaturedUris; + var hasContent = typeof featuredUris === 'object' && Object.keys(featuredUris).length, + failedToLoad = !fetchingFeaturedUris && !hasContent; + return _react2.default.createElement( + _reactNative.View, + { + style: _discover2.default.container, + __source: { + fileName: _jsxFileName, + lineNumber: 19 + } + }, + !hasContent && fetchingFeaturedUris && _react2.default.createElement( + _reactNative.Text, + { + style: _discover2.default.title, + __source: { + fileName: _jsxFileName, + lineNumber: 20 + } + }, + "Fetching content..." + ), + hasContent && _react2.default.createElement( + _reactNative.ScrollView, + { + style: _discover2.default.scrollContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 22 + } + }, + hasContent && Object.keys(featuredUris).map(function (category) { + return featuredUris[category].length ? _react2.default.createElement(_featuredCategory2.default, { + key: category, + category: category, + names: featuredUris[category], + navigation: _this2.props.navigation, + __source: { + fileName: _jsxFileName, + lineNumber: 27 + } + }) : ''; + }) + ) + ); + } + }]); + return DiscoverPage; + }(_react2.default.PureComponent); + + exports.default = DiscoverPage; +},63,[12,64,376,66,454,455],"LBRYApp/src/page/discover/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _view = require(_dependencyMap[1], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state) { + return {}; + }; + + var perform = function perform(dispatch) { + return {}; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},64,[22,65],"LBRYApp/src/component/featuredCategory/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/component/featuredCategory/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _lbryRedux = require(_dependencyMap[2], "lbry-redux"); + + var _fileItem = require(_dependencyMap[3], "../fileItem"); + + var _fileItem2 = babelHelpers.interopRequireDefault(_fileItem); + + var _discover = require(_dependencyMap[4], "../../styles/discover"); + + var _discover2 = babelHelpers.interopRequireDefault(_discover); + + var FeaturedCategory = function (_React$PureComponent) { + babelHelpers.inherits(FeaturedCategory, _React$PureComponent); + + function FeaturedCategory() { + babelHelpers.classCallCheck(this, FeaturedCategory); + return babelHelpers.possibleConstructorReturn(this, (FeaturedCategory.__proto__ || Object.getPrototypeOf(FeaturedCategory)).apply(this, arguments)); + } + + babelHelpers.createClass(FeaturedCategory, [{ + key: "render", + value: function render() { + var _props = this.props, + category = _props.category, + names = _props.names, + categoryLink = _props.categoryLink, + navigation = _props.navigation; + return _react2.default.createElement( + _reactNative.View, + { + __source: { + fileName: _jsxFileName, + lineNumber: 12 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: _discover2.default.categoryName, + __source: { + fileName: _jsxFileName, + lineNumber: 13 + } + }, + category + ), + names && names.map(function (name) { + return _react2.default.createElement(_fileItem2.default, { + style: _discover2.default.fileItem, + key: name, + uri: (0, _lbryRedux.normalizeURI)(name), + navigation: navigation, + __source: { + fileName: _jsxFileName, + lineNumber: 16 + } + }); + }) + ); + } + }]); + return FeaturedCategory; + }(_react2.default.PureComponent); + + exports.default = FeaturedCategory; +},65,[12,66,62,374,454],"LBRYApp/src/component/featuredCategory/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var ReactNative = { + get AccessibilityInfo() { + return require(_dependencyMap[1], 'AccessibilityInfo'); + }, + + get ActivityIndicator() { + return require(_dependencyMap[2], 'ActivityIndicator'); + }, + + get ART() { + return require(_dependencyMap[3], 'ReactNativeART'); + }, + + get Button() { + return require(_dependencyMap[4], 'Button'); + }, + + get CheckBox() { + return require(_dependencyMap[5], 'CheckBox'); + }, + + get DatePickerIOS() { + return require(_dependencyMap[6], 'DatePickerIOS'); + }, + + get DrawerLayoutAndroid() { + return require(_dependencyMap[7], 'DrawerLayoutAndroid'); + }, + + get FlatList() { + return require(_dependencyMap[8], 'FlatList'); + }, + + get Image() { + return require(_dependencyMap[9], 'Image'); + }, + + get ImageBackground() { + return require(_dependencyMap[10], 'ImageBackground'); + }, + + get ImageEditor() { + return require(_dependencyMap[11], 'ImageEditor'); + }, + + get ImageStore() { + return require(_dependencyMap[12], 'ImageStore'); + }, + + get KeyboardAvoidingView() { + return require(_dependencyMap[13], 'KeyboardAvoidingView'); + }, + + get ListView() { + return require(_dependencyMap[14], 'ListView'); + }, + + get MaskedViewIOS() { + return require(_dependencyMap[15], 'MaskedViewIOS'); + }, + + get Modal() { + return require(_dependencyMap[16], 'Modal'); + }, + + get NavigatorIOS() { + return require(_dependencyMap[17], 'NavigatorIOS'); + }, + + get Picker() { + return require(_dependencyMap[18], 'Picker'); + }, + + get PickerIOS() { + return require(_dependencyMap[19], 'PickerIOS'); + }, + + get ProgressBarAndroid() { + return require(_dependencyMap[20], 'ProgressBarAndroid'); + }, + + get ProgressViewIOS() { + return require(_dependencyMap[21], 'ProgressViewIOS'); + }, + + get SafeAreaView() { + return require(_dependencyMap[22], 'SafeAreaView'); + }, + + get ScrollView() { + return require(_dependencyMap[23], 'ScrollView'); + }, + + get SectionList() { + return require(_dependencyMap[24], 'SectionList'); + }, + + get SegmentedControlIOS() { + return require(_dependencyMap[25], 'SegmentedControlIOS'); + }, + + get Slider() { + return require(_dependencyMap[26], 'Slider'); + }, + + get SnapshotViewIOS() { + return require(_dependencyMap[27], 'SnapshotViewIOS'); + }, + + get Switch() { + return require(_dependencyMap[28], 'Switch'); + }, + + get RefreshControl() { + return require(_dependencyMap[29], 'RefreshControl'); + }, + + get StatusBar() { + return require(_dependencyMap[30], 'StatusBar'); + }, + + get SwipeableFlatList() { + return require(_dependencyMap[31], 'SwipeableFlatList'); + }, + + get SwipeableListView() { + return require(_dependencyMap[32], 'SwipeableListView'); + }, + + get TabBarIOS() { + return require(_dependencyMap[33], 'TabBarIOS'); + }, + + get Text() { + return require(_dependencyMap[34], 'Text'); + }, + + get TextInput() { + return require(_dependencyMap[35], 'TextInput'); + }, + + get ToastAndroid() { + return require(_dependencyMap[36], 'ToastAndroid'); + }, + + get ToolbarAndroid() { + return require(_dependencyMap[37], 'ToolbarAndroid'); + }, + + get Touchable() { + return require(_dependencyMap[38], 'Touchable'); + }, + + get TouchableHighlight() { + return require(_dependencyMap[39], 'TouchableHighlight'); + }, + + get TouchableNativeFeedback() { + return require(_dependencyMap[40], 'TouchableNativeFeedback'); + }, + + get TouchableOpacity() { + return require(_dependencyMap[41], 'TouchableOpacity'); + }, + + get TouchableWithoutFeedback() { + return require(_dependencyMap[42], 'TouchableWithoutFeedback'); + }, + + get View() { + return require(_dependencyMap[43], 'View'); + }, + + get ViewPagerAndroid() { + return require(_dependencyMap[44], 'ViewPagerAndroid'); + }, + + get VirtualizedList() { + return require(_dependencyMap[45], 'VirtualizedList'); + }, + + get WebView() { + return require(_dependencyMap[46], 'WebView'); + }, + + get ActionSheetIOS() { + return require(_dependencyMap[47], 'ActionSheetIOS'); + }, + + get Alert() { + return require(_dependencyMap[48], 'Alert'); + }, + + get AlertIOS() { + return require(_dependencyMap[49], 'AlertIOS'); + }, + + get Animated() { + return require(_dependencyMap[50], 'Animated'); + }, + + get AppRegistry() { + return require(_dependencyMap[51], 'AppRegistry'); + }, + + get AppState() { + return require(_dependencyMap[52], 'AppState'); + }, + + get AsyncStorage() { + return require(_dependencyMap[53], 'AsyncStorage'); + }, + + get BackAndroid() { + return require(_dependencyMap[54], 'BackAndroid'); + }, + + get BackHandler() { + return require(_dependencyMap[55], 'BackHandler'); + }, + + get CameraRoll() { + return require(_dependencyMap[56], 'CameraRoll'); + }, + + get Clipboard() { + return require(_dependencyMap[57], 'Clipboard'); + }, + + get DatePickerAndroid() { + return require(_dependencyMap[58], 'DatePickerAndroid'); + }, + + get DeviceInfo() { + return require(_dependencyMap[59], 'DeviceInfo'); + }, + + get Dimensions() { + return require(_dependencyMap[60], 'Dimensions'); + }, + + get Easing() { + return require(_dependencyMap[61], 'Easing'); + }, + + get findNodeHandle() { + return require(_dependencyMap[62], 'ReactNative').findNodeHandle; + }, + + get I18nManager() { + return require(_dependencyMap[63], 'I18nManager'); + }, + + get ImagePickerIOS() { + return require(_dependencyMap[64], 'ImagePickerIOS'); + }, + + get InteractionManager() { + return require(_dependencyMap[65], 'InteractionManager'); + }, + + get Keyboard() { + return require(_dependencyMap[66], 'Keyboard'); + }, + + get LayoutAnimation() { + return require(_dependencyMap[67], 'LayoutAnimation'); + }, + + get Linking() { + return require(_dependencyMap[68], 'Linking'); + }, + + get NativeEventEmitter() { + return require(_dependencyMap[69], 'NativeEventEmitter'); + }, + + get NetInfo() { + return require(_dependencyMap[70], 'NetInfo'); + }, + + get PanResponder() { + return require(_dependencyMap[71], 'PanResponder'); + }, + + get PermissionsAndroid() { + return require(_dependencyMap[72], 'PermissionsAndroid'); + }, + + get PixelRatio() { + return require(_dependencyMap[73], 'PixelRatio'); + }, + + get PushNotificationIOS() { + return require(_dependencyMap[74], 'PushNotificationIOS'); + }, + + get Settings() { + return require(_dependencyMap[75], 'Settings'); + }, + + get Share() { + return require(_dependencyMap[76], 'Share'); + }, + + get StatusBarIOS() { + return require(_dependencyMap[77], 'StatusBarIOS'); + }, + + get StyleSheet() { + return require(_dependencyMap[78], 'StyleSheet'); + }, + + get Systrace() { + return require(_dependencyMap[79], 'Systrace'); + }, + + get TimePickerAndroid() { + return require(_dependencyMap[80], 'TimePickerAndroid'); + }, + + get TVEventHandler() { + return require(_dependencyMap[81], 'TVEventHandler'); + }, + + get UIManager() { + return require(_dependencyMap[82], 'UIManager'); + }, + + get unstable_batchedUpdates() { + return require(_dependencyMap[62], 'ReactNative').unstable_batchedUpdates; + }, + + get Vibration() { + return require(_dependencyMap[83], 'Vibration'); + }, + + get VibrationIOS() { + return require(_dependencyMap[84], 'VibrationIOS'); + }, + + get YellowBox() { + return require(_dependencyMap[85], 'YellowBox'); + }, + + get DeviceEventEmitter() { + return require(_dependencyMap[86], 'RCTDeviceEventEmitter'); + }, + + get NativeAppEventEmitter() { + return require(_dependencyMap[87], 'RCTNativeAppEventEmitter'); + }, + + get NativeModules() { + return require(_dependencyMap[88], 'NativeModules'); + }, + + get Platform() { + return require(_dependencyMap[89], 'Platform'); + }, + + get processColor() { + return require(_dependencyMap[90], 'processColor'); + }, + + get requireNativeComponent() { + return require(_dependencyMap[91], 'requireNativeComponent'); + }, + + get takeSnapshot() { + return require(_dependencyMap[92], 'takeSnapshot'); + }, + + get ColorPropType() { + return require(_dependencyMap[93], 'ColorPropType'); + }, + + get EdgeInsetsPropType() { + return require(_dependencyMap[94], 'EdgeInsetsPropType'); + }, + + get PointPropType() { + return require(_dependencyMap[95], 'PointPropType'); + }, + + get ViewPropTypes() { + return require(_dependencyMap[96], 'ViewPropTypes'); + }, + + get Navigator() { + invariant(false, 'Navigator is deprecated and has been removed from this package. It can now be installed ' + 'and imported from `react-native-deprecated-custom-components` instead of `react-native`. ' + 'Learn about alternative navigation solutions at http://facebook.github.io/react-native/docs/navigation.html'); + } + + }; + module.exports = ReactNative; +},66,[18,67,166,215,221,276,277,278,280,263,293,295,296,297,282,299,301,322,323,324,170,326,320,265,327,329,330,331,332,287,279,333,337,339,222,341,148,348,223,312,230,234,231,211,349,288,350,351,135,136,235,352,150,358,359,357,360,361,362,206,205,260,74,321,363,243,269,298,364,120,365,335,139,204,366,367,368,369,209,72,370,227,158,371,372,319,121,143,68,105,193,186,373,167,173,266,172],"react-native-implementation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeModules = require(_dependencyMap[0], 'NativeModules'); + + var RCTDeviceEventEmitter = require(_dependencyMap[1], 'RCTDeviceEventEmitter'); + + var RCTAccessibilityInfo = NativeModules.AccessibilityInfo; + var TOUCH_EXPLORATION_EVENT = 'touchExplorationDidChange'; + + var _subscriptions = new Map(); + + var AccessibilityInfo = { + fetch: function fetch() { + return new Promise(function (resolve, reject) { + RCTAccessibilityInfo.isTouchExplorationEnabled(function (resp) { + resolve(resp); + }); + }); + }, + addEventListener: function addEventListener(eventName, handler) { + var listener = RCTDeviceEventEmitter.addListener(TOUCH_EXPLORATION_EVENT, function (enabled) { + handler(enabled); + }); + + _subscriptions.set(handler, listener); + }, + removeEventListener: function removeEventListener(eventName, handler) { + var listener = _subscriptions.get(handler); + + if (!listener) { + return; + } + + listener.remove(); + + _subscriptions.delete(handler); + } + }; + module.exports = AccessibilityInfo; +},67,[68,121],"AccessibilityInfo"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var BatchedBridge = require(_dependencyMap[0], 'BatchedBridge'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + function genModule(config, moduleID) { + if (!config) { + return null; + } + + var _config = babelHelpers.slicedToArray(config, 5), + moduleName = _config[0], + constants = _config[1], + methods = _config[2], + promiseMethods = _config[3], + syncMethods = _config[4]; + + invariant(!moduleName.startsWith('RCT') && !moduleName.startsWith('RK'), 'Module name prefixes should\'ve been stripped by the native side ' + 'but wasn\'t for ' + moduleName); + + if (!constants && !methods) { + return { + name: moduleName + }; + } + + var module = {}; + methods && methods.forEach(function (methodName, methodID) { + var isPromise = promiseMethods && arrayContains(promiseMethods, methodID); + var isSync = syncMethods && arrayContains(syncMethods, methodID); + invariant(!isPromise || !isSync, 'Cannot have a method that is both async and a sync hook'); + var methodType = isPromise ? 'promise' : isSync ? 'sync' : 'async'; + module[methodName] = genMethod(moduleID, methodID, methodType); + }); + babelHelpers.extends(module, constants); + + if (__DEV__) { + BatchedBridge.createDebugLookup(moduleID, moduleName, methods); + } + + return { + name: moduleName, + module: module + }; + } + + global.__fbGenNativeModule = genModule; + + function loadModule(name, moduleID) { + invariant(global.nativeRequireModuleConfig, 'Can\'t lazily create module without nativeRequireModuleConfig'); + var config = global.nativeRequireModuleConfig(name); + var info = genModule(config, moduleID); + return info && info.module; + } + + function genMethod(moduleID, methodID, type) { + var fn = null; + + if (type === 'promise') { + fn = function fn() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return new Promise(function (resolve, reject) { + BatchedBridge.enqueueNativeCall(moduleID, methodID, args, function (data) { + return resolve(data); + }, function (errorData) { + return reject(createErrorFromErrorData(errorData)); + }); + }); + }; + } else if (type === 'sync') { + fn = function fn() { + if (__DEV__) { + invariant(global.nativeCallSyncHook, 'Calling synchronous methods on native ' + 'modules is not supported in Chrome.\n\n Consider providing alternative ' + 'methods to expose this method in debug mode, e.g. by exposing constants ' + 'ahead-of-time.'); + } + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + return global.nativeCallSyncHook(moduleID, methodID, args); + }; + } else { + fn = function fn() { + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + var lastArg = args.length > 0 ? args[args.length - 1] : null; + var secondLastArg = args.length > 1 ? args[args.length - 2] : null; + var hasSuccessCallback = typeof lastArg === 'function'; + var hasErrorCallback = typeof secondLastArg === 'function'; + hasErrorCallback && invariant(hasSuccessCallback, 'Cannot have a non-function arg after a function arg.'); + var onSuccess = hasSuccessCallback ? lastArg : null; + var onFail = hasErrorCallback ? secondLastArg : null; + var callbackCount = hasSuccessCallback + hasErrorCallback; + args = args.slice(0, args.length - callbackCount); + BatchedBridge.enqueueNativeCall(moduleID, methodID, args, onFail, onSuccess); + }; + } + + fn.type = type; + return fn; + } + + function arrayContains(array, value) { + return array.indexOf(value) !== -1; + } + + function createErrorFromErrorData(errorData) { + var _ref = errorData || {}, + message = _ref.message, + extraErrorInfo = babelHelpers.objectWithoutProperties(_ref, ["message"]); + + var error = new Error(message); + error.framesToPop = 1; + return babelHelpers.extends(error, extraErrorInfo); + } + + var NativeModules = {}; + + if (global.nativeModuleProxy) { + NativeModules = global.nativeModuleProxy; + } else { + var bridgeConfig = global.__fbBatchedBridgeConfig; + invariant(bridgeConfig, '__fbBatchedBridgeConfig is not set, cannot invoke native modules'); + + var defineLazyObjectProperty = require(_dependencyMap[2], 'defineLazyObjectProperty'); + + (bridgeConfig.remoteModuleConfig || []).forEach(function (config, moduleID) { + var info = genModule(config, moduleID); + + if (!info) { + return; + } + + if (info.module) { + NativeModules[info.name] = info.module; + } else { + defineLazyObjectProperty(NativeModules, info.name, { + get: function get() { + return loadModule(info.name, moduleID); + } + }); + } + }); + } + + module.exports = NativeModules; +},68,[69,18,77],"NativeModules"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var MessageQueue = require(_dependencyMap[0], 'MessageQueue'); + + var BatchedBridge = new MessageQueue(typeof __fbUninstallRNGlobalErrorHandler !== 'undefined' && __fbUninstallRNGlobalErrorHandler === true); + Object.defineProperty(global, '__fbBatchedBridge', { + configurable: true, + value: BatchedBridge + }); + module.exports = BatchedBridge; +},69,[70],"BatchedBridge"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ErrorUtils = require(_dependencyMap[0], 'ErrorUtils'); + + var Systrace = require(_dependencyMap[1], 'Systrace'); + + var deepFreezeAndThrowOnMutationInDev = require(_dependencyMap[2], 'deepFreezeAndThrowOnMutationInDev'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var stringifySafe = require(_dependencyMap[4], 'stringifySafe'); + + var TO_JS = 0; + var TO_NATIVE = 1; + var MODULE_IDS = 0; + var METHOD_IDS = 1; + var PARAMS = 2; + var MIN_TIME_BETWEEN_FLUSHES_MS = 5; + var TRACE_TAG_REACT_APPS = 1 << 17; + var DEBUG_INFO_LIMIT = 32; + var JSTimers = null; + + var MessageQueue = function () { + function MessageQueue() { + var shouldUninstallGlobalErrorHandler = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + babelHelpers.classCallCheck(this, MessageQueue); + this._lazyCallableModules = {}; + this._queue = [[], [], [], 0]; + this._successCallbacks = []; + this._failureCallbacks = []; + this._callID = 0; + this._lastFlush = 0; + this._eventLoopStartTime = new Date().getTime(); + + if (shouldUninstallGlobalErrorHandler) { + this.uninstallGlobalErrorHandler(); + } else { + this.installGlobalErrorHandler(); + } + + if (__DEV__) { + this._debugInfo = {}; + this._remoteModuleTable = {}; + this._remoteMethodTable = {}; + } + + this.callFunctionReturnFlushedQueue = this.callFunctionReturnFlushedQueue.bind(this); + this.callFunctionReturnResultAndFlushedQueue = this.callFunctionReturnResultAndFlushedQueue.bind(this); + this.flushedQueue = this.flushedQueue.bind(this); + this.invokeCallbackAndReturnFlushedQueue = this.invokeCallbackAndReturnFlushedQueue.bind(this); + } + + babelHelpers.createClass(MessageQueue, [{ + key: "callFunctionReturnFlushedQueue", + value: function callFunctionReturnFlushedQueue(module, method, args) { + var _this = this; + + this.__guard(function () { + _this.__callFunction(module, method, args); + }); + + return this.flushedQueue(); + } + }, { + key: "callFunctionReturnResultAndFlushedQueue", + value: function callFunctionReturnResultAndFlushedQueue(module, method, args) { + var _this2 = this; + + var result = void 0; + + this.__guard(function () { + result = _this2.__callFunction(module, method, args); + }); + + return [result, this.flushedQueue()]; + } + }, { + key: "invokeCallbackAndReturnFlushedQueue", + value: function invokeCallbackAndReturnFlushedQueue(cbID, args) { + var _this3 = this; + + this.__guard(function () { + _this3.__invokeCallback(cbID, args); + }); + + return this.flushedQueue(); + } + }, { + key: "flushedQueue", + value: function flushedQueue() { + var _this4 = this; + + this.__guard(function () { + _this4.__callImmediates(); + }); + + var queue = this._queue; + this._queue = [[], [], [], this._callID]; + return queue[0].length ? queue : null; + } + }, { + key: "getEventLoopRunningTime", + value: function getEventLoopRunningTime() { + return new Date().getTime() - this._eventLoopStartTime; + } + }, { + key: "registerCallableModule", + value: function registerCallableModule(name, module) { + this._lazyCallableModules[name] = function () { + return module; + }; + } + }, { + key: "registerLazyCallableModule", + value: function registerLazyCallableModule(name, factory) { + var module = void 0; + var getValue = factory; + + this._lazyCallableModules[name] = function () { + if (getValue) { + module = getValue(); + getValue = null; + } + + return module; + }; + } + }, { + key: "getCallableModule", + value: function getCallableModule(name) { + var getValue = this._lazyCallableModules[name]; + return getValue ? getValue() : null; + } + }, { + key: "enqueueNativeCall", + value: function enqueueNativeCall(moduleID, methodID, params, onFail, onSucc) { + if (onFail || onSucc) { + if (__DEV__) { + this._debugInfo[this._callID] = [moduleID, methodID]; + + if (this._callID > DEBUG_INFO_LIMIT) { + delete this._debugInfo[this._callID - DEBUG_INFO_LIMIT]; + } + } + + onFail && params.push(this._callID << 1); + onSucc && params.push(this._callID << 1 | 1); + this._successCallbacks[this._callID] = onSucc; + this._failureCallbacks[this._callID] = onFail; + } + + if (__DEV__) { + global.nativeTraceBeginAsyncFlow && global.nativeTraceBeginAsyncFlow(TRACE_TAG_REACT_APPS, 'native', this._callID); + } + + this._callID++; + + this._queue[MODULE_IDS].push(moduleID); + + this._queue[METHOD_IDS].push(methodID); + + if (__DEV__) { + var isValidArgument = function isValidArgument(val) { + var t = typeof val; + + if (t === 'undefined' || t === 'null' || t === 'boolean' || t === 'number' || t === 'string') { + return true; + } + + if (t === 'function' || t !== 'object') { + return false; + } + + if (Array.isArray(val)) { + return val.every(isValidArgument); + } + + for (var k in val) { + if (typeof val[k] !== 'function' && !isValidArgument(val[k])) { + return false; + } + } + + return true; + }; + + invariant(isValidArgument(params), '%s is not usable as a native method argument', params); + deepFreezeAndThrowOnMutationInDev(params); + } + + this._queue[PARAMS].push(params); + + var now = new Date().getTime(); + + if (global.nativeFlushQueueImmediate && (now - this._lastFlush >= MIN_TIME_BETWEEN_FLUSHES_MS || this._inCall === 0)) { + var queue = this._queue; + this._queue = [[], [], [], this._callID]; + this._lastFlush = now; + global.nativeFlushQueueImmediate(queue); + } + + Systrace.counterEvent('pending_js_to_native_queue', this._queue[0].length); + + if (__DEV__ && this.__spy && isFinite(moduleID)) { + this.__spy({ + type: TO_NATIVE, + module: this._remoteModuleTable[moduleID], + method: this._remoteMethodTable[moduleID][methodID], + args: params + }); + } else if (this.__spy) { + this.__spy({ + type: TO_NATIVE, + module: moduleID + '', + method: methodID, + args: params + }); + } + } + }, { + key: "createDebugLookup", + value: function createDebugLookup(moduleID, name, methods) { + if (__DEV__) { + this._remoteModuleTable[moduleID] = name; + this._remoteMethodTable[moduleID] = methods; + } + } + }, { + key: "uninstallGlobalErrorHandler", + value: function uninstallGlobalErrorHandler() { + this.__guard = this.__guardUnsafe; + } + }, { + key: "installGlobalErrorHandler", + value: function installGlobalErrorHandler() { + this.__guard = this.__guardSafe; + } + }, { + key: "__guardUnsafe", + value: function __guardUnsafe(fn) { + this._inCall++; + fn(); + this._inCall--; + } + }, { + key: "__guardSafe", + value: function __guardSafe(fn) { + this._inCall++; + + try { + fn(); + } catch (error) { + ErrorUtils.reportFatalError(error); + } finally { + this._inCall--; + } + } + }, { + key: "__callImmediates", + value: function __callImmediates() { + Systrace.beginEvent('JSTimers.callImmediates()'); + + if (!JSTimers) { + JSTimers = require(_dependencyMap[5], 'JSTimers'); + } + + JSTimers.callImmediates(); + Systrace.endEvent(); + } + }, { + key: "__callFunction", + value: function __callFunction(module, method, args) { + this._lastFlush = new Date().getTime(); + this._eventLoopStartTime = this._lastFlush; + Systrace.beginEvent(module + "." + method + "()"); + + if (this.__spy) { + this.__spy({ + type: TO_JS, + module: module, + method: method, + args: args + }); + } + + var moduleMethods = this.getCallableModule(module); + invariant(!!moduleMethods, 'Module %s is not a registered callable module (calling %s)', module, method); + invariant(!!moduleMethods[method], 'Method %s does not exist on module %s', method, module); + var result = moduleMethods[method].apply(moduleMethods, args); + Systrace.endEvent(); + return result; + } + }, { + key: "__invokeCallback", + value: function __invokeCallback(cbID, args) { + this._lastFlush = new Date().getTime(); + this._eventLoopStartTime = this._lastFlush; + var callID = cbID >>> 1; + var isSuccess = cbID & 1; + var callback = isSuccess ? this._successCallbacks[callID] : this._failureCallbacks[callID]; + + if (__DEV__) { + var debug = this._debugInfo[callID]; + + var _module = debug && this._remoteModuleTable[debug[0]]; + + var _method = debug && this._remoteMethodTable[debug[0]][debug[1]]; + + if (!callback) { + var errorMessage = "Callback with id " + cbID + ": " + _module + "." + _method + "() not found"; + + if (_method) { + errorMessage = "The callback " + _method + "() exists in module " + _module + ", " + 'but only one callback may be registered to a function in a native module.'; + } + + invariant(callback, errorMessage); + } + + var profileName = debug ? '' : cbID; + + if (callback && this.__spy) { + this.__spy({ + type: TO_JS, + module: null, + method: profileName, + args: args + }); + } + + Systrace.beginEvent("MessageQueue.invokeCallback(" + profileName + ", " + stringifySafe(args) + ")"); + } + + if (!callback) { + return; + } + + this._successCallbacks[callID] = this._failureCallbacks[callID] = null; + callback.apply(undefined, babelHelpers.toConsumableArray(args)); + + if (__DEV__) { + Systrace.endEvent(); + } + } + }], [{ + key: "spy", + value: function spy(spyOrToggle) { + if (spyOrToggle === true) { + MessageQueue.prototype.__spy = function (info) { + console.log((info.type === TO_JS ? 'N->JS' : 'JS->N') + " : " + ("" + (info.module ? info.module + '.' : '') + info.method) + ("(" + JSON.stringify(info.args) + ")")); + }; + } else if (spyOrToggle === false) { + MessageQueue.prototype.__spy = null; + } else { + MessageQueue.prototype.__spy = spyOrToggle; + } + } + }]); + return MessageQueue; + }(); + + module.exports = MessageQueue; +},70,[71,72,162,18,92,104],"MessageQueue"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = global.ErrorUtils; +},71,[],"ErrorUtils"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var TRACE_TAG_REACT_APPS = 1 << 17; + var TRACE_TAG_JS_VM_CALLS = 1 << 27; + var _enabled = false; + var _asyncCookie = 0; + var _markStack = []; + + var _markStackIndex = -1; + + var _canInstallReactHook = false; + var _useFiber = false; + var REACT_MARKER = "\u269B"; + var userTimingPolyfill = __DEV__ ? { + mark: function mark(markName) { + if (_enabled) { + _markStackIndex++; + _markStack[_markStackIndex] = markName; + var systraceLabel = markName; + + if (markName[0] === REACT_MARKER) { + var indexOfId = markName.lastIndexOf(' (#'); + var cutoffIndex = indexOfId !== -1 ? indexOfId : markName.length; + systraceLabel = markName.slice(2, cutoffIndex); + } + + Systrace.beginEvent(systraceLabel); + } + }, + measure: function measure(measureName, startMark, endMark) { + if (_enabled) { + invariant(typeof measureName === 'string' && typeof startMark === 'string' && typeof endMark === 'undefined', 'Only performance.measure(string, string) overload is supported.'); + var topMark = _markStack[_markStackIndex]; + invariant(startMark === topMark, 'There was a mismatching performance.measure() call. ' + 'Expected "%s" but got "%s."', topMark, startMark); + _markStackIndex--; + Systrace.endEvent(); + } + }, + clearMarks: function clearMarks(markName) { + if (_enabled) { + if (_markStackIndex === -1) { + return; + } + + if (markName === _markStack[_markStackIndex]) { + if (userTimingPolyfill != null) { + userTimingPolyfill.measure(markName, markName); + } + } + } + }, + clearMeasures: function clearMeasures() {} + } : null; + var reactDebugToolHook = __DEV__ ? { + onBeforeMountComponent: function onBeforeMountComponent(debugID) { + var ReactComponentTreeHook = require(_dependencyMap[1], 'ReactGlobalSharedState').ReactComponentTreeHook; + + var displayName = ReactComponentTreeHook.getDisplayName(debugID); + Systrace.beginEvent("ReactReconciler.mountComponent(" + displayName + ")"); + }, + onMountComponent: function onMountComponent(debugID) { + Systrace.endEvent(); + }, + onBeforeUpdateComponent: function onBeforeUpdateComponent(debugID) { + var ReactComponentTreeHook = require(_dependencyMap[1], 'ReactGlobalSharedState').ReactComponentTreeHook; + + var displayName = ReactComponentTreeHook.getDisplayName(debugID); + Systrace.beginEvent("ReactReconciler.updateComponent(" + displayName + ")"); + }, + onUpdateComponent: function onUpdateComponent(debugID) { + Systrace.endEvent(); + }, + onBeforeUnmountComponent: function onBeforeUnmountComponent(debugID) { + var ReactComponentTreeHook = require(_dependencyMap[1], 'ReactGlobalSharedState').ReactComponentTreeHook; + + var displayName = ReactComponentTreeHook.getDisplayName(debugID); + Systrace.beginEvent("ReactReconciler.unmountComponent(" + displayName + ")"); + }, + onUnmountComponent: function onUnmountComponent(debugID) { + Systrace.endEvent(); + }, + onBeginLifeCycleTimer: function onBeginLifeCycleTimer(debugID, timerType) { + var ReactComponentTreeHook = require(_dependencyMap[1], 'ReactGlobalSharedState').ReactComponentTreeHook; + + var displayName = ReactComponentTreeHook.getDisplayName(debugID); + Systrace.beginEvent(displayName + "." + timerType + "()"); + }, + onEndLifeCycleTimer: function onEndLifeCycleTimer(debugID, timerType) { + Systrace.endEvent(); + } + } : null; + var Systrace = { + installReactHook: function installReactHook(useFiber) { + if (_enabled) { + if (__DEV__) { + if (useFiber) { + global.performance = userTimingPolyfill; + } else { + require(_dependencyMap[2], 'ReactDebugTool').addHook(reactDebugToolHook); + } + } + } + + _useFiber = useFiber; + _canInstallReactHook = true; + }, + setEnabled: function setEnabled(enabled) { + if (_enabled !== enabled) { + if (__DEV__) { + if (enabled) { + global.nativeTraceBeginLegacy && global.nativeTraceBeginLegacy(TRACE_TAG_JS_VM_CALLS); + } else { + global.nativeTraceEndLegacy && global.nativeTraceEndLegacy(TRACE_TAG_JS_VM_CALLS); + } + + if (_canInstallReactHook) { + if (_useFiber) { + if (enabled && global.performance === undefined) { + global.performance = userTimingPolyfill; + } + } else { + var ReactDebugTool = require(_dependencyMap[2], 'ReactDebugTool'); + + if (enabled) { + ReactDebugTool.addHook(reactDebugToolHook); + } else { + ReactDebugTool.removeHook(reactDebugToolHook); + } + } + } + } + + _enabled = enabled; + } + }, + isEnabled: function isEnabled() { + return _enabled; + }, + beginEvent: function beginEvent(profileName, args) { + if (_enabled) { + profileName = typeof profileName === 'function' ? profileName() : profileName; + global.nativeTraceBeginSection(TRACE_TAG_REACT_APPS, profileName, args); + } + }, + endEvent: function endEvent() { + if (_enabled) { + global.nativeTraceEndSection(TRACE_TAG_REACT_APPS); + } + }, + beginAsyncEvent: function beginAsyncEvent(profileName) { + var cookie = _asyncCookie; + + if (_enabled) { + _asyncCookie++; + profileName = typeof profileName === 'function' ? profileName() : profileName; + global.nativeTraceBeginAsyncSection(TRACE_TAG_REACT_APPS, profileName, cookie); + } + + return cookie; + }, + endAsyncEvent: function endAsyncEvent(profileName, cookie) { + if (_enabled) { + profileName = typeof profileName === 'function' ? profileName() : profileName; + global.nativeTraceEndAsyncSection(TRACE_TAG_REACT_APPS, profileName, cookie); + } + }, + counterEvent: function counterEvent(profileName, value) { + if (_enabled) { + profileName = typeof profileName === 'function' ? profileName() : profileName; + global.nativeTraceCounter && global.nativeTraceCounter(TRACE_TAG_REACT_APPS, profileName, value); + } + }, + attachToRelayProfiler: function attachToRelayProfiler(relayProfiler) { + relayProfiler.attachProfileHandler('*', function (name) { + var cookie = Systrace.beginAsyncEvent(name); + return function () { + Systrace.endAsyncEvent(name, cookie); + }; + }); + relayProfiler.attachAggregateHandler('*', function (name, callback) { + Systrace.beginEvent(name); + callback(); + Systrace.endEvent(); + }); + }, + swizzleJSON: function swizzleJSON() { + Systrace.measureMethods(JSON, 'JSON', ['parse', 'stringify']); + }, + measureMethods: function measureMethods(object, objectName, methodNames) { + if (!__DEV__) { + return; + } + + methodNames.forEach(function (methodName) { + object[methodName] = Systrace.measure(objectName, methodName, object[methodName]); + }); + }, + measure: function measure(objName, fnName, func) { + if (!__DEV__) { + return func; + } + + var profileName = objName + "." + fnName; + return function () { + if (!_enabled) { + return func.apply(this, arguments); + } + + Systrace.beginEvent(profileName); + var ret = func.apply(this, arguments); + Systrace.endEvent(); + return ret; + }; + } + }; + + if (__DEV__) { + require.Systrace = Systrace; + } + + module.exports = Systrace; +},72,[18,73,165],"Systrace"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactGlobalSharedState; +},73,[74],"ReactGlobalSharedState"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ReactNative = void 0; + + if (__DEV__) { + ReactNative = require(_dependencyMap[0], 'ReactNativeRenderer-dev'); + } else { + ReactNative = require(_dependencyMap[1], 'ReactNativeRenderer-prod'); + } + + module.exports = ReactNative; +},74,[75,164],"ReactNative"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + if (__DEV__) { + (function () { + "use strict"; + + require(_dependencyMap[0], "InitializeCore"); + + var invariant = require(_dependencyMap[1], "fbjs/lib/invariant"); + + var warning = require(_dependencyMap[2], "fbjs/lib/warning"); + + var emptyFunction = require(_dependencyMap[3], "fbjs/lib/emptyFunction"); + + var RCTEventEmitter = require(_dependencyMap[4], "RCTEventEmitter"); + + var UIManager = require(_dependencyMap[5], "UIManager"); + + var React = require(_dependencyMap[6], "react"); + + var ExceptionsManager = require(_dependencyMap[7], "ExceptionsManager"); + + var TextInputState = require(_dependencyMap[8], "TextInputState"); + + var deepDiffer = require(_dependencyMap[9], "deepDiffer"); + + var flattenStyle = require(_dependencyMap[10], "flattenStyle"); + + var emptyObject = require(_dependencyMap[11], "fbjs/lib/emptyObject"); + + var checkPropTypes = require(_dependencyMap[12], "prop-types/checkPropTypes"); + + var shallowEqual = require(_dependencyMap[13], "fbjs/lib/shallowEqual"); + + var deepFreezeAndThrowOnMutationInDev = require(_dependencyMap[14], "deepFreezeAndThrowOnMutationInDev"); + + var ReactErrorUtils = { + _caughtError: null, + _hasCaughtError: false, + _rethrowError: null, + _hasRethrowError: false, + injection: { + injectErrorUtils: function injectErrorUtils(injectedErrorUtils) { + invariant(typeof injectedErrorUtils.invokeGuardedCallback === "function", "Injected invokeGuardedCallback() must be a function."); + _invokeGuardedCallback = injectedErrorUtils.invokeGuardedCallback; + } + }, + invokeGuardedCallback: function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) { + _invokeGuardedCallback.apply(ReactErrorUtils, arguments); + }, + invokeGuardedCallbackAndCatchFirstError: function invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) { + ReactErrorUtils.invokeGuardedCallback.apply(this, arguments); + + if (ReactErrorUtils.hasCaughtError()) { + var error = ReactErrorUtils.clearCaughtError(); + + if (!ReactErrorUtils._hasRethrowError) { + ReactErrorUtils._hasRethrowError = true; + ReactErrorUtils._rethrowError = error; + } + } + }, + rethrowCaughtError: function rethrowCaughtError() { + return _rethrowCaughtError.apply(ReactErrorUtils, arguments); + }, + hasCaughtError: function hasCaughtError() { + return ReactErrorUtils._hasCaughtError; + }, + clearCaughtError: function clearCaughtError() { + if (ReactErrorUtils._hasCaughtError) { + var error = ReactErrorUtils._caughtError; + ReactErrorUtils._caughtError = null; + ReactErrorUtils._hasCaughtError = false; + return error; + } else { + invariant(false, "clearCaughtError was called but no error was captured. This error " + "is likely caused by a bug in React. Please file an issue."); + } + } + }; + + var _invokeGuardedCallback = function _invokeGuardedCallback(name, func, context, a, b, c, d, e, f) { + ReactErrorUtils._hasCaughtError = false; + ReactErrorUtils._caughtError = null; + var funcArgs = Array.prototype.slice.call(arguments, 3); + + try { + func.apply(context, funcArgs); + } catch (error) { + ReactErrorUtils._caughtError = error; + ReactErrorUtils._hasCaughtError = true; + } + }; + + { + if (typeof window !== "undefined" && typeof window.dispatchEvent === "function" && typeof document !== "undefined" && typeof document.createEvent === "function") { + var fakeNode = document.createElement("react"); + + var invokeGuardedCallbackDev = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) { + invariant(typeof document !== "undefined", "The `document` global was defined when React was initialized, but is not " + "defined anymore. This can happen in a test environment if a component " + "schedules an update from an asynchronous callback, but the test has already " + "finished running. To solve this, you can either unmount the component at " + "the end of your test (and ensure that any asynchronous operations get " + "canceled in `componentWillUnmount`), or you can change the test itself " + "to be asynchronous."); + var evt = document.createEvent("Event"); + var didError = true; + var funcArgs = Array.prototype.slice.call(arguments, 3); + + function callCallback() { + fakeNode.removeEventListener(evtType, callCallback, false); + func.apply(context, funcArgs); + didError = false; + } + + var error = void 0; + var didSetError = false; + var isCrossOriginError = false; + + function onError(event) { + error = event.error; + didSetError = true; + + if (error === null && event.colno === 0 && event.lineno === 0) { + isCrossOriginError = true; + } + } + + var evtType = "react-" + (name ? name : "invokeguardedcallback"); + window.addEventListener("error", onError); + fakeNode.addEventListener(evtType, callCallback, false); + evt.initEvent(evtType, false, false); + fakeNode.dispatchEvent(evt); + + if (didError) { + if (!didSetError) { + error = new Error("An error was thrown inside one of your components, but React " + "doesn't know what it was. This is likely due to browser " + 'flakiness. React does its best to preserve the "Pause on ' + 'exceptions" behavior of the DevTools, which requires some ' + "DEV-mode only tricks. It's possible that these don't work in " + "your browser. Try triggering the error in production mode, " + "or switching to a modern browser. If you suspect that this is " + "actually an issue with React, please file an issue."); + } else if (isCrossOriginError) { + error = new Error("A cross-origin error was thrown. React doesn't have access to " + "the actual error object in development. " + "See https://fb.me/react-crossorigin-error for more information."); + } + + ReactErrorUtils._hasCaughtError = true; + ReactErrorUtils._caughtError = error; + } else { + ReactErrorUtils._hasCaughtError = false; + ReactErrorUtils._caughtError = null; + } + + window.removeEventListener("error", onError); + }; + + _invokeGuardedCallback = invokeGuardedCallbackDev; + } + } + + var _rethrowCaughtError = function _rethrowCaughtError() { + if (ReactErrorUtils._hasRethrowError) { + var error = ReactErrorUtils._rethrowError; + ReactErrorUtils._rethrowError = null; + ReactErrorUtils._hasRethrowError = false; + throw error; + } + }; + + var eventPluginOrder = null; + var namesToPlugins = {}; + + function recomputePluginOrdering() { + if (!eventPluginOrder) { + return; + } + + for (var pluginName in namesToPlugins) { + var pluginModule = namesToPlugins[pluginName]; + var pluginIndex = eventPluginOrder.indexOf(pluginName); + invariant(pluginIndex > -1, "EventPluginRegistry: Cannot inject event plugins that do not exist in " + "the plugin ordering, `%s`.", pluginName); + + if (plugins[pluginIndex]) { + continue; + } + + invariant(pluginModule.extractEvents, "EventPluginRegistry: Event plugins must implement an `extractEvents` " + "method, but `%s` does not.", pluginName); + plugins[pluginIndex] = pluginModule; + var publishedEvents = pluginModule.eventTypes; + + for (var eventName in publishedEvents) { + invariant(publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName), "EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.", eventName, pluginName); + } + } + } + + function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { + invariant(!eventNameDispatchConfigs.hasOwnProperty(eventName), "EventPluginHub: More than one plugin attempted to publish the same " + "event name, `%s`.", eventName); + eventNameDispatchConfigs[eventName] = dispatchConfig; + var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; + + if (phasedRegistrationNames) { + for (var phaseName in phasedRegistrationNames) { + if (phasedRegistrationNames.hasOwnProperty(phaseName)) { + var phasedRegistrationName = phasedRegistrationNames[phaseName]; + publishRegistrationName(phasedRegistrationName, pluginModule, eventName); + } + } + + return true; + } else if (dispatchConfig.registrationName) { + publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName); + return true; + } + + return false; + } + + function publishRegistrationName(registrationName, pluginModule, eventName) { + invariant(!registrationNameModules[registrationName], "EventPluginHub: More than one plugin attempted to publish the same " + "registration name, `%s`.", registrationName); + registrationNameModules[registrationName] = pluginModule; + registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies; + { + var lowerCasedName = registrationName.toLowerCase(); + } + } + + var plugins = []; + var eventNameDispatchConfigs = {}; + var registrationNameModules = {}; + var registrationNameDependencies = {}; + + function injectEventPluginOrder(injectedEventPluginOrder) { + invariant(!eventPluginOrder, "EventPluginRegistry: Cannot inject event plugin ordering more than " + "once. You are likely trying to load more than one copy of React."); + eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); + recomputePluginOrdering(); + } + + function injectEventPluginsByName(injectedNamesToPlugins) { + var isOrderingDirty = false; + + for (var pluginName in injectedNamesToPlugins) { + if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { + continue; + } + + var pluginModule = injectedNamesToPlugins[pluginName]; + + if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) { + invariant(!namesToPlugins[pluginName], "EventPluginRegistry: Cannot inject two different event plugins " + "using the same name, `%s`.", pluginName); + namesToPlugins[pluginName] = pluginModule; + isOrderingDirty = true; + } + } + + if (isOrderingDirty) { + recomputePluginOrdering(); + } + } + + var getFiberCurrentPropsFromNode = null; + var getInstanceFromNode = null; + var getNodeFromInstance = null; + var injection$1 = { + injectComponentTree: function injectComponentTree(Injected) { + getFiberCurrentPropsFromNode = Injected.getFiberCurrentPropsFromNode; + getInstanceFromNode = Injected.getInstanceFromNode; + getNodeFromInstance = Injected.getNodeFromInstance; + { + warning(getNodeFromInstance && getInstanceFromNode, "EventPluginUtils.injection.injectComponentTree(...): Injected " + "module is missing getNodeFromInstance or getInstanceFromNode."); + } + } + }; + + function isEndish(topLevelType) { + return topLevelType === "topMouseUp" || topLevelType === "topTouchEnd" || topLevelType === "topTouchCancel"; + } + + function isMoveish(topLevelType) { + return topLevelType === "topMouseMove" || topLevelType === "topTouchMove"; + } + + function isStartish(topLevelType) { + return topLevelType === "topMouseDown" || topLevelType === "topTouchStart"; + } + + var validateEventDispatches; + { + validateEventDispatches = function validateEventDispatches(event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + var listenersIsArr = Array.isArray(dispatchListeners); + var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0; + var instancesIsArr = Array.isArray(dispatchInstances); + var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0; + warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, "EventPluginUtils: Invalid `event`."); + }; + } + + function executeDispatch(event, simulated, listener, inst) { + var type = event.type || "unknown-event"; + event.currentTarget = getNodeFromInstance(inst); + ReactErrorUtils.invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event); + event.currentTarget = null; + } + + function executeDispatchesInOrder(event, simulated) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + { + validateEventDispatches(event); + } + + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + + executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]); + } + } else if (dispatchListeners) { + executeDispatch(event, simulated, dispatchListeners, dispatchInstances); + } + + event._dispatchListeners = null; + event._dispatchInstances = null; + } + + function executeDispatchesInOrderStopAtTrueImpl(event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + { + validateEventDispatches(event); + } + + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + + if (dispatchListeners[i](event, dispatchInstances[i])) { + return dispatchInstances[i]; + } + } + } else if (dispatchListeners) { + if (dispatchListeners(event, dispatchInstances)) { + return dispatchInstances; + } + } + + return null; + } + + function executeDispatchesInOrderStopAtTrue(event) { + var ret = executeDispatchesInOrderStopAtTrueImpl(event); + event._dispatchInstances = null; + event._dispatchListeners = null; + return ret; + } + + function executeDirectDispatch(event) { + { + validateEventDispatches(event); + } + var dispatchListener = event._dispatchListeners; + var dispatchInstance = event._dispatchInstances; + invariant(!Array.isArray(dispatchListener), "executeDirectDispatch(...): Invalid `event`."); + event.currentTarget = dispatchListener ? getNodeFromInstance(dispatchInstance) : null; + var res = dispatchListener ? dispatchListener(event) : null; + event.currentTarget = null; + event._dispatchListeners = null; + event._dispatchInstances = null; + return res; + } + + function hasDispatches(event) { + return !!event._dispatchListeners; + } + + function accumulateInto(current, next) { + invariant(next != null, "accumulateInto(...): Accumulated items must not be null or undefined."); + + if (current == null) { + return next; + } + + if (Array.isArray(current)) { + if (Array.isArray(next)) { + current.push.apply(current, next); + return current; + } + + current.push(next); + return current; + } + + if (Array.isArray(next)) { + return [current].concat(next); + } + + return [current, next]; + } + + function forEachAccumulated(arr, cb, scope) { + if (Array.isArray(arr)) { + arr.forEach(cb, scope); + } else if (arr) { + cb.call(scope, arr); + } + } + + var eventQueue = null; + + var executeDispatchesAndRelease = function executeDispatchesAndRelease(event, simulated) { + if (event) { + executeDispatchesInOrder(event, simulated); + + if (!event.isPersistent()) { + event.constructor.release(event); + } + } + }; + + var executeDispatchesAndReleaseSimulated = function executeDispatchesAndReleaseSimulated(e) { + return executeDispatchesAndRelease(e, true); + }; + + var executeDispatchesAndReleaseTopLevel = function executeDispatchesAndReleaseTopLevel(e) { + return executeDispatchesAndRelease(e, false); + }; + + function isInteractive(tag) { + return tag === "button" || tag === "input" || tag === "select" || tag === "textarea"; + } + + function shouldPreventMouseEvent(name, type, props) { + switch (name) { + case "onClick": + case "onClickCapture": + case "onDoubleClick": + case "onDoubleClickCapture": + case "onMouseDown": + case "onMouseDownCapture": + case "onMouseMove": + case "onMouseMoveCapture": + case "onMouseUp": + case "onMouseUpCapture": + return !!(props.disabled && isInteractive(type)); + + default: + return false; + } + } + + var injection = { + injectEventPluginOrder: injectEventPluginOrder, + injectEventPluginsByName: injectEventPluginsByName + }; + + function getListener(inst, registrationName) { + var listener; + var stateNode = inst.stateNode; + + if (!stateNode) { + return null; + } + + var props = getFiberCurrentPropsFromNode(stateNode); + + if (!props) { + return null; + } + + listener = props[registrationName]; + + if (shouldPreventMouseEvent(registrationName, inst.type, props)) { + return null; + } + + invariant(!listener || typeof listener === "function", "Expected `%s` listener to be a function, instead got a value of `%s` type.", registrationName, typeof listener); + return listener; + } + + function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var events; + + for (var i = 0; i < plugins.length; i++) { + var possiblePlugin = plugins[i]; + + if (possiblePlugin) { + var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); + + if (extractedEvents) { + events = accumulateInto(events, extractedEvents); + } + } + } + + return events; + } + + function enqueueEvents(events) { + if (events) { + eventQueue = accumulateInto(eventQueue, events); + } + } + + function processEventQueue(simulated) { + var processingEventQueue = eventQueue; + eventQueue = null; + + if (!processingEventQueue) { + return; + } + + if (simulated) { + forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated); + } else { + forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel); + } + + invariant(!eventQueue, "processEventQueue(): Additional events were enqueued while processing " + "an event queue. Support for this has not yet been implemented."); + ReactErrorUtils.rethrowCaughtError(); + } + + var IndeterminateComponent = 0; + var FunctionalComponent = 1; + var ClassComponent = 2; + var HostRoot = 3; + var HostPortal = 4; + var HostComponent = 5; + var HostText = 6; + var CallComponent = 7; + var CallHandlerPhase = 8; + var ReturnComponent = 9; + var Fragment = 10; + + function getParent(inst) { + do { + inst = inst["return"]; + } while (inst && inst.tag !== HostComponent); + + if (inst) { + return inst; + } + + return null; + } + + function getLowestCommonAncestor(instA, instB) { + var depthA = 0; + + for (var tempA = instA; tempA; tempA = getParent(tempA)) { + depthA++; + } + + var depthB = 0; + + for (var tempB = instB; tempB; tempB = getParent(tempB)) { + depthB++; + } + + while (depthA - depthB > 0) { + instA = getParent(instA); + depthA--; + } + + while (depthB - depthA > 0) { + instB = getParent(instB); + depthB--; + } + + var depth = depthA; + + while (depth--) { + if (instA === instB || instA === instB.alternate) { + return instA; + } + + instA = getParent(instA); + instB = getParent(instB); + } + + return null; + } + + function isAncestor(instA, instB) { + while (instB) { + if (instA === instB || instA === instB.alternate) { + return true; + } + + instB = getParent(instB); + } + + return false; + } + + function getParentInstance(inst) { + return getParent(inst); + } + + function traverseTwoPhase(inst, fn, arg) { + var path = []; + + while (inst) { + path.push(inst); + inst = getParent(inst); + } + + var i; + + for (i = path.length; i-- > 0;) { + fn(path[i], "captured", arg); + } + + for (i = 0; i < path.length; i++) { + fn(path[i], "bubbled", arg); + } + } + + function listenerAtPhase(inst, event, propagationPhase) { + var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase]; + return getListener(inst, registrationName); + } + + function accumulateDirectionalDispatches(inst, phase, event) { + { + warning(inst, "Dispatching inst must not be null"); + } + var listener = listenerAtPhase(inst, event, phase); + + if (listener) { + event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } + } + + function accumulateTwoPhaseDispatchesSingle(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); + } + } + + function accumulateTwoPhaseDispatchesSingleSkipTarget(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + var targetInst = event._targetInst; + var parentInst = targetInst ? getParentInstance(targetInst) : null; + traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event); + } + } + + function accumulateDispatches(inst, ignoredDirection, event) { + if (inst && event && event.dispatchConfig.registrationName) { + var registrationName = event.dispatchConfig.registrationName; + var listener = getListener(inst, registrationName); + + if (listener) { + event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } + } + } + + function accumulateDirectDispatchesSingle(event) { + if (event && event.dispatchConfig.registrationName) { + accumulateDispatches(event._targetInst, null, event); + } + } + + function accumulateTwoPhaseDispatches(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle); + } + + function accumulateTwoPhaseDispatchesSkipTarget(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget); + } + + function accumulateDirectDispatches(events) { + forEachAccumulated(events, accumulateDirectDispatchesSingle); + } + + var didWarnForAddedNewProperty = false; + var isProxySupported = typeof Proxy === 'function' && !Object.isSealed(new Proxy({}, {})); + var EVENT_POOL_SIZE = 10; + var shouldBeReleasedProperties = ["dispatchConfig", "_targetInst", "nativeEvent", "isDefaultPrevented", "isPropagationStopped", "_dispatchListeners", "_dispatchInstances"]; + var EventInterface = { + type: null, + target: null, + currentTarget: emptyFunction.thatReturnsNull, + eventPhase: null, + bubbles: null, + cancelable: null, + timeStamp: function timeStamp(event) { + return event.timeStamp || Date.now(); + }, + defaultPrevented: null, + isTrusted: null + }; + + function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) { + { + delete this.nativeEvent; + delete this.preventDefault; + delete this.stopPropagation; + } + this.dispatchConfig = dispatchConfig; + this._targetInst = targetInst; + this.nativeEvent = nativeEvent; + var Interface = this.constructor.Interface; + + for (var propName in Interface) { + if (!Interface.hasOwnProperty(propName)) { + continue; + } + + { + delete this[propName]; + } + var normalize = Interface[propName]; + + if (normalize) { + this[propName] = normalize(nativeEvent); + } else { + if (propName === "target") { + this.target = nativeEventTarget; + } else { + this[propName] = nativeEvent[propName]; + } + } + } + + var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false; + + if (defaultPrevented) { + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + } else { + this.isDefaultPrevented = emptyFunction.thatReturnsFalse; + } + + this.isPropagationStopped = emptyFunction.thatReturnsFalse; + return this; + } + + babelHelpers.extends(SyntheticEvent.prototype, { + preventDefault: function preventDefault() { + this.defaultPrevented = true; + var event = this.nativeEvent; + + if (!event) { + return; + } + + if (event.preventDefault) { + event.preventDefault(); + } else if (typeof event.returnValue !== "unknown") { + event.returnValue = false; + } + + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + }, + stopPropagation: function stopPropagation() { + var event = this.nativeEvent; + + if (!event) { + return; + } + + if (event.stopPropagation) { + event.stopPropagation(); + } else if (typeof event.cancelBubble !== "unknown") { + event.cancelBubble = true; + } + + this.isPropagationStopped = emptyFunction.thatReturnsTrue; + }, + persist: function persist() { + this.isPersistent = emptyFunction.thatReturnsTrue; + }, + isPersistent: emptyFunction.thatReturnsFalse, + destructor: function destructor() { + var Interface = this.constructor.Interface; + + for (var propName in Interface) { + { + Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName])); + } + } + + for (var i = 0; i < shouldBeReleasedProperties.length; i++) { + this[shouldBeReleasedProperties[i]] = null; + } + + { + Object.defineProperty(this, "nativeEvent", getPooledWarningPropertyDefinition("nativeEvent", null)); + Object.defineProperty(this, "preventDefault", getPooledWarningPropertyDefinition("preventDefault", emptyFunction)); + Object.defineProperty(this, "stopPropagation", getPooledWarningPropertyDefinition("stopPropagation", emptyFunction)); + } + } + }); + SyntheticEvent.Interface = EventInterface; + + SyntheticEvent.augmentClass = function (Class, Interface) { + var Super = this; + + var E = function E() {}; + + E.prototype = Super.prototype; + var prototype = new E(); + babelHelpers.extends(prototype, Class.prototype); + Class.prototype = prototype; + Class.prototype.constructor = Class; + Class.Interface = babelHelpers.extends({}, Super.Interface, Interface); + Class.augmentClass = Super.augmentClass; + addEventPoolingTo(Class); + }; + + { + if (isProxySupported) { + SyntheticEvent = new Proxy(SyntheticEvent, { + construct: function construct(target, args) { + return this.apply(target, Object.create(target.prototype), args); + }, + apply: function apply(constructor, that, args) { + return new Proxy(constructor.apply(that, args), { + set: function set(target, prop, value) { + if (prop !== "isPersistent" && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) { + warning(didWarnForAddedNewProperty || target.isPersistent(), "This synthetic event is reused for performance reasons. If you're " + "seeing this, you're adding a new property in the synthetic event object. " + "The property is never released. See " + "https://fb.me/react-event-pooling for more information."); + didWarnForAddedNewProperty = true; + } + + target[prop] = value; + return true; + } + }); + } + }); + } + } + addEventPoolingTo(SyntheticEvent); + + function getPooledWarningPropertyDefinition(propName, getVal) { + var isFunction = typeof getVal === "function"; + return { + configurable: true, + set: set, + get: get + }; + + function set(val) { + var action = isFunction ? "setting the method" : "setting the property"; + warn(action, "This is effectively a no-op"); + return val; + } + + function get() { + var action = isFunction ? "accessing the method" : "accessing the property"; + var result = isFunction ? "This is a no-op function" : "This is set to null"; + warn(action, result); + return getVal; + } + + function warn(action, result) { + var warningCondition = false; + warning(warningCondition, "This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + "If you must keep the original synthetic event around, use event.persist(). " + "See https://fb.me/react-event-pooling for more information.", action, propName, result); + } + } + + function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) { + var EventConstructor = this; + + if (EventConstructor.eventPool.length) { + var instance = EventConstructor.eventPool.pop(); + EventConstructor.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst); + return instance; + } + + return new EventConstructor(dispatchConfig, targetInst, nativeEvent, nativeInst); + } + + function releasePooledEvent(event) { + var EventConstructor = this; + invariant(event instanceof EventConstructor, "Trying to release an event instance into a pool of a different type."); + event.destructor(); + + if (EventConstructor.eventPool.length < EVENT_POOL_SIZE) { + EventConstructor.eventPool.push(event); + } + } + + function addEventPoolingTo(EventConstructor) { + EventConstructor.eventPool = []; + EventConstructor.getPooled = getPooledEvent; + EventConstructor.release = releasePooledEvent; + } + + var SyntheticEvent$1 = SyntheticEvent; + var ResponderEventInterface = { + touchHistory: function touchHistory(nativeEvent) { + return null; + } + }; + + function ResponderSyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent$1.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); + } + + SyntheticEvent$1.augmentClass(ResponderSyntheticEvent, ResponderEventInterface); + var MAX_TOUCH_BANK = 20; + var touchBank = []; + var touchHistory = { + touchBank: touchBank, + numberActiveTouches: 0, + indexOfSingleActiveTouch: -1, + mostRecentTimeStamp: 0 + }; + + function timestampForTouch(touch) { + return touch.timeStamp || touch.timestamp; + } + + function createTouchRecord(touch) { + return { + touchActive: true, + startPageX: touch.pageX, + startPageY: touch.pageY, + startTimeStamp: timestampForTouch(touch), + currentPageX: touch.pageX, + currentPageY: touch.pageY, + currentTimeStamp: timestampForTouch(touch), + previousPageX: touch.pageX, + previousPageY: touch.pageY, + previousTimeStamp: timestampForTouch(touch) + }; + } + + function resetTouchRecord(touchRecord, touch) { + touchRecord.touchActive = true; + touchRecord.startPageX = touch.pageX; + touchRecord.startPageY = touch.pageY; + touchRecord.startTimeStamp = timestampForTouch(touch); + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchRecord.previousPageX = touch.pageX; + touchRecord.previousPageY = touch.pageY; + touchRecord.previousTimeStamp = timestampForTouch(touch); + } + + function getTouchIdentifier(_ref) { + var identifier = _ref.identifier; + invariant(identifier != null, "Touch object is missing identifier."); + { + warning(identifier <= MAX_TOUCH_BANK, "Touch identifier %s is greater than maximum supported %s which causes " + "performance issues backfilling array locations for all of the indices.", identifier, MAX_TOUCH_BANK); + } + return identifier; + } + + function recordTouchStart(touch) { + var identifier = getTouchIdentifier(touch); + var touchRecord = touchBank[identifier]; + + if (touchRecord) { + resetTouchRecord(touchRecord, touch); + } else { + touchBank[identifier] = createTouchRecord(touch); + } + + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } + + function recordTouchMove(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + + if (touchRecord) { + touchRecord.touchActive = true; + touchRecord.previousPageX = touchRecord.currentPageX; + touchRecord.previousPageY = touchRecord.currentPageY; + touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } else { + console.error("Cannot record touch move without a touch start.\n" + "Touch Move: %s\n", "Touch Bank: %s", printTouch(touch), printTouchBank()); + } + } + + function recordTouchEnd(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + + if (touchRecord) { + touchRecord.touchActive = false; + touchRecord.previousPageX = touchRecord.currentPageX; + touchRecord.previousPageY = touchRecord.currentPageY; + touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } else { + console.error("Cannot record touch end without a touch start.\n" + "Touch End: %s\n", "Touch Bank: %s", printTouch(touch), printTouchBank()); + } + } + + function printTouch(touch) { + return JSON.stringify({ + identifier: touch.identifier, + pageX: touch.pageX, + pageY: touch.pageY, + timestamp: timestampForTouch(touch) + }); + } + + function printTouchBank() { + var printed = JSON.stringify(touchBank.slice(0, MAX_TOUCH_BANK)); + + if (touchBank.length > MAX_TOUCH_BANK) { + printed += " (original size: " + touchBank.length + ")"; + } + + return printed; + } + + var ResponderTouchHistoryStore = { + recordTouchTrack: function recordTouchTrack(topLevelType, nativeEvent) { + if (isMoveish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchMove); + } else if (isStartish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchStart); + touchHistory.numberActiveTouches = nativeEvent.touches.length; + + if (touchHistory.numberActiveTouches === 1) { + touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier; + } + } else if (isEndish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchEnd); + touchHistory.numberActiveTouches = nativeEvent.touches.length; + + if (touchHistory.numberActiveTouches === 1) { + for (var i = 0; i < touchBank.length; i++) { + var touchTrackToCheck = touchBank[i]; + + if (touchTrackToCheck != null && touchTrackToCheck.touchActive) { + touchHistory.indexOfSingleActiveTouch = i; + break; + } + } + + { + var activeRecord = touchBank[touchHistory.indexOfSingleActiveTouch]; + warning(activeRecord != null && activeRecord.touchActive, "Cannot find single active touch."); + } + } + } + }, + touchHistory: touchHistory + }; + + function accumulate(current, next) { + invariant(next != null, "accumulate(...): Accumulated items must be not be null or undefined."); + + if (current == null) { + return next; + } + + if (Array.isArray(current)) { + return current.concat(next); + } + + if (Array.isArray(next)) { + return [current].concat(next); + } + + return [current, next]; + } + + var responderInst = null; + var trackedTouchCount = 0; + var previousActiveTouches = 0; + + var changeResponder = function changeResponder(nextResponderInst, blockHostResponder) { + var oldResponderInst = responderInst; + responderInst = nextResponderInst; + + if (ResponderEventPlugin.GlobalResponderHandler !== null) { + ResponderEventPlugin.GlobalResponderHandler.onChange(oldResponderInst, nextResponderInst, blockHostResponder); + } + }; + + var eventTypes = { + startShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onStartShouldSetResponder", + captured: "onStartShouldSetResponderCapture" + } + }, + scrollShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onScrollShouldSetResponder", + captured: "onScrollShouldSetResponderCapture" + } + }, + selectionChangeShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onSelectionChangeShouldSetResponder", + captured: "onSelectionChangeShouldSetResponderCapture" + } + }, + moveShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onMoveShouldSetResponder", + captured: "onMoveShouldSetResponderCapture" + } + }, + responderStart: { + registrationName: "onResponderStart" + }, + responderMove: { + registrationName: "onResponderMove" + }, + responderEnd: { + registrationName: "onResponderEnd" + }, + responderRelease: { + registrationName: "onResponderRelease" + }, + responderTerminationRequest: { + registrationName: "onResponderTerminationRequest" + }, + responderGrant: { + registrationName: "onResponderGrant" + }, + responderReject: { + registrationName: "onResponderReject" + }, + responderTerminate: { + registrationName: "onResponderTerminate" + } + }; + + function setResponderAndExtractTransfer(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var shouldSetEventType = isStartish(topLevelType) ? eventTypes.startShouldSetResponder : isMoveish(topLevelType) ? eventTypes.moveShouldSetResponder : topLevelType === "topSelectionChange" ? eventTypes.selectionChangeShouldSetResponder : eventTypes.scrollShouldSetResponder; + var bubbleShouldSetFrom = !responderInst ? targetInst : getLowestCommonAncestor(responderInst, targetInst); + var skipOverBubbleShouldSetFrom = bubbleShouldSetFrom === responderInst; + var shouldSetEvent = ResponderSyntheticEvent.getPooled(shouldSetEventType, bubbleShouldSetFrom, nativeEvent, nativeEventTarget); + shouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + + if (skipOverBubbleShouldSetFrom) { + accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent); + } else { + accumulateTwoPhaseDispatches(shouldSetEvent); + } + + var wantsResponderInst = executeDispatchesInOrderStopAtTrue(shouldSetEvent); + + if (!shouldSetEvent.isPersistent()) { + shouldSetEvent.constructor.release(shouldSetEvent); + } + + if (!wantsResponderInst || wantsResponderInst === responderInst) { + return null; + } + + var extracted; + var grantEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderGrant, wantsResponderInst, nativeEvent, nativeEventTarget); + grantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(grantEvent); + var blockHostResponder = executeDirectDispatch(grantEvent) === true; + + if (responderInst) { + var terminationRequestEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminationRequest, responderInst, nativeEvent, nativeEventTarget); + terminationRequestEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(terminationRequestEvent); + var shouldSwitch = !hasDispatches(terminationRequestEvent) || executeDirectDispatch(terminationRequestEvent); + + if (!terminationRequestEvent.isPersistent()) { + terminationRequestEvent.constructor.release(terminationRequestEvent); + } + + if (shouldSwitch) { + var terminateEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminate, responderInst, nativeEvent, nativeEventTarget); + terminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(terminateEvent); + extracted = accumulate(extracted, [grantEvent, terminateEvent]); + changeResponder(wantsResponderInst, blockHostResponder); + } else { + var rejectEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderReject, wantsResponderInst, nativeEvent, nativeEventTarget); + rejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(rejectEvent); + extracted = accumulate(extracted, rejectEvent); + } + } else { + extracted = accumulate(extracted, grantEvent); + changeResponder(wantsResponderInst, blockHostResponder); + } + + return extracted; + } + + function canTriggerTransfer(topLevelType, topLevelInst, nativeEvent) { + return topLevelInst && (topLevelType === "topScroll" && !nativeEvent.responderIgnoreScroll || trackedTouchCount > 0 && topLevelType === "topSelectionChange" || isStartish(topLevelType) || isMoveish(topLevelType)); + } + + function noResponderTouches(nativeEvent) { + var touches = nativeEvent.touches; + + if (!touches || touches.length === 0) { + return true; + } + + for (var i = 0; i < touches.length; i++) { + var activeTouch = touches[i]; + var target = activeTouch.target; + + if (target !== null && target !== undefined && target !== 0) { + var targetInst = getInstanceFromNode(target); + + if (isAncestor(responderInst, targetInst)) { + return false; + } + } + } + + return true; + } + + var ResponderEventPlugin = { + _getResponder: function _getResponder() { + return responderInst; + }, + eventTypes: eventTypes, + extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + if (isStartish(topLevelType)) { + trackedTouchCount += 1; + } else if (isEndish(topLevelType)) { + if (trackedTouchCount >= 0) { + trackedTouchCount -= 1; + } else { + console.error("Ended a touch event which was not counted in `trackedTouchCount`."); + return null; + } + } + + ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent); + var extracted = canTriggerTransfer(topLevelType, targetInst, nativeEvent) ? setResponderAndExtractTransfer(topLevelType, targetInst, nativeEvent, nativeEventTarget) : null; + var isResponderTouchStart = responderInst && isStartish(topLevelType); + var isResponderTouchMove = responderInst && isMoveish(topLevelType); + var isResponderTouchEnd = responderInst && isEndish(topLevelType); + var incrementalTouch = isResponderTouchStart ? eventTypes.responderStart : isResponderTouchMove ? eventTypes.responderMove : isResponderTouchEnd ? eventTypes.responderEnd : null; + + if (incrementalTouch) { + var gesture = ResponderSyntheticEvent.getPooled(incrementalTouch, responderInst, nativeEvent, nativeEventTarget); + gesture.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(gesture); + extracted = accumulate(extracted, gesture); + } + + var isResponderTerminate = responderInst && topLevelType === "topTouchCancel"; + var isResponderRelease = responderInst && !isResponderTerminate && isEndish(topLevelType) && noResponderTouches(nativeEvent); + var finalTouch = isResponderTerminate ? eventTypes.responderTerminate : isResponderRelease ? eventTypes.responderRelease : null; + + if (finalTouch) { + var finalEvent = ResponderSyntheticEvent.getPooled(finalTouch, responderInst, nativeEvent, nativeEventTarget); + finalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + accumulateDirectDispatches(finalEvent); + extracted = accumulate(extracted, finalEvent); + changeResponder(null); + } + + var numberActiveTouches = ResponderTouchHistoryStore.touchHistory.numberActiveTouches; + + if (ResponderEventPlugin.GlobalInteractionHandler && numberActiveTouches !== previousActiveTouches) { + ResponderEventPlugin.GlobalInteractionHandler.onChange(numberActiveTouches); + } + + previousActiveTouches = numberActiveTouches; + return extracted; + }, + GlobalResponderHandler: null, + GlobalInteractionHandler: null, + injection: { + injectGlobalResponderHandler: function injectGlobalResponderHandler(GlobalResponderHandler) { + ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler; + }, + injectGlobalInteractionHandler: function injectGlobalInteractionHandler(GlobalInteractionHandler) { + ResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler; + } + } + }; + var customBubblingEventTypes = {}; + var customDirectEventTypes = {}; + var ReactNativeBridgeEventPlugin = { + eventTypes: {}, + extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var bubbleDispatchConfig = customBubblingEventTypes[topLevelType]; + var directDispatchConfig = customDirectEventTypes[topLevelType]; + invariant(bubbleDispatchConfig || directDispatchConfig, 'Unsupported top level event type "%s" dispatched', topLevelType); + var event = SyntheticEvent$1.getPooled(bubbleDispatchConfig || directDispatchConfig, targetInst, nativeEvent, nativeEventTarget); + + if (bubbleDispatchConfig) { + accumulateTwoPhaseDispatches(event); + } else if (directDispatchConfig) { + accumulateDirectDispatches(event); + } else { + return null; + } + + return event; + }, + processEventTypes: function processEventTypes(viewConfig) { + var bubblingEventTypes = viewConfig.bubblingEventTypes, + directEventTypes = viewConfig.directEventTypes; + { + if (bubblingEventTypes != null && directEventTypes != null) { + for (var topLevelType in directEventTypes) { + invariant(bubblingEventTypes[topLevelType] == null, "Event cannot be both direct and bubbling: %s", topLevelType); + } + } + } + + if (bubblingEventTypes != null) { + for (var _topLevelType in bubblingEventTypes) { + if (customBubblingEventTypes[_topLevelType] == null) { + ReactNativeBridgeEventPlugin.eventTypes[_topLevelType] = customBubblingEventTypes[_topLevelType] = bubblingEventTypes[_topLevelType]; + } + } + } + + if (directEventTypes != null) { + for (var _topLevelType2 in directEventTypes) { + if (customDirectEventTypes[_topLevelType2] == null) { + ReactNativeBridgeEventPlugin.eventTypes[_topLevelType2] = customDirectEventTypes[_topLevelType2] = directEventTypes[_topLevelType2]; + } + } + } + } + }; + var instanceCache = {}; + var instanceProps = {}; + + function precacheFiberNode(hostInst, tag) { + instanceCache[tag] = hostInst; + } + + function uncacheFiberNode(tag) { + delete instanceCache[tag]; + delete instanceProps[tag]; + } + + function getInstanceFromTag(tag) { + return instanceCache[tag] || null; + } + + function getTagFromInstance(inst) { + var tag = inst.stateNode._nativeTag; + invariant(tag, "All native instances should have a tag."); + return tag; + } + + function getFiberCurrentPropsFromNode$1(stateNode) { + return instanceProps[stateNode._nativeTag] || null; + } + + function updateFiberProps(tag, props) { + instanceProps[tag] = props; + } + + var ReactNativeComponentTree = Object.freeze({ + precacheFiberNode: precacheFiberNode, + uncacheFiberNode: uncacheFiberNode, + getClosestInstanceFromNode: getInstanceFromTag, + getInstanceFromNode: getInstanceFromTag, + getNodeFromInstance: getTagFromInstance, + getFiberCurrentPropsFromNode: getFiberCurrentPropsFromNode$1, + updateFiberProps: updateFiberProps + }); + var fiberHostComponent = null; + var restoreTarget = null; + var restoreQueue = null; + + function restoreStateOfTarget(target) { + var internalInstance = getInstanceFromNode(target); + + if (!internalInstance) { + return; + } + + invariant(fiberHostComponent && typeof fiberHostComponent.restoreControlledState === "function", "Fiber needs to be injected to handle a fiber target for controlled " + "events. This error is likely caused by a bug in React. Please file an issue."); + var props = getFiberCurrentPropsFromNode(internalInstance.stateNode); + fiberHostComponent.restoreControlledState(internalInstance.stateNode, internalInstance.type, props); + } + + function restoreStateIfNeeded() { + if (!restoreTarget) { + return; + } + + var target = restoreTarget; + var queuedTargets = restoreQueue; + restoreTarget = null; + restoreQueue = null; + restoreStateOfTarget(target); + + if (queuedTargets) { + for (var i = 0; i < queuedTargets.length; i++) { + restoreStateOfTarget(queuedTargets[i]); + } + } + } + + var fiberBatchedUpdates = function fiberBatchedUpdates(fn, bookkeeping) { + return fn(bookkeeping); + }; + + var isNestingBatched = false; + + function batchedUpdates(fn, bookkeeping) { + if (isNestingBatched) { + return fiberBatchedUpdates(fn, bookkeeping); + } + + isNestingBatched = true; + + try { + return fiberBatchedUpdates(fn, bookkeeping); + } finally { + isNestingBatched = false; + restoreStateIfNeeded(); + } + } + + var ReactGenericBatchingInjection = { + injectFiberBatchedUpdates: function injectFiberBatchedUpdates(_batchedUpdates) { + fiberBatchedUpdates = _batchedUpdates; + } + }; + var injection$2 = ReactGenericBatchingInjection; + + function runEventQueueInBatch(events) { + enqueueEvents(events); + processEventQueue(false); + } + + function handleTopLevel(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var events = extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); + runEventQueueInBatch(events); + } + + var INITIAL_TAG_COUNT = 1; + var ReactNativeTagHandles = { + tagsStartAt: INITIAL_TAG_COUNT, + tagCount: INITIAL_TAG_COUNT, + allocateTag: function allocateTag() { + while (this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) { + ReactNativeTagHandles.tagCount++; + } + + var tag = ReactNativeTagHandles.tagCount; + ReactNativeTagHandles.tagCount++; + return tag; + }, + assertRootTag: function assertRootTag(tag) { + invariant(this.reactTagIsNativeTopRootID(tag), "Expect a native root tag, instead got %s", tag); + }, + reactTagIsNativeTopRootID: function reactTagIsNativeTopRootID(reactTag) { + return reactTag % 10 === 1; + } + }; + var EMPTY_NATIVE_EVENT = {}; + + var touchSubsequence = function touchSubsequence(touches, indices) { + var ret = []; + + for (var i = 0; i < indices.length; i++) { + ret.push(touches[indices[i]]); + } + + return ret; + }; + + var removeTouchesAtIndices = function removeTouchesAtIndices(touches, indices) { + var rippedOut = []; + var temp = touches; + + for (var i = 0; i < indices.length; i++) { + var index = indices[i]; + rippedOut.push(touches[index]); + temp[index] = null; + } + + var fillAt = 0; + + for (var j = 0; j < temp.length; j++) { + var cur = temp[j]; + + if (cur !== null) { + temp[fillAt++] = cur; + } + } + + temp.length = fillAt; + return rippedOut; + }; + + function _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam) { + var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT; + var inst = getInstanceFromTag(rootNodeID); + batchedUpdates(function () { + handleTopLevel(topLevelType, inst, nativeEvent, nativeEvent.target); + }); + } + + function receiveEvent(rootNodeID, topLevelType, nativeEventParam) { + _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam); + } + + function receiveTouches(eventTopLevelType, touches, changedIndices) { + var changedTouches = eventTopLevelType === "topTouchEnd" || eventTopLevelType === "topTouchCancel" ? removeTouchesAtIndices(touches, changedIndices) : touchSubsequence(touches, changedIndices); + + for (var jj = 0; jj < changedTouches.length; jj++) { + var touch = changedTouches[jj]; + touch.changedTouches = changedTouches; + touch.touches = touches; + var nativeEvent = touch; + var rootNodeID = null; + var target = nativeEvent.target; + + if (target !== null && target !== undefined) { + if (target < ReactNativeTagHandles.tagsStartAt) { + { + warning(false, "A view is reporting that a touch occurred on tag zero."); + } + } else { + rootNodeID = target; + } + } + + _receiveRootNodeIDEvent(rootNodeID, eventTopLevelType, nativeEvent); + } + } + + var ReactNativeEventEmitter = Object.freeze({ + getListener: getListener, + registrationNames: registrationNameModules, + _receiveRootNodeIDEvent: _receiveRootNodeIDEvent, + receiveEvent: receiveEvent, + receiveTouches: receiveTouches, + handleTopLevel: handleTopLevel + }); + var ReactNativeEventPluginOrder = ["ResponderEventPlugin", "ReactNativeBridgeEventPlugin"]; + var ReactNativeGlobalResponderHandler = { + onChange: function onChange(from, to, blockNativeResponder) { + if (to !== null) { + var tag = to.stateNode._nativeTag; + UIManager.setJSResponder(tag, blockNativeResponder); + } else { + UIManager.clearJSResponder(); + } + } + }; + RCTEventEmitter.register(ReactNativeEventEmitter); + injection.injectEventPluginOrder(ReactNativeEventPluginOrder); + injection$1.injectComponentTree(ReactNativeComponentTree); + ResponderEventPlugin.injection.injectGlobalResponderHandler(ReactNativeGlobalResponderHandler); + injection.injectEventPluginsByName({ + ResponderEventPlugin: ResponderEventPlugin, + ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin + }); + + var defaultShowDialog = function defaultShowDialog(capturedError) { + return true; + }; + + var showDialog = defaultShowDialog; + + function logCapturedError(capturedError) { + var logError = showDialog(capturedError); + + if (logError === false) { + return; + } + + var error = capturedError.error; + var suppressLogging = error && error.suppressReactErrorLogging; + + if (suppressLogging) { + return; + } + + { + var componentName = capturedError.componentName, + componentStack = capturedError.componentStack, + errorBoundaryName = capturedError.errorBoundaryName, + errorBoundaryFound = capturedError.errorBoundaryFound, + willRetry = capturedError.willRetry; + var componentNameMessage = componentName ? "The above error occurred in the <" + componentName + "> component:" : "The above error occurred in one of your React components:"; + var errorBoundaryMessage = void 0; + + if (errorBoundaryFound && errorBoundaryName) { + if (willRetry) { + errorBoundaryMessage = "React will try to recreate this component tree from scratch " + ("using the error boundary you provided, " + errorBoundaryName + "."); + } else { + errorBoundaryMessage = "This error was initially handled by the error boundary " + errorBoundaryName + ".\n" + "Recreating the tree from scratch failed so React will unmount the tree."; + } + } else { + errorBoundaryMessage = "Consider adding an error boundary to your tree to customize error handling behavior.\n" + "Visit https://fb.me/react-error-boundaries to learn more about error boundaries."; + } + + var combinedMessage = "" + componentNameMessage + componentStack + "\n\n" + ("" + errorBoundaryMessage); + console.error(combinedMessage); + } + } + + var injection$4 = { + injectDialog: function injectDialog(fn) { + invariant(showDialog === defaultShowDialog, "The custom dialog was already injected."); + invariant(typeof fn === "function", "Injected showDialog() must be a function."); + showDialog = fn; + } + }; + var hasSymbol = typeof Symbol === "function" && Symbol["for"]; + var REACT_ELEMENT_TYPE = hasSymbol ? Symbol["for"]("react.element") : 0xeac7; + var REACT_CALL_TYPE = hasSymbol ? Symbol["for"]("react.call") : 0xeac8; + var REACT_RETURN_TYPE = hasSymbol ? Symbol["for"]("react.return") : 0xeac9; + var REACT_PORTAL_TYPE = hasSymbol ? Symbol["for"]("react.portal") : 0xeaca; + var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol["for"]("react.fragment") : 0xeacb; + var MAYBE_ITERATOR_SYMBOL = typeof Symbol === "function" && (typeof Symbol === "function" ? Symbol.iterator : "@@iterator"); + var FAUX_ITERATOR_SYMBOL = "@@iterator"; + + function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable === "undefined") { + return null; + } + + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + + if (typeof maybeIterator === "function") { + return maybeIterator; + } + + return null; + } + + function _createPortal(children, containerInfo, implementation) { + var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + return { + $$typeof: REACT_PORTAL_TYPE, + key: key == null ? null : "" + key, + children: children, + containerInfo: containerInfo, + implementation: implementation + }; + } + + var TouchHistoryMath = { + centroidDimension: function centroidDimension(touchHistory, touchesChangedAfter, isXAxis, ofCurrent) { + var touchBank = touchHistory.touchBank; + var total = 0; + var count = 0; + var oneTouchData = touchHistory.numberActiveTouches === 1 ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] : null; + + if (oneTouchData !== null) { + if (oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter) { + total += ofCurrent && isXAxis ? oneTouchData.currentPageX : ofCurrent && !isXAxis ? oneTouchData.currentPageY : !ofCurrent && isXAxis ? oneTouchData.previousPageX : oneTouchData.previousPageY; + count = 1; + } + } else { + for (var i = 0; i < touchBank.length; i++) { + var touchTrack = touchBank[i]; + + if (touchTrack !== null && touchTrack !== undefined && touchTrack.touchActive && touchTrack.currentTimeStamp >= touchesChangedAfter) { + var toAdd; + + if (ofCurrent && isXAxis) { + toAdd = touchTrack.currentPageX; + } else if (ofCurrent && !isXAxis) { + toAdd = touchTrack.currentPageY; + } else if (!ofCurrent && isXAxis) { + toAdd = touchTrack.previousPageX; + } else { + toAdd = touchTrack.previousPageY; + } + + total += toAdd; + count++; + } + } + } + + return count > 0 ? total / count : TouchHistoryMath.noCentroid; + }, + currentCentroidXOfTouchesChangedAfter: function currentCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, true, true); + }, + currentCentroidYOfTouchesChangedAfter: function currentCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, false, true); + }, + previousCentroidXOfTouchesChangedAfter: function previousCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, true, false); + }, + previousCentroidYOfTouchesChangedAfter: function previousCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, false, false); + }, + currentCentroidX: function currentCentroidX(touchHistory) { + return TouchHistoryMath.centroidDimension(touchHistory, 0, true, true); + }, + currentCentroidY: function currentCentroidY(touchHistory) { + return TouchHistoryMath.centroidDimension(touchHistory, 0, false, true); + }, + noCentroid: -1 + }; + var ReactInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactCurrentOwner = ReactInternals.ReactCurrentOwner; + var ReactDebugCurrentFrame = ReactInternals.ReactDebugCurrentFrame; + var ReactGlobalSharedState = Object.freeze({ + ReactCurrentOwner: ReactCurrentOwner, + ReactDebugCurrentFrame: ReactDebugCurrentFrame + }); + var ReactVersion = "16.2.0"; + + function showDialog$1(capturedError) { + var componentStack = capturedError.componentStack, + error = capturedError.error; + var errorToHandle = void 0; + + if (error instanceof Error) { + var message = error.message, + name = error.name; + var summary = message ? name + ": " + message : name; + errorToHandle = error; + + try { + errorToHandle.message = summary + "\n\nThis error is located at:" + componentStack; + } catch (e) {} + } else if (typeof error === "string") { + errorToHandle = new Error(error + "\n\nThis error is located at:" + componentStack); + } else { + errorToHandle = new Error("Unspecified error at:" + componentStack); + } + + ExceptionsManager.handleException(errorToHandle, false); + return false; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var objects = {}; + var uniqueID = 1; + var emptyObject$2 = {}; + + var ReactNativePropRegistry = function () { + function ReactNativePropRegistry() { + _classCallCheck(this, ReactNativePropRegistry); + } + + ReactNativePropRegistry.register = function register(object) { + var id = ++uniqueID; + { + Object.freeze(object); + } + objects[id] = object; + return id; + }; + + ReactNativePropRegistry.getByID = function getByID(id) { + if (!id) { + return emptyObject$2; + } + + var object = objects[id]; + + if (!object) { + console.warn("Invalid style with id `" + id + "`. Skipping ..."); + return emptyObject$2; + } + + return object; + }; + + return ReactNativePropRegistry; + }(); + + var emptyObject$1 = {}; + var removedKeys = null; + var removedKeyCount = 0; + + function defaultDiffer(prevProp, nextProp) { + if (typeof nextProp !== "object" || nextProp === null) { + return true; + } else { + return deepDiffer(prevProp, nextProp); + } + } + + function resolveObject(idOrObject) { + if (typeof idOrObject === "number") { + return ReactNativePropRegistry.getByID(idOrObject); + } + + return idOrObject; + } + + function restoreDeletedValuesInNestedArray(updatePayload, node, validAttributes) { + if (Array.isArray(node)) { + var i = node.length; + + while (i-- && removedKeyCount > 0) { + restoreDeletedValuesInNestedArray(updatePayload, node[i], validAttributes); + } + } else if (node && removedKeyCount > 0) { + var obj = resolveObject(node); + + for (var propKey in removedKeys) { + if (!removedKeys[propKey]) { + continue; + } + + var nextProp = obj[propKey]; + + if (nextProp === undefined) { + continue; + } + + var attributeConfig = validAttributes[propKey]; + + if (!attributeConfig) { + continue; + } + + if (typeof nextProp === "function") { + nextProp = true; + } + + if (typeof nextProp === "undefined") { + nextProp = null; + } + + if (typeof attributeConfig !== "object") { + updatePayload[propKey] = nextProp; + } else if (typeof attributeConfig.diff === "function" || typeof attributeConfig.process === "function") { + var nextValue = typeof attributeConfig.process === "function" ? attributeConfig.process(nextProp) : nextProp; + updatePayload[propKey] = nextValue; + } + + removedKeys[propKey] = false; + removedKeyCount--; + } + } + } + + function diffNestedArrayProperty(updatePayload, prevArray, nextArray, validAttributes) { + var minLength = prevArray.length < nextArray.length ? prevArray.length : nextArray.length; + var i; + + for (i = 0; i < minLength; i++) { + updatePayload = diffNestedProperty(updatePayload, prevArray[i], nextArray[i], validAttributes); + } + + for (; i < prevArray.length; i++) { + updatePayload = clearNestedProperty(updatePayload, prevArray[i], validAttributes); + } + + for (; i < nextArray.length; i++) { + updatePayload = addNestedProperty(updatePayload, nextArray[i], validAttributes); + } + + return updatePayload; + } + + function diffNestedProperty(updatePayload, prevProp, nextProp, validAttributes) { + if (!updatePayload && prevProp === nextProp) { + return updatePayload; + } + + if (!prevProp || !nextProp) { + if (nextProp) { + return addNestedProperty(updatePayload, nextProp, validAttributes); + } + + if (prevProp) { + return clearNestedProperty(updatePayload, prevProp, validAttributes); + } + + return updatePayload; + } + + if (!Array.isArray(prevProp) && !Array.isArray(nextProp)) { + return diffProperties(updatePayload, resolveObject(prevProp), resolveObject(nextProp), validAttributes); + } + + if (Array.isArray(prevProp) && Array.isArray(nextProp)) { + return diffNestedArrayProperty(updatePayload, prevProp, nextProp, validAttributes); + } + + if (Array.isArray(prevProp)) { + return diffProperties(updatePayload, flattenStyle(prevProp), resolveObject(nextProp), validAttributes); + } + + return diffProperties(updatePayload, resolveObject(prevProp), flattenStyle(nextProp), validAttributes); + } + + function addNestedProperty(updatePayload, nextProp, validAttributes) { + if (!nextProp) { + return updatePayload; + } + + if (!Array.isArray(nextProp)) { + return addProperties(updatePayload, resolveObject(nextProp), validAttributes); + } + + for (var i = 0; i < nextProp.length; i++) { + updatePayload = addNestedProperty(updatePayload, nextProp[i], validAttributes); + } + + return updatePayload; + } + + function clearNestedProperty(updatePayload, prevProp, validAttributes) { + if (!prevProp) { + return updatePayload; + } + + if (!Array.isArray(prevProp)) { + return clearProperties(updatePayload, resolveObject(prevProp), validAttributes); + } + + for (var i = 0; i < prevProp.length; i++) { + updatePayload = clearNestedProperty(updatePayload, prevProp[i], validAttributes); + } + + return updatePayload; + } + + function diffProperties(updatePayload, prevProps, nextProps, validAttributes) { + var attributeConfig; + var nextProp; + var prevProp; + + for (var propKey in nextProps) { + attributeConfig = validAttributes[propKey]; + + if (!attributeConfig) { + continue; + } + + prevProp = prevProps[propKey]; + nextProp = nextProps[propKey]; + + if (typeof nextProp === "function") { + nextProp = true; + + if (typeof prevProp === "function") { + prevProp = true; + } + } + + if (typeof nextProp === "undefined") { + nextProp = null; + + if (typeof prevProp === "undefined") { + prevProp = null; + } + } + + if (removedKeys) { + removedKeys[propKey] = false; + } + + if (updatePayload && updatePayload[propKey] !== undefined) { + if (typeof attributeConfig !== "object") { + updatePayload[propKey] = nextProp; + } else if (typeof attributeConfig.diff === "function" || typeof attributeConfig.process === "function") { + var nextValue = typeof attributeConfig.process === "function" ? attributeConfig.process(nextProp) : nextProp; + updatePayload[propKey] = nextValue; + } + + continue; + } + + if (prevProp === nextProp) { + continue; + } + + if (typeof attributeConfig !== "object") { + if (defaultDiffer(prevProp, nextProp)) { + (updatePayload || (updatePayload = {}))[propKey] = nextProp; + } + } else if (typeof attributeConfig.diff === "function" || typeof attributeConfig.process === "function") { + var shouldUpdate = prevProp === undefined || (typeof attributeConfig.diff === "function" ? attributeConfig.diff(prevProp, nextProp) : defaultDiffer(prevProp, nextProp)); + + if (shouldUpdate) { + nextValue = typeof attributeConfig.process === "function" ? attributeConfig.process(nextProp) : nextProp; + (updatePayload || (updatePayload = {}))[propKey] = nextValue; + } + } else { + removedKeys = null; + removedKeyCount = 0; + updatePayload = diffNestedProperty(updatePayload, prevProp, nextProp, attributeConfig); + + if (removedKeyCount > 0 && updatePayload) { + restoreDeletedValuesInNestedArray(updatePayload, nextProp, attributeConfig); + removedKeys = null; + } + } + } + + for (propKey in prevProps) { + if (nextProps[propKey] !== undefined) { + continue; + } + + attributeConfig = validAttributes[propKey]; + + if (!attributeConfig) { + continue; + } + + if (updatePayload && updatePayload[propKey] !== undefined) { + continue; + } + + prevProp = prevProps[propKey]; + + if (prevProp === undefined) { + continue; + } + + if (typeof attributeConfig !== "object" || typeof attributeConfig.diff === "function" || typeof attributeConfig.process === "function") { + (updatePayload || (updatePayload = {}))[propKey] = null; + + if (!removedKeys) { + removedKeys = {}; + } + + if (!removedKeys[propKey]) { + removedKeys[propKey] = true; + removedKeyCount++; + } + } else { + updatePayload = clearNestedProperty(updatePayload, prevProp, attributeConfig); + } + } + + return updatePayload; + } + + function addProperties(updatePayload, props, validAttributes) { + return diffProperties(updatePayload, emptyObject$1, props, validAttributes); + } + + function clearProperties(updatePayload, prevProps, validAttributes) { + return diffProperties(updatePayload, prevProps, emptyObject$1, validAttributes); + } + + function create(props, validAttributes) { + return addProperties(null, props, validAttributes); + } + + function diff(prevProps, nextProps, validAttributes) { + return diffProperties(null, prevProps, nextProps, validAttributes); + } + + function mountSafeCallback(context, callback) { + return function () { + if (!callback) { + return undefined; + } + + if (typeof context.__isMounted === "boolean") { + if (!context.__isMounted) { + return undefined; + } + } else if (typeof context.isMounted === "function") { + if (!context.isMounted()) { + return undefined; + } + } + + return callback.apply(context, arguments); + }; + } + + function throwOnStylesProp(component, props) { + if (props.styles !== undefined) { + var owner = component._owner || null; + var name = component.constructor.displayName; + var msg = "`styles` is not a supported property of `" + name + "`, did " + "you mean `style` (singular)?"; + + if (owner && owner.constructor && owner.constructor.displayName) { + msg += "\n\nCheck the `" + owner.constructor.displayName + "` parent " + " component."; + } + + throw new Error(msg); + } + } + + function warnForStyleProps(props, validAttributes) { + for (var key in validAttributes.style) { + if (!(validAttributes[key] || props[key] === undefined)) { + console.error("You are setting the style `{ " + key + ": ... }` as a prop. You " + "should nest it in a style object. " + "E.g. `{ style: { " + key + ": ... } }`"); + } + } + } + + function get(key) { + return key._reactInternalFiber; + } + + function set(key, value) { + key._reactInternalFiber = value; + } + + function getComponentName(fiber) { + var type = fiber.type; + + if (typeof type === "string") { + return type; + } + + if (typeof type === "function") { + return type.displayName || type.name; + } + + return null; + } + + var _require = require(_dependencyMap[15], "ReactFeatureFlags"); + + var debugRenderPhaseSideEffects = _require.debugRenderPhaseSideEffects; + var enableAsyncSubtreeAPI = true; + var enableUserTimingAPI = true; + var enableMutatingReconciler = true; + var enableNoopReconciler = false; + var enablePersistentReconciler = false; + var NoEffect = 0; + var PerformedWork = 1; + var Placement = 2; + var Update = 4; + var PlacementAndUpdate = 6; + var Deletion = 8; + var ContentReset = 16; + var Callback = 32; + var Err = 64; + var Ref = 128; + var MOUNTING = 1; + var MOUNTED = 2; + var UNMOUNTED = 3; + + function isFiberMountedImpl(fiber) { + var node = fiber; + + if (!fiber.alternate) { + if ((node.effectTag & Placement) !== NoEffect) { + return MOUNTING; + } + + while (node["return"]) { + node = node["return"]; + + if ((node.effectTag & Placement) !== NoEffect) { + return MOUNTING; + } + } + } else { + while (node["return"]) { + node = node["return"]; + } + } + + if (node.tag === HostRoot) { + return MOUNTED; + } + + return UNMOUNTED; + } + + function isFiberMounted(fiber) { + return isFiberMountedImpl(fiber) === MOUNTED; + } + + function isMounted(component) { + { + var owner = ReactCurrentOwner.current; + + if (owner !== null && owner.tag === ClassComponent) { + var ownerFiber = owner; + var instance = ownerFiber.stateNode; + warning(instance._warnedAboutRefsInRender, "%s is accessing isMounted inside its render() function. " + "render() should be a pure function of props and state. It should " + "never access something that requires stale data from the previous " + "render, such as refs. Move this logic to componentDidMount and " + "componentDidUpdate instead.", getComponentName(ownerFiber) || "A component"); + instance._warnedAboutRefsInRender = true; + } + } + var fiber = get(component); + + if (!fiber) { + return false; + } + + return isFiberMountedImpl(fiber) === MOUNTED; + } + + function assertIsMounted(fiber) { + invariant(isFiberMountedImpl(fiber) === MOUNTED, "Unable to find node on an unmounted component."); + } + + function findCurrentFiberUsingSlowPath(fiber) { + var alternate = fiber.alternate; + + if (!alternate) { + var state = isFiberMountedImpl(fiber); + invariant(state !== UNMOUNTED, "Unable to find node on an unmounted component."); + + if (state === MOUNTING) { + return null; + } + + return fiber; + } + + var a = fiber; + var b = alternate; + + while (true) { + var parentA = a["return"]; + var parentB = parentA ? parentA.alternate : null; + + if (!parentA || !parentB) { + break; + } + + if (parentA.child === parentB.child) { + var child = parentA.child; + + while (child) { + if (child === a) { + assertIsMounted(parentA); + return fiber; + } + + if (child === b) { + assertIsMounted(parentA); + return alternate; + } + + child = child.sibling; + } + + invariant(false, "Unable to find node on an unmounted component."); + } + + if (a["return"] !== b["return"]) { + a = parentA; + b = parentB; + } else { + var didFindChild = false; + var _child = parentA.child; + + while (_child) { + if (_child === a) { + didFindChild = true; + a = parentA; + b = parentB; + break; + } + + if (_child === b) { + didFindChild = true; + b = parentA; + a = parentB; + break; + } + + _child = _child.sibling; + } + + if (!didFindChild) { + _child = parentB.child; + + while (_child) { + if (_child === a) { + didFindChild = true; + a = parentB; + b = parentA; + break; + } + + if (_child === b) { + didFindChild = true; + b = parentB; + a = parentA; + break; + } + + _child = _child.sibling; + } + + invariant(didFindChild, "Child was not found in either parent set. This indicates a bug " + "in React related to the return pointer. Please file an issue."); + } + } + + invariant(a.alternate === b, "Return fibers should always be each others' alternates. " + "This error is likely caused by a bug in React. Please file an issue."); + } + + invariant(a.tag === HostRoot, "Unable to find node on an unmounted component."); + + if (a.stateNode.current === a) { + return fiber; + } + + return alternate; + } + + function findCurrentHostFiber(parent) { + var currentParent = findCurrentFiberUsingSlowPath(parent); + + if (!currentParent) { + return null; + } + + var node = currentParent; + + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + return node; + } else if (node.child) { + node.child["return"] = node; + node = node.child; + continue; + } + + if (node === currentParent) { + return null; + } + + while (!node.sibling) { + if (!node["return"] || node["return"] === currentParent) { + return null; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + + return null; + } + + function findCurrentHostFiberWithNoPortals(parent) { + var currentParent = findCurrentFiberUsingSlowPath(parent); + + if (!currentParent) { + return null; + } + + var node = currentParent; + + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + return node; + } else if (node.child && node.tag !== HostPortal) { + node.child["return"] = node; + node = node.child; + continue; + } + + if (node === currentParent) { + return null; + } + + while (!node.sibling) { + if (!node["return"] || node["return"] === currentParent) { + return null; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + + return null; + } + + var valueStack = []; + { + var fiberStack = []; + } + var index = -1; + + function createCursor(defaultValue) { + return { + current: defaultValue + }; + } + + function pop(cursor, fiber) { + if (index < 0) { + { + warning(false, "Unexpected pop."); + } + return; + } + + { + if (fiber !== fiberStack[index]) { + warning(false, "Unexpected Fiber popped."); + } + } + cursor.current = valueStack[index]; + valueStack[index] = null; + { + fiberStack[index] = null; + } + index--; + } + + function push(cursor, value, fiber) { + index++; + valueStack[index] = cursor.current; + { + fiberStack[index] = fiber; + } + cursor.current = value; + } + + function reset() { + while (index > -1) { + valueStack[index] = null; + { + fiberStack[index] = null; + } + index--; + } + } + + var describeComponentFrame = function describeComponentFrame(name, source, ownerName) { + return "\n in " + (name || "Unknown") + (source ? " (at " + source.fileName.replace(/^.*[\\\/]/, "") + ":" + source.lineNumber + ")" : ownerName ? " (created by " + ownerName + ")" : ""); + }; + + function describeFiber(fiber) { + switch (fiber.tag) { + case IndeterminateComponent: + case FunctionalComponent: + case ClassComponent: + case HostComponent: + var owner = fiber._debugOwner; + var source = fiber._debugSource; + var name = getComponentName(fiber); + var ownerName = null; + + if (owner) { + ownerName = getComponentName(owner); + } + + return describeComponentFrame(name, source, ownerName); + + default: + return ""; + } + } + + function getStackAddendumByWorkInProgressFiber(workInProgress) { + var info = ""; + var node = workInProgress; + + do { + info += describeFiber(node); + node = node["return"]; + } while (node); + + return info; + } + + function getCurrentFiberOwnerName() { + { + var fiber = ReactDebugCurrentFiber.current; + + if (fiber === null) { + return null; + } + + var owner = fiber._debugOwner; + + if (owner !== null && typeof owner !== "undefined") { + return getComponentName(owner); + } + } + return null; + } + + function getCurrentFiberStackAddendum() { + { + var fiber = ReactDebugCurrentFiber.current; + + if (fiber === null) { + return null; + } + + return getStackAddendumByWorkInProgressFiber(fiber); + } + return null; + } + + function resetCurrentFiber() { + ReactDebugCurrentFrame.getCurrentStack = null; + ReactDebugCurrentFiber.current = null; + ReactDebugCurrentFiber.phase = null; + } + + function setCurrentFiber(fiber) { + ReactDebugCurrentFrame.getCurrentStack = getCurrentFiberStackAddendum; + ReactDebugCurrentFiber.current = fiber; + ReactDebugCurrentFiber.phase = null; + } + + function setCurrentPhase(phase) { + ReactDebugCurrentFiber.phase = phase; + } + + var ReactDebugCurrentFiber = { + current: null, + phase: null, + resetCurrentFiber: resetCurrentFiber, + setCurrentFiber: setCurrentFiber, + setCurrentPhase: setCurrentPhase, + getCurrentFiberOwnerName: getCurrentFiberOwnerName, + getCurrentFiberStackAddendum: getCurrentFiberStackAddendum + }; + var reactEmoji = "\u269B"; + var warningEmoji = "\u26D4"; + var supportsUserTiming = typeof performance !== "undefined" && typeof performance.mark === "function" && typeof performance.clearMarks === "function" && typeof performance.measure === "function" && typeof performance.clearMeasures === "function"; + var currentFiber = null; + var currentPhase = null; + var currentPhaseFiber = null; + var isCommitting = false; + var hasScheduledUpdateInCurrentCommit = false; + var hasScheduledUpdateInCurrentPhase = false; + var commitCountInCurrentWorkLoop = 0; + var effectCountInCurrentCommit = 0; + var isWaitingForCallback = false; + var labelsInCurrentCommit = new Set(); + + var formatMarkName = function formatMarkName(markName) { + return reactEmoji + " " + markName; + }; + + var formatLabel = function formatLabel(label, warning$$1) { + var prefix = warning$$1 ? warningEmoji + " " : reactEmoji + " "; + var suffix = warning$$1 ? " Warning: " + warning$$1 : ""; + return "" + prefix + label + suffix; + }; + + var beginMark = function beginMark(markName) { + performance.mark(formatMarkName(markName)); + }; + + var clearMark = function clearMark(markName) { + performance.clearMarks(formatMarkName(markName)); + }; + + var endMark = function endMark(label, markName, warning$$1) { + var formattedMarkName = formatMarkName(markName); + var formattedLabel = formatLabel(label, warning$$1); + + try { + performance.measure(formattedLabel, formattedMarkName); + } catch (err) {} + + performance.clearMarks(formattedMarkName); + performance.clearMeasures(formattedLabel); + }; + + var getFiberMarkName = function getFiberMarkName(label, debugID) { + return label + " (#" + debugID + ")"; + }; + + var getFiberLabel = function getFiberLabel(componentName, isMounted, phase) { + if (phase === null) { + return componentName + " [" + (isMounted ? "update" : "mount") + "]"; + } else { + return componentName + "." + phase; + } + }; + + var beginFiberMark = function beginFiberMark(fiber, phase) { + var componentName = getComponentName(fiber) || "Unknown"; + var debugID = fiber._debugID; + var isMounted = fiber.alternate !== null; + var label = getFiberLabel(componentName, isMounted, phase); + + if (isCommitting && labelsInCurrentCommit.has(label)) { + return false; + } + + labelsInCurrentCommit.add(label); + var markName = getFiberMarkName(label, debugID); + beginMark(markName); + return true; + }; + + var clearFiberMark = function clearFiberMark(fiber, phase) { + var componentName = getComponentName(fiber) || "Unknown"; + var debugID = fiber._debugID; + var isMounted = fiber.alternate !== null; + var label = getFiberLabel(componentName, isMounted, phase); + var markName = getFiberMarkName(label, debugID); + clearMark(markName); + }; + + var endFiberMark = function endFiberMark(fiber, phase, warning$$1) { + var componentName = getComponentName(fiber) || "Unknown"; + var debugID = fiber._debugID; + var isMounted = fiber.alternate !== null; + var label = getFiberLabel(componentName, isMounted, phase); + var markName = getFiberMarkName(label, debugID); + endMark(label, markName, warning$$1); + }; + + var shouldIgnoreFiber = function shouldIgnoreFiber(fiber) { + switch (fiber.tag) { + case HostRoot: + case HostComponent: + case HostText: + case HostPortal: + case ReturnComponent: + case Fragment: + return true; + + default: + return false; + } + }; + + var clearPendingPhaseMeasurement = function clearPendingPhaseMeasurement() { + if (currentPhase !== null && currentPhaseFiber !== null) { + clearFiberMark(currentPhaseFiber, currentPhase); + } + + currentPhaseFiber = null; + currentPhase = null; + hasScheduledUpdateInCurrentPhase = false; + }; + + var pauseTimers = function pauseTimers() { + var fiber = currentFiber; + + while (fiber) { + if (fiber._debugIsCurrentlyTiming) { + endFiberMark(fiber, null, null); + } + + fiber = fiber["return"]; + } + }; + + var resumeTimersRecursively = function resumeTimersRecursively(fiber) { + if (fiber["return"] !== null) { + resumeTimersRecursively(fiber["return"]); + } + + if (fiber._debugIsCurrentlyTiming) { + beginFiberMark(fiber, null); + } + }; + + var resumeTimers = function resumeTimers() { + if (currentFiber !== null) { + resumeTimersRecursively(currentFiber); + } + }; + + function recordEffect() { + if (enableUserTimingAPI) { + effectCountInCurrentCommit++; + } + } + + function recordScheduleUpdate() { + if (enableUserTimingAPI) { + if (isCommitting) { + hasScheduledUpdateInCurrentCommit = true; + } + + if (currentPhase !== null && currentPhase !== "componentWillMount" && currentPhase !== "componentWillReceiveProps") { + hasScheduledUpdateInCurrentPhase = true; + } + } + } + + function startRequestCallbackTimer() { + if (enableUserTimingAPI) { + if (supportsUserTiming && !isWaitingForCallback) { + isWaitingForCallback = true; + beginMark("(Waiting for async callback...)"); + } + } + } + + function stopRequestCallbackTimer(didExpire) { + if (enableUserTimingAPI) { + if (supportsUserTiming) { + isWaitingForCallback = false; + var warning$$1 = didExpire ? "React was blocked by main thread" : null; + endMark("(Waiting for async callback...)", "(Waiting for async callback...)", warning$$1); + } + } + } + + function startWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + + currentFiber = fiber; + + if (!beginFiberMark(fiber, null)) { + return; + } + + fiber._debugIsCurrentlyTiming = true; + } + } + + function cancelWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + + fiber._debugIsCurrentlyTiming = false; + clearFiberMark(fiber, null); + } + } + + function stopWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + + currentFiber = fiber["return"]; + + if (!fiber._debugIsCurrentlyTiming) { + return; + } + + fiber._debugIsCurrentlyTiming = false; + endFiberMark(fiber, null, null); + } + } + + function stopFailedWorkTimer(fiber) { + if (enableUserTimingAPI) { + if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { + return; + } + + currentFiber = fiber["return"]; + + if (!fiber._debugIsCurrentlyTiming) { + return; + } + + fiber._debugIsCurrentlyTiming = false; + var warning$$1 = "An error was thrown inside this error boundary"; + endFiberMark(fiber, null, warning$$1); + } + } + + function startPhaseTimer(fiber, phase) { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + clearPendingPhaseMeasurement(); + + if (!beginFiberMark(fiber, phase)) { + return; + } + + currentPhaseFiber = fiber; + currentPhase = phase; + } + } + + function stopPhaseTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + if (currentPhase !== null && currentPhaseFiber !== null) { + var warning$$1 = hasScheduledUpdateInCurrentPhase ? "Scheduled a cascading update" : null; + endFiberMark(currentPhaseFiber, currentPhase, warning$$1); + } + + currentPhase = null; + currentPhaseFiber = null; + } + } + + function startWorkLoopTimer(nextUnitOfWork) { + if (enableUserTimingAPI) { + currentFiber = nextUnitOfWork; + + if (!supportsUserTiming) { + return; + } + + commitCountInCurrentWorkLoop = 0; + beginMark("(React Tree Reconciliation)"); + resumeTimers(); + } + } + + function stopWorkLoopTimer(interruptedBy) { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + var warning$$1 = null; + + if (interruptedBy !== null) { + if (interruptedBy.tag === HostRoot) { + warning$$1 = "A top-level update interrupted the previous render"; + } else { + var componentName = getComponentName(interruptedBy) || "Unknown"; + warning$$1 = "An update to " + componentName + " interrupted the previous render"; + } + } else if (commitCountInCurrentWorkLoop > 1) { + warning$$1 = "There were cascading updates"; + } + + commitCountInCurrentWorkLoop = 0; + pauseTimers(); + endMark("(React Tree Reconciliation)", "(React Tree Reconciliation)", warning$$1); + } + } + + function startCommitTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + isCommitting = true; + hasScheduledUpdateInCurrentCommit = false; + labelsInCurrentCommit.clear(); + beginMark("(Committing Changes)"); + } + } + + function stopCommitTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + var warning$$1 = null; + + if (hasScheduledUpdateInCurrentCommit) { + warning$$1 = "Lifecycle hook scheduled a cascading update"; + } else if (commitCountInCurrentWorkLoop > 0) { + warning$$1 = "Caused by a cascading update in earlier commit"; + } + + hasScheduledUpdateInCurrentCommit = false; + commitCountInCurrentWorkLoop++; + isCommitting = false; + labelsInCurrentCommit.clear(); + endMark("(Committing Changes)", "(Committing Changes)", warning$$1); + } + } + + function startCommitHostEffectsTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + effectCountInCurrentCommit = 0; + beginMark("(Committing Host Effects)"); + } + } + + function stopCommitHostEffectsTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + var count = effectCountInCurrentCommit; + effectCountInCurrentCommit = 0; + endMark("(Committing Host Effects: " + count + " Total)", "(Committing Host Effects)", null); + } + } + + function startCommitLifeCyclesTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + effectCountInCurrentCommit = 0; + beginMark("(Calling Lifecycle Methods)"); + } + } + + function stopCommitLifeCyclesTimer() { + if (enableUserTimingAPI) { + if (!supportsUserTiming) { + return; + } + + var count = effectCountInCurrentCommit; + effectCountInCurrentCommit = 0; + endMark("(Calling Lifecycle Methods: " + count + " Total)", "(Calling Lifecycle Methods)", null); + } + } + + { + var warnedAboutMissingGetChildContext = {}; + } + var contextStackCursor = createCursor(emptyObject); + var didPerformWorkStackCursor = createCursor(false); + var previousContext = emptyObject; + + function getUnmaskedContext(workInProgress) { + var hasOwnContext = isContextProvider(workInProgress); + + if (hasOwnContext) { + return previousContext; + } + + return contextStackCursor.current; + } + + function cacheContext(workInProgress, unmaskedContext, maskedContext) { + var instance = workInProgress.stateNode; + instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext; + instance.__reactInternalMemoizedMaskedChildContext = maskedContext; + } + + function getMaskedContext(workInProgress, unmaskedContext) { + var type = workInProgress.type; + var contextTypes = type.contextTypes; + + if (!contextTypes) { + return emptyObject; + } + + var instance = workInProgress.stateNode; + + if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) { + return instance.__reactInternalMemoizedMaskedChildContext; + } + + var context = {}; + + for (var key in contextTypes) { + context[key] = unmaskedContext[key]; + } + + { + var name = getComponentName(workInProgress) || "Unknown"; + checkPropTypes(contextTypes, context, "context", name, ReactDebugCurrentFiber.getCurrentFiberStackAddendum); + } + + if (instance) { + cacheContext(workInProgress, unmaskedContext, context); + } + + return context; + } + + function hasContextChanged() { + return didPerformWorkStackCursor.current; + } + + function isContextConsumer(fiber) { + return fiber.tag === ClassComponent && fiber.type.contextTypes != null; + } + + function isContextProvider(fiber) { + return fiber.tag === ClassComponent && fiber.type.childContextTypes != null; + } + + function popContextProvider(fiber) { + if (!isContextProvider(fiber)) { + return; + } + + pop(didPerformWorkStackCursor, fiber); + pop(contextStackCursor, fiber); + } + + function popTopLevelContextObject(fiber) { + pop(didPerformWorkStackCursor, fiber); + pop(contextStackCursor, fiber); + } + + function pushTopLevelContextObject(fiber, context, didChange) { + invariant(contextStackCursor.cursor == null, "Unexpected context found on stack. " + "This error is likely caused by a bug in React. Please file an issue."); + push(contextStackCursor, context, fiber); + push(didPerformWorkStackCursor, didChange, fiber); + } + + function processChildContext(fiber, parentContext) { + var instance = fiber.stateNode; + var childContextTypes = fiber.type.childContextTypes; + + if (typeof instance.getChildContext !== "function") { + { + var componentName = getComponentName(fiber) || "Unknown"; + + if (!warnedAboutMissingGetChildContext[componentName]) { + warnedAboutMissingGetChildContext[componentName] = true; + warning(false, "%s.childContextTypes is specified but there is no getChildContext() method " + "on the instance. You can either define getChildContext() on %s or remove " + "childContextTypes from it.", componentName, componentName); + } + } + return parentContext; + } + + var childContext = void 0; + { + ReactDebugCurrentFiber.setCurrentPhase("getChildContext"); + } + startPhaseTimer(fiber, "getChildContext"); + childContext = instance.getChildContext(); + stopPhaseTimer(); + { + ReactDebugCurrentFiber.setCurrentPhase(null); + } + + for (var contextKey in childContext) { + invariant(contextKey in childContextTypes, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', getComponentName(fiber) || "Unknown", contextKey); + } + + { + var name = getComponentName(fiber) || "Unknown"; + checkPropTypes(childContextTypes, childContext, "child context", name, ReactDebugCurrentFiber.getCurrentFiberStackAddendum); + } + return babelHelpers.extends({}, parentContext, childContext); + } + + function pushContextProvider(workInProgress) { + if (!isContextProvider(workInProgress)) { + return false; + } + + var instance = workInProgress.stateNode; + var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyObject; + previousContext = contextStackCursor.current; + push(contextStackCursor, memoizedMergedChildContext, workInProgress); + push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress); + return true; + } + + function invalidateContextProvider(workInProgress, didChange) { + var instance = workInProgress.stateNode; + invariant(instance, "Expected to have an instance by this point. " + "This error is likely caused by a bug in React. Please file an issue."); + + if (didChange) { + var mergedContext = processChildContext(workInProgress, previousContext); + instance.__reactInternalMemoizedMergedChildContext = mergedContext; + pop(didPerformWorkStackCursor, workInProgress); + pop(contextStackCursor, workInProgress); + push(contextStackCursor, mergedContext, workInProgress); + push(didPerformWorkStackCursor, didChange, workInProgress); + } else { + pop(didPerformWorkStackCursor, workInProgress); + push(didPerformWorkStackCursor, didChange, workInProgress); + } + } + + function resetContext() { + previousContext = emptyObject; + contextStackCursor.current = emptyObject; + didPerformWorkStackCursor.current = false; + } + + function findCurrentUnmaskedContext(fiber) { + invariant(isFiberMounted(fiber) && fiber.tag === ClassComponent, "Expected subtree parent to be a mounted class component. " + "This error is likely caused by a bug in React. Please file an issue."); + var node = fiber; + + while (node.tag !== HostRoot) { + if (isContextProvider(node)) { + return node.stateNode.__reactInternalMemoizedMergedChildContext; + } + + var parent = node["return"]; + invariant(parent, "Found unexpected detached subtree parent. " + "This error is likely caused by a bug in React. Please file an issue."); + node = parent; + } + + return node.stateNode.context; + } + + var NoWork = 0; + var Sync = 1; + var Never = 2147483647; + var UNIT_SIZE = 10; + var MAGIC_NUMBER_OFFSET = 2; + + function msToExpirationTime(ms) { + return (ms / UNIT_SIZE | 0) + MAGIC_NUMBER_OFFSET; + } + + function expirationTimeToMs(expirationTime) { + return (expirationTime - MAGIC_NUMBER_OFFSET) * UNIT_SIZE; + } + + function ceiling(num, precision) { + return ((num / precision | 0) + 1) * precision; + } + + function computeExpirationBucket(currentTime, expirationInMs, bucketSizeMs) { + return ceiling(currentTime + expirationInMs / UNIT_SIZE, bucketSizeMs / UNIT_SIZE); + } + + var NoContext = 0; + var AsyncUpdates = 1; + { + var hasBadMapPolyfill = false; + + try { + var nonExtensibleObject = Object.preventExtensions({}); + new Map([[nonExtensibleObject, null]]); + new Set([nonExtensibleObject]); + } catch (e) { + hasBadMapPolyfill = true; + } + } + { + var debugCounter = 1; + } + + function FiberNode(tag, pendingProps, key, internalContextTag) { + this.tag = tag; + this.key = key; + this.type = null; + this.stateNode = null; + this["return"] = null; + this.child = null; + this.sibling = null; + this.index = 0; + this.ref = null; + this.pendingProps = pendingProps; + this.memoizedProps = null; + this.updateQueue = null; + this.memoizedState = null; + this.internalContextTag = internalContextTag; + this.effectTag = NoEffect; + this.nextEffect = null; + this.firstEffect = null; + this.lastEffect = null; + this.expirationTime = NoWork; + this.alternate = null; + { + this._debugID = debugCounter++; + this._debugSource = null; + this._debugOwner = null; + this._debugIsCurrentlyTiming = false; + + if (!hasBadMapPolyfill && typeof Object.preventExtensions === "function") { + Object.preventExtensions(this); + } + } + } + + var createFiber = function createFiber(tag, pendingProps, key, internalContextTag) { + return new FiberNode(tag, pendingProps, key, internalContextTag); + }; + + function shouldConstruct(Component) { + return !!(Component.prototype && Component.prototype.isReactComponent); + } + + function createWorkInProgress(current, pendingProps, expirationTime) { + var workInProgress = current.alternate; + + if (workInProgress === null) { + workInProgress = createFiber(current.tag, pendingProps, current.key, current.internalContextTag); + workInProgress.type = current.type; + workInProgress.stateNode = current.stateNode; + { + workInProgress._debugID = current._debugID; + workInProgress._debugSource = current._debugSource; + workInProgress._debugOwner = current._debugOwner; + } + workInProgress.alternate = current; + current.alternate = workInProgress; + } else { + workInProgress.pendingProps = pendingProps; + workInProgress.effectTag = NoEffect; + workInProgress.nextEffect = null; + workInProgress.firstEffect = null; + workInProgress.lastEffect = null; + } + + workInProgress.expirationTime = expirationTime; + workInProgress.child = current.child; + workInProgress.memoizedProps = current.memoizedProps; + workInProgress.memoizedState = current.memoizedState; + workInProgress.updateQueue = current.updateQueue; + workInProgress.sibling = current.sibling; + workInProgress.index = current.index; + workInProgress.ref = current.ref; + return workInProgress; + } + + function createHostRootFiber() { + var fiber = createFiber(HostRoot, null, NoContext); + return fiber; + } + + function createFiberFromElement(element, internalContextTag, expirationTime) { + var owner = null; + { + owner = element._owner; + } + var fiber = void 0; + var type = element.type; + var key = element.key; + var pendingProps = element.props; + + if (typeof type === "function") { + fiber = shouldConstruct(type) ? createFiber(ClassComponent, pendingProps, key, internalContextTag) : createFiber(IndeterminateComponent, pendingProps, key, internalContextTag); + fiber.type = type; + } else if (typeof type === "string") { + fiber = createFiber(HostComponent, pendingProps, key, internalContextTag); + fiber.type = type; + } else if (typeof type === "object" && type !== null && typeof type.tag === "number") { + fiber = type; + fiber.pendingProps = pendingProps; + } else { + var info = ""; + { + if (type === undefined || typeof type === "object" && type !== null && Object.keys(type).length === 0) { + info += " You likely forgot to export your component from the file " + "it's defined in, or you might have mixed up default and named imports."; + } + + var ownerName = owner ? getComponentName(owner) : null; + + if (ownerName) { + info += "\n\nCheck the render method of `" + ownerName + "`."; + } + } + invariant(false, "Element type is invalid: expected a string (for built-in components) " + "or a class/function (for composite components) but got: %s.%s", type == null ? type : typeof type, info); + } + + { + fiber._debugSource = element._source; + fiber._debugOwner = element._owner; + } + fiber.expirationTime = expirationTime; + return fiber; + } + + function createFiberFromFragment(elements, internalContextTag, expirationTime, key) { + var fiber = createFiber(Fragment, elements, key, internalContextTag); + fiber.expirationTime = expirationTime; + return fiber; + } + + function createFiberFromText(content, internalContextTag, expirationTime) { + var fiber = createFiber(HostText, content, null, internalContextTag); + fiber.expirationTime = expirationTime; + return fiber; + } + + function createFiberFromHostInstanceForDeletion() { + var fiber = createFiber(HostComponent, null, null, NoContext); + fiber.type = "DELETED"; + return fiber; + } + + function createFiberFromCall(call, internalContextTag, expirationTime) { + var fiber = createFiber(CallComponent, call, call.key, internalContextTag); + fiber.type = call.handler; + fiber.expirationTime = expirationTime; + return fiber; + } + + function createFiberFromReturn(returnNode, internalContextTag, expirationTime) { + var fiber = createFiber(ReturnComponent, null, null, internalContextTag); + fiber.expirationTime = expirationTime; + return fiber; + } + + function createFiberFromPortal(portal, internalContextTag, expirationTime) { + var pendingProps = portal.children !== null ? portal.children : []; + var fiber = createFiber(HostPortal, pendingProps, portal.key, internalContextTag); + fiber.expirationTime = expirationTime; + fiber.stateNode = { + containerInfo: portal.containerInfo, + pendingChildren: null, + implementation: portal.implementation + }; + return fiber; + } + + function createFiberRoot(containerInfo, hydrate) { + var uninitializedFiber = createHostRootFiber(); + var root = { + current: uninitializedFiber, + containerInfo: containerInfo, + pendingChildren: null, + remainingExpirationTime: NoWork, + isReadyForCommit: false, + finishedWork: null, + context: null, + pendingContext: null, + hydrate: hydrate, + firstBatch: null, + nextScheduledRoot: null + }; + uninitializedFiber.stateNode = root; + return root; + } + + var onCommitFiberRoot = null; + var onCommitFiberUnmount = null; + var hasLoggedError = false; + + function catchErrors(fn) { + return function (arg) { + try { + return fn(arg); + } catch (err) { + if (true && !hasLoggedError) { + hasLoggedError = true; + warning(false, "React DevTools encountered an error: %s", err); + } + } + }; + } + + function injectInternals(internals) { + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined") { + return false; + } + + var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__; + + if (hook.isDisabled) { + return true; + } + + if (!hook.supportsFiber) { + { + warning(false, "The installed version of React DevTools is too old and will not work " + "with the current version of React. Please update React DevTools. " + "https://fb.me/react-devtools"); + } + return true; + } + + try { + var rendererID = hook.inject(internals); + onCommitFiberRoot = catchErrors(function (root) { + return hook.onCommitFiberRoot(rendererID, root); + }); + onCommitFiberUnmount = catchErrors(function (fiber) { + return hook.onCommitFiberUnmount(rendererID, fiber); + }); + } catch (err) { + { + warning(false, "React DevTools encountered an error: %s.", err); + } + } + + return true; + } + + function onCommitRoot(root) { + if (typeof onCommitFiberRoot === "function") { + onCommitFiberRoot(root); + } + } + + function onCommitUnmount(fiber) { + if (typeof onCommitFiberUnmount === "function") { + onCommitFiberUnmount(fiber); + } + } + + { + var didWarnUpdateInsideUpdate = false; + } + + function createUpdateQueue(baseState) { + var queue = { + baseState: baseState, + expirationTime: NoWork, + first: null, + last: null, + callbackList: null, + hasForceUpdate: false, + isInitialized: false + }; + { + queue.isProcessing = false; + } + return queue; + } + + function insertUpdateIntoQueue(queue, update) { + if (queue.last === null) { + queue.first = queue.last = update; + } else { + queue.last.next = update; + queue.last = update; + } + + if (queue.expirationTime === NoWork || queue.expirationTime > update.expirationTime) { + queue.expirationTime = update.expirationTime; + } + } + + function insertUpdateIntoFiber(fiber, update) { + var alternateFiber = fiber.alternate; + var queue1 = fiber.updateQueue; + + if (queue1 === null) { + queue1 = fiber.updateQueue = createUpdateQueue(null); + } + + var queue2 = void 0; + + if (alternateFiber !== null) { + queue2 = alternateFiber.updateQueue; + + if (queue2 === null) { + queue2 = alternateFiber.updateQueue = createUpdateQueue(null); + } + } else { + queue2 = null; + } + + queue2 = queue2 !== queue1 ? queue2 : null; + { + if ((queue1.isProcessing || queue2 !== null && queue2.isProcessing) && !didWarnUpdateInsideUpdate) { + warning(false, "An update (setState, replaceState, or forceUpdate) was scheduled " + "from inside an update function. Update functions should be pure, " + "with zero side-effects. Consider using componentDidUpdate or a " + "callback."); + didWarnUpdateInsideUpdate = true; + } + } + + if (queue2 === null) { + insertUpdateIntoQueue(queue1, update); + return; + } + + if (queue1.last === null || queue2.last === null) { + insertUpdateIntoQueue(queue1, update); + insertUpdateIntoQueue(queue2, update); + return; + } + + insertUpdateIntoQueue(queue1, update); + queue2.last = update; + } + + function getUpdateExpirationTime(fiber) { + if (fiber.tag !== ClassComponent && fiber.tag !== HostRoot) { + return NoWork; + } + + var updateQueue = fiber.updateQueue; + + if (updateQueue === null) { + return NoWork; + } + + return updateQueue.expirationTime; + } + + function getStateFromUpdate(update, instance, prevState, props) { + var partialState = update.partialState; + + if (typeof partialState === "function") { + var updateFn = partialState; + + if (debugRenderPhaseSideEffects) { + updateFn.call(instance, prevState, props); + } + + return updateFn.call(instance, prevState, props); + } else { + return partialState; + } + } + + function processUpdateQueue(current, workInProgress, queue, instance, props, renderExpirationTime) { + if (current !== null && current.updateQueue === queue) { + var currentQueue = queue; + queue = workInProgress.updateQueue = { + baseState: currentQueue.baseState, + expirationTime: currentQueue.expirationTime, + first: currentQueue.first, + last: currentQueue.last, + isInitialized: currentQueue.isInitialized, + callbackList: null, + hasForceUpdate: false + }; + } + + { + queue.isProcessing = true; + } + queue.expirationTime = NoWork; + var state = void 0; + + if (queue.isInitialized) { + state = queue.baseState; + } else { + state = queue.baseState = workInProgress.memoizedState; + queue.isInitialized = true; + } + + var dontMutatePrevState = true; + var update = queue.first; + var didSkip = false; + + while (update !== null) { + var updateExpirationTime = update.expirationTime; + + if (updateExpirationTime > renderExpirationTime) { + var remainingExpirationTime = queue.expirationTime; + + if (remainingExpirationTime === NoWork || remainingExpirationTime > updateExpirationTime) { + queue.expirationTime = updateExpirationTime; + } + + if (!didSkip) { + didSkip = true; + queue.baseState = state; + } + + update = update.next; + continue; + } + + if (!didSkip) { + queue.first = update.next; + + if (queue.first === null) { + queue.last = null; + } + } + + var _partialState = void 0; + + if (update.isReplace) { + state = getStateFromUpdate(update, instance, state, props); + dontMutatePrevState = true; + } else { + _partialState = getStateFromUpdate(update, instance, state, props); + + if (_partialState) { + if (dontMutatePrevState) { + state = babelHelpers.extends({}, state, _partialState); + } else { + state = babelHelpers.extends(state, _partialState); + } + + dontMutatePrevState = false; + } + } + + if (update.isForced) { + queue.hasForceUpdate = true; + } + + if (update.callback !== null) { + var _callbackList = queue.callbackList; + + if (_callbackList === null) { + _callbackList = queue.callbackList = []; + } + + _callbackList.push(update); + } + + update = update.next; + } + + if (queue.callbackList !== null) { + workInProgress.effectTag |= Callback; + } else if (queue.first === null && !queue.hasForceUpdate) { + workInProgress.updateQueue = null; + } + + if (!didSkip) { + didSkip = true; + queue.baseState = state; + } + + { + queue.isProcessing = false; + } + return state; + } + + function commitCallbacks(queue, context) { + var callbackList = queue.callbackList; + + if (callbackList === null) { + return; + } + + queue.callbackList = null; + + for (var i = 0; i < callbackList.length; i++) { + var update = callbackList[i]; + var _callback = update.callback; + update.callback = null; + invariant(typeof _callback === "function", "Invalid argument passed as callback. Expected a function. Instead " + "received: %s", _callback); + + _callback.call(context); + } + } + + var fakeInternalInstance = {}; + var isArray = Array.isArray; + { + var didWarnAboutStateAssignmentForComponent = {}; + + var warnOnInvalidCallback = function warnOnInvalidCallback(callback, callerName) { + warning(callback === null || typeof callback === "function", "%s(...): Expected the last optional `callback` argument to be a " + "function. Instead received: %s.", callerName, callback); + }; + + Object.defineProperty(fakeInternalInstance, "_processChildContext", { + enumerable: false, + value: function value() { + invariant(false, "_processChildContext is not available in React 16+. This likely " + "means you have multiple copies of React and are attempting to nest " + "a React 15 tree inside a React 16 tree using " + "unstable_renderSubtreeIntoContainer, which isn't supported. Try " + "to make sure you have only one copy of React (and ideally, switch " + "to ReactDOM.createPortal)."); + } + }); + Object.freeze(fakeInternalInstance); + } + + var ReactFiberClassComponent = function ReactFiberClassComponent(scheduleWork, computeExpirationForFiber, memoizeProps, memoizeState) { + var updater = { + isMounted: isMounted, + enqueueSetState: function enqueueSetState(instance, partialState, callback) { + var fiber = get(instance); + callback = callback === undefined ? null : callback; + { + warnOnInvalidCallback(callback, "setState"); + } + var expirationTime = computeExpirationForFiber(fiber); + var update = { + expirationTime: expirationTime, + partialState: partialState, + callback: callback, + isReplace: false, + isForced: false, + nextCallback: null, + next: null + }; + insertUpdateIntoFiber(fiber, update); + scheduleWork(fiber, expirationTime); + }, + enqueueReplaceState: function enqueueReplaceState(instance, state, callback) { + var fiber = get(instance); + callback = callback === undefined ? null : callback; + { + warnOnInvalidCallback(callback, "replaceState"); + } + var expirationTime = computeExpirationForFiber(fiber); + var update = { + expirationTime: expirationTime, + partialState: state, + callback: callback, + isReplace: true, + isForced: false, + nextCallback: null, + next: null + }; + insertUpdateIntoFiber(fiber, update); + scheduleWork(fiber, expirationTime); + }, + enqueueForceUpdate: function enqueueForceUpdate(instance, callback) { + var fiber = get(instance); + callback = callback === undefined ? null : callback; + { + warnOnInvalidCallback(callback, "forceUpdate"); + } + var expirationTime = computeExpirationForFiber(fiber); + var update = { + expirationTime: expirationTime, + partialState: null, + callback: callback, + isReplace: false, + isForced: true, + nextCallback: null, + next: null + }; + insertUpdateIntoFiber(fiber, update); + scheduleWork(fiber, expirationTime); + } + }; + + function checkShouldComponentUpdate(workInProgress, oldProps, newProps, oldState, newState, newContext) { + if (oldProps === null || workInProgress.updateQueue !== null && workInProgress.updateQueue.hasForceUpdate) { + return true; + } + + var instance = workInProgress.stateNode; + var type = workInProgress.type; + + if (typeof instance.shouldComponentUpdate === "function") { + startPhaseTimer(workInProgress, "shouldComponentUpdate"); + var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, newContext); + stopPhaseTimer(); + + if (debugRenderPhaseSideEffects) { + instance.shouldComponentUpdate(newProps, newState, newContext); + } + + { + warning(shouldUpdate !== undefined, "%s.shouldComponentUpdate(): Returned undefined instead of a " + "boolean value. Make sure to return true or false.", getComponentName(workInProgress) || "Unknown"); + } + return shouldUpdate; + } + + if (type.prototype && type.prototype.isPureReactComponent) { + return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState); + } + + return true; + } + + function checkClassInstance(workInProgress) { + var instance = workInProgress.stateNode; + var type = workInProgress.type; + { + var name = getComponentName(workInProgress); + var renderPresent = instance.render; + + if (!renderPresent) { + if (type.prototype && typeof type.prototype.render === "function") { + warning(false, "%s(...): No `render` method found on the returned component " + "instance: did you accidentally return an object from the constructor?", name); + } else { + warning(false, "%s(...): No `render` method found on the returned component " + "instance: you may have forgotten to define `render`.", name); + } + } + + var noGetInitialStateOnES6 = !instance.getInitialState || instance.getInitialState.isReactClassApproved || instance.state; + warning(noGetInitialStateOnES6, "getInitialState was defined on %s, a plain JavaScript class. " + "This is only supported for classes created using React.createClass. " + "Did you mean to define a state property instead?", name); + var noGetDefaultPropsOnES6 = !instance.getDefaultProps || instance.getDefaultProps.isReactClassApproved; + warning(noGetDefaultPropsOnES6, "getDefaultProps was defined on %s, a plain JavaScript class. " + "This is only supported for classes created using React.createClass. " + "Use a static property to define defaultProps instead.", name); + var noInstancePropTypes = !instance.propTypes; + warning(noInstancePropTypes, "propTypes was defined as an instance property on %s. Use a static " + "property to define propTypes instead.", name); + var noInstanceContextTypes = !instance.contextTypes; + warning(noInstanceContextTypes, "contextTypes was defined as an instance property on %s. Use a static " + "property to define contextTypes instead.", name); + var noComponentShouldUpdate = typeof instance.componentShouldUpdate !== "function"; + warning(noComponentShouldUpdate, "%s has a method called " + "componentShouldUpdate(). Did you mean shouldComponentUpdate()? " + "The name is phrased as a question because the function is " + "expected to return a value.", name); + + if (type.prototype && type.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== "undefined") { + warning(false, "%s has a method called shouldComponentUpdate(). " + "shouldComponentUpdate should not be used when extending React.PureComponent. " + "Please extend React.Component if shouldComponentUpdate is used.", getComponentName(workInProgress) || "A pure component"); + } + + var noComponentDidUnmount = typeof instance.componentDidUnmount !== "function"; + warning(noComponentDidUnmount, "%s has a method called " + "componentDidUnmount(). But there is no such lifecycle method. " + "Did you mean componentWillUnmount()?", name); + var noComponentDidReceiveProps = typeof instance.componentDidReceiveProps !== "function"; + warning(noComponentDidReceiveProps, "%s has a method called " + "componentDidReceiveProps(). But there is no such lifecycle method. " + "If you meant to update the state in response to changing props, " + "use componentWillReceiveProps(). If you meant to fetch data or " + "run side-effects or mutations after React has updated the UI, use componentDidUpdate().", name); + var noComponentWillRecieveProps = typeof instance.componentWillRecieveProps !== "function"; + warning(noComponentWillRecieveProps, "%s has a method called " + "componentWillRecieveProps(). Did you mean componentWillReceiveProps()?", name); + var hasMutatedProps = instance.props !== workInProgress.pendingProps; + warning(instance.props === undefined || !hasMutatedProps, "%s(...): When calling super() in `%s`, make sure to pass " + "up the same props that your component's constructor was passed.", name, name); + var noInstanceDefaultProps = !instance.defaultProps; + warning(noInstanceDefaultProps, "Setting defaultProps as an instance property on %s is not supported and will be ignored." + " Instead, define defaultProps as a static property on %s.", name, name); + } + var state = instance.state; + + if (state && (typeof state !== "object" || isArray(state))) { + warning(false, "%s.state: must be set to an object or null", getComponentName(workInProgress)); + } + + if (typeof instance.getChildContext === "function") { + warning(typeof workInProgress.type.childContextTypes === "object", "%s.getChildContext(): childContextTypes must be defined in order to " + "use getChildContext().", getComponentName(workInProgress)); + } + } + + function resetInputPointers(workInProgress, instance) { + instance.props = workInProgress.memoizedProps; + instance.state = workInProgress.memoizedState; + } + + function adoptClassInstance(workInProgress, instance) { + instance.updater = updater; + workInProgress.stateNode = instance; + set(instance, workInProgress); + { + instance._reactInternalInstance = fakeInternalInstance; + } + } + + function constructClassInstance(workInProgress, props) { + var ctor = workInProgress.type; + var unmaskedContext = getUnmaskedContext(workInProgress); + var needsContext = isContextConsumer(workInProgress); + var context = needsContext ? getMaskedContext(workInProgress, unmaskedContext) : emptyObject; + var instance = new ctor(props, context); + adoptClassInstance(workInProgress, instance); + + if (needsContext) { + cacheContext(workInProgress, unmaskedContext, context); + } + + return instance; + } + + function callComponentWillMount(workInProgress, instance) { + startPhaseTimer(workInProgress, "componentWillMount"); + var oldState = instance.state; + instance.componentWillMount(); + stopPhaseTimer(); + + if (debugRenderPhaseSideEffects) { + instance.componentWillMount(); + } + + if (oldState !== instance.state) { + { + warning(false, "%s.componentWillMount(): Assigning directly to this.state is " + "deprecated (except inside a component's " + "constructor). Use setState instead.", getComponentName(workInProgress)); + } + updater.enqueueReplaceState(instance, instance.state, null); + } + } + + function callComponentWillReceiveProps(workInProgress, instance, newProps, newContext) { + startPhaseTimer(workInProgress, "componentWillReceiveProps"); + var oldState = instance.state; + instance.componentWillReceiveProps(newProps, newContext); + stopPhaseTimer(); + + if (debugRenderPhaseSideEffects) { + instance.componentWillReceiveProps(newProps, newContext); + } + + if (instance.state !== oldState) { + { + var componentName = getComponentName(workInProgress) || "Component"; + + if (!didWarnAboutStateAssignmentForComponent[componentName]) { + warning(false, "%s.componentWillReceiveProps(): Assigning directly to " + "this.state is deprecated (except inside a component's " + "constructor). Use setState instead.", componentName); + didWarnAboutStateAssignmentForComponent[componentName] = true; + } + } + updater.enqueueReplaceState(instance, instance.state, null); + } + } + + function mountClassInstance(workInProgress, renderExpirationTime) { + var current = workInProgress.alternate; + { + checkClassInstance(workInProgress); + } + var instance = workInProgress.stateNode; + var state = instance.state || null; + var props = workInProgress.pendingProps; + var unmaskedContext = getUnmaskedContext(workInProgress); + instance.props = props; + instance.state = workInProgress.memoizedState = state; + instance.refs = emptyObject; + instance.context = getMaskedContext(workInProgress, unmaskedContext); + + if (enableAsyncSubtreeAPI && workInProgress.type != null && workInProgress.type.prototype != null && workInProgress.type.prototype.unstable_isAsyncReactComponent === true) { + workInProgress.internalContextTag |= AsyncUpdates; + } + + if (typeof instance.componentWillMount === "function") { + callComponentWillMount(workInProgress, instance); + var updateQueue = workInProgress.updateQueue; + + if (updateQueue !== null) { + instance.state = processUpdateQueue(current, workInProgress, updateQueue, instance, props, renderExpirationTime); + } + } + + if (typeof instance.componentDidMount === "function") { + workInProgress.effectTag |= Update; + } + } + + function updateClassInstance(current, workInProgress, renderExpirationTime) { + var instance = workInProgress.stateNode; + resetInputPointers(workInProgress, instance); + var oldProps = workInProgress.memoizedProps; + var newProps = workInProgress.pendingProps; + var oldContext = instance.context; + var newUnmaskedContext = getUnmaskedContext(workInProgress); + var newContext = getMaskedContext(workInProgress, newUnmaskedContext); + + if (typeof instance.componentWillReceiveProps === "function" && (oldProps !== newProps || oldContext !== newContext)) { + callComponentWillReceiveProps(workInProgress, instance, newProps, newContext); + } + + var oldState = workInProgress.memoizedState; + var newState = void 0; + + if (workInProgress.updateQueue !== null) { + newState = processUpdateQueue(current, workInProgress, workInProgress.updateQueue, instance, newProps, renderExpirationTime); + } else { + newState = oldState; + } + + if (oldProps === newProps && oldState === newState && !hasContextChanged() && !(workInProgress.updateQueue !== null && workInProgress.updateQueue.hasForceUpdate)) { + if (typeof instance.componentDidUpdate === "function") { + if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) { + workInProgress.effectTag |= Update; + } + } + + return false; + } + + var shouldUpdate = checkShouldComponentUpdate(workInProgress, oldProps, newProps, oldState, newState, newContext); + + if (shouldUpdate) { + if (typeof instance.componentWillUpdate === "function") { + startPhaseTimer(workInProgress, "componentWillUpdate"); + instance.componentWillUpdate(newProps, newState, newContext); + stopPhaseTimer(); + + if (debugRenderPhaseSideEffects) { + instance.componentWillUpdate(newProps, newState, newContext); + } + } + + if (typeof instance.componentDidUpdate === "function") { + workInProgress.effectTag |= Update; + } + } else { + if (typeof instance.componentDidUpdate === "function") { + if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) { + workInProgress.effectTag |= Update; + } + } + + memoizeProps(workInProgress, newProps); + memoizeState(workInProgress, newState); + } + + instance.props = newProps; + instance.state = newState; + instance.context = newContext; + return shouldUpdate; + } + + return { + adoptClassInstance: adoptClassInstance, + constructClassInstance: constructClassInstance, + mountClassInstance: mountClassInstance, + updateClassInstance: updateClassInstance + }; + }; + + var getCurrentFiberStackAddendum$1 = ReactDebugCurrentFiber.getCurrentFiberStackAddendum; + { + var didWarnAboutMaps = false; + var ownerHasKeyUseWarning = {}; + var ownerHasFunctionTypeWarning = {}; + + var warnForMissingKey = function warnForMissingKey(child) { + if (child === null || typeof child !== "object") { + return; + } + + if (!child._store || child._store.validated || child.key != null) { + return; + } + + invariant(typeof child._store === "object", "React Component in warnForMissingKey should have a _store. " + "This error is likely caused by a bug in React. Please file an issue."); + child._store.validated = true; + var currentComponentErrorInfo = "Each child in an array or iterator should have a unique " + '"key" prop. See https://fb.me/react-warning-keys for ' + "more information." + (getCurrentFiberStackAddendum$1() || ""); + + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; + warning(false, "Each child in an array or iterator should have a unique " + '"key" prop. See https://fb.me/react-warning-keys for ' + "more information.%s", getCurrentFiberStackAddendum$1()); + }; + } + var isArray$1 = Array.isArray; + + function coerceRef(current, element) { + var mixedRef = element.ref; + + if (mixedRef !== null && typeof mixedRef !== "function") { + if (element._owner) { + var owner = element._owner; + var inst = void 0; + + if (owner) { + var ownerFiber = owner; + invariant(ownerFiber.tag === ClassComponent, "Stateless function components cannot have refs."); + inst = ownerFiber.stateNode; + } + + invariant(inst, "Missing owner for string ref %s. This error is likely caused by a " + "bug in React. Please file an issue.", mixedRef); + var stringRef = "" + mixedRef; + + if (current !== null && current.ref !== null && current.ref._stringRef === stringRef) { + return current.ref; + } + + var ref = function ref(value) { + var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs; + + if (value === null) { + delete refs[stringRef]; + } else { + refs[stringRef] = value; + } + }; + + ref._stringRef = stringRef; + return ref; + } else { + invariant(typeof mixedRef === "string", "Expected ref to be a function or a string."); + invariant(element._owner, "Element ref was specified as a string (%s) but no owner was " + "set. You may have multiple copies of React loaded. " + "(details: https://fb.me/react-refs-must-have-owner).", mixedRef); + } + } + + return mixedRef; + } + + function throwOnInvalidObjectType(returnFiber, newChild) { + if (returnFiber.type !== "textarea") { + var addendum = ""; + { + addendum = " If you meant to render a collection of children, use an array " + "instead." + (getCurrentFiberStackAddendum$1() || ""); + } + invariant(false, "Objects are not valid as a React child (found: %s).%s", Object.prototype.toString.call(newChild) === "[object Object]" ? "object with keys {" + Object.keys(newChild).join(", ") + "}" : newChild, addendum); + } + } + + function warnOnFunctionType() { + var currentComponentErrorInfo = "Functions are not valid as a React child. This may happen if " + "you return a Component instead of from render. " + "Or maybe you meant to call this function rather than return it." + (getCurrentFiberStackAddendum$1() || ""); + + if (ownerHasFunctionTypeWarning[currentComponentErrorInfo]) { + return; + } + + ownerHasFunctionTypeWarning[currentComponentErrorInfo] = true; + warning(false, "Functions are not valid as a React child. This may happen if " + "you return a Component instead of from render. " + "Or maybe you meant to call this function rather than return it.%s", getCurrentFiberStackAddendum$1() || ""); + } + + function ChildReconciler(shouldTrackSideEffects) { + function deleteChild(returnFiber, childToDelete) { + if (!shouldTrackSideEffects) { + return; + } + + var last = returnFiber.lastEffect; + + if (last !== null) { + last.nextEffect = childToDelete; + returnFiber.lastEffect = childToDelete; + } else { + returnFiber.firstEffect = returnFiber.lastEffect = childToDelete; + } + + childToDelete.nextEffect = null; + childToDelete.effectTag = Deletion; + } + + function deleteRemainingChildren(returnFiber, currentFirstChild) { + if (!shouldTrackSideEffects) { + return null; + } + + var childToDelete = currentFirstChild; + + while (childToDelete !== null) { + deleteChild(returnFiber, childToDelete); + childToDelete = childToDelete.sibling; + } + + return null; + } + + function mapRemainingChildren(returnFiber, currentFirstChild) { + var existingChildren = new Map(); + var existingChild = currentFirstChild; + + while (existingChild !== null) { + if (existingChild.key !== null) { + existingChildren.set(existingChild.key, existingChild); + } else { + existingChildren.set(existingChild.index, existingChild); + } + + existingChild = existingChild.sibling; + } + + return existingChildren; + } + + function useFiber(fiber, pendingProps, expirationTime) { + var clone = createWorkInProgress(fiber, pendingProps, expirationTime); + clone.index = 0; + clone.sibling = null; + return clone; + } + + function placeChild(newFiber, lastPlacedIndex, newIndex) { + newFiber.index = newIndex; + + if (!shouldTrackSideEffects) { + return lastPlacedIndex; + } + + var current = newFiber.alternate; + + if (current !== null) { + var oldIndex = current.index; + + if (oldIndex < lastPlacedIndex) { + newFiber.effectTag = Placement; + return lastPlacedIndex; + } else { + return oldIndex; + } + } else { + newFiber.effectTag = Placement; + return lastPlacedIndex; + } + } + + function placeSingleChild(newFiber) { + if (shouldTrackSideEffects && newFiber.alternate === null) { + newFiber.effectTag = Placement; + } + + return newFiber; + } + + function updateTextNode(returnFiber, current, textContent, expirationTime) { + if (current === null || current.tag !== HostText) { + var created = createFiberFromText(textContent, returnFiber.internalContextTag, expirationTime); + created["return"] = returnFiber; + return created; + } else { + var existing = useFiber(current, textContent, expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function updateElement(returnFiber, current, element, expirationTime) { + if (current !== null && current.type === element.type) { + var existing = useFiber(current, element.props, expirationTime); + existing.ref = coerceRef(current, element); + existing["return"] = returnFiber; + { + existing._debugSource = element._source; + existing._debugOwner = element._owner; + } + return existing; + } else { + var created = createFiberFromElement(element, returnFiber.internalContextTag, expirationTime); + created.ref = coerceRef(current, element); + created["return"] = returnFiber; + return created; + } + } + + function updateCall(returnFiber, current, call, expirationTime) { + if (current === null || current.tag !== CallComponent) { + var created = createFiberFromCall(call, returnFiber.internalContextTag, expirationTime); + created["return"] = returnFiber; + return created; + } else { + var existing = useFiber(current, call, expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function updateReturn(returnFiber, current, returnNode, expirationTime) { + if (current === null || current.tag !== ReturnComponent) { + var created = createFiberFromReturn(returnNode, returnFiber.internalContextTag, expirationTime); + created.type = returnNode.value; + created["return"] = returnFiber; + return created; + } else { + var existing = useFiber(current, null, expirationTime); + existing.type = returnNode.value; + existing["return"] = returnFiber; + return existing; + } + } + + function updatePortal(returnFiber, current, portal, expirationTime) { + if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) { + var created = createFiberFromPortal(portal, returnFiber.internalContextTag, expirationTime); + created["return"] = returnFiber; + return created; + } else { + var existing = useFiber(current, portal.children || [], expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function updateFragment(returnFiber, current, fragment, expirationTime, key) { + if (current === null || current.tag !== Fragment) { + var created = createFiberFromFragment(fragment, returnFiber.internalContextTag, expirationTime, key); + created["return"] = returnFiber; + return created; + } else { + var existing = useFiber(current, fragment, expirationTime); + existing["return"] = returnFiber; + return existing; + } + } + + function createChild(returnFiber, newChild, expirationTime) { + if (typeof newChild === "string" || typeof newChild === "number") { + var created = createFiberFromText("" + newChild, returnFiber.internalContextTag, expirationTime); + created["return"] = returnFiber; + return created; + } + + if (typeof newChild === "object" && newChild !== null) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + { + if (newChild.type === REACT_FRAGMENT_TYPE) { + var _created = createFiberFromFragment(newChild.props.children, returnFiber.internalContextTag, expirationTime, newChild.key); + + _created["return"] = returnFiber; + return _created; + } else { + var _created2 = createFiberFromElement(newChild, returnFiber.internalContextTag, expirationTime); + + _created2.ref = coerceRef(null, newChild); + _created2["return"] = returnFiber; + return _created2; + } + } + + case REACT_CALL_TYPE: + { + var _created3 = createFiberFromCall(newChild, returnFiber.internalContextTag, expirationTime); + + _created3["return"] = returnFiber; + return _created3; + } + + case REACT_RETURN_TYPE: + { + var _created4 = createFiberFromReturn(newChild, returnFiber.internalContextTag, expirationTime); + + _created4.type = newChild.value; + _created4["return"] = returnFiber; + return _created4; + } + + case REACT_PORTAL_TYPE: + { + var _created5 = createFiberFromPortal(newChild, returnFiber.internalContextTag, expirationTime); + + _created5["return"] = returnFiber; + return _created5; + } + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) { + var _created6 = createFiberFromFragment(newChild, returnFiber.internalContextTag, expirationTime, null); + + _created6["return"] = returnFiber; + return _created6; + } + + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + return null; + } + + function updateSlot(returnFiber, oldFiber, newChild, expirationTime) { + var key = oldFiber !== null ? oldFiber.key : null; + + if (typeof newChild === "string" || typeof newChild === "number") { + if (key !== null) { + return null; + } + + return updateTextNode(returnFiber, oldFiber, "" + newChild, expirationTime); + } + + if (typeof newChild === "object" && newChild !== null) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + { + if (newChild.key === key) { + if (newChild.type === REACT_FRAGMENT_TYPE) { + return updateFragment(returnFiber, oldFiber, newChild.props.children, expirationTime, key); + } + + return updateElement(returnFiber, oldFiber, newChild, expirationTime); + } else { + return null; + } + } + + case REACT_CALL_TYPE: + { + if (newChild.key === key) { + return updateCall(returnFiber, oldFiber, newChild, expirationTime); + } else { + return null; + } + } + + case REACT_RETURN_TYPE: + { + if (key === null) { + return updateReturn(returnFiber, oldFiber, newChild, expirationTime); + } else { + return null; + } + } + + case REACT_PORTAL_TYPE: + { + if (newChild.key === key) { + return updatePortal(returnFiber, oldFiber, newChild, expirationTime); + } else { + return null; + } + } + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) { + if (key !== null) { + return null; + } + + return updateFragment(returnFiber, oldFiber, newChild, expirationTime, null); + } + + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + return null; + } + + function updateFromMap(existingChildren, returnFiber, newIdx, newChild, expirationTime) { + if (typeof newChild === "string" || typeof newChild === "number") { + var matchedFiber = existingChildren.get(newIdx) || null; + return updateTextNode(returnFiber, matchedFiber, "" + newChild, expirationTime); + } + + if (typeof newChild === "object" && newChild !== null) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + { + var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null; + + if (newChild.type === REACT_FRAGMENT_TYPE) { + return updateFragment(returnFiber, _matchedFiber, newChild.props.children, expirationTime, newChild.key); + } + + return updateElement(returnFiber, _matchedFiber, newChild, expirationTime); + } + + case REACT_CALL_TYPE: + { + var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null; + + return updateCall(returnFiber, _matchedFiber2, newChild, expirationTime); + } + + case REACT_RETURN_TYPE: + { + var _matchedFiber3 = existingChildren.get(newIdx) || null; + + return updateReturn(returnFiber, _matchedFiber3, newChild, expirationTime); + } + + case REACT_PORTAL_TYPE: + { + var _matchedFiber4 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null; + + return updatePortal(returnFiber, _matchedFiber4, newChild, expirationTime); + } + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) { + var _matchedFiber5 = existingChildren.get(newIdx) || null; + + return updateFragment(returnFiber, _matchedFiber5, newChild, expirationTime, null); + } + + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + return null; + } + + function warnOnInvalidKey(child, knownKeys) { + { + if (typeof child !== "object" || child === null) { + return knownKeys; + } + + switch (child.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_CALL_TYPE: + case REACT_PORTAL_TYPE: + warnForMissingKey(child); + var key = child.key; + + if (typeof key !== "string") { + break; + } + + if (knownKeys === null) { + knownKeys = new Set(); + knownKeys.add(key); + break; + } + + if (!knownKeys.has(key)) { + knownKeys.add(key); + break; + } + + warning(false, "Encountered two children with the same key, `%s`. " + "Keys should be unique so that components maintain their identity " + "across updates. Non-unique keys may cause children to be " + "duplicated and/or omitted — the behavior is unsupported and " + "could change in a future version.%s", key, getCurrentFiberStackAddendum$1()); + break; + + default: + break; + } + } + return knownKeys; + } + + function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, expirationTime) { + { + var knownKeys = null; + + for (var i = 0; i < newChildren.length; i++) { + var child = newChildren[i]; + knownKeys = warnOnInvalidKey(child, knownKeys); + } + } + var resultingFirstChild = null; + var previousNewFiber = null; + var oldFiber = currentFirstChild; + var lastPlacedIndex = 0; + var newIdx = 0; + var nextOldFiber = null; + + for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) { + if (oldFiber.index > newIdx) { + nextOldFiber = oldFiber; + oldFiber = null; + } else { + nextOldFiber = oldFiber.sibling; + } + + var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], expirationTime); + + if (newFiber === null) { + if (oldFiber === null) { + oldFiber = nextOldFiber; + } + + break; + } + + if (shouldTrackSideEffects) { + if (oldFiber && newFiber.alternate === null) { + deleteChild(returnFiber, oldFiber); + } + } + + lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx); + + if (previousNewFiber === null) { + resultingFirstChild = newFiber; + } else { + previousNewFiber.sibling = newFiber; + } + + previousNewFiber = newFiber; + oldFiber = nextOldFiber; + } + + if (newIdx === newChildren.length) { + deleteRemainingChildren(returnFiber, oldFiber); + return resultingFirstChild; + } + + if (oldFiber === null) { + for (; newIdx < newChildren.length; newIdx++) { + var _newFiber = createChild(returnFiber, newChildren[newIdx], expirationTime); + + if (!_newFiber) { + continue; + } + + lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx); + + if (previousNewFiber === null) { + resultingFirstChild = _newFiber; + } else { + previousNewFiber.sibling = _newFiber; + } + + previousNewFiber = _newFiber; + } + + return resultingFirstChild; + } + + var existingChildren = mapRemainingChildren(returnFiber, oldFiber); + + for (; newIdx < newChildren.length; newIdx++) { + var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], expirationTime); + + if (_newFiber2) { + if (shouldTrackSideEffects) { + if (_newFiber2.alternate !== null) { + existingChildren["delete"](_newFiber2.key === null ? newIdx : _newFiber2.key); + } + } + + lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx); + + if (previousNewFiber === null) { + resultingFirstChild = _newFiber2; + } else { + previousNewFiber.sibling = _newFiber2; + } + + previousNewFiber = _newFiber2; + } + } + + if (shouldTrackSideEffects) { + existingChildren.forEach(function (child) { + return deleteChild(returnFiber, child); + }); + } + + return resultingFirstChild; + } + + function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, expirationTime) { + var iteratorFn = getIteratorFn(newChildrenIterable); + invariant(typeof iteratorFn === "function", "An object is not an iterable. This error is likely caused by a bug in " + "React. Please file an issue."); + { + if (typeof newChildrenIterable.entries === "function") { + var possibleMap = newChildrenIterable; + + if (possibleMap.entries === iteratorFn) { + warning(didWarnAboutMaps, "Using Maps as children is unsupported and will likely yield " + "unexpected results. Convert it to a sequence/iterable of keyed " + "ReactElements instead.%s", getCurrentFiberStackAddendum$1()); + didWarnAboutMaps = true; + } + } + + var _newChildren = iteratorFn.call(newChildrenIterable); + + if (_newChildren) { + var knownKeys = null; + + var _step = _newChildren.next(); + + for (; !_step.done; _step = _newChildren.next()) { + var child = _step.value; + knownKeys = warnOnInvalidKey(child, knownKeys); + } + } + } + var newChildren = iteratorFn.call(newChildrenIterable); + invariant(newChildren != null, "An iterable object provided no iterator."); + var resultingFirstChild = null; + var previousNewFiber = null; + var oldFiber = currentFirstChild; + var lastPlacedIndex = 0; + var newIdx = 0; + var nextOldFiber = null; + var step = newChildren.next(); + + for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) { + if (oldFiber.index > newIdx) { + nextOldFiber = oldFiber; + oldFiber = null; + } else { + nextOldFiber = oldFiber.sibling; + } + + var newFiber = updateSlot(returnFiber, oldFiber, step.value, expirationTime); + + if (newFiber === null) { + if (!oldFiber) { + oldFiber = nextOldFiber; + } + + break; + } + + if (shouldTrackSideEffects) { + if (oldFiber && newFiber.alternate === null) { + deleteChild(returnFiber, oldFiber); + } + } + + lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx); + + if (previousNewFiber === null) { + resultingFirstChild = newFiber; + } else { + previousNewFiber.sibling = newFiber; + } + + previousNewFiber = newFiber; + oldFiber = nextOldFiber; + } + + if (step.done) { + deleteRemainingChildren(returnFiber, oldFiber); + return resultingFirstChild; + } + + if (oldFiber === null) { + for (; !step.done; newIdx++, step = newChildren.next()) { + var _newFiber3 = createChild(returnFiber, step.value, expirationTime); + + if (_newFiber3 === null) { + continue; + } + + lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx); + + if (previousNewFiber === null) { + resultingFirstChild = _newFiber3; + } else { + previousNewFiber.sibling = _newFiber3; + } + + previousNewFiber = _newFiber3; + } + + return resultingFirstChild; + } + + var existingChildren = mapRemainingChildren(returnFiber, oldFiber); + + for (; !step.done; newIdx++, step = newChildren.next()) { + var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, expirationTime); + + if (_newFiber4 !== null) { + if (shouldTrackSideEffects) { + if (_newFiber4.alternate !== null) { + existingChildren["delete"](_newFiber4.key === null ? newIdx : _newFiber4.key); + } + } + + lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx); + + if (previousNewFiber === null) { + resultingFirstChild = _newFiber4; + } else { + previousNewFiber.sibling = _newFiber4; + } + + previousNewFiber = _newFiber4; + } + } + + if (shouldTrackSideEffects) { + existingChildren.forEach(function (child) { + return deleteChild(returnFiber, child); + }); + } + + return resultingFirstChild; + } + + function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, expirationTime) { + if (currentFirstChild !== null && currentFirstChild.tag === HostText) { + deleteRemainingChildren(returnFiber, currentFirstChild.sibling); + var existing = useFiber(currentFirstChild, textContent, expirationTime); + existing["return"] = returnFiber; + return existing; + } + + deleteRemainingChildren(returnFiber, currentFirstChild); + var created = createFiberFromText(textContent, returnFiber.internalContextTag, expirationTime); + created["return"] = returnFiber; + return created; + } + + function reconcileSingleElement(returnFiber, currentFirstChild, element, expirationTime) { + var key = element.key; + var child = currentFirstChild; + + while (child !== null) { + if (child.key === key) { + if (child.tag === Fragment ? element.type === REACT_FRAGMENT_TYPE : child.type === element.type) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber(child, element.type === REACT_FRAGMENT_TYPE ? element.props.children : element.props, expirationTime); + existing.ref = coerceRef(child, element); + existing["return"] = returnFiber; + { + existing._debugSource = element._source; + existing._debugOwner = element._owner; + } + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + break; + } + } else { + deleteChild(returnFiber, child); + } + + child = child.sibling; + } + + if (element.type === REACT_FRAGMENT_TYPE) { + var created = createFiberFromFragment(element.props.children, returnFiber.internalContextTag, expirationTime, element.key); + created["return"] = returnFiber; + return created; + } else { + var _created7 = createFiberFromElement(element, returnFiber.internalContextTag, expirationTime); + + _created7.ref = coerceRef(currentFirstChild, element); + _created7["return"] = returnFiber; + return _created7; + } + } + + function reconcileSingleCall(returnFiber, currentFirstChild, call, expirationTime) { + var key = call.key; + var child = currentFirstChild; + + while (child !== null) { + if (child.key === key) { + if (child.tag === CallComponent) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber(child, call, expirationTime); + existing["return"] = returnFiber; + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + break; + } + } else { + deleteChild(returnFiber, child); + } + + child = child.sibling; + } + + var created = createFiberFromCall(call, returnFiber.internalContextTag, expirationTime); + created["return"] = returnFiber; + return created; + } + + function reconcileSingleReturn(returnFiber, currentFirstChild, returnNode, expirationTime) { + var child = currentFirstChild; + + if (child !== null) { + if (child.tag === ReturnComponent) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber(child, null, expirationTime); + existing.type = returnNode.value; + existing["return"] = returnFiber; + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + } + } + + var created = createFiberFromReturn(returnNode, returnFiber.internalContextTag, expirationTime); + created.type = returnNode.value; + created["return"] = returnFiber; + return created; + } + + function reconcileSinglePortal(returnFiber, currentFirstChild, portal, expirationTime) { + var key = portal.key; + var child = currentFirstChild; + + while (child !== null) { + if (child.key === key) { + if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) { + deleteRemainingChildren(returnFiber, child.sibling); + var existing = useFiber(child, portal.children || [], expirationTime); + existing["return"] = returnFiber; + return existing; + } else { + deleteRemainingChildren(returnFiber, child); + break; + } + } else { + deleteChild(returnFiber, child); + } + + child = child.sibling; + } + + var created = createFiberFromPortal(portal, returnFiber.internalContextTag, expirationTime); + created["return"] = returnFiber; + return created; + } + + function reconcileChildFibers(returnFiber, currentFirstChild, newChild, expirationTime) { + if (typeof newChild === "object" && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null) { + newChild = newChild.props.children; + } + + var isObject = typeof newChild === "object" && newChild !== null; + + if (isObject) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, expirationTime)); + + case REACT_CALL_TYPE: + return placeSingleChild(reconcileSingleCall(returnFiber, currentFirstChild, newChild, expirationTime)); + + case REACT_RETURN_TYPE: + return placeSingleChild(reconcileSingleReturn(returnFiber, currentFirstChild, newChild, expirationTime)); + + case REACT_PORTAL_TYPE: + return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, expirationTime)); + } + } + + if (typeof newChild === "string" || typeof newChild === "number") { + return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, "" + newChild, expirationTime)); + } + + if (isArray$1(newChild)) { + return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, expirationTime); + } + + if (getIteratorFn(newChild)) { + return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, expirationTime); + } + + if (isObject) { + throwOnInvalidObjectType(returnFiber, newChild); + } + + { + if (typeof newChild === "function") { + warnOnFunctionType(); + } + } + + if (typeof newChild === "undefined") { + switch (returnFiber.tag) { + case ClassComponent: + { + { + var instance = returnFiber.stateNode; + + if (instance.render._isMockFunction) { + break; + } + } + } + + case FunctionalComponent: + { + var Component = returnFiber.type; + invariant(false, "%s(...): Nothing was returned from render. This usually means a " + "return statement is missing. Or, to render nothing, " + "return null.", Component.displayName || Component.name || "Component"); + } + } + } + + return deleteRemainingChildren(returnFiber, currentFirstChild); + } + + return reconcileChildFibers; + } + + var reconcileChildFibers = ChildReconciler(true); + var mountChildFibers = ChildReconciler(false); + + function cloneChildFibers(current, workInProgress) { + invariant(current === null || workInProgress.child === current.child, "Resuming work not yet implemented."); + + if (workInProgress.child === null) { + return; + } + + var currentChild = workInProgress.child; + var newChild = createWorkInProgress(currentChild, currentChild.pendingProps, currentChild.expirationTime); + workInProgress.child = newChild; + newChild["return"] = workInProgress; + + while (currentChild.sibling !== null) { + currentChild = currentChild.sibling; + newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps, currentChild.expirationTime); + newChild["return"] = workInProgress; + } + + newChild.sibling = null; + } + + { + var warnedAboutStatelessRefs = {}; + } + + var ReactFiberBeginWork = function ReactFiberBeginWork(config, hostContext, hydrationContext, scheduleWork, computeExpirationForFiber) { + var shouldSetTextContent = config.shouldSetTextContent, + useSyncScheduling = config.useSyncScheduling, + shouldDeprioritizeSubtree = config.shouldDeprioritizeSubtree; + var pushHostContext = hostContext.pushHostContext, + pushHostContainer = hostContext.pushHostContainer; + var enterHydrationState = hydrationContext.enterHydrationState, + resetHydrationState = hydrationContext.resetHydrationState, + tryToClaimNextHydratableInstance = hydrationContext.tryToClaimNextHydratableInstance; + + var _ReactFiberClassCompo = ReactFiberClassComponent(scheduleWork, computeExpirationForFiber, memoizeProps, memoizeState), + adoptClassInstance = _ReactFiberClassCompo.adoptClassInstance, + constructClassInstance = _ReactFiberClassCompo.constructClassInstance, + mountClassInstance = _ReactFiberClassCompo.mountClassInstance, + updateClassInstance = _ReactFiberClassCompo.updateClassInstance; + + function reconcileChildren(current, workInProgress, nextChildren) { + reconcileChildrenAtExpirationTime(current, workInProgress, nextChildren, workInProgress.expirationTime); + } + + function reconcileChildrenAtExpirationTime(current, workInProgress, nextChildren, renderExpirationTime) { + if (current === null) { + workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime); + } else { + workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderExpirationTime); + } + } + + function updateFragment(current, workInProgress) { + var nextChildren = workInProgress.pendingProps; + + if (hasContextChanged()) {} else if (nextChildren === null || workInProgress.memoizedProps === nextChildren) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextChildren); + return workInProgress.child; + } + + function markRef(current, workInProgress) { + var ref = workInProgress.ref; + + if (ref !== null && (!current || current.ref !== ref)) { + workInProgress.effectTag |= Ref; + } + } + + function updateFunctionalComponent(current, workInProgress) { + var fn = workInProgress.type; + var nextProps = workInProgress.pendingProps; + + if (hasContextChanged()) {} else { + if (workInProgress.memoizedProps === nextProps) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + } + + var unmaskedContext = getUnmaskedContext(workInProgress); + var context = getMaskedContext(workInProgress, unmaskedContext); + var nextChildren; + { + ReactCurrentOwner.current = workInProgress; + ReactDebugCurrentFiber.setCurrentPhase("render"); + nextChildren = fn(nextProps, context); + ReactDebugCurrentFiber.setCurrentPhase(null); + } + workInProgress.effectTag |= PerformedWork; + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextProps); + return workInProgress.child; + } + + function updateClassComponent(current, workInProgress, renderExpirationTime) { + var hasContext = pushContextProvider(workInProgress); + var shouldUpdate = void 0; + + if (current === null) { + if (!workInProgress.stateNode) { + constructClassInstance(workInProgress, workInProgress.pendingProps); + mountClassInstance(workInProgress, renderExpirationTime); + shouldUpdate = true; + } else { + invariant(false, "Resuming work not yet implemented."); + } + } else { + shouldUpdate = updateClassInstance(current, workInProgress, renderExpirationTime); + } + + return finishClassComponent(current, workInProgress, shouldUpdate, hasContext); + } + + function finishClassComponent(current, workInProgress, shouldUpdate, hasContext) { + markRef(current, workInProgress); + + if (!shouldUpdate) { + if (hasContext) { + invalidateContextProvider(workInProgress, false); + } + + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + var instance = workInProgress.stateNode; + ReactCurrentOwner.current = workInProgress; + var nextChildren = void 0; + { + ReactDebugCurrentFiber.setCurrentPhase("render"); + nextChildren = instance.render(); + + if (debugRenderPhaseSideEffects) { + instance.render(); + } + + ReactDebugCurrentFiber.setCurrentPhase(null); + } + workInProgress.effectTag |= PerformedWork; + reconcileChildren(current, workInProgress, nextChildren); + memoizeState(workInProgress, instance.state); + memoizeProps(workInProgress, instance.props); + + if (hasContext) { + invalidateContextProvider(workInProgress, true); + } + + return workInProgress.child; + } + + function pushHostRootContext(workInProgress) { + var root = workInProgress.stateNode; + + if (root.pendingContext) { + pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context); + } else if (root.context) { + pushTopLevelContextObject(workInProgress, root.context, false); + } + + pushHostContainer(workInProgress, root.containerInfo); + } + + function updateHostRoot(current, workInProgress, renderExpirationTime) { + pushHostRootContext(workInProgress); + var updateQueue = workInProgress.updateQueue; + + if (updateQueue !== null) { + var prevState = workInProgress.memoizedState; + var state = processUpdateQueue(current, workInProgress, updateQueue, null, null, renderExpirationTime); + + if (prevState === state) { + resetHydrationState(); + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + var element = state.element; + var root = workInProgress.stateNode; + + if ((current === null || current.child === null) && root.hydrate && enterHydrationState(workInProgress)) { + workInProgress.effectTag |= Placement; + workInProgress.child = mountChildFibers(workInProgress, null, element, renderExpirationTime); + } else { + resetHydrationState(); + reconcileChildren(current, workInProgress, element); + } + + memoizeState(workInProgress, state); + return workInProgress.child; + } + + resetHydrationState(); + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + function updateHostComponent(current, workInProgress, renderExpirationTime) { + pushHostContext(workInProgress); + + if (current === null) { + tryToClaimNextHydratableInstance(workInProgress); + } + + var type = workInProgress.type; + var memoizedProps = workInProgress.memoizedProps; + var nextProps = workInProgress.pendingProps; + var prevProps = current !== null ? current.memoizedProps : null; + + if (hasContextChanged()) {} else if (memoizedProps === nextProps) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + var nextChildren = nextProps.children; + var isDirectTextChild = shouldSetTextContent(type, nextProps); + + if (isDirectTextChild) { + nextChildren = null; + } else if (prevProps && shouldSetTextContent(type, prevProps)) { + workInProgress.effectTag |= ContentReset; + } + + markRef(current, workInProgress); + + if (renderExpirationTime !== Never && !useSyncScheduling && shouldDeprioritizeSubtree(type, nextProps)) { + workInProgress.expirationTime = Never; + return null; + } + + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextProps); + return workInProgress.child; + } + + function updateHostText(current, workInProgress) { + if (current === null) { + tryToClaimNextHydratableInstance(workInProgress); + } + + var nextProps = workInProgress.pendingProps; + memoizeProps(workInProgress, nextProps); + return null; + } + + function mountIndeterminateComponent(current, workInProgress, renderExpirationTime) { + invariant(current === null, "An indeterminate component should never have mounted. This error is " + "likely caused by a bug in React. Please file an issue."); + var fn = workInProgress.type; + var props = workInProgress.pendingProps; + var unmaskedContext = getUnmaskedContext(workInProgress); + var context = getMaskedContext(workInProgress, unmaskedContext); + var value; + { + if (fn.prototype && typeof fn.prototype.render === "function") { + var componentName = getComponentName(workInProgress); + warning(false, "The <%s /> component appears to have a render method, but doesn't extend React.Component. " + "This is likely to cause errors. Change %s to extend React.Component instead.", componentName, componentName); + } + + ReactCurrentOwner.current = workInProgress; + value = fn(props, context); + } + workInProgress.effectTag |= PerformedWork; + + if (typeof value === "object" && value !== null && typeof value.render === "function") { + workInProgress.tag = ClassComponent; + var hasContext = pushContextProvider(workInProgress); + adoptClassInstance(workInProgress, value); + mountClassInstance(workInProgress, renderExpirationTime); + return finishClassComponent(current, workInProgress, true, hasContext); + } else { + workInProgress.tag = FunctionalComponent; + { + var Component = workInProgress.type; + + if (Component) { + warning(!Component.childContextTypes, "%s(...): childContextTypes cannot be defined on a functional component.", Component.displayName || Component.name || "Component"); + } + + if (workInProgress.ref !== null) { + var info = ""; + var ownerName = ReactDebugCurrentFiber.getCurrentFiberOwnerName(); + + if (ownerName) { + info += "\n\nCheck the render method of `" + ownerName + "`."; + } + + var warningKey = ownerName || workInProgress._debugID || ""; + var debugSource = workInProgress._debugSource; + + if (debugSource) { + warningKey = debugSource.fileName + ":" + debugSource.lineNumber; + } + + if (!warnedAboutStatelessRefs[warningKey]) { + warnedAboutStatelessRefs[warningKey] = true; + warning(false, "Stateless function components cannot be given refs. " + "Attempts to access this ref will fail.%s%s", info, ReactDebugCurrentFiber.getCurrentFiberStackAddendum()); + } + } + } + reconcileChildren(current, workInProgress, value); + memoizeProps(workInProgress, props); + return workInProgress.child; + } + } + + function updateCallComponent(current, workInProgress, renderExpirationTime) { + var nextCall = workInProgress.pendingProps; + + if (hasContextChanged()) {} else if (workInProgress.memoizedProps === nextCall) { + nextCall = workInProgress.memoizedProps; + } + + var nextChildren = nextCall.children; + + if (current === null) { + workInProgress.stateNode = mountChildFibers(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime); + } else { + workInProgress.stateNode = reconcileChildFibers(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime); + } + + memoizeProps(workInProgress, nextCall); + return workInProgress.stateNode; + } + + function updatePortalComponent(current, workInProgress, renderExpirationTime) { + pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo); + var nextChildren = workInProgress.pendingProps; + + if (hasContextChanged()) {} else if (workInProgress.memoizedProps === nextChildren) { + return bailoutOnAlreadyFinishedWork(current, workInProgress); + } + + if (current === null) { + workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderExpirationTime); + memoizeProps(workInProgress, nextChildren); + } else { + reconcileChildren(current, workInProgress, nextChildren); + memoizeProps(workInProgress, nextChildren); + } + + return workInProgress.child; + } + + function bailoutOnAlreadyFinishedWork(current, workInProgress) { + cancelWorkTimer(workInProgress); + cloneChildFibers(current, workInProgress); + return workInProgress.child; + } + + function bailoutOnLowPriority(current, workInProgress) { + cancelWorkTimer(workInProgress); + + switch (workInProgress.tag) { + case HostRoot: + pushHostRootContext(workInProgress); + break; + + case ClassComponent: + pushContextProvider(workInProgress); + break; + + case HostPortal: + pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo); + break; + } + + return null; + } + + function memoizeProps(workInProgress, nextProps) { + workInProgress.memoizedProps = nextProps; + } + + function memoizeState(workInProgress, nextState) { + workInProgress.memoizedState = nextState; + } + + function beginWork(current, workInProgress, renderExpirationTime) { + if (workInProgress.expirationTime === NoWork || workInProgress.expirationTime > renderExpirationTime) { + return bailoutOnLowPriority(current, workInProgress); + } + + switch (workInProgress.tag) { + case IndeterminateComponent: + return mountIndeterminateComponent(current, workInProgress, renderExpirationTime); + + case FunctionalComponent: + return updateFunctionalComponent(current, workInProgress); + + case ClassComponent: + return updateClassComponent(current, workInProgress, renderExpirationTime); + + case HostRoot: + return updateHostRoot(current, workInProgress, renderExpirationTime); + + case HostComponent: + return updateHostComponent(current, workInProgress, renderExpirationTime); + + case HostText: + return updateHostText(current, workInProgress); + + case CallHandlerPhase: + workInProgress.tag = CallComponent; + + case CallComponent: + return updateCallComponent(current, workInProgress, renderExpirationTime); + + case ReturnComponent: + return null; + + case HostPortal: + return updatePortalComponent(current, workInProgress, renderExpirationTime); + + case Fragment: + return updateFragment(current, workInProgress); + + default: + invariant(false, "Unknown unit of work tag. This error is likely caused by a bug in " + "React. Please file an issue."); + } + } + + function beginFailedWork(current, workInProgress, renderExpirationTime) { + switch (workInProgress.tag) { + case ClassComponent: + pushContextProvider(workInProgress); + break; + + case HostRoot: + pushHostRootContext(workInProgress); + break; + + default: + invariant(false, "Invalid type of work. This error is likely caused by a bug in React. " + "Please file an issue."); + } + + workInProgress.effectTag |= Err; + + if (current === null) { + workInProgress.child = null; + } else if (workInProgress.child !== current.child) { + workInProgress.child = current.child; + } + + if (workInProgress.expirationTime === NoWork || workInProgress.expirationTime > renderExpirationTime) { + return bailoutOnLowPriority(current, workInProgress); + } + + workInProgress.firstEffect = null; + workInProgress.lastEffect = null; + var nextChildren = null; + reconcileChildrenAtExpirationTime(current, workInProgress, nextChildren, renderExpirationTime); + + if (workInProgress.tag === ClassComponent) { + var instance = workInProgress.stateNode; + workInProgress.memoizedProps = instance.props; + workInProgress.memoizedState = instance.state; + } + + return workInProgress.child; + } + + return { + beginWork: beginWork, + beginFailedWork: beginFailedWork + }; + }; + + var ReactFiberCompleteWork = function ReactFiberCompleteWork(config, hostContext, hydrationContext) { + var createInstance = config.createInstance, + createTextInstance = config.createTextInstance, + appendInitialChild = config.appendInitialChild, + finalizeInitialChildren = config.finalizeInitialChildren, + prepareUpdate = config.prepareUpdate, + mutation = config.mutation, + persistence = config.persistence; + var getRootHostContainer = hostContext.getRootHostContainer, + popHostContext = hostContext.popHostContext, + getHostContext = hostContext.getHostContext, + popHostContainer = hostContext.popHostContainer; + var prepareToHydrateHostInstance = hydrationContext.prepareToHydrateHostInstance, + prepareToHydrateHostTextInstance = hydrationContext.prepareToHydrateHostTextInstance, + popHydrationState = hydrationContext.popHydrationState; + + function markUpdate(workInProgress) { + workInProgress.effectTag |= Update; + } + + function markRef(workInProgress) { + workInProgress.effectTag |= Ref; + } + + function appendAllReturns(returns, workInProgress) { + var node = workInProgress.stateNode; + + if (node) { + node["return"] = workInProgress; + } + + while (node !== null) { + if (node.tag === HostComponent || node.tag === HostText || node.tag === HostPortal) { + invariant(false, "A call cannot have host component children."); + } else if (node.tag === ReturnComponent) { + returns.push(node.type); + } else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + + while (node.sibling === null) { + if (node["return"] === null || node["return"] === workInProgress) { + return; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function moveCallToHandlerPhase(current, workInProgress, renderExpirationTime) { + var call = workInProgress.memoizedProps; + invariant(call, "Should be resolved by now. This error is likely caused by a bug in " + "React. Please file an issue."); + workInProgress.tag = CallHandlerPhase; + var returns = []; + appendAllReturns(returns, workInProgress); + var fn = call.handler; + var props = call.props; + var nextChildren = fn(props, returns); + var currentFirstChild = current !== null ? current.child : null; + workInProgress.child = reconcileChildFibers(workInProgress, currentFirstChild, nextChildren, renderExpirationTime); + return workInProgress.child; + } + + function appendAllChildren(parent, workInProgress) { + var node = workInProgress.child; + + while (node !== null) { + if (node.tag === HostComponent || node.tag === HostText) { + appendInitialChild(parent, node.stateNode); + } else if (node.tag === HostPortal) {} else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + + if (node === workInProgress) { + return; + } + + while (node.sibling === null) { + if (node["return"] === null || node["return"] === workInProgress) { + return; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + var updateHostContainer = void 0; + var updateHostComponent = void 0; + var updateHostText = void 0; + + if (mutation) { + if (enableMutatingReconciler) { + updateHostContainer = function updateHostContainer(workInProgress) {}; + + updateHostComponent = function updateHostComponent(current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance) { + workInProgress.updateQueue = updatePayload; + + if (updatePayload) { + markUpdate(workInProgress); + } + }; + + updateHostText = function updateHostText(current, workInProgress, oldText, newText) { + if (oldText !== newText) { + markUpdate(workInProgress); + } + }; + } else { + invariant(false, "Mutating reconciler is disabled."); + } + } else if (persistence) { + if (enablePersistentReconciler) { + var cloneInstance = persistence.cloneInstance, + createContainerChildSet = persistence.createContainerChildSet, + appendChildToContainerChildSet = persistence.appendChildToContainerChildSet, + finalizeContainerChildren = persistence.finalizeContainerChildren; + + var appendAllChildrenToContainer = function appendAllChildrenToContainer(containerChildSet, workInProgress) { + var node = workInProgress.child; + + while (node !== null) { + if (node.tag === HostComponent || node.tag === HostText) { + appendChildToContainerChildSet(containerChildSet, node.stateNode); + } else if (node.tag === HostPortal) {} else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + + if (node === workInProgress) { + return; + } + + while (node.sibling === null) { + if (node["return"] === null || node["return"] === workInProgress) { + return; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + }; + + updateHostContainer = function updateHostContainer(workInProgress) { + var portalOrRoot = workInProgress.stateNode; + var childrenUnchanged = workInProgress.firstEffect === null; + + if (childrenUnchanged) {} else { + var container = portalOrRoot.containerInfo; + var newChildSet = createContainerChildSet(container); + + if (finalizeContainerChildren(container, newChildSet)) { + markUpdate(workInProgress); + } + + portalOrRoot.pendingChildren = newChildSet; + appendAllChildrenToContainer(newChildSet, workInProgress); + markUpdate(workInProgress); + } + }; + + updateHostComponent = function updateHostComponent(current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance) { + var childrenUnchanged = workInProgress.firstEffect === null; + var currentInstance = current.stateNode; + + if (childrenUnchanged && updatePayload === null) { + workInProgress.stateNode = currentInstance; + } else { + var recyclableInstance = workInProgress.stateNode; + var newInstance = cloneInstance(currentInstance, updatePayload, type, oldProps, newProps, workInProgress, childrenUnchanged, recyclableInstance); + + if (finalizeInitialChildren(newInstance, type, newProps, rootContainerInstance)) { + markUpdate(workInProgress); + } + + workInProgress.stateNode = newInstance; + + if (childrenUnchanged) { + markUpdate(workInProgress); + } else { + appendAllChildren(newInstance, workInProgress); + } + } + }; + + updateHostText = function updateHostText(current, workInProgress, oldText, newText) { + if (oldText !== newText) { + var rootContainerInstance = getRootHostContainer(); + var currentHostContext = getHostContext(); + workInProgress.stateNode = createTextInstance(newText, rootContainerInstance, currentHostContext, workInProgress); + markUpdate(workInProgress); + } + }; + } else { + invariant(false, "Persistent reconciler is disabled."); + } + } else { + if (enableNoopReconciler) { + updateHostContainer = function updateHostContainer(workInProgress) {}; + + updateHostComponent = function updateHostComponent(current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance) {}; + + updateHostText = function updateHostText(current, workInProgress, oldText, newText) {}; + } else { + invariant(false, "Noop reconciler is disabled."); + } + } + + function completeWork(current, workInProgress, renderExpirationTime) { + var newProps = workInProgress.pendingProps; + + switch (workInProgress.tag) { + case FunctionalComponent: + return null; + + case ClassComponent: + { + popContextProvider(workInProgress); + return null; + } + + case HostRoot: + { + popHostContainer(workInProgress); + popTopLevelContextObject(workInProgress); + var fiberRoot = workInProgress.stateNode; + + if (fiberRoot.pendingContext) { + fiberRoot.context = fiberRoot.pendingContext; + fiberRoot.pendingContext = null; + } + + if (current === null || current.child === null) { + popHydrationState(workInProgress); + workInProgress.effectTag &= ~Placement; + } + + updateHostContainer(workInProgress); + return null; + } + + case HostComponent: + { + popHostContext(workInProgress); + var rootContainerInstance = getRootHostContainer(); + var type = workInProgress.type; + + if (current !== null && workInProgress.stateNode != null) { + var oldProps = current.memoizedProps; + var instance = workInProgress.stateNode; + var currentHostContext = getHostContext(); + var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); + updateHostComponent(current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance); + + if (current.ref !== workInProgress.ref) { + markRef(workInProgress); + } + } else { + if (!newProps) { + invariant(workInProgress.stateNode !== null, "We must have new props for new mounts. This error is likely " + "caused by a bug in React. Please file an issue."); + return null; + } + + var _currentHostContext = getHostContext(); + + var wasHydrated = popHydrationState(workInProgress); + + if (wasHydrated) { + if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, _currentHostContext)) { + markUpdate(workInProgress); + } + } else { + var _instance = createInstance(type, newProps, rootContainerInstance, _currentHostContext, workInProgress); + + appendAllChildren(_instance, workInProgress); + + if (finalizeInitialChildren(_instance, type, newProps, rootContainerInstance)) { + markUpdate(workInProgress); + } + + workInProgress.stateNode = _instance; + } + + if (workInProgress.ref !== null) { + markRef(workInProgress); + } + } + + return null; + } + + case HostText: + { + var newText = newProps; + + if (current && workInProgress.stateNode != null) { + var oldText = current.memoizedProps; + updateHostText(current, workInProgress, oldText, newText); + } else { + if (typeof newText !== "string") { + invariant(workInProgress.stateNode !== null, "We must have new props for new mounts. This error is likely " + "caused by a bug in React. Please file an issue."); + return null; + } + + var _rootContainerInstance = getRootHostContainer(); + + var _currentHostContext2 = getHostContext(); + + var _wasHydrated = popHydrationState(workInProgress); + + if (_wasHydrated) { + if (prepareToHydrateHostTextInstance(workInProgress)) { + markUpdate(workInProgress); + } + } else { + workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext2, workInProgress); + } + } + + return null; + } + + case CallComponent: + return moveCallToHandlerPhase(current, workInProgress, renderExpirationTime); + + case CallHandlerPhase: + workInProgress.tag = CallComponent; + return null; + + case ReturnComponent: + return null; + + case Fragment: + return null; + + case HostPortal: + popHostContainer(workInProgress); + updateHostContainer(workInProgress); + return null; + + case IndeterminateComponent: + invariant(false, "An indeterminate component should have become determinate before " + "completing. This error is likely caused by a bug in React. Please " + "file an issue."); + + default: + invariant(false, "Unknown unit of work tag. This error is likely caused by a bug in " + "React. Please file an issue."); + } + } + + return { + completeWork: completeWork + }; + }; + + var invokeGuardedCallback$2 = ReactErrorUtils.invokeGuardedCallback; + var hasCaughtError$1 = ReactErrorUtils.hasCaughtError; + var clearCaughtError$1 = ReactErrorUtils.clearCaughtError; + + var ReactFiberCommitWork = function ReactFiberCommitWork(config, captureError) { + var getPublicInstance = config.getPublicInstance, + mutation = config.mutation, + persistence = config.persistence; + + var callComponentWillUnmountWithTimer = function callComponentWillUnmountWithTimer(current, instance) { + startPhaseTimer(current, "componentWillUnmount"); + instance.props = current.memoizedProps; + instance.state = current.memoizedState; + instance.componentWillUnmount(); + stopPhaseTimer(); + }; + + function safelyCallComponentWillUnmount(current, instance) { + { + invokeGuardedCallback$2(null, callComponentWillUnmountWithTimer, null, current, instance); + + if (hasCaughtError$1()) { + var unmountError = clearCaughtError$1(); + captureError(current, unmountError); + } + } + } + + function safelyDetachRef(current) { + var ref = current.ref; + + if (ref !== null) { + { + invokeGuardedCallback$2(null, ref, null, null); + + if (hasCaughtError$1()) { + var refError = clearCaughtError$1(); + captureError(current, refError); + } + } + } + } + + function commitLifeCycles(current, finishedWork) { + switch (finishedWork.tag) { + case ClassComponent: + { + var instance = finishedWork.stateNode; + + if (finishedWork.effectTag & Update) { + if (current === null) { + startPhaseTimer(finishedWork, "componentDidMount"); + instance.props = finishedWork.memoizedProps; + instance.state = finishedWork.memoizedState; + instance.componentDidMount(); + stopPhaseTimer(); + } else { + var prevProps = current.memoizedProps; + var prevState = current.memoizedState; + startPhaseTimer(finishedWork, "componentDidUpdate"); + instance.props = finishedWork.memoizedProps; + instance.state = finishedWork.memoizedState; + instance.componentDidUpdate(prevProps, prevState); + stopPhaseTimer(); + } + } + + var updateQueue = finishedWork.updateQueue; + + if (updateQueue !== null) { + commitCallbacks(updateQueue, instance); + } + + return; + } + + case HostRoot: + { + var _updateQueue = finishedWork.updateQueue; + + if (_updateQueue !== null) { + var _instance = finishedWork.child !== null ? finishedWork.child.stateNode : null; + + commitCallbacks(_updateQueue, _instance); + } + + return; + } + + case HostComponent: + { + var _instance2 = finishedWork.stateNode; + + if (current === null && finishedWork.effectTag & Update) { + var type = finishedWork.type; + var props = finishedWork.memoizedProps; + commitMount(_instance2, type, props, finishedWork); + } + + return; + } + + case HostText: + { + return; + } + + case HostPortal: + { + return; + } + + default: + { + invariant(false, "This unit of work tag should not have side-effects. This error is " + "likely caused by a bug in React. Please file an issue."); + } + } + } + + function commitAttachRef(finishedWork) { + var ref = finishedWork.ref; + + if (ref !== null) { + var instance = finishedWork.stateNode; + + switch (finishedWork.tag) { + case HostComponent: + ref(getPublicInstance(instance)); + break; + + default: + ref(instance); + } + } + } + + function commitDetachRef(current) { + var currentRef = current.ref; + + if (currentRef !== null) { + currentRef(null); + } + } + + function commitUnmount(current) { + if (typeof onCommitUnmount === "function") { + onCommitUnmount(current); + } + + switch (current.tag) { + case ClassComponent: + { + safelyDetachRef(current); + var instance = current.stateNode; + + if (typeof instance.componentWillUnmount === "function") { + safelyCallComponentWillUnmount(current, instance); + } + + return; + } + + case HostComponent: + { + safelyDetachRef(current); + return; + } + + case CallComponent: + { + commitNestedUnmounts(current.stateNode); + return; + } + + case HostPortal: + { + if (enableMutatingReconciler && mutation) { + unmountHostComponents(current); + } else if (enablePersistentReconciler && persistence) { + emptyPortalContainer(current); + } + + return; + } + } + } + + function commitNestedUnmounts(root) { + var node = root; + + while (true) { + commitUnmount(node); + + if (node.child !== null && (!mutation || node.tag !== HostPortal)) { + node.child["return"] = node; + node = node.child; + continue; + } + + if (node === root) { + return; + } + + while (node.sibling === null) { + if (node["return"] === null || node["return"] === root) { + return; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function detachFiber(current) { + current["return"] = null; + current.child = null; + + if (current.alternate) { + current.alternate.child = null; + current.alternate["return"] = null; + } + } + + if (!mutation) { + var commitContainer = void 0; + + if (persistence) { + var replaceContainerChildren = persistence.replaceContainerChildren, + createContainerChildSet = persistence.createContainerChildSet; + + var emptyPortalContainer = function emptyPortalContainer(current) { + var portal = current.stateNode; + var containerInfo = portal.containerInfo; + var emptyChildSet = createContainerChildSet(containerInfo); + replaceContainerChildren(containerInfo, emptyChildSet); + }; + + commitContainer = function commitContainer(finishedWork) { + switch (finishedWork.tag) { + case ClassComponent: + { + return; + } + + case HostComponent: + { + return; + } + + case HostText: + { + return; + } + + case HostRoot: + case HostPortal: + { + var portalOrRoot = finishedWork.stateNode; + var containerInfo = portalOrRoot.containerInfo, + _pendingChildren = portalOrRoot.pendingChildren; + replaceContainerChildren(containerInfo, _pendingChildren); + return; + } + + default: + { + invariant(false, "This unit of work tag should not have side-effects. This error is " + "likely caused by a bug in React. Please file an issue."); + } + } + }; + } else { + commitContainer = function commitContainer(finishedWork) {}; + } + + if (enablePersistentReconciler || enableNoopReconciler) { + return { + commitResetTextContent: function commitResetTextContent(finishedWork) {}, + commitPlacement: function commitPlacement(finishedWork) {}, + commitDeletion: function commitDeletion(current) { + commitNestedUnmounts(current); + detachFiber(current); + }, + commitWork: function commitWork(current, finishedWork) { + commitContainer(finishedWork); + }, + commitLifeCycles: commitLifeCycles, + commitAttachRef: commitAttachRef, + commitDetachRef: commitDetachRef + }; + } else if (persistence) { + invariant(false, "Persistent reconciler is disabled."); + } else { + invariant(false, "Noop reconciler is disabled."); + } + } + + var commitMount = mutation.commitMount, + commitUpdate = mutation.commitUpdate, + resetTextContent = mutation.resetTextContent, + commitTextUpdate = mutation.commitTextUpdate, + appendChild = mutation.appendChild, + appendChildToContainer = mutation.appendChildToContainer, + insertBefore = mutation.insertBefore, + insertInContainerBefore = mutation.insertInContainerBefore, + removeChild = mutation.removeChild, + removeChildFromContainer = mutation.removeChildFromContainer; + + function getHostParentFiber(fiber) { + var parent = fiber["return"]; + + while (parent !== null) { + if (isHostParent(parent)) { + return parent; + } + + parent = parent["return"]; + } + + invariant(false, "Expected to find a host parent. This error is likely caused by a bug " + "in React. Please file an issue."); + } + + function isHostParent(fiber) { + return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal; + } + + function getHostSibling(fiber) { + var node = fiber; + + siblings: while (true) { + while (node.sibling === null) { + if (node["return"] === null || isHostParent(node["return"])) { + return null; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + + while (node.tag !== HostComponent && node.tag !== HostText) { + if (node.effectTag & Placement) { + continue siblings; + } + + if (node.child === null || node.tag === HostPortal) { + continue siblings; + } else { + node.child["return"] = node; + node = node.child; + } + } + + if (!(node.effectTag & Placement)) { + return node.stateNode; + } + } + } + + function commitPlacement(finishedWork) { + var parentFiber = getHostParentFiber(finishedWork); + var parent = void 0; + var isContainer = void 0; + + switch (parentFiber.tag) { + case HostComponent: + parent = parentFiber.stateNode; + isContainer = false; + break; + + case HostRoot: + parent = parentFiber.stateNode.containerInfo; + isContainer = true; + break; + + case HostPortal: + parent = parentFiber.stateNode.containerInfo; + isContainer = true; + break; + + default: + invariant(false, "Invalid host parent fiber. This error is likely caused by a bug " + "in React. Please file an issue."); + } + + if (parentFiber.effectTag & ContentReset) { + resetTextContent(parent); + parentFiber.effectTag &= ~ContentReset; + } + + var before = getHostSibling(finishedWork); + var node = finishedWork; + + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + if (before) { + if (isContainer) { + insertInContainerBefore(parent, node.stateNode, before); + } else { + insertBefore(parent, node.stateNode, before); + } + } else { + if (isContainer) { + appendChildToContainer(parent, node.stateNode); + } else { + appendChild(parent, node.stateNode); + } + } + } else if (node.tag === HostPortal) {} else if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + + if (node === finishedWork) { + return; + } + + while (node.sibling === null) { + if (node["return"] === null || node["return"] === finishedWork) { + return; + } + + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function unmountHostComponents(current) { + var node = current; + var currentParentIsValid = false; + var currentParent = void 0; + var currentParentIsContainer = void 0; + + while (true) { + if (!currentParentIsValid) { + var parent = node["return"]; + + findParent: while (true) { + invariant(parent !== null, "Expected to find a host parent. This error is likely caused by " + "a bug in React. Please file an issue."); + + switch (parent.tag) { + case HostComponent: + currentParent = parent.stateNode; + currentParentIsContainer = false; + break findParent; + + case HostRoot: + currentParent = parent.stateNode.containerInfo; + currentParentIsContainer = true; + break findParent; + + case HostPortal: + currentParent = parent.stateNode.containerInfo; + currentParentIsContainer = true; + break findParent; + } + + parent = parent["return"]; + } + + currentParentIsValid = true; + } + + if (node.tag === HostComponent || node.tag === HostText) { + commitNestedUnmounts(node); + + if (currentParentIsContainer) { + removeChildFromContainer(currentParent, node.stateNode); + } else { + removeChild(currentParent, node.stateNode); + } + } else if (node.tag === HostPortal) { + currentParent = node.stateNode.containerInfo; + + if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + } else { + commitUnmount(node); + + if (node.child !== null) { + node.child["return"] = node; + node = node.child; + continue; + } + } + + if (node === current) { + return; + } + + while (node.sibling === null) { + if (node["return"] === null || node["return"] === current) { + return; + } + + node = node["return"]; + + if (node.tag === HostPortal) { + currentParentIsValid = false; + } + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + function commitDeletion(current) { + unmountHostComponents(current); + detachFiber(current); + } + + function commitWork(current, finishedWork) { + switch (finishedWork.tag) { + case ClassComponent: + { + return; + } + + case HostComponent: + { + var instance = finishedWork.stateNode; + + if (instance != null) { + var newProps = finishedWork.memoizedProps; + var oldProps = current !== null ? current.memoizedProps : newProps; + var type = finishedWork.type; + var updatePayload = finishedWork.updateQueue; + finishedWork.updateQueue = null; + + if (updatePayload !== null) { + commitUpdate(instance, updatePayload, type, oldProps, newProps, finishedWork); + } + } + + return; + } + + case HostText: + { + invariant(finishedWork.stateNode !== null, "This should have a text node initialized. This error is likely " + "caused by a bug in React. Please file an issue."); + var textInstance = finishedWork.stateNode; + var newText = finishedWork.memoizedProps; + var oldText = current !== null ? current.memoizedProps : newText; + commitTextUpdate(textInstance, oldText, newText); + return; + } + + case HostRoot: + { + return; + } + + default: + { + invariant(false, "This unit of work tag should not have side-effects. This error is " + "likely caused by a bug in React. Please file an issue."); + } + } + } + + function commitResetTextContent(current) { + resetTextContent(current.stateNode); + } + + if (enableMutatingReconciler) { + return { + commitResetTextContent: commitResetTextContent, + commitPlacement: commitPlacement, + commitDeletion: commitDeletion, + commitWork: commitWork, + commitLifeCycles: commitLifeCycles, + commitAttachRef: commitAttachRef, + commitDetachRef: commitDetachRef + }; + } else { + invariant(false, "Mutating reconciler is disabled."); + } + }; + + var NO_CONTEXT = {}; + + var ReactFiberHostContext = function ReactFiberHostContext(config) { + var getChildHostContext = config.getChildHostContext, + getRootHostContext = config.getRootHostContext; + var contextStackCursor = createCursor(NO_CONTEXT); + var contextFiberStackCursor = createCursor(NO_CONTEXT); + var rootInstanceStackCursor = createCursor(NO_CONTEXT); + + function requiredContext(c) { + invariant(c !== NO_CONTEXT, "Expected host context to exist. This error is likely caused by a bug " + "in React. Please file an issue."); + return c; + } + + function getRootHostContainer() { + var rootInstance = requiredContext(rootInstanceStackCursor.current); + return rootInstance; + } + + function pushHostContainer(fiber, nextRootInstance) { + push(rootInstanceStackCursor, nextRootInstance, fiber); + var nextRootContext = getRootHostContext(nextRootInstance); + push(contextFiberStackCursor, fiber, fiber); + push(contextStackCursor, nextRootContext, fiber); + } + + function popHostContainer(fiber) { + pop(contextStackCursor, fiber); + pop(contextFiberStackCursor, fiber); + pop(rootInstanceStackCursor, fiber); + } + + function getHostContext() { + var context = requiredContext(contextStackCursor.current); + return context; + } + + function pushHostContext(fiber) { + var rootInstance = requiredContext(rootInstanceStackCursor.current); + var context = requiredContext(contextStackCursor.current); + var nextContext = getChildHostContext(context, fiber.type, rootInstance); + + if (context === nextContext) { + return; + } + + push(contextFiberStackCursor, fiber, fiber); + push(contextStackCursor, nextContext, fiber); + } + + function popHostContext(fiber) { + if (contextFiberStackCursor.current !== fiber) { + return; + } + + pop(contextStackCursor, fiber); + pop(contextFiberStackCursor, fiber); + } + + function resetHostContainer() { + contextStackCursor.current = NO_CONTEXT; + rootInstanceStackCursor.current = NO_CONTEXT; + } + + return { + getHostContext: getHostContext, + getRootHostContainer: getRootHostContainer, + popHostContainer: popHostContainer, + popHostContext: popHostContext, + pushHostContainer: pushHostContainer, + pushHostContext: pushHostContext, + resetHostContainer: resetHostContainer + }; + }; + + var ReactFiberHydrationContext = function ReactFiberHydrationContext(config) { + var shouldSetTextContent = config.shouldSetTextContent, + hydration = config.hydration; + + if (!hydration) { + return { + enterHydrationState: function enterHydrationState() { + return false; + }, + resetHydrationState: function resetHydrationState() {}, + tryToClaimNextHydratableInstance: function tryToClaimNextHydratableInstance() {}, + prepareToHydrateHostInstance: function prepareToHydrateHostInstance() { + invariant(false, "Expected prepareToHydrateHostInstance() to never be called. " + "This error is likely caused by a bug in React. Please file an issue."); + }, + prepareToHydrateHostTextInstance: function prepareToHydrateHostTextInstance() { + invariant(false, "Expected prepareToHydrateHostTextInstance() to never be called. " + "This error is likely caused by a bug in React. Please file an issue."); + }, + popHydrationState: function popHydrationState(fiber) { + return false; + } + }; + } + + var canHydrateInstance = hydration.canHydrateInstance, + canHydrateTextInstance = hydration.canHydrateTextInstance, + getNextHydratableSibling = hydration.getNextHydratableSibling, + getFirstHydratableChild = hydration.getFirstHydratableChild, + hydrateInstance = hydration.hydrateInstance, + hydrateTextInstance = hydration.hydrateTextInstance, + didNotMatchHydratedContainerTextInstance = hydration.didNotMatchHydratedContainerTextInstance, + didNotMatchHydratedTextInstance = hydration.didNotMatchHydratedTextInstance, + didNotHydrateContainerInstance = hydration.didNotHydrateContainerInstance, + didNotHydrateInstance = hydration.didNotHydrateInstance, + didNotFindHydratableContainerInstance = hydration.didNotFindHydratableContainerInstance, + didNotFindHydratableContainerTextInstance = hydration.didNotFindHydratableContainerTextInstance, + didNotFindHydratableInstance = hydration.didNotFindHydratableInstance, + didNotFindHydratableTextInstance = hydration.didNotFindHydratableTextInstance; + var hydrationParentFiber = null; + var nextHydratableInstance = null; + var isHydrating = false; + + function enterHydrationState(fiber) { + var parentInstance = fiber.stateNode.containerInfo; + nextHydratableInstance = getFirstHydratableChild(parentInstance); + hydrationParentFiber = fiber; + isHydrating = true; + return true; + } + + function deleteHydratableInstance(returnFiber, instance) { + { + switch (returnFiber.tag) { + case HostRoot: + didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo, instance); + break; + + case HostComponent: + didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance); + break; + } + } + var childToDelete = createFiberFromHostInstanceForDeletion(); + childToDelete.stateNode = instance; + childToDelete["return"] = returnFiber; + childToDelete.effectTag = Deletion; + + if (returnFiber.lastEffect !== null) { + returnFiber.lastEffect.nextEffect = childToDelete; + returnFiber.lastEffect = childToDelete; + } else { + returnFiber.firstEffect = returnFiber.lastEffect = childToDelete; + } + } + + function insertNonHydratedInstance(returnFiber, fiber) { + fiber.effectTag |= Placement; + { + switch (returnFiber.tag) { + case HostRoot: + { + var parentContainer = returnFiber.stateNode.containerInfo; + + switch (fiber.tag) { + case HostComponent: + var type = fiber.type; + var props = fiber.pendingProps; + didNotFindHydratableContainerInstance(parentContainer, type, props); + break; + + case HostText: + var text = fiber.pendingProps; + didNotFindHydratableContainerTextInstance(parentContainer, text); + break; + } + + break; + } + + case HostComponent: + { + var parentType = returnFiber.type; + var parentProps = returnFiber.memoizedProps; + var parentInstance = returnFiber.stateNode; + + switch (fiber.tag) { + case HostComponent: + var _type = fiber.type; + var _props = fiber.pendingProps; + didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type, _props); + break; + + case HostText: + var _text = fiber.pendingProps; + didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text); + break; + } + + break; + } + + default: + return; + } + } + } + + function tryHydrate(fiber, nextInstance) { + switch (fiber.tag) { + case HostComponent: + { + var type = fiber.type; + var props = fiber.pendingProps; + var instance = canHydrateInstance(nextInstance, type, props); + + if (instance !== null) { + fiber.stateNode = instance; + return true; + } + + return false; + } + + case HostText: + { + var text = fiber.pendingProps; + var textInstance = canHydrateTextInstance(nextInstance, text); + + if (textInstance !== null) { + fiber.stateNode = textInstance; + return true; + } + + return false; + } + + default: + return false; + } + } + + function tryToClaimNextHydratableInstance(fiber) { + if (!isHydrating) { + return; + } + + var nextInstance = nextHydratableInstance; + + if (!nextInstance) { + insertNonHydratedInstance(hydrationParentFiber, fiber); + isHydrating = false; + hydrationParentFiber = fiber; + return; + } + + if (!tryHydrate(fiber, nextInstance)) { + nextInstance = getNextHydratableSibling(nextInstance); + + if (!nextInstance || !tryHydrate(fiber, nextInstance)) { + insertNonHydratedInstance(hydrationParentFiber, fiber); + isHydrating = false; + hydrationParentFiber = fiber; + return; + } + + deleteHydratableInstance(hydrationParentFiber, nextHydratableInstance); + } + + hydrationParentFiber = fiber; + nextHydratableInstance = getFirstHydratableChild(nextInstance); + } + + function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) { + var instance = fiber.stateNode; + var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber); + fiber.updateQueue = updatePayload; + + if (updatePayload !== null) { + return true; + } + + return false; + } + + function prepareToHydrateHostTextInstance(fiber) { + var textInstance = fiber.stateNode; + var textContent = fiber.memoizedProps; + var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber); + { + if (shouldUpdate) { + var returnFiber = hydrationParentFiber; + + if (returnFiber !== null) { + switch (returnFiber.tag) { + case HostRoot: + { + var parentContainer = returnFiber.stateNode.containerInfo; + didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent); + break; + } + + case HostComponent: + { + var parentType = returnFiber.type; + var parentProps = returnFiber.memoizedProps; + var parentInstance = returnFiber.stateNode; + didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent); + break; + } + } + } + } + } + return shouldUpdate; + } + + function popToNextHostParent(fiber) { + var parent = fiber["return"]; + + while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot) { + parent = parent["return"]; + } + + hydrationParentFiber = parent; + } + + function popHydrationState(fiber) { + if (fiber !== hydrationParentFiber) { + return false; + } + + if (!isHydrating) { + popToNextHostParent(fiber); + isHydrating = true; + return false; + } + + var type = fiber.type; + + if (fiber.tag !== HostComponent || type !== "head" && type !== "body" && !shouldSetTextContent(type, fiber.memoizedProps)) { + var nextInstance = nextHydratableInstance; + + while (nextInstance) { + deleteHydratableInstance(fiber, nextInstance); + nextInstance = getNextHydratableSibling(nextInstance); + } + } + + popToNextHostParent(fiber); + nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null; + return true; + } + + function resetHydrationState() { + hydrationParentFiber = null; + nextHydratableInstance = null; + isHydrating = false; + } + + return { + enterHydrationState: enterHydrationState, + resetHydrationState: resetHydrationState, + tryToClaimNextHydratableInstance: tryToClaimNextHydratableInstance, + prepareToHydrateHostInstance: prepareToHydrateHostInstance, + prepareToHydrateHostTextInstance: prepareToHydrateHostTextInstance, + popHydrationState: popHydrationState + }; + }; + + var ReactFiberInstrumentation = { + debugTool: null + }; + var ReactFiberInstrumentation_1 = ReactFiberInstrumentation; + var invokeGuardedCallback$1 = ReactErrorUtils.invokeGuardedCallback; + var hasCaughtError = ReactErrorUtils.hasCaughtError; + var clearCaughtError = ReactErrorUtils.clearCaughtError; + { + var didWarnAboutStateTransition = false; + var didWarnSetStateChildContext = false; + var didWarnStateUpdateForUnmountedComponent = {}; + + var warnAboutUpdateOnUnmounted = function warnAboutUpdateOnUnmounted(fiber) { + var componentName = getComponentName(fiber) || "ReactClass"; + + if (didWarnStateUpdateForUnmountedComponent[componentName]) { + return; + } + + warning(false, "Can only update a mounted or mounting " + "component. This usually means you called setState, replaceState, " + "or forceUpdate on an unmounted component. This is a no-op.\n\nPlease " + "check the code for the %s component.", componentName); + didWarnStateUpdateForUnmountedComponent[componentName] = true; + }; + + var warnAboutInvalidUpdates = function warnAboutInvalidUpdates(instance) { + switch (ReactDebugCurrentFiber.phase) { + case "getChildContext": + if (didWarnSetStateChildContext) { + return; + } + + warning(false, "setState(...): Cannot call setState() inside getChildContext()"); + didWarnSetStateChildContext = true; + break; + + case "render": + if (didWarnAboutStateTransition) { + return; + } + + warning(false, "Cannot update during an existing state transition (such as within " + "`render` or another component's constructor). Render methods should " + "be a pure function of props and state; constructor side-effects are " + "an anti-pattern, but can be moved to `componentWillMount`."); + didWarnAboutStateTransition = true; + break; + } + }; + } + + var ReactFiberScheduler = function ReactFiberScheduler(config) { + var hostContext = ReactFiberHostContext(config); + var hydrationContext = ReactFiberHydrationContext(config); + var popHostContainer = hostContext.popHostContainer, + popHostContext = hostContext.popHostContext, + resetHostContainer = hostContext.resetHostContainer; + + var _ReactFiberBeginWork = ReactFiberBeginWork(config, hostContext, hydrationContext, scheduleWork, computeExpirationForFiber), + beginWork = _ReactFiberBeginWork.beginWork, + beginFailedWork = _ReactFiberBeginWork.beginFailedWork; + + var _ReactFiberCompleteWo = ReactFiberCompleteWork(config, hostContext, hydrationContext), + completeWork = _ReactFiberCompleteWo.completeWork; + + var _ReactFiberCommitWork = ReactFiberCommitWork(config, captureError), + commitResetTextContent = _ReactFiberCommitWork.commitResetTextContent, + commitPlacement = _ReactFiberCommitWork.commitPlacement, + commitDeletion = _ReactFiberCommitWork.commitDeletion, + commitWork = _ReactFiberCommitWork.commitWork, + commitLifeCycles = _ReactFiberCommitWork.commitLifeCycles, + commitAttachRef = _ReactFiberCommitWork.commitAttachRef, + commitDetachRef = _ReactFiberCommitWork.commitDetachRef; + + var now = config.now, + scheduleDeferredCallback = config.scheduleDeferredCallback, + cancelDeferredCallback = config.cancelDeferredCallback, + useSyncScheduling = config.useSyncScheduling, + prepareForCommit = config.prepareForCommit, + resetAfterCommit = config.resetAfterCommit; + var startTime = now(); + var mostRecentCurrentTime = msToExpirationTime(0); + var lastUniqueAsyncExpiration = 0; + var expirationContext = NoWork; + var isWorking = false; + var nextUnitOfWork = null; + var nextRoot = null; + var nextRenderExpirationTime = NoWork; + var nextEffect = null; + var capturedErrors = null; + var failedBoundaries = null; + var commitPhaseBoundaries = null; + var firstUncaughtError = null; + var didFatal = false; + var isCommitting = false; + var isUnmounting = false; + var interruptedBy = null; + + function resetContextStack() { + reset(); + resetContext(); + resetHostContainer(); + } + + function commitAllHostEffects() { + while (nextEffect !== null) { + { + ReactDebugCurrentFiber.setCurrentFiber(nextEffect); + } + recordEffect(); + var effectTag = nextEffect.effectTag; + + if (effectTag & ContentReset) { + commitResetTextContent(nextEffect); + } + + if (effectTag & Ref) { + var current = nextEffect.alternate; + + if (current !== null) { + commitDetachRef(current); + } + } + + var primaryEffectTag = effectTag & ~(Callback | Err | ContentReset | Ref | PerformedWork); + + switch (primaryEffectTag) { + case Placement: + { + commitPlacement(nextEffect); + nextEffect.effectTag &= ~Placement; + break; + } + + case PlacementAndUpdate: + { + commitPlacement(nextEffect); + nextEffect.effectTag &= ~Placement; + var _current = nextEffect.alternate; + commitWork(_current, nextEffect); + break; + } + + case Update: + { + var _current2 = nextEffect.alternate; + commitWork(_current2, nextEffect); + break; + } + + case Deletion: + { + isUnmounting = true; + commitDeletion(nextEffect); + isUnmounting = false; + break; + } + } + + nextEffect = nextEffect.nextEffect; + } + + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + } + + function commitAllLifeCycles() { + while (nextEffect !== null) { + var effectTag = nextEffect.effectTag; + + if (effectTag & (Update | Callback)) { + recordEffect(); + var current = nextEffect.alternate; + commitLifeCycles(current, nextEffect); + } + + if (effectTag & Ref) { + recordEffect(); + commitAttachRef(nextEffect); + } + + if (effectTag & Err) { + recordEffect(); + commitErrorHandling(nextEffect); + } + + var next = nextEffect.nextEffect; + nextEffect.nextEffect = null; + nextEffect = next; + } + } + + function commitRoot(finishedWork) { + isWorking = true; + isCommitting = true; + startCommitTimer(); + var root = finishedWork.stateNode; + invariant(root.current !== finishedWork, "Cannot commit the same tree as before. This is probably a bug " + "related to the return field. This error is likely caused by a bug " + "in React. Please file an issue."); + root.isReadyForCommit = false; + ReactCurrentOwner.current = null; + var firstEffect = void 0; + + if (finishedWork.effectTag > PerformedWork) { + if (finishedWork.lastEffect !== null) { + finishedWork.lastEffect.nextEffect = finishedWork; + firstEffect = finishedWork.firstEffect; + } else { + firstEffect = finishedWork; + } + } else { + firstEffect = finishedWork.firstEffect; + } + + prepareForCommit(); + nextEffect = firstEffect; + startCommitHostEffectsTimer(); + + while (nextEffect !== null) { + var didError = false; + + var _error = void 0; + + { + invokeGuardedCallback$1(null, commitAllHostEffects, null); + + if (hasCaughtError()) { + didError = true; + _error = clearCaughtError(); + } + } + + if (didError) { + invariant(nextEffect !== null, "Should have next effect. This error is likely caused by a bug " + "in React. Please file an issue."); + captureError(nextEffect, _error); + + if (nextEffect !== null) { + nextEffect = nextEffect.nextEffect; + } + } + } + + stopCommitHostEffectsTimer(); + resetAfterCommit(); + root.current = finishedWork; + nextEffect = firstEffect; + startCommitLifeCyclesTimer(); + + while (nextEffect !== null) { + var _didError = false; + + var _error2 = void 0; + + { + invokeGuardedCallback$1(null, commitAllLifeCycles, null); + + if (hasCaughtError()) { + _didError = true; + _error2 = clearCaughtError(); + } + } + + if (_didError) { + invariant(nextEffect !== null, "Should have next effect. This error is likely caused by a bug " + "in React. Please file an issue."); + captureError(nextEffect, _error2); + + if (nextEffect !== null) { + nextEffect = nextEffect.nextEffect; + } + } + } + + isCommitting = false; + isWorking = false; + stopCommitLifeCyclesTimer(); + stopCommitTimer(); + + if (typeof onCommitRoot === "function") { + onCommitRoot(finishedWork.stateNode); + } + + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onCommitWork(finishedWork); + } + + if (commitPhaseBoundaries) { + commitPhaseBoundaries.forEach(scheduleErrorRecovery); + commitPhaseBoundaries = null; + } + + if (firstUncaughtError !== null) { + var _error3 = firstUncaughtError; + firstUncaughtError = null; + onUncaughtError(_error3); + } + + var remainingTime = root.current.expirationTime; + + if (remainingTime === NoWork) { + capturedErrors = null; + failedBoundaries = null; + } + + return remainingTime; + } + + function resetExpirationTime(workInProgress, renderTime) { + if (renderTime !== Never && workInProgress.expirationTime === Never) { + return; + } + + var newExpirationTime = getUpdateExpirationTime(workInProgress); + var child = workInProgress.child; + + while (child !== null) { + if (child.expirationTime !== NoWork && (newExpirationTime === NoWork || newExpirationTime > child.expirationTime)) { + newExpirationTime = child.expirationTime; + } + + child = child.sibling; + } + + workInProgress.expirationTime = newExpirationTime; + } + + function completeUnitOfWork(workInProgress) { + while (true) { + var current = workInProgress.alternate; + { + ReactDebugCurrentFiber.setCurrentFiber(workInProgress); + } + var next = completeWork(current, workInProgress, nextRenderExpirationTime); + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + var returnFiber = workInProgress["return"]; + var siblingFiber = workInProgress.sibling; + resetExpirationTime(workInProgress, nextRenderExpirationTime); + + if (next !== null) { + stopWorkTimer(workInProgress); + + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress); + } + + return next; + } + + if (returnFiber !== null) { + if (returnFiber.firstEffect === null) { + returnFiber.firstEffect = workInProgress.firstEffect; + } + + if (workInProgress.lastEffect !== null) { + if (returnFiber.lastEffect !== null) { + returnFiber.lastEffect.nextEffect = workInProgress.firstEffect; + } + + returnFiber.lastEffect = workInProgress.lastEffect; + } + + var effectTag = workInProgress.effectTag; + + if (effectTag > PerformedWork) { + if (returnFiber.lastEffect !== null) { + returnFiber.lastEffect.nextEffect = workInProgress; + } else { + returnFiber.firstEffect = workInProgress; + } + + returnFiber.lastEffect = workInProgress; + } + } + + stopWorkTimer(workInProgress); + + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress); + } + + if (siblingFiber !== null) { + return siblingFiber; + } else if (returnFiber !== null) { + workInProgress = returnFiber; + continue; + } else { + var root = workInProgress.stateNode; + root.isReadyForCommit = true; + return null; + } + } + + return null; + } + + function performUnitOfWork(workInProgress) { + var current = workInProgress.alternate; + startWorkTimer(workInProgress); + { + ReactDebugCurrentFiber.setCurrentFiber(workInProgress); + } + var next = beginWork(current, workInProgress, nextRenderExpirationTime); + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onBeginWork(workInProgress); + } + + if (next === null) { + next = completeUnitOfWork(workInProgress); + } + + ReactCurrentOwner.current = null; + return next; + } + + function performFailedUnitOfWork(workInProgress) { + var current = workInProgress.alternate; + startWorkTimer(workInProgress); + { + ReactDebugCurrentFiber.setCurrentFiber(workInProgress); + } + var next = beginFailedWork(current, workInProgress, nextRenderExpirationTime); + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + + if (true && ReactFiberInstrumentation_1.debugTool) { + ReactFiberInstrumentation_1.debugTool.onBeginWork(workInProgress); + } + + if (next === null) { + next = completeUnitOfWork(workInProgress); + } + + ReactCurrentOwner.current = null; + return next; + } + + function workLoop(expirationTime) { + if (capturedErrors !== null) { + slowWorkLoopThatChecksForFailedWork(expirationTime); + return; + } + + if (nextRenderExpirationTime === NoWork || nextRenderExpirationTime > expirationTime) { + return; + } + + if (nextRenderExpirationTime <= mostRecentCurrentTime) { + while (nextUnitOfWork !== null) { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } else { + while (nextUnitOfWork !== null && !shouldYield()) { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } + } + + function slowWorkLoopThatChecksForFailedWork(expirationTime) { + if (nextRenderExpirationTime === NoWork || nextRenderExpirationTime > expirationTime) { + return; + } + + if (nextRenderExpirationTime <= mostRecentCurrentTime) { + while (nextUnitOfWork !== null) { + if (hasCapturedError(nextUnitOfWork)) { + nextUnitOfWork = performFailedUnitOfWork(nextUnitOfWork); + } else { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } + } else { + while (nextUnitOfWork !== null && !shouldYield()) { + if (hasCapturedError(nextUnitOfWork)) { + nextUnitOfWork = performFailedUnitOfWork(nextUnitOfWork); + } else { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } + } + } + + function renderRootCatchBlock(root, failedWork, boundary, expirationTime) { + unwindContexts(failedWork, boundary); + nextUnitOfWork = performFailedUnitOfWork(boundary); + workLoop(expirationTime); + } + + function renderRoot(root, expirationTime) { + invariant(!isWorking, "renderRoot was called recursively. This error is likely caused " + "by a bug in React. Please file an issue."); + isWorking = true; + root.isReadyForCommit = false; + + if (root !== nextRoot || expirationTime !== nextRenderExpirationTime || nextUnitOfWork === null) { + resetContextStack(); + nextRoot = root; + nextRenderExpirationTime = expirationTime; + nextUnitOfWork = createWorkInProgress(nextRoot.current, null, expirationTime); + } + + startWorkLoopTimer(nextUnitOfWork); + var didError = false; + var error = null; + { + invokeGuardedCallback$1(null, workLoop, null, expirationTime); + + if (hasCaughtError()) { + didError = true; + error = clearCaughtError(); + } + } + + while (didError) { + if (didFatal) { + firstUncaughtError = error; + break; + } + + var failedWork = nextUnitOfWork; + + if (failedWork === null) { + didFatal = true; + continue; + } + + var boundary = captureError(failedWork, error); + invariant(boundary !== null, "Should have found an error boundary. This error is likely " + "caused by a bug in React. Please file an issue."); + + if (didFatal) { + continue; + } + + didError = false; + error = null; + { + invokeGuardedCallback$1(null, renderRootCatchBlock, null, root, failedWork, boundary, expirationTime); + + if (hasCaughtError()) { + didError = true; + error = clearCaughtError(); + continue; + } + } + break; + } + + var uncaughtError = firstUncaughtError; + stopWorkLoopTimer(interruptedBy); + interruptedBy = null; + isWorking = false; + didFatal = false; + firstUncaughtError = null; + + if (uncaughtError !== null) { + onUncaughtError(uncaughtError); + } + + return root.isReadyForCommit ? root.current.alternate : null; + } + + function captureError(failedWork, error) { + ReactCurrentOwner.current = null; + { + ReactDebugCurrentFiber.resetCurrentFiber(); + } + var boundary = null; + var errorBoundaryFound = false; + var willRetry = false; + var errorBoundaryName = null; + + if (failedWork.tag === HostRoot) { + boundary = failedWork; + + if (isFailedBoundary(failedWork)) { + didFatal = true; + } + } else { + var node = failedWork["return"]; + + while (node !== null && boundary === null) { + if (node.tag === ClassComponent) { + var instance = node.stateNode; + + if (typeof instance.componentDidCatch === "function") { + errorBoundaryFound = true; + errorBoundaryName = getComponentName(node); + boundary = node; + willRetry = true; + } + } else if (node.tag === HostRoot) { + boundary = node; + } + + if (isFailedBoundary(node)) { + if (isUnmounting) { + return null; + } + + if (commitPhaseBoundaries !== null && (commitPhaseBoundaries.has(node) || node.alternate !== null && commitPhaseBoundaries.has(node.alternate))) { + return null; + } + + boundary = null; + willRetry = false; + } + + node = node["return"]; + } + } + + if (boundary !== null) { + if (failedBoundaries === null) { + failedBoundaries = new Set(); + } + + failedBoundaries.add(boundary); + + var _componentStack = getStackAddendumByWorkInProgressFiber(failedWork); + + var _componentName = getComponentName(failedWork); + + if (capturedErrors === null) { + capturedErrors = new Map(); + } + + var capturedError = { + componentName: _componentName, + componentStack: _componentStack, + error: error, + errorBoundary: errorBoundaryFound ? boundary.stateNode : null, + errorBoundaryFound: errorBoundaryFound, + errorBoundaryName: errorBoundaryName, + willRetry: willRetry + }; + capturedErrors.set(boundary, capturedError); + + try { + logCapturedError(capturedError); + } catch (e) { + var suppressLogging = e && e.suppressReactErrorLogging; + + if (!suppressLogging) { + console.error(e); + } + } + + if (isCommitting) { + if (commitPhaseBoundaries === null) { + commitPhaseBoundaries = new Set(); + } + + commitPhaseBoundaries.add(boundary); + } else { + scheduleErrorRecovery(boundary); + } + + return boundary; + } else if (firstUncaughtError === null) { + firstUncaughtError = error; + } + + return null; + } + + function hasCapturedError(fiber) { + return capturedErrors !== null && (capturedErrors.has(fiber) || fiber.alternate !== null && capturedErrors.has(fiber.alternate)); + } + + function isFailedBoundary(fiber) { + return failedBoundaries !== null && (failedBoundaries.has(fiber) || fiber.alternate !== null && failedBoundaries.has(fiber.alternate)); + } + + function commitErrorHandling(effectfulFiber) { + var capturedError = void 0; + + if (capturedErrors !== null) { + capturedError = capturedErrors.get(effectfulFiber); + capturedErrors["delete"](effectfulFiber); + + if (capturedError == null) { + if (effectfulFiber.alternate !== null) { + effectfulFiber = effectfulFiber.alternate; + capturedError = capturedErrors.get(effectfulFiber); + capturedErrors["delete"](effectfulFiber); + } + } + } + + invariant(capturedError != null, "No error for given unit of work. This error is likely caused by a " + "bug in React. Please file an issue."); + + switch (effectfulFiber.tag) { + case ClassComponent: + var instance = effectfulFiber.stateNode; + var info = { + componentStack: capturedError.componentStack + }; + instance.componentDidCatch(capturedError.error, info); + return; + + case HostRoot: + if (firstUncaughtError === null) { + firstUncaughtError = capturedError.error; + } + + return; + + default: + invariant(false, "Invalid type of work. This error is likely caused by a bug in " + "React. Please file an issue."); + } + } + + function unwindContexts(from, to) { + var node = from; + + while (node !== null) { + switch (node.tag) { + case ClassComponent: + popContextProvider(node); + break; + + case HostComponent: + popHostContext(node); + break; + + case HostRoot: + popHostContainer(node); + break; + + case HostPortal: + popHostContainer(node); + break; + } + + if (node === to || node.alternate === to) { + stopFailedWorkTimer(node); + break; + } else { + stopWorkTimer(node); + } + + node = node["return"]; + } + } + + function computeAsyncExpiration() { + var currentTime = recalculateCurrentTime(); + var expirationMs = 1000; + var bucketSizeMs = 200; + return computeExpirationBucket(currentTime, expirationMs, bucketSizeMs); + } + + function computeUniqueAsyncExpiration() { + var result = computeAsyncExpiration(); + + if (result <= lastUniqueAsyncExpiration) { + result = lastUniqueAsyncExpiration + 1; + } + + lastUniqueAsyncExpiration = result; + return lastUniqueAsyncExpiration; + } + + function computeExpirationForFiber(fiber) { + var expirationTime = void 0; + + if (expirationContext !== NoWork) { + expirationTime = expirationContext; + } else if (isWorking) { + if (isCommitting) { + expirationTime = Sync; + } else { + expirationTime = nextRenderExpirationTime; + } + } else { + if (useSyncScheduling && !(fiber.internalContextTag & AsyncUpdates)) { + expirationTime = Sync; + } else { + expirationTime = computeAsyncExpiration(); + } + } + + return expirationTime; + } + + function scheduleWork(fiber, expirationTime) { + return scheduleWorkImpl(fiber, expirationTime, false); + } + + function checkRootNeedsClearing(root, fiber, expirationTime) { + if (!isWorking && root === nextRoot && expirationTime < nextRenderExpirationTime) { + if (nextUnitOfWork !== null) { + interruptedBy = fiber; + } + + nextRoot = null; + nextUnitOfWork = null; + nextRenderExpirationTime = NoWork; + } + } + + function scheduleWorkImpl(fiber, expirationTime, isErrorRecovery) { + recordScheduleUpdate(); + { + if (!isErrorRecovery && fiber.tag === ClassComponent) { + var instance = fiber.stateNode; + warnAboutInvalidUpdates(instance); + } + } + var node = fiber; + + while (node !== null) { + if (node.expirationTime === NoWork || node.expirationTime > expirationTime) { + node.expirationTime = expirationTime; + } + + if (node.alternate !== null) { + if (node.alternate.expirationTime === NoWork || node.alternate.expirationTime > expirationTime) { + node.alternate.expirationTime = expirationTime; + } + } + + if (node["return"] === null) { + if (node.tag === HostRoot) { + var root = node.stateNode; + checkRootNeedsClearing(root, fiber, expirationTime); + requestWork(root, expirationTime); + checkRootNeedsClearing(root, fiber, expirationTime); + } else { + { + if (!isErrorRecovery && fiber.tag === ClassComponent) { + warnAboutUpdateOnUnmounted(fiber); + } + } + return; + } + } + + node = node["return"]; + } + } + + function scheduleErrorRecovery(fiber) { + scheduleWorkImpl(fiber, Sync, true); + } + + function recalculateCurrentTime() { + var ms = now() - startTime; + mostRecentCurrentTime = msToExpirationTime(ms); + return mostRecentCurrentTime; + } + + function deferredUpdates(fn) { + var previousExpirationContext = expirationContext; + expirationContext = computeAsyncExpiration(); + + try { + return fn(); + } finally { + expirationContext = previousExpirationContext; + } + } + + function syncUpdates(fn) { + var previousExpirationContext = expirationContext; + expirationContext = Sync; + + try { + return fn(); + } finally { + expirationContext = previousExpirationContext; + } + } + + var firstScheduledRoot = null; + var lastScheduledRoot = null; + var callbackExpirationTime = NoWork; + var callbackID = -1; + var isRendering = false; + var nextFlushedRoot = null; + var nextFlushedExpirationTime = NoWork; + var deadlineDidExpire = false; + var hasUnhandledError = false; + var unhandledError = null; + var deadline = null; + var isBatchingUpdates = false; + var isUnbatchingUpdates = false; + var completedBatches = null; + var NESTED_UPDATE_LIMIT = 1000; + var nestedUpdateCount = 0; + var timeHeuristicForUnitOfWork = 1; + + function scheduleCallbackWithExpiration(expirationTime) { + if (callbackExpirationTime !== NoWork) { + if (expirationTime > callbackExpirationTime) { + return; + } else { + cancelDeferredCallback(callbackID); + } + } else { + startRequestCallbackTimer(); + } + + var currentMs = now() - startTime; + var expirationMs = expirationTimeToMs(expirationTime); + var timeout = expirationMs - currentMs; + callbackExpirationTime = expirationTime; + callbackID = scheduleDeferredCallback(performAsyncWork, { + timeout: timeout + }); + } + + function requestWork(root, expirationTime) { + if (nestedUpdateCount > NESTED_UPDATE_LIMIT) { + invariant(false, "Maximum update depth exceeded. This can happen when a " + "component repeatedly calls setState inside componentWillUpdate or " + "componentDidUpdate. React limits the number of nested updates to " + "prevent infinite loops."); + } + + if (root.nextScheduledRoot === null) { + root.remainingExpirationTime = expirationTime; + + if (lastScheduledRoot === null) { + firstScheduledRoot = lastScheduledRoot = root; + root.nextScheduledRoot = root; + } else { + lastScheduledRoot.nextScheduledRoot = root; + lastScheduledRoot = root; + lastScheduledRoot.nextScheduledRoot = firstScheduledRoot; + } + } else { + var remainingExpirationTime = root.remainingExpirationTime; + + if (remainingExpirationTime === NoWork || expirationTime < remainingExpirationTime) { + root.remainingExpirationTime = expirationTime; + } + } + + if (isRendering) { + return; + } + + if (isBatchingUpdates) { + if (isUnbatchingUpdates) { + nextFlushedRoot = root; + nextFlushedExpirationTime = Sync; + performWorkOnRoot(root, Sync, recalculateCurrentTime()); + } + + return; + } + + if (expirationTime === Sync) { + performWork(Sync, null); + } else { + scheduleCallbackWithExpiration(expirationTime); + } + } + + function findHighestPriorityRoot() { + var highestPriorityWork = NoWork; + var highestPriorityRoot = null; + + if (lastScheduledRoot !== null) { + var previousScheduledRoot = lastScheduledRoot; + var root = firstScheduledRoot; + + while (root !== null) { + var remainingExpirationTime = root.remainingExpirationTime; + + if (remainingExpirationTime === NoWork) { + invariant(previousScheduledRoot !== null && lastScheduledRoot !== null, "Should have a previous and last root. This error is likely " + "caused by a bug in React. Please file an issue."); + + if (root === root.nextScheduledRoot) { + root.nextScheduledRoot = null; + firstScheduledRoot = lastScheduledRoot = null; + break; + } else if (root === firstScheduledRoot) { + var next = root.nextScheduledRoot; + firstScheduledRoot = next; + lastScheduledRoot.nextScheduledRoot = next; + root.nextScheduledRoot = null; + } else if (root === lastScheduledRoot) { + lastScheduledRoot = previousScheduledRoot; + lastScheduledRoot.nextScheduledRoot = firstScheduledRoot; + root.nextScheduledRoot = null; + break; + } else { + previousScheduledRoot.nextScheduledRoot = root.nextScheduledRoot; + root.nextScheduledRoot = null; + } + + root = previousScheduledRoot.nextScheduledRoot; + } else { + if (highestPriorityWork === NoWork || remainingExpirationTime < highestPriorityWork) { + highestPriorityWork = remainingExpirationTime; + highestPriorityRoot = root; + } + + if (root === lastScheduledRoot) { + break; + } + + previousScheduledRoot = root; + root = root.nextScheduledRoot; + } + } + } + + var previousFlushedRoot = nextFlushedRoot; + + if (previousFlushedRoot !== null && previousFlushedRoot === highestPriorityRoot) { + nestedUpdateCount++; + } else { + nestedUpdateCount = 0; + } + + nextFlushedRoot = highestPriorityRoot; + nextFlushedExpirationTime = highestPriorityWork; + } + + function performAsyncWork(dl) { + performWork(NoWork, dl); + } + + function performWork(minExpirationTime, dl) { + deadline = dl; + findHighestPriorityRoot(); + + if (enableUserTimingAPI && deadline !== null) { + var didExpire = nextFlushedExpirationTime < recalculateCurrentTime(); + stopRequestCallbackTimer(didExpire); + } + + while (nextFlushedRoot !== null && nextFlushedExpirationTime !== NoWork && (minExpirationTime === NoWork || nextFlushedExpirationTime <= minExpirationTime) && !deadlineDidExpire) { + performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, recalculateCurrentTime()); + findHighestPriorityRoot(); + } + + if (deadline !== null) { + callbackExpirationTime = NoWork; + callbackID = -1; + } + + if (nextFlushedExpirationTime !== NoWork) { + scheduleCallbackWithExpiration(nextFlushedExpirationTime); + } + + deadline = null; + deadlineDidExpire = false; + nestedUpdateCount = 0; + finishRendering(); + } + + function flushRoot(root, expirationTime) { + invariant(!isRendering, "work.commit(): Cannot commit while already rendering. This likely " + "means you attempted to commit from inside a lifecycle method."); + performWorkOnRoot(root, expirationTime, expirationTime); + finishRendering(); + } + + function finishRendering() { + if (completedBatches !== null) { + var batches = completedBatches; + completedBatches = null; + + for (var i = 0; i < batches.length; i++) { + var batch = batches[i]; + + try { + batch._onComplete(); + } catch (error) { + if (!hasUnhandledError) { + hasUnhandledError = true; + unhandledError = error; + } + } + } + } + + if (hasUnhandledError) { + var _error4 = unhandledError; + unhandledError = null; + hasUnhandledError = false; + throw _error4; + } + } + + function performWorkOnRoot(root, expirationTime, currentTime) { + invariant(!isRendering, "performWorkOnRoot was called recursively. This error is likely caused " + "by a bug in React. Please file an issue."); + isRendering = true; + + if (expirationTime <= currentTime) { + var finishedWork = root.finishedWork; + + if (finishedWork !== null) { + completeRoot(root, finishedWork, expirationTime); + } else { + root.finishedWork = null; + finishedWork = renderRoot(root, expirationTime); + + if (finishedWork !== null) { + completeRoot(root, finishedWork, expirationTime); + } + } + } else { + var _finishedWork = root.finishedWork; + + if (_finishedWork !== null) { + completeRoot(root, _finishedWork, expirationTime); + } else { + root.finishedWork = null; + _finishedWork = renderRoot(root, expirationTime); + + if (_finishedWork !== null) { + if (!shouldYield()) { + completeRoot(root, _finishedWork, expirationTime); + } else { + root.finishedWork = _finishedWork; + } + } + } + } + + isRendering = false; + } + + function completeRoot(root, finishedWork, expirationTime) { + var firstBatch = root.firstBatch; + + if (firstBatch !== null && firstBatch._expirationTime <= expirationTime) { + if (completedBatches === null) { + completedBatches = [firstBatch]; + } else { + completedBatches.push(firstBatch); + } + + if (firstBatch._defer) { + root.finishedWork = finishedWork; + root.remainingExpirationTime = NoWork; + return; + } + } + + root.finishedWork = null; + root.remainingExpirationTime = commitRoot(finishedWork); + } + + function shouldYield() { + if (deadline === null) { + return false; + } + + if (deadline.timeRemaining() > timeHeuristicForUnitOfWork) { + return false; + } + + deadlineDidExpire = true; + return true; + } + + function onUncaughtError(error) { + invariant(nextFlushedRoot !== null, "Should be working on a root. This error is likely caused by a bug in " + "React. Please file an issue."); + nextFlushedRoot.remainingExpirationTime = NoWork; + + if (!hasUnhandledError) { + hasUnhandledError = true; + unhandledError = error; + } + } + + function batchedUpdates(fn, a) { + var previousIsBatchingUpdates = isBatchingUpdates; + isBatchingUpdates = true; + + try { + return fn(a); + } finally { + isBatchingUpdates = previousIsBatchingUpdates; + + if (!isBatchingUpdates && !isRendering) { + performWork(Sync, null); + } + } + } + + function unbatchedUpdates(fn) { + if (isBatchingUpdates && !isUnbatchingUpdates) { + isUnbatchingUpdates = true; + + try { + return fn(); + } finally { + isUnbatchingUpdates = false; + } + } + + return fn(); + } + + function flushSync(fn) { + var previousIsBatchingUpdates = isBatchingUpdates; + isBatchingUpdates = true; + + try { + return syncUpdates(fn); + } finally { + isBatchingUpdates = previousIsBatchingUpdates; + invariant(!isRendering, "flushSync was called from inside a lifecycle method. It cannot be " + "called when React is already rendering."); + performWork(Sync, null); + } + } + + return { + computeAsyncExpiration: computeAsyncExpiration, + computeExpirationForFiber: computeExpirationForFiber, + scheduleWork: scheduleWork, + requestWork: requestWork, + flushRoot: flushRoot, + batchedUpdates: batchedUpdates, + unbatchedUpdates: unbatchedUpdates, + flushSync: flushSync, + deferredUpdates: deferredUpdates, + computeUniqueAsyncExpiration: computeUniqueAsyncExpiration + }; + }; + + { + var didWarnAboutNestedUpdates = false; + } + + function getContextForSubtree(parentComponent) { + if (!parentComponent) { + return emptyObject; + } + + var fiber = get(parentComponent); + var parentContext = findCurrentUnmaskedContext(fiber); + return isContextProvider(fiber) ? processChildContext(fiber, parentContext) : parentContext; + } + + var ReactFiberReconciler$1 = function ReactFiberReconciler$1(config) { + var getPublicInstance = config.getPublicInstance; + + var _ReactFiberScheduler = ReactFiberScheduler(config), + computeAsyncExpiration = _ReactFiberScheduler.computeAsyncExpiration, + computeUniqueAsyncExpiration = _ReactFiberScheduler.computeUniqueAsyncExpiration, + computeExpirationForFiber = _ReactFiberScheduler.computeExpirationForFiber, + scheduleWork = _ReactFiberScheduler.scheduleWork, + requestWork = _ReactFiberScheduler.requestWork, + flushRoot = _ReactFiberScheduler.flushRoot, + batchedUpdates = _ReactFiberScheduler.batchedUpdates, + unbatchedUpdates = _ReactFiberScheduler.unbatchedUpdates, + flushSync = _ReactFiberScheduler.flushSync, + deferredUpdates = _ReactFiberScheduler.deferredUpdates; + + function computeRootExpirationTime(current, element) { + var expirationTime = void 0; + + if (enableAsyncSubtreeAPI && element != null && element.type != null && element.type.prototype != null && element.type.prototype.unstable_isAsyncReactComponent === true) { + expirationTime = computeAsyncExpiration(); + } else { + expirationTime = computeExpirationForFiber(current); + } + + return expirationTime; + } + + function scheduleRootUpdate(current, element, expirationTime, callback) { + { + if (ReactDebugCurrentFiber.phase === "render" && ReactDebugCurrentFiber.current !== null && !didWarnAboutNestedUpdates) { + didWarnAboutNestedUpdates = true; + warning(false, "Render methods should be a pure function of props and state; " + "triggering nested component updates from render is not allowed. " + "If necessary, trigger nested updates in componentDidUpdate.\n\n" + "Check the render method of %s.", getComponentName(ReactDebugCurrentFiber.current) || "Unknown"); + } + } + callback = callback === undefined ? null : callback; + { + warning(callback === null || typeof callback === "function", "render(...): Expected the last optional `callback` argument to be a " + "function. Instead received: %s.", callback); + } + var update = { + expirationTime: expirationTime, + partialState: { + element: element + }, + callback: callback, + isReplace: false, + isForced: false, + next: null + }; + insertUpdateIntoFiber(current, update); + scheduleWork(current, expirationTime); + return expirationTime; + } + + function updateContainerAtExpirationTime(element, container, parentComponent, expirationTime, callback) { + var current = container.current; + { + if (ReactFiberInstrumentation_1.debugTool) { + if (current.alternate === null) { + ReactFiberInstrumentation_1.debugTool.onMountContainer(container); + } else if (element === null) { + ReactFiberInstrumentation_1.debugTool.onUnmountContainer(container); + } else { + ReactFiberInstrumentation_1.debugTool.onUpdateContainer(container); + } + } + } + var context = getContextForSubtree(parentComponent); + + if (container.context === null) { + container.context = context; + } else { + container.pendingContext = context; + } + + return scheduleRootUpdate(current, element, expirationTime, callback); + } + + function findHostInstance(fiber) { + var hostFiber = findCurrentHostFiber(fiber); + + if (hostFiber === null) { + return null; + } + + return hostFiber.stateNode; + } + + return { + createContainer: function createContainer(containerInfo, hydrate) { + return createFiberRoot(containerInfo, hydrate); + }, + updateContainer: function updateContainer(element, container, parentComponent, callback) { + var current = container.current; + var expirationTime = computeRootExpirationTime(current, element); + return updateContainerAtExpirationTime(element, container, parentComponent, expirationTime, callback); + }, + updateContainerAtExpirationTime: updateContainerAtExpirationTime, + flushRoot: flushRoot, + requestWork: requestWork, + computeUniqueAsyncExpiration: computeUniqueAsyncExpiration, + batchedUpdates: batchedUpdates, + unbatchedUpdates: unbatchedUpdates, + deferredUpdates: deferredUpdates, + flushSync: flushSync, + getPublicRootInstance: function getPublicRootInstance(container) { + var containerFiber = container.current; + + if (!containerFiber.child) { + return null; + } + + switch (containerFiber.child.tag) { + case HostComponent: + return getPublicInstance(containerFiber.child.stateNode); + + default: + return containerFiber.child.stateNode; + } + }, + findHostInstance: findHostInstance, + findHostInstanceWithNoPortals: function findHostInstanceWithNoPortals(fiber) { + var hostFiber = findCurrentHostFiberWithNoPortals(fiber); + + if (hostFiber === null) { + return null; + } + + return hostFiber.stateNode; + }, + injectIntoDevTools: function injectIntoDevTools(devToolsConfig) { + var _findFiberByHostInstance = devToolsConfig.findFiberByHostInstance; + return injectInternals(babelHelpers.extends({}, devToolsConfig, { + findHostInstanceByFiber: function findHostInstanceByFiber(fiber) { + return findHostInstance(fiber); + }, + findFiberByHostInstance: function findFiberByHostInstance(instance) { + if (!_findFiberByHostInstance) { + return null; + } + + return _findFiberByHostInstance(instance); + } + })); + } + }; + }; + + var ReactFiberReconciler$2 = Object.freeze({ + default: ReactFiberReconciler$1 + }); + var ReactFiberReconciler$3 = ReactFiberReconciler$2 && ReactFiberReconciler$1 || ReactFiberReconciler$2; + var reactReconciler = ReactFiberReconciler$3["default"] ? ReactFiberReconciler$3["default"] : ReactFiberReconciler$3; + var viewConfigCallbacks = new Map(); + var viewConfigs = new Map(); + + function register(name, callback) { + invariant(!viewConfigCallbacks.has(name), "Tried to register two views with the same name %s", name); + viewConfigCallbacks.set(name, callback); + return name; + } + + function get$1(name) { + var viewConfig = void 0; + + if (!viewConfigs.has(name)) { + var callback = viewConfigCallbacks.get(name); + invariant(typeof callback === "function", "View config not found for name %s", name); + viewConfigCallbacks.set(name, null); + viewConfig = callback(); + viewConfigs.set(name, viewConfig); + } else { + viewConfig = viewConfigs.get(name); + } + + invariant(viewConfig, "View config not found for name %s", name); + return viewConfig; + } + + function _classCallCheck$1(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var ReactNativeFiberHostComponent = function () { + function ReactNativeFiberHostComponent(tag, viewConfig) { + _classCallCheck$1(this, ReactNativeFiberHostComponent); + + this._nativeTag = tag; + this._children = []; + this.viewConfig = viewConfig; + } + + ReactNativeFiberHostComponent.prototype.blur = function blur() { + TextInputState.blurTextInput(this._nativeTag); + }; + + ReactNativeFiberHostComponent.prototype.focus = function focus() { + TextInputState.focusTextInput(this._nativeTag); + }; + + ReactNativeFiberHostComponent.prototype.measure = function measure(callback) { + UIManager.measure(this._nativeTag, mountSafeCallback(this, callback)); + }; + + ReactNativeFiberHostComponent.prototype.measureInWindow = function measureInWindow(callback) { + UIManager.measureInWindow(this._nativeTag, mountSafeCallback(this, callback)); + }; + + ReactNativeFiberHostComponent.prototype.measureLayout = function measureLayout(relativeToNativeNode, onSuccess, onFail) { + UIManager.measureLayout(this._nativeTag, relativeToNativeNode, mountSafeCallback(this, onFail), mountSafeCallback(this, onSuccess)); + }; + + ReactNativeFiberHostComponent.prototype.setNativeProps = function setNativeProps(nativeProps) { + { + warnForStyleProps(nativeProps, this.viewConfig.validAttributes); + } + var updatePayload = create(nativeProps, this.viewConfig.validAttributes); + + if (updatePayload != null) { + UIManager.updateView(this._nativeTag, this.viewConfig.uiViewClassName, updatePayload); + } + }; + + return ReactNativeFiberHostComponent; + }(); + + var hasNativePerformanceNow = typeof performance === "object" && typeof performance.now === "function"; + var now = hasNativePerformanceNow ? function () { + return performance.now(); + } : function () { + return Date.now(); + }; + var scheduledCallback = null; + var frameDeadline = 0; + var frameDeadlineObject = { + timeRemaining: function timeRemaining() { + return frameDeadline - now(); + } + }; + + function setTimeoutCallback() { + frameDeadline = now() + 5; + var callback = scheduledCallback; + scheduledCallback = null; + + if (callback !== null) { + callback(frameDeadlineObject); + } + } + + function scheduleDeferredCallback(callback) { + scheduledCallback = callback; + return setTimeout(setTimeoutCallback, 1); + } + + function cancelDeferredCallback(callbackID) { + scheduledCallback = null; + clearTimeout(callbackID); + } + + function recursivelyUncacheFiberNode(node) { + if (typeof node === "number") { + uncacheFiberNode(node); + } else { + uncacheFiberNode(node._nativeTag); + + node._children.forEach(recursivelyUncacheFiberNode); + } + } + + var NativeRenderer = reactReconciler({ + appendInitialChild: function appendInitialChild(parentInstance, child) { + parentInstance._children.push(child); + }, + createInstance: function createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) { + var tag = ReactNativeTagHandles.allocateTag(); + var viewConfig = get$1(type); + { + for (var key in viewConfig.validAttributes) { + if (props.hasOwnProperty(key)) { + deepFreezeAndThrowOnMutationInDev(props[key]); + } + } + } + var updatePayload = create(props, viewConfig.validAttributes); + UIManager.createView(tag, viewConfig.uiViewClassName, rootContainerInstance, updatePayload); + var component = new ReactNativeFiberHostComponent(tag, viewConfig); + precacheFiberNode(internalInstanceHandle, tag); + updateFiberProps(tag, props); + return component; + }, + createTextInstance: function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) { + var tag = ReactNativeTagHandles.allocateTag(); + UIManager.createView(tag, "RCTRawText", rootContainerInstance, { + text: text + }); + precacheFiberNode(internalInstanceHandle, tag); + return tag; + }, + finalizeInitialChildren: function finalizeInitialChildren(parentInstance, type, props, rootContainerInstance) { + if (parentInstance._children.length === 0) { + return false; + } + + var nativeTags = parentInstance._children.map(function (child) { + return typeof child === "number" ? child : child._nativeTag; + }); + + UIManager.setChildren(parentInstance._nativeTag, nativeTags); + return false; + }, + getRootHostContext: function getRootHostContext() { + return emptyObject; + }, + getChildHostContext: function getChildHostContext() { + return emptyObject; + }, + getPublicInstance: function getPublicInstance(instance) { + return instance; + }, + now: now, + prepareForCommit: function prepareForCommit() {}, + prepareUpdate: function prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, hostContext) { + return emptyObject; + }, + resetAfterCommit: function resetAfterCommit() {}, + scheduleDeferredCallback: scheduleDeferredCallback, + cancelDeferredCallback: cancelDeferredCallback, + shouldDeprioritizeSubtree: function shouldDeprioritizeSubtree(type, props) { + return false; + }, + shouldSetTextContent: function shouldSetTextContent(type, props) { + return false; + }, + useSyncScheduling: true, + mutation: { + appendChild: function appendChild(parentInstance, child) { + var childTag = typeof child === "number" ? child : child._nativeTag; + var children = parentInstance._children; + var index = children.indexOf(child); + + if (index >= 0) { + children.splice(index, 1); + children.push(child); + UIManager.manageChildren(parentInstance._nativeTag, [index], [children.length - 1], [], [], []); + } else { + children.push(child); + UIManager.manageChildren(parentInstance._nativeTag, [], [], [childTag], [children.length - 1], []); + } + }, + appendChildToContainer: function appendChildToContainer(parentInstance, child) { + var childTag = typeof child === "number" ? child : child._nativeTag; + UIManager.setChildren(parentInstance, [childTag]); + }, + commitTextUpdate: function commitTextUpdate(textInstance, oldText, newText) { + UIManager.updateView(textInstance, "RCTRawText", { + text: newText + }); + }, + commitMount: function commitMount(instance, type, newProps, internalInstanceHandle) {}, + commitUpdate: function commitUpdate(instance, updatePayloadTODO, type, oldProps, newProps, internalInstanceHandle) { + var viewConfig = instance.viewConfig; + updateFiberProps(instance._nativeTag, newProps); + var updatePayload = diff(oldProps, newProps, viewConfig.validAttributes); + + if (updatePayload != null) { + UIManager.updateView(instance._nativeTag, viewConfig.uiViewClassName, updatePayload); + } + }, + insertBefore: function insertBefore(parentInstance, child, beforeChild) { + var children = parentInstance._children; + var index = children.indexOf(child); + + if (index >= 0) { + children.splice(index, 1); + var beforeChildIndex = children.indexOf(beforeChild); + children.splice(beforeChildIndex, 0, child); + UIManager.manageChildren(parentInstance._nativeTag, [index], [beforeChildIndex], [], [], []); + } else { + var _beforeChildIndex = children.indexOf(beforeChild); + + children.splice(_beforeChildIndex, 0, child); + var childTag = typeof child === "number" ? child : child._nativeTag; + UIManager.manageChildren(parentInstance._nativeTag, [], [], [childTag], [_beforeChildIndex], []); + } + }, + insertInContainerBefore: function insertInContainerBefore(parentInstance, child, beforeChild) { + invariant(typeof parentInstance !== "number", "Container does not support insertBefore operation"); + }, + removeChild: function removeChild(parentInstance, child) { + recursivelyUncacheFiberNode(child); + var children = parentInstance._children; + var index = children.indexOf(child); + children.splice(index, 1); + UIManager.manageChildren(parentInstance._nativeTag, [], [], [], [], [index]); + }, + removeChildFromContainer: function removeChildFromContainer(parentInstance, child) { + recursivelyUncacheFiberNode(child); + UIManager.manageChildren(parentInstance, [], [], [], [], [0]); + }, + resetTextContent: function resetTextContent(instance) {} + } + }); + + function findNodeHandle(componentOrHandle) { + { + var owner = ReactCurrentOwner.current; + + if (owner !== null && owner.stateNode !== null) { + warning(owner.stateNode._warnedAboutRefsInRender, "%s is accessing findNodeHandle inside its render(). " + "render() should be a pure function of props and state. It should " + "never access something that requires stale data from the previous " + "render, such as refs. Move this logic to componentDidMount and " + "componentDidUpdate instead.", getComponentName(owner) || "A component"); + owner.stateNode._warnedAboutRefsInRender = true; + } + } + + if (componentOrHandle == null) { + return null; + } + + if (typeof componentOrHandle === "number") { + return componentOrHandle; + } + + var component = componentOrHandle; + var internalInstance = get(component); + + if (internalInstance) { + return NativeRenderer.findHostInstance(internalInstance); + } else { + if (component) { + return component; + } else { + invariant(typeof component === "object" && "_nativeTag" in component || component.render != null && typeof component.render === "function", "findNodeHandle(...): Argument is not a component " + "(type: %s, keys: %s)", typeof component, Object.keys(component)); + invariant(false, "findNodeHandle(...): Unable to find node handle for unmounted " + "component."); + } + } + } + + function findNumericNodeHandleFiber(componentOrHandle) { + var instance = findNodeHandle(componentOrHandle); + + if (instance == null || typeof instance === "number") { + return instance; + } + + return instance._nativeTag; + } + + var NativeMethodsMixin = { + measure: function measure(callback) { + UIManager.measure(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }, + measureInWindow: function measureInWindow(callback) { + UIManager.measureInWindow(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }, + measureLayout: function measureLayout(relativeToNativeNode, onSuccess, onFail) { + UIManager.measureLayout(findNumericNodeHandleFiber(this), relativeToNativeNode, mountSafeCallback(this, onFail), mountSafeCallback(this, onSuccess)); + }, + setNativeProps: function setNativeProps(nativeProps) { + var maybeInstance = void 0; + + try { + maybeInstance = findNodeHandle(this); + } catch (error) {} + + if (maybeInstance == null) { + return; + } + + var viewConfig = maybeInstance.viewConfig; + { + warnForStyleProps(nativeProps, viewConfig.validAttributes); + } + var updatePayload = create(nativeProps, viewConfig.validAttributes); + + if (updatePayload != null) { + UIManager.updateView(maybeInstance._nativeTag, viewConfig.uiViewClassName, updatePayload); + } + }, + focus: function focus() { + TextInputState.focusTextInput(findNumericNodeHandleFiber(this)); + }, + blur: function blur() { + TextInputState.blurTextInput(findNumericNodeHandleFiber(this)); + } + }; + { + var NativeMethodsMixin_DEV = NativeMethodsMixin; + invariant(!NativeMethodsMixin_DEV.componentWillMount && !NativeMethodsMixin_DEV.componentWillReceiveProps, "Do not override existing functions."); + + NativeMethodsMixin_DEV.componentWillMount = function () { + throwOnStylesProp(this, this.props); + }; + + NativeMethodsMixin_DEV.componentWillReceiveProps = function (newProps) { + throwOnStylesProp(this, newProps); + }; + } + + function _classCallCheck$2(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + } + + var ReactNativeComponent = function (_React$Component) { + _inherits(ReactNativeComponent, _React$Component); + + function ReactNativeComponent() { + _classCallCheck$2(this, ReactNativeComponent); + + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + ReactNativeComponent.prototype.blur = function blur() { + TextInputState.blurTextInput(findNumericNodeHandleFiber(this)); + }; + + ReactNativeComponent.prototype.focus = function focus() { + TextInputState.focusTextInput(findNumericNodeHandleFiber(this)); + }; + + ReactNativeComponent.prototype.measure = function measure(callback) { + UIManager.measure(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }; + + ReactNativeComponent.prototype.measureInWindow = function measureInWindow(callback) { + UIManager.measureInWindow(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }; + + ReactNativeComponent.prototype.measureLayout = function measureLayout(relativeToNativeNode, onSuccess, onFail) { + UIManager.measureLayout(findNumericNodeHandleFiber(this), relativeToNativeNode, mountSafeCallback(this, onFail), mountSafeCallback(this, onSuccess)); + }; + + ReactNativeComponent.prototype.setNativeProps = function setNativeProps(nativeProps) { + var maybeInstance = void 0; + + try { + maybeInstance = findNodeHandle(this); + } catch (error) {} + + if (maybeInstance == null) { + return; + } + + var viewConfig = maybeInstance.viewConfig; + var updatePayload = create(nativeProps, viewConfig.validAttributes); + + if (updatePayload != null) { + UIManager.updateView(maybeInstance._nativeTag, viewConfig.uiViewClassName, updatePayload); + } + }; + + return ReactNativeComponent; + }(React.Component); + + var getInspectorDataForViewTag = void 0; + { + var traverseOwnerTreeUp = function traverseOwnerTreeUp(hierarchy, instance) { + if (instance) { + hierarchy.unshift(instance); + traverseOwnerTreeUp(hierarchy, instance._debugOwner); + } + }; + + var getOwnerHierarchy = function getOwnerHierarchy(instance) { + var hierarchy = []; + traverseOwnerTreeUp(hierarchy, instance); + return hierarchy; + }; + + var lastNonHostInstance = function lastNonHostInstance(hierarchy) { + for (var i = hierarchy.length - 1; i > 1; i--) { + var instance = hierarchy[i]; + + if (instance.tag !== HostComponent) { + return instance; + } + } + + return hierarchy[0]; + }; + + var getHostProps = function getHostProps(fiber) { + var host = findCurrentHostFiber(fiber); + + if (host) { + return host.memoizedProps || emptyObject; + } + + return emptyObject; + }; + + var getHostNode = function getHostNode(fiber, findNodeHandle) { + var hostNode = void 0; + + while (fiber) { + if (fiber.stateNode !== null && fiber.tag === HostComponent) { + hostNode = findNodeHandle(fiber.stateNode); + } + + if (hostNode) { + return hostNode; + } + + fiber = fiber.child; + } + + return null; + }; + + var createHierarchy = function createHierarchy(fiberHierarchy) { + return fiberHierarchy.map(function (fiber) { + return { + name: getComponentName(fiber), + getInspectorData: function getInspectorData(findNodeHandle) { + return { + measure: function measure(callback) { + return UIManager.measure(getHostNode(fiber, findNodeHandle), callback); + }, + props: getHostProps(fiber), + source: fiber._debugSource + }; + } + }; + }); + }; + + getInspectorDataForViewTag = function getInspectorDataForViewTag(viewTag) { + var closestInstance = getInstanceFromTag(viewTag); + + if (!closestInstance) { + return { + hierarchy: [], + props: emptyObject, + selection: null, + source: null + }; + } + + var fiber = findCurrentFiberUsingSlowPath(closestInstance); + var fiberHierarchy = getOwnerHierarchy(fiber); + var instance = lastNonHostInstance(fiberHierarchy); + var hierarchy = createHierarchy(fiberHierarchy); + var props = getHostProps(instance); + var source = instance._debugSource; + var selection = fiberHierarchy.indexOf(instance); + return { + hierarchy: hierarchy, + props: props, + selection: selection, + source: source + }; + }; + } + + var createReactNativeComponentClass = function createReactNativeComponentClass(name, callback) { + return register(name, callback); + }; + + function takeSnapshot(view, options) { + if (typeof view !== "number" && view !== "window") { + view = findNumericNodeHandleFiber(view) || "window"; + } + + return UIManager.__takeSnapshot(view, options); + } + + injection$2.injectFiberBatchedUpdates(NativeRenderer.batchedUpdates); + var roots = new Map(); + injection$4.injectDialog(showDialog$1); + var ReactNativeRenderer = { + NativeComponent: ReactNativeComponent, + findNodeHandle: findNumericNodeHandleFiber, + render: function render(element, containerTag, callback) { + var root = roots.get(containerTag); + + if (!root) { + root = NativeRenderer.createContainer(containerTag, false); + roots.set(containerTag, root); + } + + NativeRenderer.updateContainer(element, root, null, callback); + return NativeRenderer.getPublicRootInstance(root); + }, + unmountComponentAtNode: function unmountComponentAtNode(containerTag) { + var root = roots.get(containerTag); + + if (root) { + NativeRenderer.updateContainer(null, root, null, function () { + roots["delete"](containerTag); + }); + } + }, + unmountComponentAtNodeAndRemoveContainer: function unmountComponentAtNodeAndRemoveContainer(containerTag) { + ReactNativeRenderer.unmountComponentAtNode(containerTag); + UIManager.removeRootView(containerTag); + }, + createPortal: function createPortal(children, containerTag) { + var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + return _createPortal(children, containerTag, null, key); + }, + unstable_batchedUpdates: batchedUpdates, + flushSync: NativeRenderer.flushSync, + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + NativeMethodsMixin: NativeMethodsMixin, + ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin, + ReactGlobalSharedState: ReactGlobalSharedState, + ReactNativeComponentTree: ReactNativeComponentTree, + ReactNativePropRegistry: ReactNativePropRegistry, + TouchHistoryMath: TouchHistoryMath, + createReactNativeComponentClass: createReactNativeComponentClass, + takeSnapshot: takeSnapshot + } + }; + { + babelHelpers.extends(ReactNativeRenderer.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { + ReactDebugTool: { + addHook: function addHook() {}, + removeHook: function removeHook() {} + }, + ReactPerf: { + start: function start() {}, + stop: function stop() {}, + printInclusive: function printInclusive() {}, + printWasted: function printWasted() {} + } + }); + } + NativeRenderer.injectIntoDevTools({ + findFiberByHostInstance: getInstanceFromTag, + getInspectorDataForViewTag: getInspectorDataForViewTag, + bundleType: 1, + version: ReactVersion, + rendererPackageName: "react-native-renderer" + }); + var ReactNativeRenderer$2 = Object.freeze({ + default: ReactNativeRenderer + }); + var ReactNativeRenderer$3 = ReactNativeRenderer$2 && ReactNativeRenderer || ReactNativeRenderer$2; + var reactNativeRenderer = ReactNativeRenderer$3["default"] ? ReactNativeRenderer$3["default"] : ReactNativeRenderer$3; + module.exports = reactNativeRenderer; + })(); + } +},75,[76,18,19,16,157,158,12,84,159,160,152,15,20,161,162,163],"ReactNativeRenderer-dev"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + if (global.GLOBAL === undefined) { + global.GLOBAL = global; + } + + if (global.window === undefined) { + global.window = global; + } + + var defineLazyObjectProperty = require(_dependencyMap[0], 'defineLazyObjectProperty'); + + var _shouldPolyfillCollection = require(_dependencyMap[1], '_shouldPolyfillES6Collection'); + + if (_shouldPolyfillCollection('Map')) { + polyfillGlobal('Map', function () { + return require(_dependencyMap[2], 'Map'); + }); + } + + if (_shouldPolyfillCollection('Set')) { + polyfillGlobal('Set', function () { + return require(_dependencyMap[3], 'Set'); + }); + } + + function defineLazyProperty(object, name, getValue) { + var descriptor = Object.getOwnPropertyDescriptor(object, name); + + if (__DEV__ && descriptor) { + var backupName = "original" + name[0].toUpperCase() + name.substr(1); + Object.defineProperty(object, backupName, babelHelpers.extends({}, descriptor, { + value: object[name] + })); + } + + var _ref = descriptor || {}, + enumerable = _ref.enumerable, + writable = _ref.writable, + configurable = _ref.configurable; + + if (descriptor && !configurable) { + console.error('Failed to set polyfill. ' + name + ' is not configurable.'); + return; + } + + defineLazyObjectProperty(object, name, { + get: getValue, + enumerable: enumerable !== false, + writable: writable !== false + }); + } + + function polyfillGlobal(name, getValue) { + defineLazyProperty(global, name, getValue); + } + + global.process = global.process || {}; + global.process.env = global.process.env || {}; + + if (!global.process.env.NODE_ENV) { + global.process.env.NODE_ENV = __DEV__ ? 'development' : 'production'; + } + + if (global.__RCTProfileIsProfiling) { + var Systrace = require(_dependencyMap[4], 'Systrace'); + + Systrace.installReactHook(true); + Systrace.setEnabled(true); + } + + var ExceptionsManager = require(_dependencyMap[5], 'ExceptionsManager'); + + ExceptionsManager.installConsoleErrorReporter(); + + if (!global.__fbDisableExceptionsManager) { + var handleError = function handleError(e, isFatal) { + try { + ExceptionsManager.handleException(e, isFatal); + } catch (ee) { + console.log('Failed to print error: ', ee.message); + throw e; + } + }; + + var ErrorUtils = require(_dependencyMap[6], 'ErrorUtils'); + + ErrorUtils.setGlobalHandler(handleError); + } + + var ReactNativeVersionCheck = require(_dependencyMap[7], 'ReactNativeVersionCheck'); + + ReactNativeVersionCheck.checkVersions(); + polyfillGlobal('Promise', function () { + return require(_dependencyMap[8], 'Promise'); + }); + polyfillGlobal('regeneratorRuntime', function () { + delete global.regeneratorRuntime; + + require(_dependencyMap[9], 'regenerator-runtime/runtime'); + + return global.regeneratorRuntime; + }); + + var defineLazyTimer = function defineLazyTimer(name) { + polyfillGlobal(name, function () { + return require(_dependencyMap[10], 'JSTimers')[name]; + }); + }; + + defineLazyTimer('setTimeout'); + defineLazyTimer('setInterval'); + defineLazyTimer('setImmediate'); + defineLazyTimer('clearTimeout'); + defineLazyTimer('clearInterval'); + defineLazyTimer('clearImmediate'); + defineLazyTimer('requestAnimationFrame'); + defineLazyTimer('cancelAnimationFrame'); + defineLazyTimer('requestIdleCallback'); + defineLazyTimer('cancelIdleCallback'); + polyfillGlobal('XMLHttpRequest', function () { + return require(_dependencyMap[11], 'XMLHttpRequest'); + }); + polyfillGlobal('FormData', function () { + return require(_dependencyMap[12], 'FormData'); + }); + polyfillGlobal('fetch', function () { + return require(_dependencyMap[13], 'fetch').fetch; + }); + polyfillGlobal('Headers', function () { + return require(_dependencyMap[13], 'fetch').Headers; + }); + polyfillGlobal('Request', function () { + return require(_dependencyMap[13], 'fetch').Request; + }); + polyfillGlobal('Response', function () { + return require(_dependencyMap[13], 'fetch').Response; + }); + polyfillGlobal('WebSocket', function () { + return require(_dependencyMap[14], 'WebSocket'); + }); + polyfillGlobal('Blob', function () { + return require(_dependencyMap[15], 'Blob'); + }); + polyfillGlobal('URL', function () { + return require(_dependencyMap[16], 'URL'); + }); + + if (!global.alert) { + global.alert = function (text) { + require(_dependencyMap[17], 'Alert').alert('Alert', '' + text); + }; + } + + var navigator = global.navigator; + + if (navigator === undefined) { + global.navigator = navigator = {}; + } + + defineLazyProperty(navigator, 'product', function () { + return 'ReactNative'; + }); + defineLazyProperty(navigator, 'geolocation', function () { + return require(_dependencyMap[18], 'Geolocation'); + }); + + var BatchedBridge = require(_dependencyMap[19], 'BatchedBridge'); + + BatchedBridge.registerLazyCallableModule('Systrace', function () { + return require(_dependencyMap[4], 'Systrace'); + }); + BatchedBridge.registerLazyCallableModule('JSTimers', function () { + return require(_dependencyMap[10], 'JSTimers'); + }); + BatchedBridge.registerLazyCallableModule('HeapCapture', function () { + return require(_dependencyMap[20], 'HeapCapture'); + }); + BatchedBridge.registerLazyCallableModule('SamplingProfiler', function () { + return require(_dependencyMap[21], 'SamplingProfiler'); + }); + BatchedBridge.registerLazyCallableModule('RCTLog', function () { + return require(_dependencyMap[22], 'RCTLog'); + }); + BatchedBridge.registerLazyCallableModule('RCTDeviceEventEmitter', function () { + return require(_dependencyMap[23], 'RCTDeviceEventEmitter'); + }); + BatchedBridge.registerLazyCallableModule('RCTNativeAppEventEmitter', function () { + return require(_dependencyMap[24], 'RCTNativeAppEventEmitter'); + }); + BatchedBridge.registerLazyCallableModule('PerformanceLogger', function () { + return require(_dependencyMap[25], 'PerformanceLogger'); + }); + + global.fetchSegment = function (segmentId, callback) { + var _require = require(_dependencyMap[26], 'NativeModules'), + SegmentFetcher = _require.SegmentFetcher; + + if (!SegmentFetcher) { + throw new Error('SegmentFetcher is missing. Please ensure that it is ' + 'included as a NativeModule.'); + } + + SegmentFetcher.fetchSegment(segmentId, function (errorObject) { + if (errorObject) { + var error = new Error(errorObject.message); + error.code = errorObject.code; + callback(error); + } + + callback(null); + }); + }; + + if (__DEV__) { + if (!global.__RCTProfileIsProfiling) { + BatchedBridge.registerCallableModule('HMRClient', require(_dependencyMap[27], 'HMRClient')); + + if (!window.document) { + require(_dependencyMap[28], 'setupDevtools'); + } + + var JSInspector = require(_dependencyMap[29], 'JSInspector'); + + JSInspector.registerAgent(require(_dependencyMap[30], 'NetworkAgent')); + } + } +},76,[77,78,79,83,72,84,71,93,95,103,104,109,125,90,126,127,134,135,137,69,140,141,142,121,143,144,68,146,149,154,155],"InitializeCore"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function defineLazyObjectProperty(object, name, descriptor) { + var get = descriptor.get; + var enumerable = descriptor.enumerable !== false; + var writable = descriptor.writable !== false; + var value = void 0; + var valueSet = false; + + function getValue() { + if (!valueSet) { + valueSet = true; + setValue(get()); + } + + return value; + } + + function setValue(newValue) { + value = newValue; + valueSet = true; + Object.defineProperty(object, name, { + value: newValue, + configurable: true, + enumerable: enumerable, + writable: writable + }); + } + + Object.defineProperty(object, name, { + get: getValue, + set: setValue, + configurable: true, + enumerable: enumerable + }); + } + + module.exports = defineLazyObjectProperty; +},77,[],"defineLazyObjectProperty"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function _shouldActuallyPolyfillES6Collection(collectionName) { + var Collection = global[collectionName]; + + if (Collection == null) { + return true; + } + + if (typeof global.Symbol !== 'function') { + return true; + } + + var proto = Collection.prototype; + return Collection == null || typeof Collection !== 'function' || typeof proto.clear !== 'function' || new Collection().size !== 0 || typeof proto.keys !== 'function' || typeof proto.forEach !== 'function'; + } + + var cache = {}; + + function _shouldPolyfillES6Collection(collectionName) { + var result = cache[collectionName]; + + if (result !== undefined) { + return result; + } + + result = _shouldActuallyPolyfillES6Collection(collectionName); + cache[collectionName] = result; + return result; + } + + module.exports = _shouldPolyfillES6Collection; +},78,[],"_shouldPolyfillES6Collection"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _shouldPolyfillES6Collection = require(_dependencyMap[0], '_shouldPolyfillES6Collection'); + + var guid = require(_dependencyMap[1], 'guid'); + + var isNode = require(_dependencyMap[2], 'fbjs/lib/isNode'); + + var toIterator = require(_dependencyMap[3], 'toIterator'); + + module.exports = function (global, undefined) { + if (!_shouldPolyfillES6Collection('Map')) { + return global.Map; + } + + var KIND_KEY = 'key'; + var KIND_VALUE = 'value'; + var KIND_KEY_VALUE = 'key+value'; + var KEY_PREFIX = '$map_'; + var SECRET_SIZE_PROP; + + if (__DEV__) { + SECRET_SIZE_PROP = '$size' + guid(); + } + + var OLD_IE_HASH_PREFIX = 'IE_HASH_'; + + var Map = function () { + function Map(iterable) { + babelHelpers.classCallCheck(this, Map); + + if (!isObject(this)) { + throw new TypeError('Wrong map object type.'); + } + + initMap(this); + + if (iterable != null) { + var it = toIterator(iterable); + var next; + + while (!(next = it.next()).done) { + if (!isObject(next.value)) { + throw new TypeError('Expected iterable items to be pair objects.'); + } + + this.set(next.value[0], next.value[1]); + } + } + } + + babelHelpers.createClass(Map, [{ + key: "clear", + value: function clear() { + initMap(this); + } + }, { + key: "has", + value: function has(key) { + var index = getIndex(this, key); + return !!(index != null && this._mapData[index]); + } + }, { + key: "set", + value: function set(key, value) { + var index = getIndex(this, key); + + if (index != null && this._mapData[index]) { + this._mapData[index][1] = value; + } else { + index = this._mapData.push([key, value]) - 1; + setIndex(this, key, index); + + if (__DEV__) { + this[SECRET_SIZE_PROP] += 1; + } else { + this.size += 1; + } + } + + return this; + } + }, { + key: "get", + value: function get(key) { + var index = getIndex(this, key); + + if (index == null) { + return undefined; + } else { + return this._mapData[index][1]; + } + } + }, { + key: "delete", + value: function _delete(key) { + var index = getIndex(this, key); + + if (index != null && this._mapData[index]) { + setIndex(this, key, undefined); + this._mapData[index] = undefined; + + if (__DEV__) { + this[SECRET_SIZE_PROP] -= 1; + } else { + this.size -= 1; + } + + return true; + } else { + return false; + } + } + }, { + key: "entries", + value: function entries() { + return new MapIterator(this, KIND_KEY_VALUE); + } + }, { + key: "keys", + value: function keys() { + return new MapIterator(this, KIND_KEY); + } + }, { + key: "values", + value: function values() { + return new MapIterator(this, KIND_VALUE); + } + }, { + key: "forEach", + value: function forEach(callback, thisArg) { + if (typeof callback !== 'function') { + throw new TypeError('Callback must be callable.'); + } + + var boundCallback = callback.bind(thisArg || undefined); + var mapData = this._mapData; + + for (var i = 0; i < mapData.length; i++) { + var entry = mapData[i]; + + if (entry != null) { + boundCallback(entry[1], entry[0], this); + } + } + } + }]); + return Map; + }(); + + Map.prototype[toIterator.ITERATOR_SYMBOL] = Map.prototype.entries; + + var MapIterator = function () { + function MapIterator(map, kind) { + babelHelpers.classCallCheck(this, MapIterator); + + if (!(isObject(map) && map._mapData)) { + throw new TypeError('Object is not a map.'); + } + + if ([KIND_KEY, KIND_KEY_VALUE, KIND_VALUE].indexOf(kind) === -1) { + throw new Error('Invalid iteration kind.'); + } + + this._map = map; + this._nextIndex = 0; + this._kind = kind; + } + + babelHelpers.createClass(MapIterator, [{ + key: "next", + value: function next() { + if (!this instanceof Map) { + throw new TypeError('Expected to be called on a MapIterator.'); + } + + var map = this._map; + var index = this._nextIndex; + var kind = this._kind; + + if (map == null) { + return createIterResultObject(undefined, true); + } + + var entries = map._mapData; + + while (index < entries.length) { + var record = entries[index]; + index += 1; + this._nextIndex = index; + + if (record) { + if (kind === KIND_KEY) { + return createIterResultObject(record[0], false); + } else if (kind === KIND_VALUE) { + return createIterResultObject(record[1], false); + } else if (kind) { + return createIterResultObject(record, false); + } + } + } + + this._map = undefined; + return createIterResultObject(undefined, true); + } + }]); + return MapIterator; + }(); + + MapIterator.prototype[toIterator.ITERATOR_SYMBOL] = function () { + return this; + }; + + function getIndex(map, key) { + if (isObject(key)) { + var hash = getHash(key); + return map._objectIndex[hash]; + } else { + var prefixedKey = KEY_PREFIX + key; + + if (typeof key === 'string') { + return map._stringIndex[prefixedKey]; + } else { + return map._otherIndex[prefixedKey]; + } + } + } + + function setIndex(map, key, index) { + var shouldDelete = index == null; + + if (isObject(key)) { + var hash = getHash(key); + + if (shouldDelete) { + delete map._objectIndex[hash]; + } else { + map._objectIndex[hash] = index; + } + } else { + var prefixedKey = KEY_PREFIX + key; + + if (typeof key === 'string') { + if (shouldDelete) { + delete map._stringIndex[prefixedKey]; + } else { + map._stringIndex[prefixedKey] = index; + } + } else { + if (shouldDelete) { + delete map._otherIndex[prefixedKey]; + } else { + map._otherIndex[prefixedKey] = index; + } + } + } + } + + function initMap(map) { + map._mapData = []; + map._objectIndex = {}; + map._stringIndex = {}; + map._otherIndex = {}; + + if (__DEV__) { + if (isES5) { + if (map.hasOwnProperty(SECRET_SIZE_PROP)) { + map[SECRET_SIZE_PROP] = 0; + } else { + Object.defineProperty(map, SECRET_SIZE_PROP, { + value: 0, + writable: true + }); + Object.defineProperty(map, 'size', { + set: function set(v) { + console.error('PLEASE FIX ME: You are changing the map size property which ' + 'should not be writable and will break in production.'); + throw new Error('The map size property is not writable.'); + }, + get: function get() { + return map[SECRET_SIZE_PROP]; + } + }); + } + + return; + } + } + + map.size = 0; + } + + function isObject(o) { + return o != null && (typeof o === 'object' || typeof o === 'function'); + } + + function createIterResultObject(value, done) { + return { + value: value, + done: done + }; + } + + var isES5 = function () { + try { + Object.defineProperty({}, 'x', {}); + return true; + } catch (e) { + return false; + } + }(); + + function isExtensible(o) { + if (!isES5) { + return true; + } else { + return Object.isExtensible(o); + } + } + + function getIENodeHash(node) { + var uniqueID; + + switch (node.nodeType) { + case 1: + uniqueID = node.uniqueID; + break; + + case 9: + uniqueID = node.documentElement.uniqueID; + break; + + default: + return null; + } + + if (uniqueID) { + return OLD_IE_HASH_PREFIX + uniqueID; + } else { + return null; + } + } + + var getHash = function () { + var propIsEnumerable = Object.prototype.propertyIsEnumerable; + var hashProperty = guid(); + var hashCounter = 0; + return function getHash(o) { + if (o[hashProperty]) { + return o[hashProperty]; + } else if (!isES5 && o.propertyIsEnumerable && o.propertyIsEnumerable[hashProperty]) { + return o.propertyIsEnumerable[hashProperty]; + } else if (!isES5 && isNode(o) && getIENodeHash(o)) { + return getIENodeHash(o); + } else if (!isES5 && o[hashProperty]) { + return o[hashProperty]; + } + + if (isExtensible(o)) { + hashCounter += 1; + + if (isES5) { + Object.defineProperty(o, hashProperty, { + enumerable: false, + writable: false, + configurable: false, + value: hashCounter + }); + } else if (o.propertyIsEnumerable) { + o.propertyIsEnumerable = function () { + return propIsEnumerable.apply(this, arguments); + }; + + o.propertyIsEnumerable[hashProperty] = hashCounter; + } else if (isNode(o)) { + o[hashProperty] = hashCounter; + } else { + throw new Error('Unable to set a non-enumerable property on object.'); + } + + return hashCounter; + } else { + throw new Error('Non-extensible objects are not allowed as keys.'); + } + }; + }(); + + return Map; + }(Function('return this')()); +},79,[78,80,81,82],"Map"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function guid() { + return 'f' + (Math.random() * (1 << 30)).toString(16).replace('.', ''); + } + + module.exports = guid; +},80,[],"guid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function isNode(object) { + var doc = object ? object.ownerDocument || object : document; + var defaultView = doc.defaultView || window; + return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string')); + } + + module.exports = isNode; +},81,[],"fbjs/lib/isNode.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var KIND_KEY = 'key'; + var KIND_VALUE = 'value'; + var KIND_KEY_VAL = 'key+value'; + var ITERATOR_SYMBOL = typeof Symbol === 'function' ? typeof Symbol === "function" ? Symbol.iterator : "@@iterator" : '@@iterator'; + + var toIterator = function () { + if (!(Array.prototype[ITERATOR_SYMBOL] && String.prototype[ITERATOR_SYMBOL])) { + return function () { + var ArrayIterator = function () { + function ArrayIterator(array, kind) { + babelHelpers.classCallCheck(this, ArrayIterator); + + if (!Array.isArray(array)) { + throw new TypeError('Object is not an Array'); + } + + this._iteratedObject = array; + this._kind = kind; + this._nextIndex = 0; + } + + babelHelpers.createClass(ArrayIterator, [{ + key: "next", + value: function next() { + if (!this instanceof ArrayIterator) { + throw new TypeError('Object is not an ArrayIterator'); + } + + if (this._iteratedObject == null) { + return createIterResultObject(undefined, true); + } + + var array = this._iteratedObject; + var len = this._iteratedObject.length; + var index = this._nextIndex; + var kind = this._kind; + + if (index >= len) { + this._iteratedObject = undefined; + return createIterResultObject(undefined, true); + } + + this._nextIndex = index + 1; + + if (kind === KIND_KEY) { + return createIterResultObject(index, false); + } else if (kind === KIND_VALUE) { + return createIterResultObject(array[index], false); + } else if (kind === KIND_KEY_VAL) { + return createIterResultObject([index, array[index]], false); + } + } + }, { + key: '@@iterator', + value: function iterator() { + return this; + } + }]); + return ArrayIterator; + }(); + + var StringIterator = function () { + function StringIterator(string) { + babelHelpers.classCallCheck(this, StringIterator); + + if (typeof string !== 'string') { + throw new TypeError('Object is not a string'); + } + + this._iteratedString = string; + this._nextIndex = 0; + } + + babelHelpers.createClass(StringIterator, [{ + key: "next", + value: function next() { + if (!this instanceof StringIterator) { + throw new TypeError('Object is not a StringIterator'); + } + + if (this._iteratedString == null) { + return createIterResultObject(undefined, true); + } + + var index = this._nextIndex; + var s = this._iteratedString; + var len = s.length; + + if (index >= len) { + this._iteratedString = undefined; + return createIterResultObject(undefined, true); + } + + var ret; + var first = s.charCodeAt(index); + + if (first < 0xD800 || first > 0xDBFF || index + 1 === len) { + ret = s[index]; + } else { + var second = s.charCodeAt(index + 1); + + if (second < 0xDC00 || second > 0xDFFF) { + ret = s[index]; + } else { + ret = s[index] + s[index + 1]; + } + } + + this._nextIndex = index + ret.length; + return createIterResultObject(ret, false); + } + }, { + key: '@@iterator', + value: function iterator() { + return this; + } + }]); + return StringIterator; + }(); + + function createIterResultObject(value, done) { + return { + value: value, + done: done + }; + } + + return function (object, kind) { + if (typeof object === 'string') { + return new StringIterator(object); + } else if (Array.isArray(object)) { + return new ArrayIterator(object, kind || KIND_VALUE); + } else { + return object[ITERATOR_SYMBOL](); + } + }; + }(); + } else { + return function (object) { + return object[ITERATOR_SYMBOL](); + }; + } + }(); + + babelHelpers.extends(toIterator, { + KIND_KEY: KIND_KEY, + KIND_VALUE: KIND_VALUE, + KIND_KEY_VAL: KIND_KEY_VAL, + ITERATOR_SYMBOL: ITERATOR_SYMBOL + }); + module.exports = toIterator; +},82,[],"toIterator"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Map = require(_dependencyMap[0], 'Map'); + + var _shouldPolyfillES6Collection = require(_dependencyMap[1], '_shouldPolyfillES6Collection'); + + var toIterator = require(_dependencyMap[2], 'toIterator'); + + module.exports = function (global) { + if (!_shouldPolyfillES6Collection('Set')) { + return global.Set; + } + + var Set = function () { + function Set(iterable) { + babelHelpers.classCallCheck(this, Set); + + if (this == null || typeof this !== 'object' && typeof this !== 'function') { + throw new TypeError('Wrong set object type.'); + } + + initSet(this); + + if (iterable != null) { + var it = toIterator(iterable); + var next; + + while (!(next = it.next()).done) { + this.add(next.value); + } + } + } + + babelHelpers.createClass(Set, [{ + key: "add", + value: function add(value) { + this._map.set(value, value); + + this.size = this._map.size; + return this; + } + }, { + key: "clear", + value: function clear() { + initSet(this); + } + }, { + key: "delete", + value: function _delete(value) { + var ret = this._map.delete(value); + + this.size = this._map.size; + return ret; + } + }, { + key: "entries", + value: function entries() { + return this._map.entries(); + } + }, { + key: "forEach", + value: function forEach(callback) { + var thisArg = arguments[1]; + + var it = this._map.keys(); + + var next; + + while (!(next = it.next()).done) { + callback.call(thisArg, next.value, next.value, this); + } + } + }, { + key: "has", + value: function has(value) { + return this._map.has(value); + } + }, { + key: "values", + value: function values() { + return this._map.values(); + } + }]); + return Set; + }(); + + Set.prototype[toIterator.ITERATOR_SYMBOL] = Set.prototype.values; + Set.prototype.keys = Set.prototype.values; + + function initSet(set) { + set._map = new Map(); + set.size = set._map.size; + } + + return Set; + }(Function('return this')()); +},83,[79,78,82],"Set"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var exceptionID = 0; + + function reportException(e, isFatal) { + var _require = require(_dependencyMap[0], 'NativeModules'), + ExceptionsManager = _require.ExceptionsManager; + + if (ExceptionsManager) { + var parseErrorStack = require(_dependencyMap[1], 'parseErrorStack'); + + var stack = parseErrorStack(e); + var currentExceptionID = ++exceptionID; + + if (isFatal) { + ExceptionsManager.reportFatalException(e.message, stack, currentExceptionID); + } else { + ExceptionsManager.reportSoftException(e.message, stack, currentExceptionID); + } + + if (__DEV__) { + var symbolicateStackTrace = require(_dependencyMap[2], 'symbolicateStackTrace'); + + symbolicateStackTrace(stack).then(function (prettyStack) { + if (prettyStack) { + ExceptionsManager.updateExceptionMessage(e.message, prettyStack, currentExceptionID); + } else { + throw new Error('The stack is null'); + } + }).catch(function (error) { + return console.warn('Unable to symbolicate stack trace: ' + error.message); + }); + } + } + } + + function handleException(e, isFatal) { + if (!e.message) { + e = new Error(e); + } + + if (console._errorOriginal) { + console._errorOriginal(e.message); + } else { + console.error(e.message); + } + + reportException(e, isFatal); + } + + function reactConsoleErrorHandler() { + console._errorOriginal.apply(console, arguments); + + if (!console.reportErrorsAsExceptions) { + return; + } + + if (arguments[0] && arguments[0].stack) { + reportException(arguments[0], false); + } else { + var stringifySafe = require(_dependencyMap[3], 'stringifySafe'); + + var str = Array.prototype.map.call(arguments, stringifySafe).join(', '); + + if (str.slice(0, 10) === '"Warning: ') { + return; + } + + var error = new Error('console.error: ' + str); + error.framesToPop = 1; + reportException(error, false); + } + } + + function installConsoleErrorReporter() { + if (console._errorOriginal) { + return; + } + + console._errorOriginal = console.error.bind(console); + console.error = reactConsoleErrorHandler; + + if (console.reportErrorsAsExceptions === undefined) { + console.reportErrorsAsExceptions = true; + } + } + + module.exports = { + handleException: handleException, + installConsoleErrorReporter: installConsoleErrorReporter + }; +},84,[68,85,88,92],"ExceptionsManager"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function parseErrorStack(e) { + if (!e || !e.stack) { + return []; + } + + var stacktraceParser = require(_dependencyMap[0], 'stacktrace-parser'); + + var stack = Array.isArray(e.stack) ? e.stack : stacktraceParser.parse(e.stack); + var framesToPop = typeof e.framesToPop === 'number' ? e.framesToPop : 0; + + while (framesToPop--) { + stack.shift(); + } + + return stack; + } + + module.exports = parseErrorStack; +},85,[86],"parseErrorStack"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = require(_dependencyMap[0], './lib/stacktrace-parser.js'); +},86,[87],"stacktrace-parser/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var UNKNOWN_FUNCTION = ''; + var StackTraceParser = { + parse: function parse(stackString) { + var chrome = /^\s*at (?:(?:(?:Anonymous function)?|((?:\[object object\])?\S+(?: \[as \S+\])?)) )?\(?((?:file|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + gecko = /^(?:\s*([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i, + node = /^\s*at (?:((?:\[object object\])?\S+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i, + lines = stackString.split('\n'), + stack = [], + parts, + element; + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = gecko.exec(lines[i])) { + element = { + 'file': parts[3], + 'methodName': parts[1] || UNKNOWN_FUNCTION, + 'lineNumber': +parts[4], + 'column': parts[5] ? +parts[5] : null + }; + } else if (parts = chrome.exec(lines[i])) { + element = { + 'file': parts[2], + 'methodName': parts[1] || UNKNOWN_FUNCTION, + 'lineNumber': +parts[3], + 'column': parts[4] ? +parts[4] : null + }; + } else if (parts = node.exec(lines[i])) { + element = { + 'file': parts[2], + 'methodName': parts[1] || UNKNOWN_FUNCTION, + 'lineNumber': +parts[3], + 'column': parts[4] ? +parts[4] : null + }; + } else { + continue; + } + + stack.push(element); + } + + return stack; + } + }; + module.exports = StackTraceParser; +},87,[],"stacktrace-parser/lib/stacktrace-parser.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var getDevServer = require(_dependencyMap[0], 'getDevServer'); + + var _require = require(_dependencyMap[1], 'NativeModules'), + SourceCode = _require.SourceCode; + + var fetch = void 0; + + function isSourcedFromDisk(sourcePath) { + return !/^http/.test(sourcePath) && /[\\/]/.test(sourcePath); + } + + function symbolicateStackTrace(stack) { + var devServer, stackCopy, foundInternalSource, response, json; + return regeneratorRuntime.async(function symbolicateStackTrace$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!fetch) { + fetch = global.fetch || require(_dependencyMap[2], 'fetch').fetch; + } + + devServer = getDevServer(); + + if (devServer.bundleLoadedFromServer) { + _context.next = 4; + break; + } + + throw new Error('Bundle was not loaded from the packager'); + + case 4: + stackCopy = stack; + + if (SourceCode.scriptURL) { + foundInternalSource = false; + stackCopy = stack.map(function (frame) { + if (!foundInternalSource && isSourcedFromDisk(frame.file)) { + return babelHelpers.extends({}, frame, { + file: SourceCode.scriptURL + }); + } + + foundInternalSource = true; + return frame; + }); + } + + _context.next = 8; + return regeneratorRuntime.awrap(fetch(devServer.url + 'symbolicate', { + method: 'POST', + body: JSON.stringify({ + stack: stackCopy + }) + })); + + case 8: + response = _context.sent; + _context.next = 11; + return regeneratorRuntime.awrap(response.json()); + + case 11: + json = _context.sent; + return _context.abrupt("return", json.stack); + + case 13: + case "end": + return _context.stop(); + } + } + }, null, this); + } + + module.exports = symbolicateStackTrace; +},88,[89,68,90],"symbolicateStackTrace"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'NativeModules'), + SourceCode = _require.SourceCode; + + var _cachedDevServerURL = void 0; + + var FALLBACK = 'http://localhost:8081/'; + + function getDevServer() { + if (_cachedDevServerURL === undefined) { + var match = SourceCode.scriptURL && SourceCode.scriptURL.match(/^https?:\/\/.*?\//); + _cachedDevServerURL = match ? match[0] : null; + } + + return { + url: _cachedDevServerURL || FALLBACK, + bundleLoadedFromServer: _cachedDevServerURL !== null + }; + } + + module.exports = getDevServer; +},89,[68],"getDevServer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _whatwgFetch = require(_dependencyMap[0], "whatwg-fetch"); + + var _whatwgFetch2 = babelHelpers.interopRequireDefault(_whatwgFetch); + + if (_whatwgFetch2.default && _whatwgFetch2.default.fetch) { + module.exports = _whatwgFetch2.default; + } else { + module.exports = { + fetch: fetch, + Headers: Headers, + Request: Request, + Response: Response + }; + } +},90,[91],"fetch"); +__d(function (global, require, module, exports, _dependencyMap) { + (function (self) { + 'use strict'; + + if (self.fetch) { + return; + } + + var support = { + searchParams: 'URLSearchParams' in self, + iterable: 'Symbol' in self && 'iterator' in Symbol, + blob: 'FileReader' in self && 'Blob' in self && function () { + try { + new Blob(); + return true; + } catch (e) { + return false; + } + }(), + formData: 'FormData' in self, + arrayBuffer: 'ArrayBuffer' in self + }; + + if (support.arrayBuffer) { + var viewClasses = ['[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]']; + + var isDataView = function isDataView(obj) { + return obj && DataView.prototype.isPrototypeOf(obj); + }; + + var isArrayBufferView = ArrayBuffer.isView || function (obj) { + return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1; + }; + } + + function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); + } + + if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) { + throw new TypeError('Invalid character in header field name'); + } + + return name.toLowerCase(); + } + + function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); + } + + return value; + } + + function iteratorFor(items) { + var iterator = { + next: function next() { + var value = items.shift(); + return { + done: value === undefined, + value: value + }; + } + }; + + if (support.iterable) { + iterator[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"] = function () { + return iterator; + }; + } + + return iterator; + } + + function Headers(headers) { + this.map = {}; + + if (headers instanceof Headers) { + headers.forEach(function (value, name) { + this.append(name, value); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function (name) { + this.append(name, headers[name]); + }, this); + } + } + + Headers.prototype.append = function (name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var list = this.map[name]; + + if (!list) { + list = []; + this.map[name] = list; + } + + list.push(value); + }; + + Headers.prototype['delete'] = function (name) { + delete this.map[normalizeName(name)]; + }; + + Headers.prototype.get = function (name) { + var values = this.map[normalizeName(name)]; + return values ? values[0] : null; + }; + + Headers.prototype.getAll = function (name) { + return this.map[normalizeName(name)] || []; + }; + + Headers.prototype.has = function (name) { + return this.map.hasOwnProperty(normalizeName(name)); + }; + + Headers.prototype.set = function (name, value) { + this.map[normalizeName(name)] = [normalizeValue(value)]; + }; + + Headers.prototype.forEach = function (callback, thisArg) { + Object.getOwnPropertyNames(this.map).forEach(function (name) { + this.map[name].forEach(function (value) { + callback.call(thisArg, value, name, this); + }, this); + }, this); + }; + + Headers.prototype.keys = function () { + var items = []; + this.forEach(function (value, name) { + items.push(name); + }); + return iteratorFor(items); + }; + + Headers.prototype.values = function () { + var items = []; + this.forEach(function (value) { + items.push(value); + }); + return iteratorFor(items); + }; + + Headers.prototype.entries = function () { + var items = []; + this.forEach(function (value, name) { + items.push([name, value]); + }); + return iteratorFor(items); + }; + + if (support.iterable) { + Headers.prototype[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"] = Headers.prototype.entries; + } + + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError('Already read')); + } + + body.bodyUsed = true; + } + + function fileReaderReady(reader) { + return new Promise(function (resolve, reject) { + reader.onload = function () { + resolve(reader.result); + }; + + reader.onerror = function () { + reject(reader.error); + }; + }); + } + + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsArrayBuffer(blob); + return promise; + } + + function readBlobAsText(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsText(blob); + return promise; + } + + function readArrayBufferAsText(buf) { + var view = new Uint8Array(buf); + var chars = new Array(view.length); + + for (var i = 0; i < view.length; i++) { + chars[i] = String.fromCharCode(view[i]); + } + + return chars.join(''); + } + + function bufferClone(buf) { + if (buf.slice) { + return buf.slice(0); + } else { + var view = new Uint8Array(buf.byteLength); + view.set(new Uint8Array(buf)); + return view.buffer; + } + } + + function Body() { + this.bodyUsed = false; + + this._initBody = function (body) { + this._bodyInit = body; + + if (!body) { + this._bodyText = ''; + } else if (typeof body === 'string') { + this._bodyText = body; + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body; + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body; + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString(); + } else if (support.arrayBuffer && support.blob && isDataView(body)) { + this._bodyArrayBuffer = bufferClone(body.buffer); + this._bodyInit = new Blob([this._bodyArrayBuffer]); + } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { + this._bodyArrayBuffer = bufferClone(body); + } else { + throw new Error('unsupported BodyInit type'); + } + + if (!this.headers.get('content-type')) { + if (typeof body === 'string') { + this.headers.set('content-type', 'text/plain;charset=UTF-8'); + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set('content-type', this._bodyBlob.type); + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + } + }; + + if (support.blob) { + this.blob = function () { + var rejected = consumed(this); + + if (rejected) { + return rejected; + } + + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob); + } else if (this._bodyArrayBuffer) { + return Promise.resolve(new Blob([this._bodyArrayBuffer])); + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as blob'); + } else { + return Promise.resolve(new Blob([this._bodyText])); + } + }; + + this.arrayBuffer = function () { + if (this._bodyArrayBuffer) { + return consumed(this) || Promise.resolve(this._bodyArrayBuffer); + } else { + return this.blob().then(readBlobAsArrayBuffer); + } + }; + } + + this.text = function () { + var rejected = consumed(this); + + if (rejected) { + return rejected; + } + + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob); + } else if (this._bodyArrayBuffer) { + return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)); + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as text'); + } else { + return Promise.resolve(this._bodyText); + } + }; + + if (support.formData) { + this.formData = function () { + return this.text().then(decode); + }; + } + + this.json = function () { + return this.text().then(JSON.parse); + }; + + return this; + } + + var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; + + function normalizeMethod(method) { + var upcased = method.toUpperCase(); + return methods.indexOf(upcased) > -1 ? upcased : method; + } + + function Request(input, options) { + options = options || {}; + var body = options.body; + + if (typeof input === 'string') { + this.url = input; + } else { + if (input.bodyUsed) { + throw new TypeError('Already read'); + } + + this.url = input.url; + this.credentials = input.credentials; + + if (!options.headers) { + this.headers = new Headers(input.headers); + } + + this.method = input.method; + this.mode = input.mode; + + if (!body && input._bodyInit != null) { + body = input._bodyInit; + input.bodyUsed = true; + } + } + + this.credentials = options.credentials || this.credentials || 'omit'; + + if (options.headers || !this.headers) { + this.headers = new Headers(options.headers); + } + + this.method = normalizeMethod(options.method || this.method || 'GET'); + this.mode = options.mode || this.mode || null; + this.referrer = null; + + if ((this.method === 'GET' || this.method === 'HEAD') && body) { + throw new TypeError('Body not allowed for GET or HEAD requests'); + } + + this._initBody(body); + } + + Request.prototype.clone = function () { + return new Request(this, { + body: this._bodyInit + }); + }; + + function decode(body) { + var form = new FormData(); + body.trim().split('&').forEach(function (bytes) { + if (bytes) { + var split = bytes.split('='); + var name = split.shift().replace(/\+/g, ' '); + var value = split.join('=').replace(/\+/g, ' '); + form.append(decodeURIComponent(name), decodeURIComponent(value)); + } + }); + return form; + } + + function parseHeaders(rawHeaders) { + var headers = new Headers(); + rawHeaders.split('\r\n').forEach(function (line) { + var parts = line.split(':'); + var key = parts.shift().trim(); + + if (key) { + var value = parts.join(':').trim(); + headers.append(key, value); + } + }); + return headers; + } + + Body.call(Request.prototype); + + function Response(bodyInit, options) { + if (!options) { + options = {}; + } + + this.type = 'default'; + this.status = 'status' in options ? options.status : 200; + this.ok = this.status >= 200 && this.status < 300; + this.statusText = 'statusText' in options ? options.statusText : 'OK'; + this.headers = new Headers(options.headers); + this.url = options.url || ''; + + this._initBody(bodyInit); + } + + Body.call(Response.prototype); + + Response.prototype.clone = function () { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers(this.headers), + url: this.url + }); + }; + + Response.error = function () { + var response = new Response(null, { + status: 0, + statusText: '' + }); + response.type = 'error'; + return response; + }; + + var redirectStatuses = [301, 302, 303, 307, 308]; + + Response.redirect = function (url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError('Invalid status code'); + } + + return new Response(null, { + status: status, + headers: { + location: url + } + }); + }; + + self.Headers = Headers; + self.Request = Request; + self.Response = Response; + + self.fetch = function (input, init) { + return new Promise(function (resolve, reject) { + var request = new Request(input, init); + var xhr = new XMLHttpRequest(); + + xhr.onload = function () { + var options = { + status: xhr.status, + statusText: xhr.statusText, + headers: parseHeaders(xhr.getAllResponseHeaders() || '') + }; + options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL'); + var body = 'response' in xhr ? xhr.response : xhr.responseText; + resolve(new Response(body, options)); + }; + + xhr.onerror = function () { + reject(new TypeError('Network request failed')); + }; + + xhr.ontimeout = function () { + reject(new TypeError('Network request failed')); + }; + + xhr.open(request.method, request.url, true); + + if (request.credentials === 'include') { + xhr.withCredentials = true; + } + + if ('responseType' in xhr && support.blob) { + xhr.responseType = 'blob'; + } + + request.headers.forEach(function (value, name) { + xhr.setRequestHeader(name, value); + }); + xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit); + }); + }; + + self.fetch.polyfill = true; + })(typeof self !== 'undefined' ? self : this); +},91,[],"whatwg-fetch/fetch.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function stringifySafe(arg) { + var ret; + var type = typeof arg; + + if (arg === undefined) { + ret = 'undefined'; + } else if (arg === null) { + ret = 'null'; + } else if (type === 'string') { + ret = '"' + arg + '"'; + } else if (type === 'function') { + try { + ret = arg.toString(); + } catch (e) { + ret = '[function unknown]'; + } + } else { + try { + ret = JSON.stringify(arg); + } catch (e) { + if (typeof arg.toString === 'function') { + try { + ret = arg.toString(); + } catch (E) {} + } + } + } + + return ret || '["' + type + '" failed to stringify]'; + } + + module.exports = stringifySafe; +},92,[],"stringifySafe"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'NativeModules'), + PlatformConstants = _require.PlatformConstants; + + var ReactNativeVersion = require(_dependencyMap[1], 'ReactNativeVersion'); + + exports.checkVersions = function checkVersions() { + if (!PlatformConstants) { + return; + } + + var nativeVersion = PlatformConstants.reactNativeVersion; + + if (ReactNativeVersion.version.major !== nativeVersion.major || ReactNativeVersion.version.minor !== nativeVersion.minor) { + console.error("React Native version mismatch.\n\nJavaScript version: " + _formatVersion(ReactNativeVersion.version) + "\n" + ("Native version: " + _formatVersion(nativeVersion) + "\n\n") + 'Make sure that you have rebuilt the native code. If the problem ' + 'persists try clearing the Watchman and packager caches with ' + '`watchman watch-del-all && react-native start --reset-cache`.'); + } + }; + + function _formatVersion(version) { + return version.major + "." + version.minor + "." + version.patch + (version.prerelease !== null ? "-" + version.prerelease : ''); + } +},93,[68,94],"ReactNativeVersionCheck"); +__d(function (global, require, module, exports, _dependencyMap) { + exports.version = { + major: 0, + minor: 52, + patch: 0, + prerelease: null + }; +},94,[],"ReactNativeVersion"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Promise = require(_dependencyMap[0], 'fbjs/lib/Promise.native'); + + if (__DEV__) { + require(_dependencyMap[1], 'promise/setimmediate/rejection-tracking').enable({ + allRejections: true, + onUnhandled: function onUnhandled(id) { + var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var message = void 0; + var stack = void 0; + var stringValue = Object.prototype.toString.call(error); + + if (stringValue === '[object Error]') { + message = Error.prototype.toString.call(error); + stack = error.stack; + } else { + message = require(_dependencyMap[2], 'pretty-format')(error); + } + + var warning = "Possible Unhandled Promise Rejection (id: " + id + "):\n" + (message + "\n") + (stack == null ? '' : stack); + console.warn(warning); + }, + onHandled: function onHandled(id) { + var warning = "Promise Rejection Handled (id: " + id + ")\n" + 'This means you can ignore any previous messages of the form ' + ("\"Possible Unhandled Promise Rejection (id: " + id + "):\""); + console.warn(warning); + } + }); + } + + module.exports = Promise; +},95,[96,100,101],"Promise"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Promise = require(_dependencyMap[0], 'promise/setimmediate/es6-extensions'); + + require(_dependencyMap[1], 'promise/setimmediate/done'); + + Promise.prototype['finally'] = function (onSettled) { + return this.then(onSettled, onSettled); + }; + + module.exports = Promise; +},96,[97,99],"fbjs/lib/Promise.native.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Promise = require(_dependencyMap[0], './core.js'); + + module.exports = Promise; + var TRUE = valuePromise(true); + var FALSE = valuePromise(false); + var NULL = valuePromise(null); + var UNDEFINED = valuePromise(undefined); + var ZERO = valuePromise(0); + var EMPTYSTRING = valuePromise(''); + + function valuePromise(value) { + var p = new Promise(Promise._61); + p._65 = 1; + p._55 = value; + return p; + } + + Promise.resolve = function (value) { + if (value instanceof Promise) return value; + if (value === null) return NULL; + if (value === undefined) return UNDEFINED; + if (value === true) return TRUE; + if (value === false) return FALSE; + if (value === 0) return ZERO; + if (value === '') return EMPTYSTRING; + + if (typeof value === 'object' || typeof value === 'function') { + try { + var then = value.then; + + if (typeof then === 'function') { + return new Promise(then.bind(value)); + } + } catch (ex) { + return new Promise(function (resolve, reject) { + reject(ex); + }); + } + } + + return valuePromise(value); + }; + + Promise.all = function (arr) { + var args = Array.prototype.slice.call(arr); + return new Promise(function (resolve, reject) { + if (args.length === 0) return resolve([]); + var remaining = args.length; + + function res(i, val) { + if (val && (typeof val === 'object' || typeof val === 'function')) { + if (val instanceof Promise && val.then === Promise.prototype.then) { + while (val._65 === 3) { + val = val._55; + } + + if (val._65 === 1) return res(i, val._55); + if (val._65 === 2) reject(val._55); + val.then(function (val) { + res(i, val); + }, reject); + return; + } else { + var then = val.then; + + if (typeof then === 'function') { + var p = new Promise(then.bind(val)); + p.then(function (val) { + res(i, val); + }, reject); + return; + } + } + } + + args[i] = val; + + if (--remaining === 0) { + resolve(args); + } + } + + for (var i = 0; i < args.length; i++) { + res(i, args[i]); + } + }); + }; + + Promise.reject = function (value) { + return new Promise(function (resolve, reject) { + reject(value); + }); + }; + + Promise.race = function (values) { + return new Promise(function (resolve, reject) { + values.forEach(function (value) { + Promise.resolve(value).then(resolve, reject); + }); + }); + }; + + Promise.prototype['catch'] = function (onRejected) { + return this.then(null, onRejected); + }; +},97,[98],"promise/setimmediate/es6-extensions.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function noop() {} + + var LAST_ERROR = null; + var IS_ERROR = {}; + + function getThen(obj) { + try { + return obj.then; + } catch (ex) { + LAST_ERROR = ex; + return IS_ERROR; + } + } + + function tryCallOne(fn, a) { + try { + return fn(a); + } catch (ex) { + LAST_ERROR = ex; + return IS_ERROR; + } + } + + function tryCallTwo(fn, a, b) { + try { + fn(a, b); + } catch (ex) { + LAST_ERROR = ex; + return IS_ERROR; + } + } + + module.exports = Promise; + + function Promise(fn) { + if (typeof this !== 'object') { + throw new TypeError('Promises must be constructed via new'); + } + + if (typeof fn !== 'function') { + throw new TypeError('Promise constructor\'s argument is not a function'); + } + + this._40 = 0; + this._65 = 0; + this._55 = null; + this._72 = null; + if (fn === noop) return; + doResolve(fn, this); + } + + Promise._37 = null; + Promise._87 = null; + Promise._61 = noop; + + Promise.prototype.then = function (onFulfilled, onRejected) { + if (this.constructor !== Promise) { + return safeThen(this, onFulfilled, onRejected); + } + + var res = new Promise(noop); + handle(this, new Handler(onFulfilled, onRejected, res)); + return res; + }; + + function safeThen(self, onFulfilled, onRejected) { + return new self.constructor(function (resolve, reject) { + var res = new Promise(noop); + res.then(resolve, reject); + handle(self, new Handler(onFulfilled, onRejected, res)); + }); + } + + function handle(self, deferred) { + while (self._65 === 3) { + self = self._55; + } + + if (Promise._37) { + Promise._37(self); + } + + if (self._65 === 0) { + if (self._40 === 0) { + self._40 = 1; + self._72 = deferred; + return; + } + + if (self._40 === 1) { + self._40 = 2; + self._72 = [self._72, deferred]; + return; + } + + self._72.push(deferred); + + return; + } + + handleResolved(self, deferred); + } + + function handleResolved(self, deferred) { + setImmediate(function () { + var cb = self._65 === 1 ? deferred.onFulfilled : deferred.onRejected; + + if (cb === null) { + if (self._65 === 1) { + resolve(deferred.promise, self._55); + } else { + reject(deferred.promise, self._55); + } + + return; + } + + var ret = tryCallOne(cb, self._55); + + if (ret === IS_ERROR) { + reject(deferred.promise, LAST_ERROR); + } else { + resolve(deferred.promise, ret); + } + }); + } + + function resolve(self, newValue) { + if (newValue === self) { + return reject(self, new TypeError('A promise cannot be resolved with itself.')); + } + + if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { + var then = getThen(newValue); + + if (then === IS_ERROR) { + return reject(self, LAST_ERROR); + } + + if (then === self.then && newValue instanceof Promise) { + self._65 = 3; + self._55 = newValue; + finale(self); + return; + } else if (typeof then === 'function') { + doResolve(then.bind(newValue), self); + return; + } + } + + self._65 = 1; + self._55 = newValue; + finale(self); + } + + function reject(self, newValue) { + self._65 = 2; + self._55 = newValue; + + if (Promise._87) { + Promise._87(self, newValue); + } + + finale(self); + } + + function finale(self) { + if (self._40 === 1) { + handle(self, self._72); + self._72 = null; + } + + if (self._40 === 2) { + for (var i = 0; i < self._72.length; i++) { + handle(self, self._72[i]); + } + + self._72 = null; + } + } + + function Handler(onFulfilled, onRejected, promise) { + this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; + this.onRejected = typeof onRejected === 'function' ? onRejected : null; + this.promise = promise; + } + + function doResolve(fn, promise) { + var done = false; + var res = tryCallTwo(fn, function (value) { + if (done) return; + done = true; + resolve(promise, value); + }, function (reason) { + if (done) return; + done = true; + reject(promise, reason); + }); + + if (!done && res === IS_ERROR) { + done = true; + reject(promise, LAST_ERROR); + } + } +},98,[],"promise/setimmediate/core.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Promise = require(_dependencyMap[0], './core.js'); + + module.exports = Promise; + + Promise.prototype.done = function (onFulfilled, onRejected) { + var self = arguments.length ? this.then.apply(this, arguments) : this; + self.then(null, function (err) { + setTimeout(function () { + throw err; + }, 0); + }); + }; +},99,[98],"promise/setimmediate/done.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Promise = require(_dependencyMap[0], './core'); + + var DEFAULT_WHITELIST = [ReferenceError, TypeError, RangeError]; + var enabled = false; + exports.disable = disable; + + function disable() { + enabled = false; + Promise._37 = null; + Promise._87 = null; + } + + exports.enable = enable; + + function enable(options) { + options = options || {}; + if (enabled) disable(); + enabled = true; + var id = 0; + var displayId = 0; + var rejections = {}; + + Promise._37 = function (promise) { + if (promise._65 === 2 && rejections[promise._51]) { + if (rejections[promise._51].logged) { + onHandled(promise._51); + } else { + clearTimeout(rejections[promise._51].timeout); + } + + delete rejections[promise._51]; + } + }; + + Promise._87 = function (promise, err) { + if (promise._40 === 0) { + promise._51 = id++; + rejections[promise._51] = { + displayId: null, + error: err, + timeout: setTimeout(onUnhandled.bind(null, promise._51), matchWhitelist(err, DEFAULT_WHITELIST) ? 100 : 2000), + logged: false + }; + } + }; + + function onUnhandled(id) { + if (options.allRejections || matchWhitelist(rejections[id].error, options.whitelist || DEFAULT_WHITELIST)) { + rejections[id].displayId = displayId++; + + if (options.onUnhandled) { + rejections[id].logged = true; + options.onUnhandled(rejections[id].displayId, rejections[id].error); + } else { + rejections[id].logged = true; + logError(rejections[id].displayId, rejections[id].error); + } + } + } + + function onHandled(id) { + if (rejections[id].logged) { + if (options.onHandled) { + options.onHandled(rejections[id].displayId, rejections[id].error); + } else if (!rejections[id].onUnhandled) { + console.warn('Promise Rejection Handled (id: ' + rejections[id].displayId + '):'); + console.warn(' This means you can ignore any previous messages of the form "Possible Unhandled Promise Rejection" with id ' + rejections[id].displayId + '.'); + } + } + } + } + + function logError(id, error) { + console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):'); + var errStr = (error && (error.stack || error)) + ''; + errStr.split('\n').forEach(function (line) { + console.warn(' ' + line); + }); + } + + function matchWhitelist(error, list) { + return list.some(function (cls) { + return error instanceof cls; + }); + } +},100,[98],"promise/setimmediate/rejection-tracking.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var printString = require(_dependencyMap[0], './printString'); + + var toString = Object.prototype.toString; + var toISOString = Date.prototype.toISOString; + var errorToString = Error.prototype.toString; + var regExpToString = RegExp.prototype.toString; + var symbolToString = (typeof Symbol === "function" ? Symbol.prototype : "@@prototype").toString; + var SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; + var NEWLINE_REGEXP = /\n/ig; + + var getSymbols = Object.getOwnPropertySymbols || function (obj) { + return []; + }; + + function isToStringedArrayType(toStringed) { + return toStringed === '[object Array]' || toStringed === '[object ArrayBuffer]' || toStringed === '[object DataView]' || toStringed === '[object Float32Array]' || toStringed === '[object Float64Array]' || toStringed === '[object Int8Array]' || toStringed === '[object Int16Array]' || toStringed === '[object Int32Array]' || toStringed === '[object Uint8Array]' || toStringed === '[object Uint8ClampedArray]' || toStringed === '[object Uint16Array]' || toStringed === '[object Uint32Array]'; + } + + function printNumber(val) { + if (val != +val) return 'NaN'; + var isNegativeZero = val === 0 && 1 / val < 0; + return isNegativeZero ? '-0' : '' + val; + } + + function printFunction(val, printFunctionName) { + if (!printFunctionName) { + return '[Function]'; + } else if (val.name === '') { + return '[Function anonymous]'; + } else { + return '[Function ' + val.name + ']'; + } + } + + function printSymbol(val) { + return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)'); + } + + function printError(val) { + return '[' + errorToString.call(val) + ']'; + } + + function printBasicValue(val, printFunctionName, escapeRegex) { + if (val === true || val === false) return '' + val; + if (val === undefined) return 'undefined'; + if (val === null) return 'null'; + var typeOf = typeof val; + if (typeOf === 'number') return printNumber(val); + if (typeOf === 'string') return '"' + printString(val) + '"'; + if (typeOf === 'function') return printFunction(val, printFunctionName); + if (typeOf === 'symbol') return printSymbol(val); + var toStringed = toString.call(val); + if (toStringed === '[object WeakMap]') return 'WeakMap {}'; + if (toStringed === '[object WeakSet]') return 'WeakSet {}'; + if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') return printFunction(val, printFunctionName); + if (toStringed === '[object Symbol]') return printSymbol(val); + if (toStringed === '[object Date]') return toISOString.call(val); + if (toStringed === '[object Error]') return printError(val); + + if (toStringed === '[object RegExp]') { + if (escapeRegex) { + return printString(regExpToString.call(val)); + } + + return regExpToString.call(val); + } + + ; + if (toStringed === '[object Arguments]' && val.length === 0) return 'Arguments []'; + if (isToStringedArrayType(toStringed) && val.length === 0) return val.constructor.name + ' []'; + if (val instanceof Error) return printError(val); + return false; + } + + function printList(list, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + var body = ''; + + if (list.length) { + body += edgeSpacing; + var innerIndent = prevIndent + indent; + + for (var i = 0; i < list.length; i++) { + body += innerIndent + print(list[i], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + + if (i < list.length - 1) { + body += ',' + spacing; + } + } + + body += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return '[' + body + ']'; + } + + function printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + return (min ? '' : 'Arguments ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } + + function printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + return (min ? '' : val.constructor.name + ' ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } + + function printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + var result = 'Map {'; + var iterator = val.entries(); + var current = iterator.next(); + + if (!current.done) { + result += edgeSpacing; + var innerIndent = prevIndent + indent; + + while (!current.done) { + var key = print(current.value[0], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + var value = print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + result += innerIndent + key + ' => ' + value; + current = iterator.next(); + + if (!current.done) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; + } + + function printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + var constructor = min ? '' : val.constructor ? val.constructor.name + ' ' : 'Object '; + var result = constructor + '{'; + var keys = Object.keys(val).sort(); + var symbols = getSymbols(val); + + if (symbols.length) { + keys = keys.filter(function (key) { + return !(typeof key === 'symbol' || toString.call(key) === '[object Symbol]'); + }).concat(symbols); + } + + if (keys.length) { + result += edgeSpacing; + var innerIndent = prevIndent + indent; + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var name = print(key, indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + var value = print(val[key], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + result += innerIndent + name + ': ' + value; + + if (i < keys.length - 1) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; + } + + function printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + var result = 'Set {'; + var iterator = val.entries(); + var current = iterator.next(); + + if (!current.done) { + result += edgeSpacing; + var innerIndent = prevIndent + indent; + + while (!current.done) { + result += innerIndent + print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + current = iterator.next(); + + if (!current.done) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; + } + + function printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + refs = refs.slice(); + + if (refs.indexOf(val) > -1) { + return '[Circular]'; + } else { + refs.push(val); + } + + currentDepth++; + var hitMaxDepth = currentDepth > maxDepth; + + if (callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === 'function') { + return print(val.toJSON(), indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } + + var toStringed = toString.call(val); + + if (toStringed === '[object Arguments]') { + return hitMaxDepth ? '[Arguments]' : printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } else if (isToStringedArrayType(toStringed)) { + return hitMaxDepth ? '[Array]' : printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } else if (toStringed === '[object Map]') { + return hitMaxDepth ? '[Map]' : printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } else if (toStringed === '[object Set]') { + return hitMaxDepth ? '[Set]' : printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } else if (typeof val === 'object') { + return hitMaxDepth ? '[Object]' : printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } + } + + function printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + var match = false; + var plugin = void 0; + + for (var p = 0; p < plugins.length; p++) { + plugin = plugins[p]; + + if (plugin.test(val)) { + match = true; + break; + } + } + + if (!match) { + return false; + } + + function boundPrint(val) { + return print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } + + function boundIndent(str) { + var indentation = prevIndent + indent; + return indentation + str.replace(NEWLINE_REGEXP, '\n' + indentation); + } + + return plugin.print(val, boundPrint, boundIndent, { + edgeSpacing: edgeSpacing, + spacing: spacing + }); + } + + function print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex) { + var basic = printBasicValue(val, printFunctionName, escapeRegex); + if (basic) return basic; + var plugin = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + if (plugin) return plugin; + return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex); + } + + var DEFAULTS = { + callToJSON: true, + indent: 2, + maxDepth: Infinity, + min: false, + plugins: [], + printFunctionName: true, + escapeRegex: false + }; + + function validateOptions(opts) { + Object.keys(opts).forEach(function (key) { + if (!DEFAULTS.hasOwnProperty(key)) { + throw new Error('prettyFormat: Invalid option: ' + key); + } + }); + + if (opts.min && opts.indent !== undefined && opts.indent !== 0) { + throw new Error('prettyFormat: Cannot run with min option and indent'); + } + } + + function normalizeOptions(opts) { + var result = {}; + Object.keys(DEFAULTS).forEach(function (key) { + return result[key] = opts.hasOwnProperty(key) ? opts[key] : DEFAULTS[key]; + }); + + if (result.min) { + result.indent = 0; + } + + return result; + } + + function createIndent(indent) { + return new Array(indent + 1).join(' '); + } + + function prettyFormat(val, opts) { + if (!opts) { + opts = DEFAULTS; + } else { + validateOptions(opts); + opts = normalizeOptions(opts); + } + + var indent = void 0; + var refs = void 0; + var prevIndent = ''; + var currentDepth = 0; + var spacing = opts.min ? ' ' : '\n'; + var edgeSpacing = opts.min ? '' : '\n'; + + if (opts && opts.plugins.length) { + indent = createIndent(opts.indent); + refs = []; + var pluginsResult = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min, opts.callToJSON, opts.printFunctionName, opts.escapeRegex); + if (pluginsResult) return pluginsResult; + } + + var basicResult = printBasicValue(val, opts.printFunctionName, opts.escapeRegex); + if (basicResult) return basicResult; + if (!indent) indent = createIndent(opts.indent); + if (!refs) refs = []; + return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min, opts.callToJSON, opts.printFunctionName, opts.escapeRegex); + } + + module.exports = prettyFormat; +},101,[102],"pretty-format/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ESCAPED_CHARACTERS = /(\\|\"|\')/g; + + module.exports = function printString(val) { + return val.replace(ESCAPED_CHARACTERS, '\\$1'); + }; +},102,[],"pretty-format/printString.js"); +__d(function (global, require, module, exports, _dependencyMap) { + !function (global) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + + if (runtime) { + if (inModule) { + module.exports = runtime; + } + + return; + } + + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; + + function wrap(innerFn, outerFn, self, tryLocsList) { + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + generator._invoke = makeInvokeMethod(innerFn, self, context); + return generator; + } + + runtime.wrap = wrap; + + function tryCatch(fn, obj, arg) { + try { + return { + type: "normal", + arg: fn.call(obj, arg) + }; + } catch (err) { + return { + type: "throw", + arg: err + }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + var ContinueSentinel = {}; + + function Generator() {} + + function GeneratorFunction() {} + + function GeneratorFunctionPrototype() {} + + var IteratorPrototype = {}; + + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + + if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; + + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function (method) { + prototype[method] = function (arg) { + return this._invoke(method, arg); + }; + }); + } + + runtime.isGeneratorFunction = function (genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false; + }; + + runtime.mark = function (genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + + genFun.prototype = Object.create(Gp); + return genFun; + }; + + runtime.awrap = function (arg) { + return { + __await: arg + }; + }; + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + + if (value && typeof value === "object" && hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function (value) { + invoke("next", value, resolve, reject); + }, function (err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function (unwrapped) { + result.value = unwrapped; + resolve(result); + }, reject); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function (resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + + runtime.AsyncIterator = AsyncIterator; + + runtime.async = function (innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); + return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + context.sent = context._sent = context.arg; + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + var record = tryCatch(innerFn, self, context); + + if (record.type === "normal") { + state = context.done ? GenStateCompleted : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + } else if (record.type === "throw") { + state = GenStateCompleted; + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + + if (method === undefined) { + context.delegate = null; + + if (context.method === "throw") { + if (delegate.iterator.return) { + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError("The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (!info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + context[delegate.resultName] = info.value; + context.next = delegate.nextLoc; + + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + } else { + return info; + } + + context.delegate = null; + return ContinueSentinel; + } + + defineIteratorMethods(Gp); + Gp[toStringTagSymbol] = "Generator"; + + Gp[iteratorSymbol] = function () { + return this; + }; + + Gp.toString = function () { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { + tryLoc: locs[0] + }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + this.tryEntries = [{ + tryLoc: "root" + }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + runtime.keys = function (object) { + var keys = []; + + for (var key in object) { + keys.push(key); + } + + keys.reverse(); + return function next() { + while (keys.length) { + var key = keys.pop(); + + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, + next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + return next; + }; + + return next.next = next; + } + } + + return { + next: doneResult + }; + } + + runtime.values = values; + + function doneResult() { + return { + value: undefined, + done: true + }; + } + + Context.prototype = { + constructor: Context, + reset: function reset(skipTempReset) { + this.prev = 0; + this.next = 0; + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + this.method = "next"; + this.arg = undefined; + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + stop: function stop() { + this.done = true; + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + dispatchException: function dispatchException(exception) { + if (this.done) { + throw exception; + } + + var context = this; + + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + context.method = "next"; + context.arg = undefined; + } + + return !!caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + abrupt: function abrupt(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + complete: function complete(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + finish: function finish(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + "catch": function _catch(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + + return thrown; + } + } + + throw new Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + this.arg = undefined; + } + + return ContinueSentinel; + } + }; + }(function () { + return this; + }() || Function("return this")()); +},103,[],"regenerator-runtime/runtime.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Platform = require(_dependencyMap[0], 'Platform'); + + var Systrace = require(_dependencyMap[1], 'Systrace'); + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var _require = require(_dependencyMap[3], 'NativeModules'), + Timing = _require.Timing; + + var _performanceNow = null; + + function performanceNow() { + if (!_performanceNow) { + _performanceNow = require(_dependencyMap[4], 'fbjs/lib/performanceNow'); + } + + return _performanceNow(); + } + + var FRAME_DURATION = 1000 / 60; + var IDLE_CALLBACK_FRAME_DEADLINE = 1; + var MAX_TIMER_DURATION_MS = 60 * 1000; + var IS_ANDROID = Platform.OS === 'android'; + var ANDROID_LONG_TIMER_MESSAGE = 'Setting a timer for a long period of time, i.e. multiple minutes, is a ' + 'performance and correctness issue on Android as it keeps the timer ' + 'module awake, and timers can only be called when the app is in the foreground. ' + 'See https://github.com/facebook/react-native/issues/12981 for more info.'; + var callbacks = []; + var types = []; + var timerIDs = []; + var immediates = []; + var requestIdleCallbacks = []; + var requestIdleCallbackTimeouts = {}; + var identifiers = []; + var GUID = 1; + var errors = null; + var hasEmittedTimeDriftWarning = false; + + function _getFreeIndex() { + var freeIndex = timerIDs.indexOf(null); + + if (freeIndex === -1) { + freeIndex = timerIDs.length; + } + + return freeIndex; + } + + function _allocateCallback(func, type) { + var id = GUID++; + + var freeIndex = _getFreeIndex(); + + timerIDs[freeIndex] = id; + callbacks[freeIndex] = func; + types[freeIndex] = type; + + if (__DEV__) { + var parseErrorStack = require(_dependencyMap[5], 'parseErrorStack'); + + var error = new Error(); + error.framesToPop = 1; + var stack = parseErrorStack(error); + + if (stack) { + identifiers[freeIndex] = stack.shift(); + } + } + + return id; + } + + function _callTimer(timerID, frameTime, didTimeout) { + require(_dependencyMap[6], 'fbjs/lib/warning')(timerID <= GUID, 'Tried to call timer with ID %s but no such timer exists.', timerID); + + var timerIndex = timerIDs.indexOf(timerID); + + if (timerIndex === -1) { + return; + } + + var type = types[timerIndex]; + var callback = callbacks[timerIndex]; + + if (!callback || !type) { + console.error('No callback found for timerID ' + timerID); + return; + } + + if (__DEV__) { + var identifier = identifiers[timerIndex] || {}; + Systrace.beginEvent('Systrace.callTimer: ' + identifier.methodName); + } + + if (type === 'setTimeout' || type === 'setImmediate' || type === 'requestAnimationFrame' || type === 'requestIdleCallback') { + _clearIndex(timerIndex); + } + + try { + if (type === 'setTimeout' || type === 'setInterval' || type === 'setImmediate') { + callback(); + } else if (type === 'requestAnimationFrame') { + callback(performanceNow()); + } else if (type === 'requestIdleCallback') { + callback({ + timeRemaining: function timeRemaining() { + return Math.max(0, FRAME_DURATION - (performanceNow() - frameTime)); + }, + didTimeout: !!didTimeout + }); + } else { + console.error('Tried to call a callback with invalid type: ' + type); + } + } catch (e) { + if (!errors) { + errors = [e]; + } else { + errors.push(e); + } + } + + if (__DEV__) { + Systrace.endEvent(); + } + } + + function _callImmediatesPass() { + if (__DEV__) { + Systrace.beginEvent('callImmediatesPass()'); + } + + if (immediates.length > 0) { + var passImmediates = immediates.slice(); + immediates = []; + + for (var i = 0; i < passImmediates.length; ++i) { + _callTimer(passImmediates[i], 0); + } + } + + if (__DEV__) { + Systrace.endEvent(); + } + + return immediates.length > 0; + } + + function _clearIndex(i) { + timerIDs[i] = null; + callbacks[i] = null; + types[i] = null; + identifiers[i] = null; + } + + function _freeCallback(timerID) { + if (timerID == null) { + return; + } + + var index = timerIDs.indexOf(timerID); + + if (index !== -1) { + _clearIndex(index); + + var type = types[index]; + + if (type !== 'setImmediate' && type !== 'requestIdleCallback') { + Timing.deleteTimer(timerID); + } + } + } + + var JSTimers = { + setTimeout: function setTimeout(func, duration) { + for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + if (__DEV__ && IS_ANDROID && duration > MAX_TIMER_DURATION_MS) { + console.warn(ANDROID_LONG_TIMER_MESSAGE + '\n' + '(Saw setTimeout with duration ' + duration + 'ms)'); + } + + var id = _allocateCallback(function () { + return func.apply(undefined, args); + }, 'setTimeout'); + + Timing.createTimer(id, duration || 0, Date.now(), false); + return id; + }, + setInterval: function setInterval(func, duration) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + if (__DEV__ && IS_ANDROID && duration > MAX_TIMER_DURATION_MS) { + console.warn(ANDROID_LONG_TIMER_MESSAGE + '\n' + '(Saw setInterval with duration ' + duration + 'ms)'); + } + + var id = _allocateCallback(function () { + return func.apply(undefined, args); + }, 'setInterval'); + + Timing.createTimer(id, duration || 0, Date.now(), true); + return id; + }, + setImmediate: function setImmediate(func) { + for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; + } + + var id = _allocateCallback(function () { + return func.apply(undefined, args); + }, 'setImmediate'); + + immediates.push(id); + return id; + }, + requestAnimationFrame: function requestAnimationFrame(func) { + var id = _allocateCallback(func, 'requestAnimationFrame'); + + Timing.createTimer(id, 1, Date.now(), false); + return id; + }, + requestIdleCallback: function requestIdleCallback(func, options) { + if (requestIdleCallbacks.length === 0) { + Timing.setSendIdleEvents(true); + } + + var timeout = options && options.timeout; + + var id = _allocateCallback(timeout != null ? function (deadline) { + var timeoutId = requestIdleCallbackTimeouts[id]; + + if (timeoutId) { + JSTimers.clearTimeout(timeoutId); + delete requestIdleCallbackTimeouts[id]; + } + + return func(deadline); + } : func, 'requestIdleCallback'); + + requestIdleCallbacks.push(id); + + if (timeout != null) { + var timeoutId = JSTimers.setTimeout(function () { + var index = requestIdleCallbacks.indexOf(id); + + if (index > -1) { + requestIdleCallbacks.splice(index, 1); + + _callTimer(id, performanceNow(), true); + } + + delete requestIdleCallbackTimeouts[id]; + + if (requestIdleCallbacks.length === 0) { + Timing.setSendIdleEvents(false); + } + }, timeout); + requestIdleCallbackTimeouts[id] = timeoutId; + } + + return id; + }, + cancelIdleCallback: function cancelIdleCallback(timerID) { + _freeCallback(timerID); + + var index = requestIdleCallbacks.indexOf(timerID); + + if (index !== -1) { + requestIdleCallbacks.splice(index, 1); + } + + var timeoutId = requestIdleCallbackTimeouts[timerID]; + + if (timeoutId) { + JSTimers.clearTimeout(timeoutId); + delete requestIdleCallbackTimeouts[timerID]; + } + + if (requestIdleCallbacks.length === 0) { + Timing.setSendIdleEvents(false); + } + }, + clearTimeout: function clearTimeout(timerID) { + _freeCallback(timerID); + }, + clearInterval: function clearInterval(timerID) { + _freeCallback(timerID); + }, + clearImmediate: function clearImmediate(timerID) { + _freeCallback(timerID); + + var index = immediates.indexOf(timerID); + + if (index !== -1) { + immediates.splice(index, 1); + } + }, + cancelAnimationFrame: function cancelAnimationFrame(timerID) { + _freeCallback(timerID); + }, + callTimers: function callTimers(timersToCall) { + invariant(timersToCall.length !== 0, 'Cannot call `callTimers` with an empty list of IDs.'); + errors = null; + + for (var i = 0; i < timersToCall.length; i++) { + _callTimer(timersToCall[i], 0); + } + + if (errors) { + var errorCount = errors.length; + + if (errorCount > 1) { + for (var ii = 1; ii < errorCount; ii++) { + JSTimers.setTimeout(function (error) { + throw error; + }.bind(null, errors[ii]), 0); + } + } + + throw errors[0]; + } + }, + callIdleCallbacks: function callIdleCallbacks(frameTime) { + if (FRAME_DURATION - (performanceNow() - frameTime) < IDLE_CALLBACK_FRAME_DEADLINE) { + return; + } + + errors = null; + + if (requestIdleCallbacks.length > 0) { + var passIdleCallbacks = requestIdleCallbacks.slice(); + requestIdleCallbacks = []; + + for (var i = 0; i < passIdleCallbacks.length; ++i) { + _callTimer(passIdleCallbacks[i], frameTime); + } + } + + if (requestIdleCallbacks.length === 0) { + Timing.setSendIdleEvents(false); + } + + if (errors) { + errors.forEach(function (error) { + return JSTimers.setTimeout(function () { + throw error; + }, 0); + }); + } + }, + callImmediates: function callImmediates() { + errors = null; + + while (_callImmediatesPass()) {} + + if (errors) { + errors.forEach(function (error) { + return JSTimers.setTimeout(function () { + throw error; + }, 0); + }); + } + }, + emitTimeDriftWarning: function emitTimeDriftWarning(warningMessage) { + if (hasEmittedTimeDriftWarning) { + return; + } + + hasEmittedTimeDriftWarning = true; + console.warn(warningMessage); + } + }; + + if (!Timing) { + console.warn("Timing native module is not available, can't set timers."); + module.exports = { + callImmediates: JSTimers.callImmediates, + setImmediate: JSTimers.setImmediate + }; + } else { + module.exports = JSTimers; + } +},104,[105,72,18,68,106,85,19],"JSTimers"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeModules = require(_dependencyMap[0], 'NativeModules'); + + var Platform = { + OS: 'android', + + get Version() { + var constants = NativeModules.PlatformConstants; + return constants && constants.Version; + }, + + get isTesting() { + var constants = NativeModules.PlatformConstants; + return constants && constants.isTesting; + }, + + select: function select(obj) { + return 'android' in obj ? obj.android : obj.default; + } + }; + module.exports = Platform; +},105,[68],"Platform"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var performance = require(_dependencyMap[0], './performance'); + + var performanceNow; + + if (performance.now) { + performanceNow = function performanceNow() { + return performance.now(); + }; + } else { + performanceNow = function performanceNow() { + return Date.now(); + }; + } + + module.exports = performanceNow; +},106,[107],"fbjs/lib/performanceNow.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ExecutionEnvironment = require(_dependencyMap[0], './ExecutionEnvironment'); + + var performance; + + if (ExecutionEnvironment.canUseDOM) { + performance = window.performance || window.msPerformance || window.webkitPerformance; + } + + module.exports = performance || {}; +},107,[108],"fbjs/lib/performance.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); + var ExecutionEnvironment = { + canUseDOM: canUseDOM, + canUseWorkers: typeof Worker !== 'undefined', + canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent), + canUseViewport: canUseDOM && !!window.screen, + isInWorker: !canUseDOM + }; + module.exports = ExecutionEnvironment; +},108,[],"fbjs/lib/ExecutionEnvironment.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventTarget = require(_dependencyMap[0], 'event-target-shim'); + + var RCTNetworking = require(_dependencyMap[1], 'RCTNetworking'); + + var base64 = require(_dependencyMap[2], 'base64-js'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var warning = require(_dependencyMap[4], 'fbjs/lib/warning'); + + var UNSENT = 0; + var OPENED = 1; + var HEADERS_RECEIVED = 2; + var LOADING = 3; + var DONE = 4; + var SUPPORTED_RESPONSE_TYPES = { + arraybuffer: typeof global.ArrayBuffer === 'function', + blob: typeof global.Blob === 'function', + document: false, + json: true, + text: true, + '': true + }; + var REQUEST_EVENTS = ['abort', 'error', 'load', 'loadstart', 'progress', 'timeout', 'loadend']; + var XHR_EVENTS = REQUEST_EVENTS.concat('readystatechange'); + + var XMLHttpRequestEventTarget = function (_EventTarget) { + babelHelpers.inherits(XMLHttpRequestEventTarget, _EventTarget); + + function XMLHttpRequestEventTarget() { + babelHelpers.classCallCheck(this, XMLHttpRequestEventTarget); + return babelHelpers.possibleConstructorReturn(this, (XMLHttpRequestEventTarget.__proto__ || Object.getPrototypeOf(XMLHttpRequestEventTarget)).apply(this, arguments)); + } + + return XMLHttpRequestEventTarget; + }(EventTarget.apply(undefined, REQUEST_EVENTS)); + + var XMLHttpRequest = function (_EventTarget2) { + babelHelpers.inherits(XMLHttpRequest, _EventTarget2); + babelHelpers.createClass(XMLHttpRequest, null, [{ + key: "setInterceptor", + value: function setInterceptor(interceptor) { + XMLHttpRequest._interceptor = interceptor; + } + }]); + + function XMLHttpRequest() { + babelHelpers.classCallCheck(this, XMLHttpRequest); + + var _this2 = babelHelpers.possibleConstructorReturn(this, (XMLHttpRequest.__proto__ || Object.getPrototypeOf(XMLHttpRequest)).call(this)); + + _this2.UNSENT = UNSENT; + _this2.OPENED = OPENED; + _this2.HEADERS_RECEIVED = HEADERS_RECEIVED; + _this2.LOADING = LOADING; + _this2.DONE = DONE; + _this2.readyState = UNSENT; + _this2.status = 0; + _this2.timeout = 0; + _this2.withCredentials = true; + _this2.upload = new XMLHttpRequestEventTarget(); + _this2._aborted = false; + _this2._hasError = false; + _this2._method = null; + _this2._response = ''; + _this2._url = null; + _this2._timedOut = false; + _this2._trackingName = 'unknown'; + _this2._incrementalEvents = false; + + _this2._reset(); + + return _this2; + } + + babelHelpers.createClass(XMLHttpRequest, [{ + key: "_reset", + value: function _reset() { + this.readyState = this.UNSENT; + this.responseHeaders = undefined; + this.status = 0; + delete this.responseURL; + this._requestId = null; + this._cachedResponse = undefined; + this._hasError = false; + this._headers = {}; + this._response = ''; + this._responseType = ''; + this._sent = false; + this._lowerCaseResponseHeaders = {}; + + this._clearSubscriptions(); + + this._timedOut = false; + } + }, { + key: "__didCreateRequest", + value: function __didCreateRequest(requestId) { + this._requestId = requestId; + XMLHttpRequest._interceptor && XMLHttpRequest._interceptor.requestSent(requestId, this._url || '', this._method || 'GET', this._headers); + } + }, { + key: "__didUploadProgress", + value: function __didUploadProgress(requestId, progress, total) { + if (requestId === this._requestId) { + this.upload.dispatchEvent({ + type: 'progress', + lengthComputable: true, + loaded: progress, + total: total + }); + } + } + }, { + key: "__didReceiveResponse", + value: function __didReceiveResponse(requestId, status, responseHeaders, responseURL) { + if (requestId === this._requestId) { + this.status = status; + this.setResponseHeaders(responseHeaders); + this.setReadyState(this.HEADERS_RECEIVED); + + if (responseURL || responseURL === '') { + this.responseURL = responseURL; + } else { + delete this.responseURL; + } + + XMLHttpRequest._interceptor && XMLHttpRequest._interceptor.responseReceived(requestId, responseURL || this._url || '', status, responseHeaders || {}); + } + } + }, { + key: "__didReceiveData", + value: function __didReceiveData(requestId, response) { + if (requestId !== this._requestId) { + return; + } + + this._response = response; + this._cachedResponse = undefined; + this.setReadyState(this.LOADING); + XMLHttpRequest._interceptor && XMLHttpRequest._interceptor.dataReceived(requestId, response); + } + }, { + key: "__didReceiveIncrementalData", + value: function __didReceiveIncrementalData(requestId, responseText, progress, total) { + if (requestId !== this._requestId) { + return; + } + + if (!this._response) { + this._response = responseText; + } else { + this._response += responseText; + } + + XMLHttpRequest._interceptor && XMLHttpRequest._interceptor.dataReceived(requestId, responseText); + this.setReadyState(this.LOADING); + + this.__didReceiveDataProgress(requestId, progress, total); + } + }, { + key: "__didReceiveDataProgress", + value: function __didReceiveDataProgress(requestId, loaded, total) { + if (requestId !== this._requestId) { + return; + } + + this.dispatchEvent({ + type: 'progress', + lengthComputable: total >= 0, + loaded: loaded, + total: total + }); + } + }, { + key: "__didCompleteResponse", + value: function __didCompleteResponse(requestId, error, timeOutError) { + if (requestId === this._requestId) { + if (error) { + if (this._responseType === '' || this._responseType === 'text') { + this._response = error; + } + + this._hasError = true; + + if (timeOutError) { + this._timedOut = true; + } + } + + this._clearSubscriptions(); + + this._requestId = null; + this.setReadyState(this.DONE); + + if (error) { + XMLHttpRequest._interceptor && XMLHttpRequest._interceptor.loadingFailed(requestId, error); + } else { + XMLHttpRequest._interceptor && XMLHttpRequest._interceptor.loadingFinished(requestId, this._response.length); + } + } + } + }, { + key: "_clearSubscriptions", + value: function _clearSubscriptions() { + (this._subscriptions || []).forEach(function (sub) { + if (sub) { + sub.remove(); + } + }); + this._subscriptions = []; + } + }, { + key: "getAllResponseHeaders", + value: function getAllResponseHeaders() { + if (!this.responseHeaders) { + return null; + } + + var headers = this.responseHeaders || {}; + return Object.keys(headers).map(function (headerName) { + return headerName + ': ' + headers[headerName]; + }).join('\r\n'); + } + }, { + key: "getResponseHeader", + value: function getResponseHeader(header) { + var value = this._lowerCaseResponseHeaders[header.toLowerCase()]; + + return value !== undefined ? value : null; + } + }, { + key: "setRequestHeader", + value: function setRequestHeader(header, value) { + if (this.readyState !== this.OPENED) { + throw new Error('Request has not been opened'); + } + + this._headers[header.toLowerCase()] = String(value); + } + }, { + key: "setTrackingName", + value: function setTrackingName(trackingName) { + this._trackingName = trackingName; + return this; + } + }, { + key: "open", + value: function open(method, url, async) { + if (this.readyState !== this.UNSENT) { + throw new Error('Cannot open, already sending'); + } + + if (async !== undefined && !async) { + throw new Error('Synchronous http requests are not supported'); + } + + if (!url) { + throw new Error('Cannot load an empty url'); + } + + this._method = method.toUpperCase(); + this._url = url; + this._aborted = false; + this.setReadyState(this.OPENED); + } + }, { + key: "send", + value: function send(data) { + var _this3 = this; + + if (this.readyState !== this.OPENED) { + throw new Error('Request has not been opened'); + } + + if (this._sent) { + throw new Error('Request has already been sent'); + } + + this._sent = true; + var incrementalEvents = this._incrementalEvents || !!this.onreadystatechange || !!this.onprogress; + + this._subscriptions.push(RCTNetworking.addListener('didSendNetworkData', function (args) { + return _this3.__didUploadProgress.apply(_this3, babelHelpers.toConsumableArray(args)); + })); + + this._subscriptions.push(RCTNetworking.addListener('didReceiveNetworkResponse', function (args) { + return _this3.__didReceiveResponse.apply(_this3, babelHelpers.toConsumableArray(args)); + })); + + this._subscriptions.push(RCTNetworking.addListener('didReceiveNetworkData', function (args) { + return _this3.__didReceiveData.apply(_this3, babelHelpers.toConsumableArray(args)); + })); + + this._subscriptions.push(RCTNetworking.addListener('didReceiveNetworkIncrementalData', function (args) { + return _this3.__didReceiveIncrementalData.apply(_this3, babelHelpers.toConsumableArray(args)); + })); + + this._subscriptions.push(RCTNetworking.addListener('didReceiveNetworkDataProgress', function (args) { + return _this3.__didReceiveDataProgress.apply(_this3, babelHelpers.toConsumableArray(args)); + })); + + this._subscriptions.push(RCTNetworking.addListener('didCompleteNetworkResponse', function (args) { + return _this3.__didCompleteResponse.apply(_this3, babelHelpers.toConsumableArray(args)); + })); + + var nativeResponseType = 'text'; + + if (this._responseType === 'arraybuffer' || this._responseType === 'blob') { + nativeResponseType = 'base64'; + } + + invariant(this._method, 'Request method needs to be defined.'); + invariant(this._url, 'Request URL needs to be defined.'); + RCTNetworking.sendRequest(this._method, this._trackingName, this._url, this._headers, data, nativeResponseType, incrementalEvents, this.timeout, this.__didCreateRequest.bind(this), this.withCredentials); + } + }, { + key: "abort", + value: function abort() { + this._aborted = true; + + if (this._requestId) { + RCTNetworking.abortRequest(this._requestId); + } + + if (!(this.readyState === this.UNSENT || this.readyState === this.OPENED && !this._sent || this.readyState === this.DONE)) { + this._reset(); + + this.setReadyState(this.DONE); + } + + this._reset(); + } + }, { + key: "setResponseHeaders", + value: function setResponseHeaders(responseHeaders) { + this.responseHeaders = responseHeaders || null; + var headers = responseHeaders || {}; + this._lowerCaseResponseHeaders = Object.keys(headers).reduce(function (lcaseHeaders, headerName) { + lcaseHeaders[headerName.toLowerCase()] = headers[headerName]; + return lcaseHeaders; + }, {}); + } + }, { + key: "setReadyState", + value: function setReadyState(newState) { + this.readyState = newState; + this.dispatchEvent({ + type: 'readystatechange' + }); + + if (newState === this.DONE) { + if (this._aborted) { + this.dispatchEvent({ + type: 'abort' + }); + } else if (this._hasError) { + if (this._timedOut) { + this.dispatchEvent({ + type: 'timeout' + }); + } else { + this.dispatchEvent({ + type: 'error' + }); + } + } else { + this.dispatchEvent({ + type: 'load' + }); + } + + this.dispatchEvent({ + type: 'loadend' + }); + } + } + }, { + key: "addEventListener", + value: function addEventListener(type, listener) { + if (type === 'readystatechange' || type === 'progress') { + this._incrementalEvents = true; + } + + babelHelpers.get(XMLHttpRequest.prototype.__proto__ || Object.getPrototypeOf(XMLHttpRequest.prototype), "addEventListener", this).call(this, type, listener); + } + }, { + key: "responseType", + get: function get() { + return this._responseType; + }, + set: function set(responseType) { + if (this._sent) { + throw new Error('Failed to set the \'responseType\' property on \'XMLHttpRequest\': The ' + 'response type cannot be set after the request has been sent.'); + } + + if (!SUPPORTED_RESPONSE_TYPES.hasOwnProperty(responseType)) { + warning(false, "The provided value '" + responseType + "' is not a valid 'responseType'."); + return; + } + + invariant(SUPPORTED_RESPONSE_TYPES[responseType] || responseType === 'document', "The provided value '" + responseType + "' is unsupported in this environment."); + this._responseType = responseType; + } + }, { + key: "responseText", + get: function get() { + if (this._responseType !== '' && this._responseType !== 'text') { + throw new Error("The 'responseText' property is only available if 'responseType' " + ("is set to '' or 'text', but it is '" + this._responseType + "'.")); + } + + if (this.readyState < LOADING) { + return ''; + } + + return this._response; + } + }, { + key: "response", + get: function get() { + var responseType = this.responseType; + + if (responseType === '' || responseType === 'text') { + return this.readyState < LOADING || this._hasError ? '' : this._response; + } + + if (this.readyState !== DONE) { + return null; + } + + if (this._cachedResponse !== undefined) { + return this._cachedResponse; + } + + switch (responseType) { + case 'document': + this._cachedResponse = null; + break; + + case 'arraybuffer': + this._cachedResponse = base64.toByteArray(this._response).buffer; + break; + + case 'blob': + this._cachedResponse = new global.Blob([base64.toByteArray(this._response).buffer], { + type: this.getResponseHeader('content-type') || '' + }); + break; + + case 'json': + try { + this._cachedResponse = JSON.parse(this._response); + } catch (_) { + this._cachedResponse = null; + } + + break; + + default: + this._cachedResponse = null; + } + + return this._cachedResponse; + } + }]); + return XMLHttpRequest; + }(EventTarget.apply(undefined, babelHelpers.toConsumableArray(XHR_EVENTS))); + + XMLHttpRequest.UNSENT = UNSENT; + XMLHttpRequest.OPENED = OPENED; + XMLHttpRequest.HEADERS_RECEIVED = HEADERS_RECEIVED; + XMLHttpRequest.LOADING = LOADING; + XMLHttpRequest.DONE = DONE; + XMLHttpRequest._interceptor = null; + module.exports = XMLHttpRequest; +},109,[110,114,124,18,19],"XMLHttpRequest"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var Commons = require(_dependencyMap[0], "./commons"); + + var CustomEventTarget = require(_dependencyMap[1], "./custom-event-target"); + + var EventWrapper = require(_dependencyMap[2], "./event-wrapper"); + + var LISTENERS = Commons.LISTENERS; + var CAPTURE = Commons.CAPTURE; + var BUBBLE = Commons.BUBBLE; + var ATTRIBUTE = Commons.ATTRIBUTE; + var newNode = Commons.newNode; + var defineCustomEventTarget = CustomEventTarget.defineCustomEventTarget; + var createEventWrapper = EventWrapper.createEventWrapper; + var STOP_IMMEDIATE_PROPAGATION_FLAG = EventWrapper.STOP_IMMEDIATE_PROPAGATION_FLAG; + var HAS_EVENTTARGET_INTERFACE = typeof window !== "undefined" && typeof window.EventTarget !== "undefined"; + + var EventTarget = module.exports = function EventTarget() { + if (this instanceof EventTarget) { + Object.defineProperty(this, LISTENERS, { + value: Object.create(null) + }); + } else if (arguments.length === 1 && Array.isArray(arguments[0])) { + return defineCustomEventTarget(EventTarget, arguments[0]); + } else if (arguments.length > 0) { + var types = Array(arguments.length); + + for (var i = 0; i < arguments.length; ++i) { + types[i] = arguments[i]; + } + + return defineCustomEventTarget(EventTarget, types); + } else { + throw new TypeError("Cannot call a class as a function"); + } + }; + + EventTarget.prototype = Object.create((HAS_EVENTTARGET_INTERFACE ? window.EventTarget : Object).prototype, { + constructor: { + value: EventTarget, + writable: true, + configurable: true + }, + addEventListener: { + value: function addEventListener(type, listener, capture) { + if (listener == null) { + return false; + } + + if (typeof listener !== "function" && typeof listener !== "object") { + throw new TypeError("\"listener\" is not an object."); + } + + var kind = capture ? CAPTURE : BUBBLE; + var node = this[LISTENERS][type]; + + if (node == null) { + this[LISTENERS][type] = newNode(listener, kind); + return true; + } + + var prev = null; + + while (node != null) { + if (node.listener === listener && node.kind === kind) { + return false; + } + + prev = node; + node = node.next; + } + + prev.next = newNode(listener, kind); + return true; + }, + configurable: true, + writable: true + }, + removeEventListener: { + value: function removeEventListener(type, listener, capture) { + if (listener == null) { + return false; + } + + var kind = capture ? CAPTURE : BUBBLE; + var prev = null; + var node = this[LISTENERS][type]; + + while (node != null) { + if (node.listener === listener && node.kind === kind) { + if (prev == null) { + this[LISTENERS][type] = node.next; + } else { + prev.next = node.next; + } + + return true; + } + + prev = node; + node = node.next; + } + + return false; + }, + configurable: true, + writable: true + }, + dispatchEvent: { + value: function dispatchEvent(event) { + var node = this[LISTENERS][event.type]; + + if (node == null) { + return true; + } + + var wrapped = createEventWrapper(event, this); + + while (node != null) { + if (typeof node.listener === "function") { + node.listener.call(this, wrapped); + } else if (node.kind !== ATTRIBUTE && typeof node.listener.handleEvent === "function") { + node.listener.handleEvent(wrapped); + } + + if (wrapped[STOP_IMMEDIATE_PROPAGATION_FLAG]) { + break; + } + + node = node.next; + } + + return !wrapped.defaultPrevented; + }, + configurable: true, + writable: true + } + }); +},110,[111,112,113],"event-target-shim/lib/event-target.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var createUniqueKey = exports.createUniqueKey = typeof Symbol !== "undefined" ? Symbol : function createUniqueKey(name) { + return "[[" + name + "_" + Math.random().toFixed(8).slice(2) + "]]"; + }; + exports.LISTENERS = createUniqueKey("listeners"); + exports.CAPTURE = 1; + exports.BUBBLE = 2; + exports.ATTRIBUTE = 3; + + exports.newNode = function newNode(listener, kind) { + return { + listener: listener, + kind: kind, + next: null + }; + }; +},111,[],"event-target-shim/lib/commons.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var Commons = require(_dependencyMap[0], "./commons"); + + var LISTENERS = Commons.LISTENERS; + var ATTRIBUTE = Commons.ATTRIBUTE; + var newNode = Commons.newNode; + + function getAttributeListener(eventTarget, type) { + var node = eventTarget[LISTENERS][type]; + + while (node != null) { + if (node.kind === ATTRIBUTE) { + return node.listener; + } + + node = node.next; + } + + return null; + } + + function setAttributeListener(eventTarget, type, listener) { + if (typeof listener !== "function" && typeof listener !== "object") { + listener = null; + } + + var prev = null; + var node = eventTarget[LISTENERS][type]; + + while (node != null) { + if (node.kind === ATTRIBUTE) { + if (prev == null) { + eventTarget[LISTENERS][type] = node.next; + } else { + prev.next = node.next; + } + } else { + prev = node; + } + + node = node.next; + } + + if (listener != null) { + if (prev == null) { + eventTarget[LISTENERS][type] = newNode(listener, ATTRIBUTE); + } else { + prev.next = newNode(listener, ATTRIBUTE); + } + } + } + + exports.defineCustomEventTarget = function (EventTargetBase, types) { + function EventTarget() { + EventTargetBase.call(this); + } + + var descripter = { + constructor: { + value: EventTarget, + configurable: true, + writable: true + } + }; + types.forEach(function (type) { + descripter["on" + type] = { + get: function get() { + return getAttributeListener(this, type); + }, + set: function set(listener) { + setAttributeListener(this, type, listener); + }, + configurable: true, + enumerable: true + }; + }); + EventTarget.prototype = Object.create(EventTargetBase.prototype, descripter); + return EventTarget; + }; +},112,[111],"event-target-shim/lib/custom-event-target.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var createUniqueKey = require(_dependencyMap[0], "./commons").createUniqueKey; + + var STOP_IMMEDIATE_PROPAGATION_FLAG = createUniqueKey("stop_immediate_propagation_flag"); + var CANCELED_FLAG = createUniqueKey("canceled_flag"); + var ORIGINAL_EVENT = createUniqueKey("original_event"); + var wrapperPrototypeDefinition = Object.freeze({ + stopPropagation: Object.freeze({ + value: function stopPropagation() { + var e = this[ORIGINAL_EVENT]; + + if (typeof e.stopPropagation === "function") { + e.stopPropagation(); + } + }, + writable: true, + configurable: true + }), + stopImmediatePropagation: Object.freeze({ + value: function stopImmediatePropagation() { + this[STOP_IMMEDIATE_PROPAGATION_FLAG] = true; + var e = this[ORIGINAL_EVENT]; + + if (typeof e.stopImmediatePropagation === "function") { + e.stopImmediatePropagation(); + } + }, + writable: true, + configurable: true + }), + preventDefault: Object.freeze({ + value: function preventDefault() { + if (this.cancelable === true) { + this[CANCELED_FLAG] = true; + } + + var e = this[ORIGINAL_EVENT]; + + if (typeof e.preventDefault === "function") { + e.preventDefault(); + } + }, + writable: true, + configurable: true + }), + defaultPrevented: Object.freeze({ + get: function defaultPrevented() { + return this[CANCELED_FLAG]; + }, + enumerable: true, + configurable: true + }) + }); + exports.STOP_IMMEDIATE_PROPAGATION_FLAG = STOP_IMMEDIATE_PROPAGATION_FLAG; + + exports.createEventWrapper = function createEventWrapper(event, eventTarget) { + var timeStamp = typeof event.timeStamp === "number" ? event.timeStamp : Date.now(); + var propertyDefinition = { + type: { + value: event.type, + enumerable: true + }, + target: { + value: eventTarget, + enumerable: true + }, + currentTarget: { + value: eventTarget, + enumerable: true + }, + eventPhase: { + value: 2, + enumerable: true + }, + bubbles: { + value: Boolean(event.bubbles), + enumerable: true + }, + cancelable: { + value: Boolean(event.cancelable), + enumerable: true + }, + timeStamp: { + value: timeStamp, + enumerable: true + }, + isTrusted: { + value: false, + enumerable: true + } + }; + propertyDefinition[STOP_IMMEDIATE_PROPAGATION_FLAG] = { + value: false, + writable: true + }; + propertyDefinition[CANCELED_FLAG] = { + value: false, + writable: true + }; + propertyDefinition[ORIGINAL_EVENT] = { + value: event + }; + + if (typeof event.detail !== "undefined") { + propertyDefinition.detail = { + value: event.detail, + enumerable: true + }; + } + + return Object.create(Object.create(event, wrapperPrototypeDefinition), propertyDefinition); + }; +},113,[111],"event-target-shim/lib/event-wrapper.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var MissingNativeEventEmitterShim = require(_dependencyMap[0], 'MissingNativeEventEmitterShim'); + + var NativeEventEmitter = require(_dependencyMap[1], 'NativeEventEmitter'); + + var RCTNetworkingNative = require(_dependencyMap[2], 'NativeModules').Networking; + + var convertRequestBody = require(_dependencyMap[3], 'convertRequestBody'); + + function convertHeadersMapToArray(headers) { + var headerArray = []; + + for (var name in headers) { + headerArray.push([name, headers[name]]); + } + + return headerArray; + } + + var _requestId = 1; + + function generateRequestId() { + return _requestId++; + } + + var RCTNetworking = function (_NativeEventEmitter) { + babelHelpers.inherits(RCTNetworking, _NativeEventEmitter); + + function RCTNetworking() { + babelHelpers.classCallCheck(this, RCTNetworking); + + var _this = babelHelpers.possibleConstructorReturn(this, (RCTNetworking.__proto__ || Object.getPrototypeOf(RCTNetworking)).call(this, RCTNetworkingNative)); + + _this.isAvailable = true; + return _this; + } + + babelHelpers.createClass(RCTNetworking, [{ + key: "sendRequest", + value: function sendRequest(method, trackingName, url, headers, data, responseType, incrementalUpdates, timeout, callback, withCredentials) { + var body = convertRequestBody(data); + + if (body && body.formData) { + body.formData = body.formData.map(function (part) { + return babelHelpers.extends({}, part, { + headers: convertHeadersMapToArray(part.headers) + }); + }); + } + + var requestId = generateRequestId(); + RCTNetworkingNative.sendRequest(method, url, requestId, convertHeadersMapToArray(headers), babelHelpers.extends({}, body, { + trackingName: trackingName + }), responseType, incrementalUpdates, timeout, withCredentials); + callback(requestId); + } + }, { + key: "abortRequest", + value: function abortRequest(requestId) { + RCTNetworkingNative.abortRequest(requestId); + } + }, { + key: "clearCookies", + value: function clearCookies(callback) { + RCTNetworkingNative.clearCookies(callback); + } + }]); + return RCTNetworking; + }(NativeEventEmitter); + + if (__DEV__ && !RCTNetworkingNative) { + var MissingNativeRCTNetworkingShim = function (_MissingNativeEventEm) { + babelHelpers.inherits(MissingNativeRCTNetworkingShim, _MissingNativeEventEm); + + function MissingNativeRCTNetworkingShim() { + babelHelpers.classCallCheck(this, MissingNativeRCTNetworkingShim); + return babelHelpers.possibleConstructorReturn(this, (MissingNativeRCTNetworkingShim.__proto__ || Object.getPrototypeOf(MissingNativeRCTNetworkingShim)).call(this, 'RCTNetworking', 'Networking')); + } + + babelHelpers.createClass(MissingNativeRCTNetworkingShim, [{ + key: "sendRequest", + value: function sendRequest() { + this.throwMissingNativeModule(); + } + }, { + key: "abortRequest", + value: function abortRequest() { + this.throwMissingNativeModule(); + } + }, { + key: "clearCookies", + value: function clearCookies() { + this.throwMissingNativeModule(); + } + }]); + return MissingNativeRCTNetworkingShim; + }(MissingNativeEventEmitterShim); + + RCTNetworking = new MissingNativeRCTNetworkingShim(); + } else { + RCTNetworking = new RCTNetworking(); + } + + module.exports = RCTNetworking; +},114,[115,120,68,122],"RCTNetworking"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EmitterSubscription = require(_dependencyMap[0], 'EmitterSubscription'); + + var EventEmitter = require(_dependencyMap[1], 'EventEmitter'); + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var MissingNativeEventEmitterShim = function (_EventEmitter) { + babelHelpers.inherits(MissingNativeEventEmitterShim, _EventEmitter); + + function MissingNativeEventEmitterShim(nativeModuleName, nativeEventEmitterName) { + babelHelpers.classCallCheck(this, MissingNativeEventEmitterShim); + + var _this = babelHelpers.possibleConstructorReturn(this, (MissingNativeEventEmitterShim.__proto__ || Object.getPrototypeOf(MissingNativeEventEmitterShim)).call(this, null)); + + _this.isAvailable = false; + _this._nativeModuleName = nativeModuleName; + _this._nativeEventEmitterName = nativeEventEmitterName; + return _this; + } + + babelHelpers.createClass(MissingNativeEventEmitterShim, [{ + key: "throwMissingNativeModule", + value: function throwMissingNativeModule() { + invariant(false, "Cannot use '" + this._nativeEventEmitterName + "' module when " + ("native '" + this._nativeModuleName + "' is not included in the build. ") + ("Either include it, or check '" + this._nativeEventEmitterName + "'.isAvailable ") + 'before calling any methods.'); + } + }, { + key: "addListener", + value: function addListener(eventType, listener, context) { + this.throwMissingNativeModule(); + } + }, { + key: "removeAllListeners", + value: function removeAllListeners(eventType) { + this.throwMissingNativeModule(); + } + }, { + key: "removeSubscription", + value: function removeSubscription(subscription) { + this.throwMissingNativeModule(); + } + }]); + return MissingNativeEventEmitterShim; + }(EventEmitter); + + module.exports = MissingNativeEventEmitterShim; +},115,[116,118,18],"MissingNativeEventEmitterShim"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventSubscription = require(_dependencyMap[0], 'EventSubscription'); + + var EmitterSubscription = function (_EventSubscription) { + babelHelpers.inherits(EmitterSubscription, _EventSubscription); + + function EmitterSubscription(emitter, subscriber, listener, context) { + babelHelpers.classCallCheck(this, EmitterSubscription); + + var _this = babelHelpers.possibleConstructorReturn(this, (EmitterSubscription.__proto__ || Object.getPrototypeOf(EmitterSubscription)).call(this, subscriber)); + + _this.emitter = emitter; + _this.listener = listener; + _this.context = context; + return _this; + } + + babelHelpers.createClass(EmitterSubscription, [{ + key: "remove", + value: function remove() { + this.emitter.removeSubscription(this); + } + }]); + return EmitterSubscription; + }(EventSubscription); + + module.exports = EmitterSubscription; +},116,[117],"EmitterSubscription"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventSubscription = function () { + function EventSubscription(subscriber) { + babelHelpers.classCallCheck(this, EventSubscription); + this.subscriber = subscriber; + } + + babelHelpers.createClass(EventSubscription, [{ + key: "remove", + value: function remove() { + this.subscriber.removeSubscription(this); + } + }]); + return EventSubscription; + }(); + + module.exports = EventSubscription; +},117,[],"EventSubscription"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EmitterSubscription = require(_dependencyMap[0], 'EmitterSubscription'); + + var EventSubscriptionVendor = require(_dependencyMap[1], 'EventSubscriptionVendor'); + + var emptyFunction = require(_dependencyMap[2], 'fbjs/lib/emptyFunction'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var EventEmitter = function () { + function EventEmitter(subscriber) { + babelHelpers.classCallCheck(this, EventEmitter); + this._subscriber = subscriber || new EventSubscriptionVendor(); + } + + babelHelpers.createClass(EventEmitter, [{ + key: "addListener", + value: function addListener(eventType, listener, context) { + return this._subscriber.addSubscription(eventType, new EmitterSubscription(this, this._subscriber, listener, context)); + } + }, { + key: "once", + value: function once(eventType, listener, context) { + var _this = this; + + return this.addListener(eventType, function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this.removeCurrentListener(); + + listener.apply(context, args); + }); + } + }, { + key: "removeAllListeners", + value: function removeAllListeners(eventType) { + this._subscriber.removeAllSubscriptions(eventType); + } + }, { + key: "removeCurrentListener", + value: function removeCurrentListener() { + invariant(!!this._currentSubscription, 'Not in an emitting cycle; there is no current subscription'); + this.removeSubscription(this._currentSubscription); + } + }, { + key: "removeSubscription", + value: function removeSubscription(subscription) { + invariant(subscription.emitter === this, 'Subscription does not belong to this emitter.'); + + this._subscriber.removeSubscription(subscription); + } + }, { + key: "listeners", + value: function listeners(eventType) { + var subscriptions = this._subscriber.getSubscriptionsForType(eventType); + + return subscriptions ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(function (subscription) { + return subscription.listener; + }) : []; + } + }, { + key: "emit", + value: function emit(eventType) { + var subscriptions = this._subscriber.getSubscriptionsForType(eventType); + + if (subscriptions) { + for (var i = 0, l = subscriptions.length; i < l; i++) { + var subscription = subscriptions[i]; + + if (subscription) { + this._currentSubscription = subscription; + subscription.listener.apply(subscription.context, Array.prototype.slice.call(arguments, 1)); + } + } + + this._currentSubscription = null; + } + } + }, { + key: "removeListener", + value: function removeListener(eventType, listener) { + var subscriptions = this._subscriber.getSubscriptionsForType(eventType); + + if (subscriptions) { + for (var i = 0, l = subscriptions.length; i < l; i++) { + var subscription = subscriptions[i]; + + if (subscription && subscription.listener === listener) { + subscription.remove(); + } + } + } + } + }]); + return EventEmitter; + }(); + + module.exports = EventEmitter; +},118,[116,119,16,18],"EventEmitter"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var EventSubscriptionVendor = function () { + function EventSubscriptionVendor() { + babelHelpers.classCallCheck(this, EventSubscriptionVendor); + this._subscriptionsForType = {}; + this._currentSubscription = null; + } + + babelHelpers.createClass(EventSubscriptionVendor, [{ + key: "addSubscription", + value: function addSubscription(eventType, subscription) { + invariant(subscription.subscriber === this, 'The subscriber of the subscription is incorrectly set.'); + + if (!this._subscriptionsForType[eventType]) { + this._subscriptionsForType[eventType] = []; + } + + var key = this._subscriptionsForType[eventType].length; + + this._subscriptionsForType[eventType].push(subscription); + + subscription.eventType = eventType; + subscription.key = key; + return subscription; + } + }, { + key: "removeAllSubscriptions", + value: function removeAllSubscriptions(eventType) { + if (eventType === undefined) { + this._subscriptionsForType = {}; + } else { + delete this._subscriptionsForType[eventType]; + } + } + }, { + key: "removeSubscription", + value: function removeSubscription(subscription) { + var eventType = subscription.eventType; + var key = subscription.key; + var subscriptionsForType = this._subscriptionsForType[eventType]; + + if (subscriptionsForType) { + delete subscriptionsForType[key]; + } + } + }, { + key: "getSubscriptionsForType", + value: function getSubscriptionsForType(eventType) { + return this._subscriptionsForType[eventType]; + } + }]); + return EventSubscriptionVendor; + }(); + + module.exports = EventSubscriptionVendor; +},119,[18],"EventSubscriptionVendor"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventEmitter = require(_dependencyMap[0], 'EventEmitter'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var RCTDeviceEventEmitter = require(_dependencyMap[2], 'RCTDeviceEventEmitter'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var NativeEventEmitter = function (_EventEmitter) { + babelHelpers.inherits(NativeEventEmitter, _EventEmitter); + + function NativeEventEmitter(nativeModule) { + babelHelpers.classCallCheck(this, NativeEventEmitter); + + var _this = babelHelpers.possibleConstructorReturn(this, (NativeEventEmitter.__proto__ || Object.getPrototypeOf(NativeEventEmitter)).call(this, RCTDeviceEventEmitter.sharedSubscriber)); + + if (Platform.OS === 'ios') { + invariant(nativeModule, 'Native module cannot be null.'); + _this._nativeModule = nativeModule; + } + + return _this; + } + + babelHelpers.createClass(NativeEventEmitter, [{ + key: "addListener", + value: function addListener(eventType, listener, context) { + if (this._nativeModule != null) { + this._nativeModule.addListener(eventType); + } + + return babelHelpers.get(NativeEventEmitter.prototype.__proto__ || Object.getPrototypeOf(NativeEventEmitter.prototype), "addListener", this).call(this, eventType, listener, context); + } + }, { + key: "removeAllListeners", + value: function removeAllListeners(eventType) { + invariant(eventType, 'eventType argument is required.'); + var count = this.listeners(eventType).length; + + if (this._nativeModule != null) { + this._nativeModule.removeListeners(count); + } + + babelHelpers.get(NativeEventEmitter.prototype.__proto__ || Object.getPrototypeOf(NativeEventEmitter.prototype), "removeAllListeners", this).call(this, eventType); + } + }, { + key: "removeSubscription", + value: function removeSubscription(subscription) { + if (this._nativeModule != null) { + this._nativeModule.removeListeners(1); + } + + babelHelpers.get(NativeEventEmitter.prototype.__proto__ || Object.getPrototypeOf(NativeEventEmitter.prototype), "removeSubscription", this).call(this, subscription); + } + }]); + return NativeEventEmitter; + }(EventEmitter); + + module.exports = NativeEventEmitter; +},120,[118,105,121,18],"NativeEventEmitter"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventEmitter = require(_dependencyMap[0], 'EventEmitter'); + + var EventSubscriptionVendor = require(_dependencyMap[1], 'EventSubscriptionVendor'); + + function checkNativeEventModule(eventType) { + if (eventType) { + if (eventType.lastIndexOf('statusBar', 0) === 0) { + throw new Error('`' + eventType + '` event should be registered via the StatusBarIOS module'); + } + + if (eventType.lastIndexOf('keyboard', 0) === 0) { + throw new Error('`' + eventType + '` event should be registered via the Keyboard module'); + } + + if (eventType === 'appStateDidChange' || eventType === 'memoryWarning') { + throw new Error('`' + eventType + '` event should be registered via the AppState module'); + } + } + } + + var RCTDeviceEventEmitter = function (_EventEmitter) { + babelHelpers.inherits(RCTDeviceEventEmitter, _EventEmitter); + + function RCTDeviceEventEmitter() { + babelHelpers.classCallCheck(this, RCTDeviceEventEmitter); + var sharedSubscriber = new EventSubscriptionVendor(); + + var _this = babelHelpers.possibleConstructorReturn(this, (RCTDeviceEventEmitter.__proto__ || Object.getPrototypeOf(RCTDeviceEventEmitter)).call(this, sharedSubscriber)); + + _this.sharedSubscriber = sharedSubscriber; + return _this; + } + + babelHelpers.createClass(RCTDeviceEventEmitter, [{ + key: "addListener", + value: function addListener(eventType, listener, context) { + if (__DEV__) { + checkNativeEventModule(eventType); + } + + return babelHelpers.get(RCTDeviceEventEmitter.prototype.__proto__ || Object.getPrototypeOf(RCTDeviceEventEmitter.prototype), "addListener", this).call(this, eventType, listener, context); + } + }, { + key: "removeAllListeners", + value: function removeAllListeners(eventType) { + if (__DEV__) { + checkNativeEventModule(eventType); + } + + babelHelpers.get(RCTDeviceEventEmitter.prototype.__proto__ || Object.getPrototypeOf(RCTDeviceEventEmitter.prototype), "removeAllListeners", this).call(this, eventType); + } + }, { + key: "removeSubscription", + value: function removeSubscription(subscription) { + if (subscription.emitter !== this) { + subscription.emitter.removeSubscription(subscription); + } else { + babelHelpers.get(RCTDeviceEventEmitter.prototype.__proto__ || Object.getPrototypeOf(RCTDeviceEventEmitter.prototype), "removeSubscription", this).call(this, subscription); + } + } + }]); + return RCTDeviceEventEmitter; + }(EventEmitter); + + module.exports = new RCTDeviceEventEmitter(); +},121,[118,119],"RCTDeviceEventEmitter"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var binaryToBase64 = require(_dependencyMap[0], 'binaryToBase64'); + + var FormData = require(_dependencyMap[1], 'FormData'); + + function convertRequestBody(body) { + if (typeof body === 'string') { + return { + string: body + }; + } + + if (body instanceof FormData) { + return { + formData: body.getParts() + }; + } + + if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) { + return { + base64: binaryToBase64(body) + }; + } + + return body; + } + + module.exports = convertRequestBody; +},122,[123,125],"convertRequestBody"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var base64 = require(_dependencyMap[0], 'base64-js'); + + function binaryToBase64(data) { + if (data instanceof ArrayBuffer) { + data = new Uint8Array(data); + } + + if (data instanceof Uint8Array) { + return base64.fromByteArray(data); + } + + if (!ArrayBuffer.isView(data)) { + throw new Error('data must be ArrayBuffer or typed array'); + } + + var _data = data, + buffer = _data.buffer, + byteOffset = _data.byteOffset, + byteLength = _data.byteLength; + return base64.fromByteArray(new Uint8Array(buffer, byteOffset, byteLength)); + } + + module.exports = binaryToBase64; +},123,[124],"binaryToBase64"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.byteLength = byteLength; + exports.toByteArray = toByteArray; + exports.fromByteArray = fromByteArray; + var lookup = []; + var revLookup = []; + var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; + var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + + for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + + revLookup['-'.charCodeAt(0)] = 62; + revLookup['_'.charCodeAt(0)] = 63; + + function placeHoldersCount(b64) { + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4'); + } + + return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; + } + + function byteLength(b64) { + return b64.length * 3 / 4 - placeHoldersCount(b64); + } + + function toByteArray(b64) { + var i, l, tmp, placeHolders, arr; + var len = b64.length; + placeHolders = placeHoldersCount(b64); + arr = new Arr(len * 3 / 4 - placeHolders); + l = placeHolders > 0 ? len - 4 : len; + var L = 0; + + for (i = 0; i < l; i += 4) { + tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; + arr[L++] = tmp >> 16 & 0xFF; + arr[L++] = tmp >> 8 & 0xFF; + arr[L++] = tmp & 0xFF; + } + + if (placeHolders === 2) { + tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; + arr[L++] = tmp & 0xFF; + } else if (placeHolders === 1) { + tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; + arr[L++] = tmp >> 8 & 0xFF; + arr[L++] = tmp & 0xFF; + } + + return arr; + } + + function tripletToBase64(num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; + } + + function encodeChunk(uint8, start, end) { + var tmp; + var output = []; + + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF); + output.push(tripletToBase64(tmp)); + } + + return output.join(''); + } + + function fromByteArray(uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; + var output = ''; + var parts = []; + var maxChunkLength = 16383; + + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); + } + + if (extraBytes === 1) { + tmp = uint8[len - 1]; + output += lookup[tmp >> 2]; + output += lookup[tmp << 4 & 0x3F]; + output += '=='; + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1]; + output += lookup[tmp >> 10]; + output += lookup[tmp >> 4 & 0x3F]; + output += lookup[tmp << 2 & 0x3F]; + output += '='; + } + + parts.push(output); + return parts.join(''); + } +},124,[],"base64-js/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var FormData = function () { + function FormData() { + babelHelpers.classCallCheck(this, FormData); + this._parts = []; + } + + babelHelpers.createClass(FormData, [{ + key: "append", + value: function append(key, value) { + this._parts.push([key, value]); + } + }, { + key: "getParts", + value: function getParts() { + return this._parts.map(function (_ref) { + var _ref2 = babelHelpers.slicedToArray(_ref, 2), + name = _ref2[0], + value = _ref2[1]; + + var contentDisposition = 'form-data; name="' + name + '"'; + var headers = { + 'content-disposition': contentDisposition + }; + + if (typeof value === 'object' && value) { + if (typeof value.name === 'string') { + headers['content-disposition'] += '; filename="' + value.name + '"'; + } + + if (typeof value.type === 'string') { + headers['content-type'] = value.type; + } + + return babelHelpers.extends({}, value, { + headers: headers, + fieldName: name + }); + } + + return { + string: String(value), + headers: headers, + fieldName: name + }; + }); + } + }]); + return FormData; + }(); + + module.exports = FormData; +},125,[],"FormData"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Blob = require(_dependencyMap[0], 'Blob'); + + var EventTarget = require(_dependencyMap[1], 'event-target-shim'); + + var NativeEventEmitter = require(_dependencyMap[2], 'NativeEventEmitter'); + + var NativeModules = require(_dependencyMap[3], 'NativeModules'); + + var Platform = require(_dependencyMap[4], 'Platform'); + + var WebSocketEvent = require(_dependencyMap[5], 'WebSocketEvent'); + + var base64 = require(_dependencyMap[6], 'base64-js'); + + var binaryToBase64 = require(_dependencyMap[7], 'binaryToBase64'); + + var invariant = require(_dependencyMap[8], 'fbjs/lib/invariant'); + + var WebSocketModule = NativeModules.WebSocketModule; + var CONNECTING = 0; + var OPEN = 1; + var CLOSING = 2; + var CLOSED = 3; + var CLOSE_NORMAL = 1000; + var WEBSOCKET_EVENTS = ['close', 'error', 'message', 'open']; + var nextWebSocketId = 0; + + var WebSocket = function (_EventTarget) { + babelHelpers.inherits(WebSocket, _EventTarget); + + function WebSocket(url, protocols, options) { + babelHelpers.classCallCheck(this, WebSocket); + + var _this = babelHelpers.possibleConstructorReturn(this, (WebSocket.__proto__ || Object.getPrototypeOf(WebSocket)).call(this)); + + _this.CONNECTING = CONNECTING; + _this.OPEN = OPEN; + _this.CLOSING = CLOSING; + _this.CLOSED = CLOSED; + _this.readyState = CONNECTING; + + if (typeof protocols === 'string') { + protocols = [protocols]; + } + + var _ref = options || {}, + _ref$headers = _ref.headers, + headers = _ref$headers === undefined ? {} : _ref$headers, + unrecognized = babelHelpers.objectWithoutProperties(_ref, ["headers"]); + + if (unrecognized && typeof unrecognized.origin === 'string') { + console.warn('Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.'); + headers.origin = unrecognized.origin; + delete unrecognized.origin; + } + + if (Object.keys(unrecognized).length > 0) { + console.warn('Unrecognized WebSocket connection option(s) `' + Object.keys(unrecognized).join('`, `') + '`. ' + 'Did you mean to put these under `headers`?'); + } + + if (!Array.isArray(protocols)) { + protocols = null; + } + + if (!WebSocket.isAvailable) { + throw new Error('Cannot initialize WebSocket module. ' + 'Native module WebSocketModule is missing.'); + } + + _this._eventEmitter = new NativeEventEmitter(WebSocketModule); + _this._socketId = nextWebSocketId++; + + _this._registerEvents(); + + WebSocketModule.connect(url, protocols, { + headers: headers + }, _this._socketId); + return _this; + } + + babelHelpers.createClass(WebSocket, [{ + key: "close", + value: function close(code, reason) { + if (this.readyState === this.CLOSING || this.readyState === this.CLOSED) { + return; + } + + this.readyState = this.CLOSING; + + this._close(code, reason); + } + }, { + key: "send", + value: function send(data) { + if (this.readyState === this.CONNECTING) { + throw new Error('INVALID_STATE_ERR'); + } + + if (data instanceof Blob) { + var BlobModule = NativeModules.BlobModule; + invariant(BlobModule, 'Native module BlobModule is required for blob support'); + BlobModule.sendBlob(data, this._socketId); + return; + } + + if (typeof data === 'string') { + WebSocketModule.send(data, this._socketId); + return; + } + + if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) { + WebSocketModule.sendBinary(binaryToBase64(data), this._socketId); + return; + } + + throw new Error('Unsupported data type'); + } + }, { + key: "ping", + value: function ping() { + if (this.readyState === this.CONNECTING) { + throw new Error('INVALID_STATE_ERR'); + } + + WebSocketModule.ping(this._socketId); + } + }, { + key: "_close", + value: function _close(code, reason) { + if (Platform.OS === 'android') { + var statusCode = typeof code === 'number' ? code : CLOSE_NORMAL; + var closeReason = typeof reason === 'string' ? reason : ''; + WebSocketModule.close(statusCode, closeReason, this._socketId); + } else { + WebSocketModule.close(this._socketId); + } + } + }, { + key: "_unregisterEvents", + value: function _unregisterEvents() { + this._subscriptions.forEach(function (e) { + return e.remove(); + }); + + this._subscriptions = []; + } + }, { + key: "_registerEvents", + value: function _registerEvents() { + var _this2 = this; + + this._subscriptions = [this._eventEmitter.addListener('websocketMessage', function (ev) { + if (ev.id !== _this2._socketId) { + return; + } + + var data = ev.data; + + switch (ev.type) { + case 'binary': + data = base64.toByteArray(ev.data).buffer; + break; + + case 'blob': + data = Blob.create(ev.data); + break; + } + + _this2.dispatchEvent(new WebSocketEvent('message', { + data: data + })); + }), this._eventEmitter.addListener('websocketOpen', function (ev) { + if (ev.id !== _this2._socketId) { + return; + } + + _this2.readyState = _this2.OPEN; + + _this2.dispatchEvent(new WebSocketEvent('open')); + }), this._eventEmitter.addListener('websocketClosed', function (ev) { + if (ev.id !== _this2._socketId) { + return; + } + + _this2.readyState = _this2.CLOSED; + + _this2.dispatchEvent(new WebSocketEvent('close', { + code: ev.code, + reason: ev.reason + })); + + _this2._unregisterEvents(); + + _this2.close(); + }), this._eventEmitter.addListener('websocketFailed', function (ev) { + if (ev.id !== _this2._socketId) { + return; + } + + _this2.readyState = _this2.CLOSED; + + _this2.dispatchEvent(new WebSocketEvent('error', { + message: ev.message + })); + + _this2.dispatchEvent(new WebSocketEvent('close', { + message: ev.message + })); + + _this2._unregisterEvents(); + + _this2.close(); + })]; + } + }, { + key: "binaryType", + get: function get() { + return this._binaryType; + }, + set: function set(binaryType) { + if (binaryType !== 'blob' && binaryType !== 'arraybuffer') { + throw new Error('binaryType must be either \'blob\' or \'arraybuffer\''); + } + + if (this._binaryType === 'blob' || binaryType === 'blob') { + var BlobModule = NativeModules.BlobModule; + invariant(BlobModule, 'Native module BlobModule is required for blob support'); + + if (BlobModule) { + if (binaryType === 'blob') { + BlobModule.enableBlobSupport(this._socketId); + } else { + BlobModule.disableBlobSupport(this._socketId); + } + } + } + + this._binaryType = binaryType; + } + }]); + return WebSocket; + }(EventTarget.apply(undefined, WEBSOCKET_EVENTS)); + + WebSocket.CONNECTING = CONNECTING; + WebSocket.OPEN = OPEN; + WebSocket.CLOSING = CLOSING; + WebSocket.CLOSED = CLOSED; + WebSocket.isAvailable = !!WebSocketModule; + module.exports = WebSocket; +},126,[127,110,120,68,105,133,124,123,18],"WebSocket"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var uuid = require(_dependencyMap[1], 'uuid'); + + var _require = require(_dependencyMap[2], 'NativeModules'), + BlobModule = _require.BlobModule; + + var Blob = function () { + babelHelpers.createClass(Blob, null, [{ + key: "create", + value: function create(props) { + return babelHelpers.extends(Object.create(Blob.prototype), props); + } + }]); + + function Blob(parts, options) { + babelHelpers.classCallCheck(this, Blob); + var blobId = uuid(); + var size = 0; + parts.forEach(function (part) { + invariant(part instanceof Blob, 'Can currently only create a Blob from other Blobs'); + size += part.size; + }); + BlobModule.createFromParts(parts, blobId); + return Blob.create({ + blobId: blobId, + offset: 0, + size: size + }); + } + + babelHelpers.createClass(Blob, [{ + key: "slice", + value: function slice(start, end) { + var offset = this.offset; + var size = this.size; + + if (typeof start === 'number') { + if (start > size) { + start = size; + } + + offset += start; + size -= start; + + if (typeof end === 'number') { + if (end < 0) { + end = this.size + end; + } + + size = end - start; + } + } + + return Blob.create({ + blobId: this.blobId, + offset: offset, + size: size + }); + } + }, { + key: "close", + value: function close() { + BlobModule.release(this.blobId); + } + }]); + return Blob; + }(); + + module.exports = Blob; +},127,[18,128,68],"Blob"); +__d(function (global, require, module, exports, _dependencyMap) { + var v1 = require(_dependencyMap[0], './v1'); + + var v4 = require(_dependencyMap[1], './v4'); + + var uuid = v4; + uuid.v1 = v1; + uuid.v4 = v4; + module.exports = uuid; +},128,[129,132],"uuid/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var rng = require(_dependencyMap[0], './lib/rng'); + + var bytesToUuid = require(_dependencyMap[1], './lib/bytesToUuid'); + + var _nodeId; + + var _clockseq; + + var _lastMSecs = 0; + var _lastNSecs = 0; + + function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + if (node == null || clockseq == null) { + var seedBytes = rng(); + + if (node == null) { + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } + + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + msecs += 12219292800000; + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + var tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + b[i++] = tmh >>> 24 & 0xf | 0x10; + b[i++] = tmh >>> 16 & 0xff; + b[i++] = clockseq >>> 8 | 0x80; + b[i++] = clockseq & 0xff; + + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ? buf : bytesToUuid(b); + } + + module.exports = v1; +},129,[130,131],"uuid/v1.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && msCrypto.getRandomValues.bind(msCrypto); + + if (getRandomValues) { + var rnds8 = new Uint8Array(16); + + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; + } else { + var rnds = new Array(16); + + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; + } +},130,[],"uuid/lib/rng-browser.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var byteToHex = []; + + for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); + } + + function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]]; + } + + module.exports = bytesToUuid; +},131,[],"uuid/lib/bytesToUuid.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var rng = require(_dependencyMap[0], './lib/rng'); + + var bytesToUuid = require(_dependencyMap[1], './lib/bytesToUuid'); + + function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof options == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + + options = options || {}; + var rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; + + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); + } + + module.exports = v4; +},132,[130,131],"uuid/v4.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var WebSocketEvent = function WebSocketEvent(type, eventInitDict) { + babelHelpers.classCallCheck(this, WebSocketEvent); + this.type = type.toString(); + babelHelpers.extends(this, eventInitDict); + }; + + module.exports = WebSocketEvent; +},133,[],"WebSocketEvent"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Blob = require(_dependencyMap[0], 'Blob'); + + var _require = require(_dependencyMap[1], 'NativeModules'), + BlobModule = _require.BlobModule; + + var BLOB_URL_PREFIX = null; + + if (BlobModule && typeof BlobModule.BLOB_URI_SCHEME === 'string') { + BLOB_URL_PREFIX = BlobModule.BLOB_URI_SCHEME + ':'; + + if (typeof BlobModule.BLOB_URI_HOST === 'string') { + BLOB_URL_PREFIX += "//" + BlobModule.BLOB_URI_HOST + "/"; + } + } + + var URL = function () { + function URL() { + babelHelpers.classCallCheck(this, URL); + throw new Error('Creating BlobURL objects is not supported yet.'); + } + + babelHelpers.createClass(URL, null, [{ + key: "createObjectURL", + value: function createObjectURL(blob) { + if (BLOB_URL_PREFIX === null) { + throw new Error('Cannot create URL for blob!'); + } + + return "" + BLOB_URL_PREFIX + blob.blobId + "?offset=" + blob.offset + "&size=" + blob.size; + } + }, { + key: "revokeObjectURL", + value: function revokeObjectURL(url) {} + }]); + return URL; + }(); + + module.exports = URL; +},134,[127,68],"URL"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AlertIOS = require(_dependencyMap[0], 'AlertIOS'); + + var NativeModules = require(_dependencyMap[1], 'NativeModules'); + + var Platform = require(_dependencyMap[2], 'Platform'); + + var Alert = function () { + function Alert() { + babelHelpers.classCallCheck(this, Alert); + } + + babelHelpers.createClass(Alert, null, [{ + key: "alert", + value: function alert(title, message, buttons, options, type) { + if (Platform.OS === 'ios') { + if (typeof type !== 'undefined') { + console.warn('Alert.alert() with a 5th "type" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.'); + AlertIOS.alert(title, message, buttons, type); + return; + } + + AlertIOS.alert(title, message, buttons); + } else if (Platform.OS === 'android') { + AlertAndroid.alert(title, message, buttons, options); + } + } + }]); + return Alert; + }(); + + var AlertAndroid = function () { + function AlertAndroid() { + babelHelpers.classCallCheck(this, AlertAndroid); + } + + babelHelpers.createClass(AlertAndroid, null, [{ + key: "alert", + value: function alert(title, message, buttons, options) { + var config = { + title: title || '', + message: message || '' + }; + + if (options) { + config = babelHelpers.extends({}, config, { + cancelable: options.cancelable + }); + } + + var validButtons = buttons ? buttons.slice(0, 3) : [{ + text: 'OK' + }]; + var buttonPositive = validButtons.pop(); + var buttonNegative = validButtons.pop(); + var buttonNeutral = validButtons.pop(); + + if (buttonNeutral) { + config = babelHelpers.extends({}, config, { + buttonNeutral: buttonNeutral.text || '' + }); + } + + if (buttonNegative) { + config = babelHelpers.extends({}, config, { + buttonNegative: buttonNegative.text || '' + }); + } + + if (buttonPositive) { + config = babelHelpers.extends({}, config, { + buttonPositive: buttonPositive.text || '' + }); + } + + NativeModules.DialogManagerAndroid.showAlert(config, function (errorMessage) { + return console.warn(errorMessage); + }, function (action, buttonKey) { + if (action === NativeModules.DialogManagerAndroid.buttonClicked) { + if (buttonKey === NativeModules.DialogManagerAndroid.buttonNeutral) { + buttonNeutral.onPress && buttonNeutral.onPress(); + } else if (buttonKey === NativeModules.DialogManagerAndroid.buttonNegative) { + buttonNegative.onPress && buttonNegative.onPress(); + } else if (buttonKey === NativeModules.DialogManagerAndroid.buttonPositive) { + buttonPositive.onPress && buttonPositive.onPress(); + } + } else if (action === NativeModules.DialogManagerAndroid.dismissed) { + options && options.onDismiss && options.onDismiss(); + } + }); + } + }]); + return AlertAndroid; + }(); + + module.exports = Alert; +},135,[136,68,105],"Alert"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTAlertManager = require(_dependencyMap[0], 'NativeModules').AlertManager; + + var AlertIOS = function () { + function AlertIOS() { + babelHelpers.classCallCheck(this, AlertIOS); + } + + babelHelpers.createClass(AlertIOS, null, [{ + key: "alert", + value: function alert(title, message, callbackOrButtons, type) { + if (typeof type !== 'undefined') { + console.warn('AlertIOS.alert() with a 4th "type" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.'); + this.prompt(title, message, callbackOrButtons, type); + return; + } + + this.prompt(title, message, callbackOrButtons, 'default'); + } + }, { + key: "prompt", + value: function prompt(title, message, callbackOrButtons) { + var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'plain-text'; + var defaultValue = arguments[4]; + var keyboardType = arguments[5]; + + if (typeof type === 'function') { + console.warn('You passed a callback function as the "type" argument to AlertIOS.prompt(). React Native is ' + 'assuming you want to use the deprecated AlertIOS.prompt(title, defaultValue, buttons, callback) ' + 'signature. The current signature is AlertIOS.prompt(title, message, callbackOrButtons, type, defaultValue, ' + 'keyboardType) and the old syntax will be removed in a future version.'); + var callback = type; + var defaultValue = message; + RCTAlertManager.alertWithArgs({ + title: title || '', + type: 'plain-text', + defaultValue: defaultValue + }, function (id, value) { + callback(value); + }); + return; + } + + var callbacks = []; + var buttons = []; + var cancelButtonKey; + var destructiveButtonKey; + + if (typeof callbackOrButtons === 'function') { + callbacks = [callbackOrButtons]; + } else if (callbackOrButtons instanceof Array) { + callbackOrButtons.forEach(function (btn, index) { + callbacks[index] = btn.onPress; + + if (btn.style === 'cancel') { + cancelButtonKey = String(index); + } else if (btn.style === 'destructive') { + destructiveButtonKey = String(index); + } + + if (btn.text || index < (callbackOrButtons || []).length - 1) { + var btnDef = {}; + btnDef[index] = btn.text || ''; + buttons.push(btnDef); + } + }); + } + + RCTAlertManager.alertWithArgs({ + title: title || '', + message: message || undefined, + buttons: buttons, + type: type || undefined, + defaultValue: defaultValue, + cancelButtonKey: cancelButtonKey, + destructiveButtonKey: destructiveButtonKey, + keyboardType: keyboardType + }, function (id, value) { + var cb = callbacks[id]; + cb && cb(value); + }); + } + }]); + return AlertIOS; + }(); + + module.exports = AlertIOS; +},136,[68],"AlertIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeEventEmitter = require(_dependencyMap[0], 'NativeEventEmitter'); + + var RCTLocationObserver = require(_dependencyMap[1], 'NativeModules').LocationObserver; + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var logError = require(_dependencyMap[3], 'logError'); + + var warning = require(_dependencyMap[4], 'fbjs/lib/warning'); + + var LocationEventEmitter = new NativeEventEmitter(RCTLocationObserver); + + var Platform = require(_dependencyMap[5], 'Platform'); + + var PermissionsAndroid = require(_dependencyMap[6], 'PermissionsAndroid'); + + var subscriptions = []; + var updatesEnabled = false; + var Geolocation = { + setRNConfiguration: function setRNConfiguration(config) { + if (RCTLocationObserver.setConfiguration) { + RCTLocationObserver.setConfiguration(config); + } + }, + requestAuthorization: function requestAuthorization() { + RCTLocationObserver.requestAuthorization(); + }, + getCurrentPosition: function getCurrentPosition(geo_success, geo_error, geo_options) { + var hasPermission, status; + return regeneratorRuntime.async(function getCurrentPosition$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + invariant(typeof geo_success === 'function', 'Must provide a valid geo_success callback.'); + hasPermission = true; + + if (!(Platform.OS === 'android' && Platform.Version >= 23)) { + _context.next = 11; + break; + } + + _context.next = 5; + return regeneratorRuntime.awrap(PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION)); + + case 5: + hasPermission = _context.sent; + + if (hasPermission) { + _context.next = 11; + break; + } + + _context.next = 9; + return regeneratorRuntime.awrap(PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION)); + + case 9: + status = _context.sent; + hasPermission = status === PermissionsAndroid.RESULTS.GRANTED; + + case 11: + if (hasPermission) { + RCTLocationObserver.getCurrentPosition(geo_options || {}, geo_success, geo_error || logError); + } + + case 12: + case "end": + return _context.stop(); + } + } + }, null, this); + }, + watchPosition: function watchPosition(success, error, options) { + if (!updatesEnabled) { + RCTLocationObserver.startObserving(options || {}); + updatesEnabled = true; + } + + var watchID = subscriptions.length; + subscriptions.push([LocationEventEmitter.addListener('geolocationDidChange', success), error ? LocationEventEmitter.addListener('geolocationError', error) : null]); + return watchID; + }, + clearWatch: function clearWatch(watchID) { + var sub = subscriptions[watchID]; + + if (!sub) { + return; + } + + sub[0].remove(); + var sub1 = sub[1]; + sub1 && sub1.remove(); + subscriptions[watchID] = undefined; + var noWatchers = true; + + for (var ii = 0; ii < subscriptions.length; ii++) { + if (subscriptions[ii]) { + noWatchers = false; + } + } + + if (noWatchers) { + Geolocation.stopObserving(); + } + }, + stopObserving: function stopObserving() { + if (updatesEnabled) { + RCTLocationObserver.stopObserving(); + updatesEnabled = false; + + for (var ii = 0; ii < subscriptions.length; ii++) { + var sub = subscriptions[ii]; + + if (sub) { + warning(false, 'Called stopObserving with existing subscriptions.'); + sub[0].remove(); + var sub1 = sub[1]; + sub1 && sub1.remove(); + } + } + + subscriptions = []; + } + } + }; + module.exports = Geolocation; +},137,[120,68,18,138,19,105,139],"Geolocation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var logError = function logError() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (args.length === 1 && args[0] instanceof Error) { + var err = args[0]; + console.error('Error: "' + err.message + '". Stack:\n' + err.stack); + } else { + console.error.apply(console, args); + } + }; + + module.exports = logError; +},138,[],"logError"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeModules = require(_dependencyMap[0], 'NativeModules'); + + var PermissionsAndroid = function () { + function PermissionsAndroid() { + babelHelpers.classCallCheck(this, PermissionsAndroid); + this.PERMISSIONS = { + READ_CALENDAR: 'android.permission.READ_CALENDAR', + WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR', + CAMERA: 'android.permission.CAMERA', + READ_CONTACTS: 'android.permission.READ_CONTACTS', + WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS', + GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS', + ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION', + ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION', + RECORD_AUDIO: 'android.permission.RECORD_AUDIO', + READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE', + CALL_PHONE: 'android.permission.CALL_PHONE', + READ_CALL_LOG: 'android.permission.READ_CALL_LOG', + WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG', + ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL', + USE_SIP: 'android.permission.USE_SIP', + PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS', + BODY_SENSORS: 'android.permission.BODY_SENSORS', + SEND_SMS: 'android.permission.SEND_SMS', + RECEIVE_SMS: 'android.permission.RECEIVE_SMS', + READ_SMS: 'android.permission.READ_SMS', + RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH', + RECEIVE_MMS: 'android.permission.RECEIVE_MMS', + READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE', + WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE' + }; + this.RESULTS = { + GRANTED: 'granted', + DENIED: 'denied', + NEVER_ASK_AGAIN: 'never_ask_again' + }; + } + + babelHelpers.createClass(PermissionsAndroid, [{ + key: "checkPermission", + value: function checkPermission(permission) { + console.warn('"PermissionsAndroid.checkPermission" is deprecated. Use "PermissionsAndroid.check" instead'); + return NativeModules.PermissionsAndroid.checkPermission(permission); + } + }, { + key: "check", + value: function check(permission) { + return NativeModules.PermissionsAndroid.checkPermission(permission); + } + }, { + key: "requestPermission", + value: function requestPermission(permission, rationale) { + var response; + return regeneratorRuntime.async(function requestPermission$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + console.warn('"PermissionsAndroid.requestPermission" is deprecated. Use "PermissionsAndroid.request" instead'); + _context.next = 3; + return regeneratorRuntime.awrap(this.request(permission, rationale)); + + case 3: + response = _context.sent; + return _context.abrupt("return", response === this.RESULTS.GRANTED); + + case 5: + case "end": + return _context.stop(); + } + } + }, null, this); + } + }, { + key: "request", + value: function request(permission, rationale) { + var shouldShowRationale; + return regeneratorRuntime.async(function request$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (!rationale) { + _context2.next = 6; + break; + } + + _context2.next = 3; + return regeneratorRuntime.awrap(NativeModules.PermissionsAndroid.shouldShowRequestPermissionRationale(permission)); + + case 3: + shouldShowRationale = _context2.sent; + + if (!shouldShowRationale) { + _context2.next = 6; + break; + } + + return _context2.abrupt("return", new Promise(function (resolve, reject) { + NativeModules.DialogManagerAndroid.showAlert(rationale, function () { + return reject(new Error('Error showing rationale')); + }, function () { + return resolve(NativeModules.PermissionsAndroid.requestPermission(permission)); + }); + })); + + case 6: + return _context2.abrupt("return", NativeModules.PermissionsAndroid.requestPermission(permission)); + + case 7: + case "end": + return _context2.stop(); + } + } + }, null, this); + } + }, { + key: "requestMultiple", + value: function requestMultiple(permissions) { + return NativeModules.PermissionsAndroid.requestMultiplePermissions(permissions); + } + }]); + return PermissionsAndroid; + }(); + + PermissionsAndroid = new PermissionsAndroid(); + module.exports = PermissionsAndroid; +},139,[68],"PermissionsAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var HeapCapture = { + captureHeap: function captureHeap(path) { + var error = null; + + try { + global.nativeCaptureHeap(path); + console.log('HeapCapture.captureHeap succeeded: ' + path); + } catch (e) { + console.log('HeapCapture.captureHeap error: ' + e.toString()); + error = e.toString(); + } + + require(_dependencyMap[0], 'NativeModules').JSCHeapCapture.captureComplete(path, error); + } + }; + module.exports = HeapCapture; +},140,[68],"HeapCapture"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var SamplingProfiler = { + poke: function poke(token) { + var error = null; + var result = null; + + try { + result = global.pokeSamplingProfiler(); + + if (result === null) { + console.log('The JSC Sampling Profiler has started'); + } else { + console.log('The JSC Sampling Profiler has stopped'); + } + } catch (e) { + console.log('Error occured when restarting Sampling Profiler: ' + e.toString()); + error = e.toString(); + } + + var _require = require(_dependencyMap[0], 'NativeModules'), + JSCSamplingProfiler = _require.JSCSamplingProfiler; + + JSCSamplingProfiler.operationComplete(token, result, error); + } + }; + module.exports = SamplingProfiler; +},141,[68],"SamplingProfiler"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var levelsMap = { + log: 'log', + info: 'info', + warn: 'warn', + error: 'error', + fatal: 'error' + }; + var warningHandler = null; + var RCTLog = { + logIfNoNativeHook: function logIfNoNativeHook(level) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (typeof global.nativeLoggingHook === 'undefined') { + RCTLog.logToConsole.apply(RCTLog, [level].concat(babelHelpers.toConsumableArray(args))); + } else { + if (warningHandler && level === 'warn') { + warningHandler.apply(undefined, babelHelpers.toConsumableArray(args)); + } + } + }, + logToConsole: function logToConsole(level) { + var _console; + + var logFn = levelsMap[level]; + invariant(logFn, 'Level "' + level + '" not one of ' + Object.keys(levelsMap).toString()); + + for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + (_console = console)[logFn].apply(_console, babelHelpers.toConsumableArray(args)); + }, + setWarningHandler: function setWarningHandler(handler) { + warningHandler = handler; + } + }; + module.exports = RCTLog; +},142,[18],"RCTLog"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTDeviceEventEmitter = require(_dependencyMap[0], 'RCTDeviceEventEmitter'); + + var RCTNativeAppEventEmitter = RCTDeviceEventEmitter; + module.exports = RCTNativeAppEventEmitter; +},143,[121],"RCTNativeAppEventEmitter"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Systrace = require(_dependencyMap[0], 'Systrace'); + + var infoLog = require(_dependencyMap[1], 'infoLog'); + + var performanceNow = global.nativePerformanceNow || require(_dependencyMap[2], 'fbjs/lib/performanceNow'); + + var timespans = {}; + var extras = {}; + var cookies = {}; + var PRINT_TO_CONSOLE = false; + var PerformanceLogger = { + addTimespan: function addTimespan(key, lengthInMs, description) { + if (timespans[key]) { + if (__DEV__) { + infoLog('PerformanceLogger: Attempting to add a timespan that already exists ', key); + } + + return; + } + + timespans[key] = { + description: description, + totalTime: lengthInMs + }; + }, + startTimespan: function startTimespan(key, description) { + if (timespans[key]) { + if (__DEV__) { + infoLog('PerformanceLogger: Attempting to start a timespan that already exists ', key); + } + + return; + } + + timespans[key] = { + description: description, + startTime: performanceNow() + }; + cookies[key] = Systrace.beginAsyncEvent(key); + + if (__DEV__ && PRINT_TO_CONSOLE) { + infoLog('PerformanceLogger.js', 'start: ' + key); + } + }, + stopTimespan: function stopTimespan(key) { + var timespan = timespans[key]; + + if (!timespan || !timespan.startTime) { + if (__DEV__) { + infoLog('PerformanceLogger: Attempting to end a timespan that has not started ', key); + } + + return; + } + + if (timespan.endTime) { + if (__DEV__) { + infoLog('PerformanceLogger: Attempting to end a timespan that has already ended ', key); + } + + return; + } + + timespan.endTime = performanceNow(); + timespan.totalTime = timespan.endTime - (timespan.startTime || 0); + + if (__DEV__ && PRINT_TO_CONSOLE) { + infoLog('PerformanceLogger.js', 'end: ' + key); + } + + Systrace.endAsyncEvent(key, cookies[key]); + delete cookies[key]; + }, + clear: function clear() { + timespans = {}; + extras = {}; + }, + clearCompleted: function clearCompleted() { + for (var _key in timespans) { + if (timespans[_key].totalTime) { + delete timespans[_key]; + } + } + + extras = {}; + }, + clearExceptTimespans: function clearExceptTimespans(keys) { + timespans = Object.keys(timespans).reduce(function (previous, key) { + if (keys.indexOf(key) !== -1) { + previous[key] = timespans[key]; + } + + return previous; + }, {}); + extras = {}; + }, + currentTimestamp: function currentTimestamp() { + return performanceNow(); + }, + getTimespans: function getTimespans() { + return timespans; + }, + hasTimespan: function hasTimespan(key) { + return !!timespans[key]; + }, + logTimespans: function logTimespans() { + for (var _key2 in timespans) { + if (timespans[_key2].totalTime) { + infoLog(_key2 + ': ' + timespans[_key2].totalTime + 'ms'); + } + } + }, + addTimespans: function addTimespans(newTimespans, labels) { + for (var ii = 0, l = newTimespans.length; ii < l; ii += 2) { + var label = labels[ii / 2]; + PerformanceLogger.addTimespan(label, newTimespans[ii + 1] - newTimespans[ii], label); + } + }, + setExtra: function setExtra(key, value) { + if (extras[key]) { + if (__DEV__) { + infoLog('PerformanceLogger: Attempting to set an extra that already exists ', { + key: key, + currentValue: extras[key], + attemptedValue: value + }); + } + + return; + } + + extras[key] = value; + }, + getExtras: function getExtras() { + return extras; + } + }; + module.exports = PerformanceLogger; +},144,[72,145,106],"PerformanceLogger"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function infoLog() { + var _console; + + return (_console = console).log.apply(_console, arguments); + } + + module.exports = infoLog; +},145,[],"infoLog"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Platform = require(_dependencyMap[0], 'Platform'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var HMRClient = { + enable: function enable(platform, bundleEntry, host, port) { + invariant(platform, 'Missing required parameter `platform`'); + invariant(bundleEntry, 'Missing required paramenter `bundleEntry`'); + invariant(host, 'Missing required paramenter `host`'); + + var WebSocket = require(_dependencyMap[2], 'WebSocket'); + + var wsHostPort = port !== null && port !== '' ? host + ":" + port : host; + bundleEntry = bundleEntry.replace(/\.(bundle|delta)/, '.js'); + var wsUrl = "ws://" + wsHostPort + "/hot?" + ("platform=" + platform + "&") + ("bundleEntry=" + bundleEntry); + var activeWS = new WebSocket(wsUrl); + + activeWS.onerror = function (e) { + var error = "Hot loading isn't working because it cannot connect to the development server.\n\nTry the following to fix the issue:\n- Ensure that the packager server is running and available on the same network"; + + if (Platform.OS === 'ios') { + error += "\n- Ensure that the Packager server URL is correctly set in AppDelegate"; + } else { + error += "\n- Ensure that your device/emulator is connected to your machine and has USB debugging enabled - run 'adb devices' to see a list of connected devices\n- If you're on a physical device connected to the same machine, run 'adb reverse tcp:8081 tcp:8081' to forward requests from your device\n- If your device is on the same Wi-Fi network, set 'Debug server host & port for device' in 'Dev settings' to your machine's IP address and the port of the local dev server - e.g. 10.0.1.1:8081"; + } + + error += "\n\nURL: " + host + ":" + port + "\n\nError: " + e.message; + throw new Error(error); + }; + + activeWS.onmessage = function (_ref) { + var data = _ref.data; + + var HMRLoadingView = require(_dependencyMap[3], 'HMRLoadingView'); + + data = JSON.parse(data); + + switch (data.type) { + case 'update-start': + { + HMRLoadingView.showMessage('Hot Loading...'); + break; + } + + case 'update': + { + var _data$body = data.body, + modules = _data$body.modules, + sourceMappingURLs = _data$body.sourceMappingURLs, + sourceURLs = _data$body.sourceURLs; + + if (Platform.OS === 'ios') { + var RCTRedBox = require(_dependencyMap[4], 'NativeModules').RedBox; + + RCTRedBox && RCTRedBox.dismiss && RCTRedBox.dismiss(); + } else { + var RCTExceptionsManager = require(_dependencyMap[4], 'NativeModules').ExceptionsManager; + + RCTExceptionsManager && RCTExceptionsManager.dismissRedbox && RCTExceptionsManager.dismissRedbox(); + } + + modules.forEach(function (_ref2, i) { + var id = _ref2.id, + code = _ref2.code; + code = code + '\n\n' + sourceMappingURLs[i]; + var injectFunction = typeof global.nativeInjectHMRUpdate === 'function' ? global.nativeInjectHMRUpdate : eval; + injectFunction(code, sourceURLs[i]); + }); + HMRLoadingView.hide(); + break; + } + + case 'update-done': + { + HMRLoadingView.hide(); + break; + } + + case 'error': + { + HMRLoadingView.hide(); + throw new Error(data.body.type + ' ' + data.body.description); + } + + default: + { + throw new Error("Unexpected message: " + data); + } + } + }; + } + }; + module.exports = HMRClient; +},146,[105,18,126,147,68],"HMRClient"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ToastAndroid = require(_dependencyMap[0], 'ToastAndroid'); + + var TOAST_SHORT_DELAY = 2000; + + var HMRLoadingView = function () { + function HMRLoadingView() { + babelHelpers.classCallCheck(this, HMRLoadingView); + } + + babelHelpers.createClass(HMRLoadingView, null, [{ + key: "showMessage", + value: function showMessage(message) { + if (HMRLoadingView._showing) { + return; + } + + ToastAndroid.show(message, ToastAndroid.SHORT); + HMRLoadingView._showing = true; + setTimeout(function () { + HMRLoadingView._showing = false; + }, TOAST_SHORT_DELAY); + } + }, { + key: "hide", + value: function hide() {} + }]); + return HMRLoadingView; + }(); + + module.exports = HMRLoadingView; +},147,[148],"HMRLoadingView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTToastAndroid = require(_dependencyMap[0], 'NativeModules').ToastAndroid; + + var ToastAndroid = { + SHORT: RCTToastAndroid.SHORT, + LONG: RCTToastAndroid.LONG, + TOP: RCTToastAndroid.TOP, + BOTTOM: RCTToastAndroid.BOTTOM, + CENTER: RCTToastAndroid.CENTER, + show: function show(message, duration) { + RCTToastAndroid.show(message, duration); + }, + showWithGravity: function showWithGravity(message, duration, gravity) { + RCTToastAndroid.showWithGravity(message, duration, gravity); + }, + showWithGravityAndOffset: function showWithGravityAndOffset(message, duration, gravity, xOffset, yOffset) { + RCTToastAndroid.showWithGravityAndOffset(message, duration, gravity, xOffset, yOffset); + } + }; + module.exports = ToastAndroid; +},148,[68],"ToastAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var register = function register() {}; + + if (__DEV__) { + var AppState = require(_dependencyMap[0], 'AppState'); + + var WebSocket = require(_dependencyMap[1], 'WebSocket'); + + var _require = require(_dependencyMap[2], 'NativeModules'), + PlatformConstants = _require.PlatformConstants; + + var reactDevTools = require(_dependencyMap[3], 'react-devtools-core'); + + if (WebSocket.isAvailable) { + var _isAppActive = function _isAppActive() { + return AppState.currentState !== 'background'; + }; + + var _host = PlatformConstants && PlatformConstants.ServerHost ? PlatformConstants.ServerHost.split(':')[0] : 'localhost'; + + reactDevTools.connectToDevTools({ + isAppActive: _isAppActive, + host: _host, + port: window.__REACT_DEVTOOLS_PORT__, + resolveRNStyle: require(_dependencyMap[4], 'flattenStyle') + }); + } + } + + module.exports = { + register: register + }; +},149,[150,126,68,151,152],"setupDevtools"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var MissingNativeEventEmitterShim = require(_dependencyMap[0], 'MissingNativeEventEmitterShim'); + + var NativeEventEmitter = require(_dependencyMap[1], 'NativeEventEmitter'); + + var NativeModules = require(_dependencyMap[2], 'NativeModules'); + + var RCTAppState = NativeModules.AppState; + + var logError = require(_dependencyMap[3], 'logError'); + + var invariant = require(_dependencyMap[4], 'fbjs/lib/invariant'); + + var AppState = function (_NativeEventEmitter) { + babelHelpers.inherits(AppState, _NativeEventEmitter); + + function AppState() { + babelHelpers.classCallCheck(this, AppState); + + var _this = babelHelpers.possibleConstructorReturn(this, (AppState.__proto__ || Object.getPrototypeOf(AppState)).call(this, RCTAppState)); + + _this.isAvailable = true; + _this.isAvailable = true; + _this._eventHandlers = { + change: new Map(), + memoryWarning: new Map() + }; + _this.currentState = RCTAppState.initialAppState || 'active'; + var eventUpdated = false; + + _this.addListener('appStateDidChange', function (appStateData) { + eventUpdated = true; + _this.currentState = appStateData.app_state; + }); + + RCTAppState.getCurrentAppState(function (appStateData) { + if (!eventUpdated) { + _this.currentState = appStateData.app_state; + } + }, logError); + return _this; + } + + babelHelpers.createClass(AppState, [{ + key: "addEventListener", + value: function addEventListener(type, handler) { + invariant(['change', 'memoryWarning'].indexOf(type) !== -1, 'Trying to subscribe to unknown event: "%s"', type); + + if (type === 'change') { + this._eventHandlers[type].set(handler, this.addListener('appStateDidChange', function (appStateData) { + handler(appStateData.app_state); + })); + } else if (type === 'memoryWarning') { + this._eventHandlers[type].set(handler, this.addListener('memoryWarning', handler)); + } + } + }, { + key: "removeEventListener", + value: function removeEventListener(type, handler) { + invariant(['change', 'memoryWarning'].indexOf(type) !== -1, 'Trying to remove listener for unknown event: "%s"', type); + + if (!this._eventHandlers[type].has(handler)) { + return; + } + + this._eventHandlers[type].get(handler).remove(); + + this._eventHandlers[type].delete(handler); + } + }]); + return AppState; + }(NativeEventEmitter); + + if (__DEV__ && !RCTAppState) { + var MissingNativeAppStateShim = function (_MissingNativeEventEm) { + babelHelpers.inherits(MissingNativeAppStateShim, _MissingNativeEventEm); + + function MissingNativeAppStateShim() { + babelHelpers.classCallCheck(this, MissingNativeAppStateShim); + return babelHelpers.possibleConstructorReturn(this, (MissingNativeAppStateShim.__proto__ || Object.getPrototypeOf(MissingNativeAppStateShim)).call(this, 'RCTAppState', 'AppState')); + } + + babelHelpers.createClass(MissingNativeAppStateShim, [{ + key: "addEventListener", + value: function addEventListener() { + this.throwMissingNativeModule(); + } + }, { + key: "removeEventListener", + value: function removeEventListener() { + this.throwMissingNativeModule(); + } + }, { + key: "currentState", + get: function get() { + this.throwMissingNativeModule(); + } + }]); + return MissingNativeAppStateShim; + }(MissingNativeEventEmitterShim); + + AppState = new MissingNativeAppStateShim(); + } else { + AppState = new AppState(); + } + + module.exports = AppState; +},150,[115,120,68,138,18],"AppState"); +__d(function (global, require, module, exports, _dependencyMap) { + !function (root, factory) { + "object" == typeof exports && "object" == typeof module ? module.exports = factory() : "function" == typeof define && define.amd ? define([], factory) : "object" == typeof exports ? exports.ReactDevToolsBackend = factory() : root.ReactDevToolsBackend = factory(); + }(this, function () { + return function (modules) { + function __webpack_require__(moduleId) { + if (installedModules[moduleId]) return installedModules[moduleId].exports; + var module = installedModules[moduleId] = { + exports: {}, + id: moduleId, + loaded: !1 + }; + return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), module.loaded = !0, module.exports; + } + + var installedModules = {}; + return __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.p = "", __webpack_require__(0); + }([function (module, exports, __webpack_require__) { + "use strict"; + + function connectToDevTools(options) { + function scheduleRetry() { + setTimeout(function () { + return connectToDevTools(options); + }, 2e3); + } + + function handleClose() { + hasClosed || (hasClosed = !0, scheduleRetry(), closeListeners.forEach(function (fn) { + return fn(); + })); + } + + function handleMessage(evt) { + var data; + + try { + data = JSON.parse(evt.data); + } catch (e) { + return void console.error("failed to parse json: " + evt.data); + } + + messageListeners.forEach(function (fn) { + try { + fn(data); + } catch (e) { + throw console.log(data), e; + } + }); + } + + var _ref = options || {}, + _ref$host = _ref.host, + host = void 0 === _ref$host ? "localhost" : _ref$host, + _ref$port = _ref.port, + port = void 0 === _ref$port ? 8097 : _ref$port, + websocket = _ref.websocket, + _ref$resolveRNStyle = _ref.resolveRNStyle, + resolveRNStyle = void 0 === _ref$resolveRNStyle ? null : _ref$resolveRNStyle, + _ref$isAppActive = _ref.isAppActive, + isAppActive = void 0 === _ref$isAppActive ? function () { + return !0; + } : _ref$isAppActive; + + if (!isAppActive()) return void scheduleRetry(); + var messageListeners = [], + closeListeners = [], + uri = "ws://" + host + ":" + port, + ws = websocket ? websocket : new window.WebSocket(uri); + ws.onclose = handleClose, ws.onerror = handleClose, ws.onmessage = handleMessage, ws.onopen = function () { + var wall = { + listen: function listen(fn) { + messageListeners.push(fn); + }, + onClose: function onClose(fn) { + closeListeners.push(fn); + }, + send: function send(data) { + ws.send(JSON.stringify(data)); + } + }; + setupBackend(wall, resolveRNStyle); + }; + var hasClosed = !1; + } + + function setupBackend(wall, resolveRNStyle) { + wall.onClose(function () { + agent && agent.emit("shutdown"), window.__REACT_DEVTOOLS_GLOBAL_HOOK__.emit("shutdown"), bridge = null, agent = null, console.log("closing devtools"); + }); + var bridge = new Bridge(wall), + agent = new Agent(window, { + rnStyle: !!resolveRNStyle, + rnStyleMeasure: !!resolveRNStyle + }); + agent.addBridge(bridge), resolveRNStyle && setupRNStyle(bridge, agent, resolveRNStyle), setupRelay(bridge, agent, window.__REACT_DEVTOOLS_GLOBAL_HOOK__); + + var _connectTimeout = setTimeout(function () { + console.warn("react-devtools agent got no connection"); + }, 2e4); + + agent.once("connected", function () { + agent && (inject(window.__REACT_DEVTOOLS_GLOBAL_HOOK__, agent), clearTimeout(_connectTimeout)); + }); + } + + var Agent = __webpack_require__(1), + Bridge = __webpack_require__(6), + installGlobalHook = __webpack_require__(31), + installRelayHook = __webpack_require__(32), + inject = __webpack_require__(33), + setupRNStyle = __webpack_require__(45), + setupRelay = __webpack_require__(47); + + installGlobalHook(window), installRelayHook(window), window.document && window.__REACT_DEVTOOLS_GLOBAL_HOOK__.on("react-devtools", function (agent) { + var setupHighlighter = __webpack_require__(48); + + setupHighlighter(agent); + }), module.exports = { + connectToDevTools: connectToDevTools + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); + } + + function _possibleConstructorReturn(self, call) { + if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !call || "object" != typeof call && "function" != typeof call ? self : call; + } + + function _inherits(subClass, superClass) { + if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass); + } + + var _typeof = "function" == typeof Symbol && "symbol" == typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }, + _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), Constructor; + }; + }(), + _require = __webpack_require__(2), + EventEmitter = _require.EventEmitter, + assign = __webpack_require__(3), + guid = __webpack_require__(4), + getIn = __webpack_require__(5), + Agent = function (_EventEmitter) { + function Agent(global, capabilities) { + _classCallCheck(this, Agent); + + var _this = _possibleConstructorReturn(this, (Agent.__proto__ || Object.getPrototypeOf(Agent)).call(this)); + + _this.global = global, _this.internalInstancesById = new Map(), _this.idsByInternalInstances = new WeakMap(), _this.renderers = new Map(), _this.elementData = new Map(), _this.roots = new Set(), _this.reactInternals = {}; + var lastSelected; + _this.on("selected", function (id) { + var data = _this.elementData.get(id); + + data && data.publicInstance && _this.global.$r === lastSelected && (_this.global.$r = data.publicInstance, lastSelected = data.publicInstance); + }), _this._prevSelected = null, _this._scrollUpdate = !1; + var isReactDOM = window.document && "function" == typeof window.document.createElement; + return _this.capabilities = assign({ + scroll: isReactDOM && "function" == typeof window.document.body.scrollIntoView, + dom: isReactDOM, + editTextContent: !1 + }, capabilities), isReactDOM && (_this._updateScroll = _this._updateScroll.bind(_this), window.addEventListener("scroll", _this._onScroll.bind(_this), !0), window.addEventListener("click", _this._onClick.bind(_this), !0), window.addEventListener("mouseover", _this._onMouseOver.bind(_this), !0), window.addEventListener("resize", _this._onResize.bind(_this), !0)), _this; + } + + return _inherits(Agent, _EventEmitter), _createClass(Agent, [{ + key: "sub", + value: function value(ev, fn) { + var _this2 = this; + + return this.on(ev, fn), function () { + _this2.removeListener(ev, fn); + }; + } + }, { + key: "setReactInternals", + value: function value(renderer, reactInternals) { + this.reactInternals[renderer] = reactInternals; + } + }, { + key: "addBridge", + value: function value(bridge) { + var _this3 = this; + + bridge.on("requestCapabilities", function () { + bridge.send("capabilities", _this3.capabilities), _this3.emit("connected"); + }), bridge.on("setState", this._setState.bind(this)), bridge.on("setProps", this._setProps.bind(this)), bridge.on("setContext", this._setContext.bind(this)), bridge.on("makeGlobal", this._makeGlobal.bind(this)), bridge.on("highlight", function (id) { + return _this3.highlight(id); + }), bridge.on("highlightMany", function (id) { + return _this3.highlightMany(id); + }), bridge.on("hideHighlight", function () { + return _this3.emit("hideHighlight"); + }), bridge.on("startInspecting", function () { + return _this3.emit("startInspecting"); + }), bridge.on("stopInspecting", function () { + return _this3.emit("stopInspecting"); + }), bridge.on("selected", function (id) { + return _this3.emit("selected", id); + }), bridge.on("setInspectEnabled", function (enabled) { + _this3._inspectEnabled = enabled, _this3.emit("stopInspecting"); + }), bridge.on("shutdown", function () { + return _this3.emit("shutdown"); + }), bridge.on("changeTextContent", function (_ref) { + var id = _ref.id, + text = _ref.text, + node = _this3.getNodeForID(id); + + node && (node.textContent = text); + }), bridge.on("putSelectedNode", function (id) { + window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$node = _this3.getNodeForID(id); + }), bridge.on("putSelectedInstance", function (id) { + var node = _this3.elementData.get(id); + + node ? window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$type = node.type : window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$type = null, node && node.publicInstance ? window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$inst = node.publicInstance : window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$inst = null; + }), bridge.on("checkSelection", function () { + var newSelected = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$0; + + if (newSelected !== _this3._prevSelected) { + _this3._prevSelected = newSelected; + var sentSelected = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$node; + newSelected !== sentSelected && _this3.selectFromDOMNode(newSelected, !0); + } + }), bridge.on("scrollToNode", function (id) { + return _this3.scrollToNode(id); + }), bridge.on("traceupdatesstatechange", function (value) { + return _this3.emit("traceupdatesstatechange", value); + }), bridge.on("colorizerchange", function (value) { + return _this3.emit("colorizerchange", value); + }), this.on("root", function (id) { + return bridge.send("root", id); + }), this.on("mount", function (data) { + return bridge.send("mount", data); + }), this.on("update", function (data) { + return bridge.send("update", data); + }), this.on("unmount", function (id) { + bridge.send("unmount", id), bridge.forget(id); + }), this.on("setSelection", function (data) { + return bridge.send("select", data); + }), this.on("setInspectEnabled", function (data) { + return bridge.send("setInspectEnabled", data); + }); + } + }, { + key: "scrollToNode", + value: function value(id) { + var node = this.getNodeForID(id); + if (!node) return void console.warn("unable to get the node for scrolling"); + var domElement = node.nodeType === Node.ELEMENT_NODE ? node : node.parentElement; + return domElement ? ("function" == typeof domElement.scrollIntoViewIfNeeded ? domElement.scrollIntoViewIfNeeded() : "function" == typeof domElement.scrollIntoView && domElement.scrollIntoView(), void this.highlight(id)) : void console.warn("unable to get the domElement for scrolling"); + } + }, { + key: "highlight", + value: function value(id) { + var data = this.elementData.get(id), + node = this.getNodeForID(id); + data && node && this.emit("highlight", { + node: node, + name: data.name, + props: data.props + }); + } + }, { + key: "highlightMany", + value: function value(ids) { + var _this4 = this, + nodes = []; + + ids.forEach(function (id) { + var node = _this4.getNodeForID(id); + + node && nodes.push(node); + }), nodes.length && this.emit("highlightMany", nodes); + } + }, { + key: "getNodeForID", + value: function value(id) { + var component = this.internalInstancesById.get(id); + if (!component) return null; + var renderer = this.renderers.get(id); + return renderer && this.reactInternals[renderer].getNativeFromReactElement ? this.reactInternals[renderer].getNativeFromReactElement(component) : null; + } + }, { + key: "selectFromDOMNode", + value: function value(node, quiet) { + var offsetFromLeaf = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, + id = this.getIDForNode(node); + id && this.emit("setSelection", { + id: id, + quiet: quiet, + offsetFromLeaf: offsetFromLeaf + }); + } + }, { + key: "selectFromReactInstance", + value: function value(instance, quiet) { + var id = this.getId(instance); + return id ? void this.emit("setSelection", { + id: id, + quiet: quiet + }) : void console.log("no instance id", instance); + } + }, { + key: "getIDForNode", + value: function value(node) { + if (!this.reactInternals) return null; + var component; + + for (var renderer in this.reactInternals) { + try { + component = this.reactInternals[renderer].getReactElementFromNative(node); + } catch (e) {} + + if (component) return this.getId(component); + } + + return null; + } + }, { + key: "_setProps", + value: function value(_ref2) { + var id = _ref2.id, + path = _ref2.path, + value = _ref2.value, + data = this.elementData.get(id); + data && data.updater && data.updater.setInProps ? data.updater.setInProps(path, value) : console.warn("trying to set props on a component that doesn't support it"); + } + }, { + key: "_setState", + value: function value(_ref3) { + var id = _ref3.id, + path = _ref3.path, + value = _ref3.value, + data = this.elementData.get(id); + data && data.updater && data.updater.setInState ? data.updater.setInState(path, value) : console.warn("trying to set state on a component that doesn't support it"); + } + }, { + key: "_setContext", + value: function value(_ref4) { + var id = _ref4.id, + path = _ref4.path, + value = _ref4.value, + data = this.elementData.get(id); + data && data.updater && data.updater.setInContext ? data.updater.setInContext(path, value) : console.warn("trying to set context on a component that doesn't support it"); + } + }, { + key: "_makeGlobal", + value: function value(_ref5) { + var id = _ref5.id, + path = _ref5.path, + data = this.elementData.get(id); + + if (data) { + var value; + value = "instance" === path ? data.publicInstance : getIn(data, path), this.global.$tmp = value, console.log("$tmp =", value); + } + } + }, { + key: "getId", + value: function value(internalInstance) { + return "object" === ("undefined" == typeof internalInstance ? "undefined" : _typeof(internalInstance)) && internalInstance ? (this.idsByInternalInstances.has(internalInstance) || (this.idsByInternalInstances.set(internalInstance, guid()), this.internalInstancesById.set(this.idsByInternalInstances.get(internalInstance), internalInstance)), this.idsByInternalInstances.get(internalInstance)) : internalInstance; + } + }, { + key: "addRoot", + value: function value(renderer, internalInstance) { + var id = this.getId(internalInstance); + this.roots.add(id), this.emit("root", id); + } + }, { + key: "onMounted", + value: function value(renderer, component, data) { + var _this5 = this, + id = this.getId(component); + + this.renderers.set(id, renderer), this.elementData.set(id, data); + var send = assign({}, data); + send.children && send.children.map && (send.children = send.children.map(function (c) { + return _this5.getId(c); + })), send.id = id, send.canUpdate = send.updater && !!send.updater.forceUpdate, delete send.type, delete send.updater, this.emit("mount", send); + } + }, { + key: "onUpdated", + value: function value(component, data) { + var _this6 = this, + id = this.getId(component); + + this.elementData.set(id, data); + var send = assign({}, data); + send.children && send.children.map && (send.children = send.children.map(function (c) { + return _this6.getId(c); + })), send.id = id, send.canUpdate = send.updater && !!send.updater.forceUpdate, delete send.type, delete send.updater, this.emit("update", send); + } + }, { + key: "onUnmounted", + value: function value(component) { + var id = this.getId(component); + this.elementData["delete"](id), this.roots["delete"](id), this.renderers["delete"](id), this.emit("unmount", id), this.idsByInternalInstances["delete"](component); + } + }, { + key: "_onScroll", + value: function value() { + this._scrollUpdate || (this._scrollUpdate = !0, window.requestAnimationFrame(this._updateScroll)); + } + }, { + key: "_updateScroll", + value: function value() { + this.emit("refreshMultiOverlay"), this.emit("stopInspecting"), this._scrollUpdate = !1; + } + }, { + key: "_onClick", + value: function value(event) { + if (this._inspectEnabled) { + var id = this.getIDForNode(event.target); + id && (event.stopPropagation(), event.preventDefault(), this.emit("setSelection", { + id: id + }), this.emit("setInspectEnabled", !1)); + } + } + }, { + key: "_onMouseOver", + value: function value(event) { + if (this._inspectEnabled) { + var id = this.getIDForNode(event.target); + if (!id) return; + this.highlight(id); + } + } + }, { + key: "_onResize", + value: function value(event) { + this.emit("stopInspecting"); + } + }]), Agent; + }(EventEmitter); + + module.exports = Agent; + }, function (module, exports) { + function EventEmitter() { + this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0; + } + + function isFunction(arg) { + return "function" == typeof arg; + } + + function isNumber(arg) { + return "number" == typeof arg; + } + + function isObject(arg) { + return "object" == typeof arg && null !== arg; + } + + function isUndefined(arg) { + return void 0 === arg; + } + + module.exports = EventEmitter, EventEmitter.EventEmitter = EventEmitter, EventEmitter.prototype._events = void 0, EventEmitter.prototype._maxListeners = void 0, EventEmitter.defaultMaxListeners = 10, EventEmitter.prototype.setMaxListeners = function (n) { + if (!isNumber(n) || n < 0 || isNaN(n)) throw TypeError("n must be a positive number"); + return this._maxListeners = n, this; + }, EventEmitter.prototype.emit = function (type) { + var er, handler, len, args, i, listeners; + + if (this._events || (this._events = {}), "error" === type && (!this._events.error || isObject(this._events.error) && !this._events.error.length)) { + if (er = arguments[1], er instanceof Error) throw er; + var err = new Error('Uncaught, unspecified "error" event. (' + er + ")"); + throw err.context = er, err; + } + + if (handler = this._events[type], isUndefined(handler)) return !1; + if (isFunction(handler)) switch (arguments.length) { + case 1: + handler.call(this); + break; + + case 2: + handler.call(this, arguments[1]); + break; + + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + + default: + args = Array.prototype.slice.call(arguments, 1), handler.apply(this, args); + } else if (isObject(handler)) for (args = Array.prototype.slice.call(arguments, 1), listeners = handler.slice(), len = listeners.length, i = 0; i < len; i++) { + listeners[i].apply(this, args); + } + return !0; + }, EventEmitter.prototype.addListener = function (type, listener) { + var m; + if (!isFunction(listener)) throw TypeError("listener must be a function"); + return this._events || (this._events = {}), this._events.newListener && this.emit("newListener", type, isFunction(listener.listener) ? listener.listener : listener), this._events[type] ? isObject(this._events[type]) ? this._events[type].push(listener) : this._events[type] = [this._events[type], listener] : this._events[type] = listener, isObject(this._events[type]) && !this._events[type].warned && (m = isUndefined(this._maxListeners) ? EventEmitter.defaultMaxListeners : this._maxListeners, m && m > 0 && this._events[type].length > m && (this._events[type].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[type].length), "function" == typeof console.trace && console.trace())), this; + }, EventEmitter.prototype.on = EventEmitter.prototype.addListener, EventEmitter.prototype.once = function (type, listener) { + function g() { + this.removeListener(type, g), fired || (fired = !0, listener.apply(this, arguments)); + } + + if (!isFunction(listener)) throw TypeError("listener must be a function"); + var fired = !1; + return g.listener = listener, this.on(type, g), this; + }, EventEmitter.prototype.removeListener = function (type, listener) { + var list, position, length, i; + if (!isFunction(listener)) throw TypeError("listener must be a function"); + if (!this._events || !this._events[type]) return this; + if (list = this._events[type], length = list.length, position = -1, list === listener || isFunction(list.listener) && list.listener === listener) delete this._events[type], this._events.removeListener && this.emit("removeListener", type, listener);else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || list[i].listener && list[i].listener === listener) { + position = i; + break; + } + } + + if (position < 0) return this; + 1 === list.length ? (list.length = 0, delete this._events[type]) : list.splice(position, 1), this._events.removeListener && this.emit("removeListener", type, listener); + } + return this; + }, EventEmitter.prototype.removeAllListeners = function (type) { + var key, listeners; + if (!this._events) return this; + if (!this._events.removeListener) return 0 === arguments.length ? this._events = {} : this._events[type] && delete this._events[type], this; + + if (0 === arguments.length) { + for (key in this._events) { + "removeListener" !== key && this.removeAllListeners(key); + } + + return this.removeAllListeners("removeListener"), this._events = {}, this; + } + + if (listeners = this._events[type], isFunction(listeners)) this.removeListener(type, listeners);else if (listeners) for (; listeners.length;) { + this.removeListener(type, listeners[listeners.length - 1]); + } + return delete this._events[type], this; + }, EventEmitter.prototype.listeners = function (type) { + var ret; + return ret = this._events && this._events[type] ? isFunction(this._events[type]) ? [this._events[type]] : this._events[type].slice() : []; + }, EventEmitter.prototype.listenerCount = function (type) { + if (this._events) { + var evlistener = this._events[type]; + if (isFunction(evlistener)) return 1; + if (evlistener) return evlistener.length; + } + + return 0; + }, EventEmitter.listenerCount = function (emitter, type) { + return emitter.listenerCount(type); + }; + }, function (module, exports) { + "use strict"; + + function toObject(val) { + if (null === val || void 0 === val) throw new TypeError("Object.assign cannot be called with null or undefined"); + return Object(val); + } + + var hasOwnProperty = Object.prototype.hasOwnProperty, + propIsEnumerable = Object.prototype.propertyIsEnumerable; + + module.exports = Object.assign || function (target, source) { + for (var from, symbols, to = toObject(target), s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + hasOwnProperty.call(from, key) && (to[key] = from[key]); + } + + if (Object.getOwnPropertySymbols) { + symbols = Object.getOwnPropertySymbols(from); + + for (var i = 0; i < symbols.length; i++) { + propIsEnumerable.call(from, symbols[i]) && (to[symbols[i]] = from[symbols[i]]); + } + } + } + + return to; + }; + }, function (module, exports) { + "use strict"; + + function guid() { + return "g" + Math.random().toString(16).substr(2); + } + + module.exports = guid; + }, function (module, exports) { + "use strict"; + + function _toConsumableArray(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } + + return Array.from(arr); + } + + function getIn(base, path) { + return path.reduce(function (obj, attr) { + if (obj) { + if (obj.hasOwnProperty(attr)) return obj[attr]; + if ("function" == typeof obj[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]) return [].concat(_toConsumableArray(obj))[attr]; + } + + return null; + }, base); + } + + module.exports = getIn; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function _toConsumableArray(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } + + return Array.from(arr); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); + } + + function getWindowFunction(name, polyfill) { + return String(window[name]).indexOf("[native code]") === -1 ? polyfill : window[name]; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]); + } + } + + return target; + }, + _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), Constructor; + }; + }(), + consts = __webpack_require__(7), + hydrate = __webpack_require__(26), + dehydrate = __webpack_require__(27), + getIn = __webpack_require__(5), + performanceNow = __webpack_require__(28), + lastRunTimeMS = 5, + cancelIdleCallback = getWindowFunction("cancelIdleCallback", clearTimeout), + requestIdleCallback = getWindowFunction("requestIdleCallback", function (cb, options) { + var delayMS = 3e3 * lastRunTimeMS; + return delayMS > 500 && (delayMS = 500), setTimeout(function () { + var startTime = performanceNow(); + cb({ + didTimeout: !1, + timeRemaining: function timeRemaining() { + return 1 / 0; + } + }); + var endTime = performanceNow(); + lastRunTimeMS = (endTime - startTime) / 1e3; + }, delayMS); + }), + Bridge = function () { + function Bridge(wall) { + _classCallCheck(this, Bridge), this._cbs = new Map(), this._inspectables = new Map(), this._cid = 0, this._listeners = {}, this._buffer = [], this._flushHandle = null, this._callers = {}, this._paused = !1, this._wall = wall, wall.listen(this._handleMessage.bind(this)); + } + + return _createClass(Bridge, [{ + key: "inspect", + value: function value(id, path, cb) { + var _cid = this._cid++; + + this._cbs.set(_cid, function (data, cleaned, proto, protoclean) { + cleaned.length && hydrate(data, cleaned), proto && protoclean.length && hydrate(proto, protoclean), proto && (data[consts.proto] = proto), cb(data); + }), this._wall.send({ + type: "inspect", + callback: _cid, + path: path, + id: id + }); + } + }, { + key: "call", + value: function value(name, args, cb) { + var _cid = this._cid++; + + this._cbs.set(_cid, cb), this._wall.send({ + type: "call", + callback: _cid, + args: args, + name: name + }); + } + }, { + key: "onCall", + value: function value(name, handler) { + if (this._callers[name]) throw new Error("only one call handler per call name allowed"); + this._callers[name] = handler; + } + }, { + key: "pause", + value: function value() { + this._wall.send({ + type: "pause" + }); + } + }, { + key: "resume", + value: function value() { + this._wall.send({ + type: "resume" + }); + } + }, { + key: "setInspectable", + value: function value(id, data) { + var prev = this._inspectables.get(id); + + return prev ? void this._inspectables.set(id, _extends({}, prev, data)) : void this._inspectables.set(id, data); + } + }, { + key: "send", + value: function value(evt, data) { + this._buffer.push({ + evt: evt, + data: data + }), this.scheduleFlush(); + } + }, { + key: "scheduleFlush", + value: function value() { + if (!this._flushHandle && this._buffer.length) { + var timeout = this._paused ? 5e3 : 500; + this._flushHandle = requestIdleCallback(this.flushBufferWhileIdle.bind(this), { + timeout: timeout + }); + } + } + }, { + key: "cancelFlush", + value: function value() { + this._flushHandle && (cancelIdleCallback(this._flushHandle), this._flushHandle = null); + } + }, { + key: "flushBufferWhileIdle", + value: function value(deadline) { + this._flushHandle = null; + + for (var chunkCount = this._paused ? 20 : 10, chunkSize = Math.round(this._buffer.length / chunkCount), minChunkSize = this._paused ? 50 : 100; this._buffer.length && (deadline.timeRemaining() > 0 || deadline.didTimeout);) { + var take = Math.min(this._buffer.length, Math.max(minChunkSize, chunkSize)), + currentBuffer = this._buffer.splice(0, take); + + this.flushBufferSlice(currentBuffer); + } + + this._buffer.length && this.scheduleFlush(); + } + }, { + key: "flushBufferSlice", + value: function value(bufferSlice) { + var _this = this, + events = bufferSlice.map(function (_ref) { + var evt = _ref.evt, + data = _ref.data, + cleaned = [], + san = dehydrate(data, cleaned); + return cleaned.length && _this.setInspectable(data.id, data), { + type: "event", + evt: evt, + data: san, + cleaned: cleaned + }; + }); + + this._wall.send({ + type: "many-events", + events: events + }); + } + }, { + key: "forget", + value: function value(id) { + this._inspectables["delete"](id); + } + }, { + key: "on", + value: function value(evt, fn) { + this._listeners[evt] ? this._listeners[evt].push(fn) : this._listeners[evt] = [fn]; + } + }, { + key: "off", + value: function value(evt, fn) { + if (this._listeners[evt]) { + var ix = this._listeners[evt].indexOf(fn); + + ix !== -1 && this._listeners[evt].splice(ix, 1); + } + } + }, { + key: "once", + value: function value(evt, fn) { + var self = this, + listener = function listener() { + fn.apply(this, arguments), self.off(evt, listener); + }; + + this.on(evt, listener); + } + }, { + key: "_handleMessage", + value: function value(payload) { + var _this2 = this; + + if ("resume" === payload.type) return this._paused = !1, void this.scheduleFlush(); + if ("pause" === payload.type) return this._paused = !0, void this.cancelFlush(); + + if ("callback" === payload.type) { + var callback = this._cbs.get(payload.id); + + return void (callback && (callback.apply(void 0, _toConsumableArray(payload.args)), this._cbs["delete"](payload.id))); + } + + if ("call" === payload.type) return void this._handleCall(payload.name, payload.args, payload.callback); + if ("inspect" === payload.type) return void this._inspectResponse(payload.id, payload.path, payload.callback); + + if ("event" === payload.type) { + payload.cleaned && hydrate(payload.data, payload.cleaned); + var fns = this._listeners[payload.evt], + data = payload.data; + fns && fns.forEach(function (fn) { + return fn(data); + }); + } + + "many-events" === payload.type && payload.events.forEach(function (event) { + event.cleaned && hydrate(event.data, event.cleaned); + var handlers = _this2._listeners[event.evt]; + handlers && handlers.forEach(function (fn) { + return fn(event.data); + }); + }); + } + }, { + key: "_handleCall", + value: function value(name, args, callback) { + if (!this._callers[name]) return void console.warn('unknown call: "' + name + '"'); + args = Array.isArray(args) ? args : [args]; + var result; + + try { + result = this._callers[name].apply(null, args); + } catch (e) { + return void console.error("Failed to call", e); + } + + this._wall.send({ + type: "callback", + id: callback, + args: [result] + }); + } + }, { + key: "_inspectResponse", + value: function value(id, path, callback) { + var inspectable = this._inspectables.get(id), + result = {}, + cleaned = [], + proto = null, + protoclean = []; + + if (inspectable) { + var val = getIn(inspectable, path), + protod = !1, + isFn = "function" == typeof val; + + if (val && "function" == typeof val[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]) { + var iterVal = Object.create({}), + count = 0, + _iteratorNormalCompletion = !0, + _didIteratorError = !1, + _iteratorError = void 0; + + try { + for (var _step, _iterator = val[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { + var entry = _step.value; + if (count > 100) break; + iterVal[count] = entry, count++; + } + } catch (err) { + _didIteratorError = !0, _iteratorError = err; + } finally { + try { + !_iteratorNormalCompletion && _iterator["return"] && _iterator["return"](); + } finally { + if (_didIteratorError) throw _iteratorError; + } + } + + val = iterVal; + } + + if (Object.getOwnPropertyNames(val).forEach(function (name) { + "__proto__" === name && (protod = !0), (!isFn || "arguments" !== name && "callee" !== name && "caller" !== name) && (result[name] = dehydrate(val[name], cleaned, [name])); + }), !protod && val.__proto__ && "Object" !== val.constructor.name) { + var newProto = {}, + pIsFn = "function" == typeof val.__proto__; + Object.getOwnPropertyNames(val.__proto__).forEach(function (name) { + (!pIsFn || "arguments" !== name && "callee" !== name && "caller" !== name) && (newProto[name] = dehydrate(val.__proto__[name], protoclean, [name])); + }), proto = newProto; + } + } + + this._wall.send({ + type: "callback", + id: callback, + args: [result, cleaned, proto, protoclean] + }); + } + }]), Bridge; + }(); + + module.exports = Bridge; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var _Symbol = __webpack_require__(8); + + module.exports = { + name: _Symbol("name"), + type: _Symbol("type"), + inspected: _Symbol("inspected"), + meta: _Symbol("meta"), + proto: _Symbol("proto") + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + module.exports = __webpack_require__(9)() ? Symbol : __webpack_require__(10); + }, function (module, exports) { + "use strict"; + + module.exports = function () { + var symbol; + if ("function" != typeof Symbol) return !1; + symbol = Symbol("test symbol"); + + try { + String(symbol); + } catch (e) { + return !1; + } + + return "symbol" == typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") || "object" == typeof (typeof Symbol === "function" ? Symbol.isConcatSpreadable : "@@isConcatSpreadable") && "object" == typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") && "object" == typeof (typeof Symbol === "function" ? Symbol.toPrimitive : "@@toPrimitive") && "object" == typeof (typeof Symbol === "function" ? Symbol.toStringTag : "@@toStringTag") && "object" == typeof (typeof Symbol === "function" ? Symbol.unscopables : "@@unscopables"); + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var NativeSymbol, + SymbolPolyfill, + _HiddenSymbol, + d = __webpack_require__(11), + validateSymbol = __webpack_require__(24), + create = Object.create, + defineProperties = Object.defineProperties, + defineProperty = Object.defineProperty, + objPrototype = Object.prototype, + globalSymbols = create(null); + + "function" == typeof Symbol && (NativeSymbol = Symbol); + + var generateName = function () { + var created = create(null); + return function (desc) { + for (var name, ie11BugWorkaround, postfix = 0; created[desc + (postfix || "")];) { + ++postfix; + } + + return desc += postfix || "", created[desc] = !0, name = "@@" + desc, defineProperty(objPrototype, name, d.gs(null, function (value) { + ie11BugWorkaround || (ie11BugWorkaround = !0, defineProperty(this, name, d(value)), ie11BugWorkaround = !1); + })), name; + }; + }(); + + _HiddenSymbol = function HiddenSymbol(description) { + if (this instanceof _HiddenSymbol) throw new TypeError("TypeError: Symbol is not a constructor"); + return SymbolPolyfill(description); + }, module.exports = SymbolPolyfill = function Symbol(description) { + var symbol; + if (this instanceof Symbol) throw new TypeError("TypeError: Symbol is not a constructor"); + return symbol = create(_HiddenSymbol.prototype), description = void 0 === description ? "" : String(description), defineProperties(symbol, { + __description__: d("", description), + __name__: d("", generateName(description)) + }); + }, defineProperties(SymbolPolyfill, { + "for": d(function (key) { + return globalSymbols[key] ? globalSymbols[key] : globalSymbols[key] = SymbolPolyfill(String(key)); + }), + keyFor: d(function (s) { + var key; + validateSymbol(s); + + for (key in globalSymbols) { + if (globalSymbols[key] === s) return key; + } + }), + hasInstance: d("", NativeSymbol && NativeSymbol.hasInstance || SymbolPolyfill("hasInstance")), + isConcatSpreadable: d("", NativeSymbol && NativeSymbol.isConcatSpreadable || SymbolPolyfill("isConcatSpreadable")), + iterator: d("", NativeSymbol && NativeSymbol.iterator || SymbolPolyfill("iterator")), + match: d("", NativeSymbol && NativeSymbol.match || SymbolPolyfill("match")), + replace: d("", NativeSymbol && NativeSymbol.replace || SymbolPolyfill("replace")), + search: d("", NativeSymbol && NativeSymbol.search || SymbolPolyfill("search")), + species: d("", NativeSymbol && NativeSymbol.species || SymbolPolyfill("species")), + split: d("", NativeSymbol && NativeSymbol.split || SymbolPolyfill("split")), + toPrimitive: d("", NativeSymbol && NativeSymbol.toPrimitive || SymbolPolyfill("toPrimitive")), + toStringTag: d("", NativeSymbol && NativeSymbol.toStringTag || SymbolPolyfill("toStringTag")), + unscopables: d("", NativeSymbol && NativeSymbol.unscopables || SymbolPolyfill("unscopables")) + }), defineProperties(_HiddenSymbol.prototype, { + constructor: d(SymbolPolyfill), + toString: d("", function () { + return this.__name__; + }) + }), defineProperties(SymbolPolyfill.prototype, { + toString: d(function () { + return "Symbol (" + validateSymbol(this).__description__ + ")"; + }), + valueOf: d(function () { + return validateSymbol(this); + }) + }), defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d("", function () { + return validateSymbol(this); + })), defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d("c", "Symbol")), defineProperty(_HiddenSymbol.prototype, SymbolPolyfill.toStringTag, d("c", SymbolPolyfill.prototype[SymbolPolyfill.toStringTag])), defineProperty(_HiddenSymbol.prototype, SymbolPolyfill.toPrimitive, d("c", SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive])); + }, function (module, exports, __webpack_require__) { + "use strict"; + + var d, + assign = __webpack_require__(12), + normalizeOpts = __webpack_require__(19), + isCallable = __webpack_require__(20), + contains = __webpack_require__(21); + + d = module.exports = function (dscr, value) { + var c, e, w, options, desc; + return arguments.length < 2 || "string" != typeof dscr ? (options = value, value = dscr, dscr = null) : options = arguments[2], null == dscr ? (c = w = !0, e = !1) : (c = contains.call(dscr, "c"), e = contains.call(dscr, "e"), w = contains.call(dscr, "w")), desc = { + value: value, + configurable: c, + enumerable: e, + writable: w + }, options ? assign(normalizeOpts(options), desc) : desc; + }, d.gs = function (dscr, get, set) { + var c, e, options, desc; + return "string" != typeof dscr ? (options = set, set = get, get = dscr, dscr = null) : options = arguments[3], null == get ? get = void 0 : isCallable(get) ? null == set ? set = void 0 : isCallable(set) || (options = set, set = void 0) : (options = get, get = set = void 0), null == dscr ? (c = !0, e = !1) : (c = contains.call(dscr, "c"), e = contains.call(dscr, "e")), desc = { + get: get, + set: set, + configurable: c, + enumerable: e + }, options ? assign(normalizeOpts(options), desc) : desc; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + module.exports = __webpack_require__(13)() ? Object.assign : __webpack_require__(14); + }, function (module, exports) { + "use strict"; + + module.exports = function () { + var obj, + assign = Object.assign; + return "function" == typeof assign && (obj = { + foo: "raz" + }, assign(obj, { + bar: "dwa" + }, { + trzy: "trzy" + }), obj.foo + obj.bar + obj.trzy === "razdwatrzy"); + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var keys = __webpack_require__(15), + value = __webpack_require__(18), + max = Math.max; + + module.exports = function (dest, src) { + var error, + i, + assign, + l = max(arguments.length, 2); + + for (dest = Object(value(dest)), assign = function assign(key) { + try { + dest[key] = src[key]; + } catch (e) { + error || (error = e); + } + }, i = 1; i < l; ++i) { + src = arguments[i], keys(src).forEach(assign); + } + + if (void 0 !== error) throw error; + return dest; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + module.exports = __webpack_require__(16)() ? Object.keys : __webpack_require__(17); + }, function (module, exports) { + "use strict"; + + module.exports = function () { + try { + return Object.keys("primitive"), !0; + } catch (e) { + return !1; + } + }; + }, function (module, exports) { + "use strict"; + + var keys = Object.keys; + + module.exports = function (object) { + return keys(null == object ? object : Object(object)); + }; + }, function (module, exports) { + "use strict"; + + module.exports = function (value) { + if (null == value) throw new TypeError("Cannot use null or undefined"); + return value; + }; + }, function (module, exports) { + "use strict"; + + var forEach = Array.prototype.forEach, + create = Object.create, + process = function process(src, obj) { + var key; + + for (key in src) { + obj[key] = src[key]; + } + }; + + module.exports = function (options) { + var result = create(null); + return forEach.call(arguments, function (options) { + null != options && process(Object(options), result); + }), result; + }; + }, function (module, exports) { + "use strict"; + + module.exports = function (obj) { + return "function" == typeof obj; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + module.exports = __webpack_require__(22)() ? String.prototype.contains : __webpack_require__(23); + }, function (module, exports) { + "use strict"; + + var str = "razdwatrzy"; + + module.exports = function () { + return "function" == typeof str.contains && str.contains("dwa") === !0 && str.contains("foo") === !1; + }; + }, function (module, exports) { + "use strict"; + + var indexOf = String.prototype.indexOf; + + module.exports = function (searchString) { + return indexOf.call(this, searchString, arguments[1]) > -1; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var isSymbol = __webpack_require__(25); + + module.exports = function (value) { + if (!isSymbol(value)) throw new TypeError(value + " is not a symbol"); + return value; + }; + }, function (module, exports) { + "use strict"; + + module.exports = function (x) { + return x && ("symbol" == typeof x || "Symbol" === x["@@toStringTag"]) || !1; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function hydrate(data, cleaned) { + cleaned.forEach(function (path) { + var last = path.pop(), + obj = path.reduce(function (obj_, attr) { + return obj_ ? obj_[attr] : null; + }, data); + + if (obj && obj[last]) { + var replace = {}; + replace[consts.name] = obj[last].name, replace[consts.type] = obj[last].type, replace[consts.meta] = obj[last].meta, replace[consts.inspected] = !1, obj[last] = replace; + } + }); + } + + var consts = __webpack_require__(7); + + module.exports = hydrate; + }, function (module, exports) { + "use strict"; + + function getPropType(data) { + if (!data) return null; + var type = "undefined" == typeof data ? "undefined" : _typeof(data); + + if ("object" === type) { + if (data._reactFragment) return "react_fragment"; + if (Array.isArray(data)) return "array"; + if (ArrayBuffer.isView(data)) return data instanceof DataView ? "data_view" : "typed_array"; + if (data instanceof ArrayBuffer) return "array_buffer"; + if ("function" == typeof data[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]) return "iterator"; + if ("[object Date]" === Object.prototype.toString.call(data)) return "date"; + } + + return type; + } + + function createDehydrated(type, data, cleaned, path) { + var meta = {}; + return "array" !== type && "typed_array" !== type || (meta.length = data.length), "iterator" !== type && "typed_array" !== type || (meta.readOnly = !0), cleaned.push(path), { + type: type, + meta: meta, + name: data.constructor && "Object" !== data.constructor.name ? data.constructor.name : "" + }; + } + + function dehydrate(data, cleaned) { + var path = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [], + level = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, + type = getPropType(data); + + switch (type) { + case "function": + return cleaned.push(path), { + name: data.name, + type: "function" + }; + + case "string": + return data.length <= 500 ? data : data.slice(0, 500) + "..."; + + case "symbol": + return cleaned.push(path), { + type: "symbol", + name: data.toString() + }; + + case "react_fragment": + return "A React Fragment"; + + case "array_buffer": + case "data_view": + return cleaned.push(path), { + type: type, + name: "data_view" === type ? "DataView" : "ArrayBuffer", + meta: { + length: data.byteLength, + uninspectable: !0 + } + }; + + case "array": + return level > 2 ? createDehydrated(type, data, cleaned, path) : data.map(function (item, i) { + return dehydrate(item, cleaned, path.concat([i]), level + 1); + }); + + case "typed_array": + case "iterator": + return createDehydrated(type, data, cleaned, path); + + case "date": + return cleaned.push(path), { + name: data.toString(), + type: "date", + meta: { + uninspectable: !0 + } + }; + + case "object": + if (level > 2 || data.constructor && "function" == typeof data.constructor && "Object" !== data.constructor.name) return createDehydrated(type, data, cleaned, path); + var res = {}; + + for (var name in data) { + res[name] = dehydrate(data[name], cleaned, path.concat([name]), level + 1); + } + + return res; + + default: + return data; + } + } + + var _typeof = "function" == typeof Symbol && "symbol" == typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }; + + module.exports = dehydrate; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var performanceNow, + performance = __webpack_require__(29); + + performanceNow = performance.now ? function () { + return performance.now(); + } : function () { + return Date.now(); + }, module.exports = performanceNow; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var performance, + ExecutionEnvironment = __webpack_require__(30); + + ExecutionEnvironment.canUseDOM && (performance = window.performance || window.msPerformance || window.webkitPerformance), module.exports = performance || {}; + }, function (module, exports) { + "use strict"; + + var canUseDOM = !("undefined" == typeof window || !window.document || !window.document.createElement), + ExecutionEnvironment = { + canUseDOM: canUseDOM, + canUseWorkers: "undefined" != typeof Worker, + canUseEventListeners: canUseDOM && !(!window.addEventListener && !window.attachEvent), + canUseViewport: canUseDOM && !!window.screen, + isInWorker: !canUseDOM + }; + module.exports = ExecutionEnvironment; + }, function (module, exports) { + "use strict"; + + function installGlobalHook(window) { + function detectReactBuildType(renderer) { + try { + if ("string" == typeof renderer.version) return renderer.bundleType > 0 ? "development" : "production"; + var toString = Function.prototype.toString; + + if (renderer.Mount && renderer.Mount._renderNewRootComponent) { + var renderRootCode = toString.call(renderer.Mount._renderNewRootComponent); + return 0 !== renderRootCode.indexOf("function") ? "production" : renderRootCode.indexOf("storedMeasure") !== -1 ? "development" : renderRootCode.indexOf("should be a pure function") !== -1 ? renderRootCode.indexOf("NODE_ENV") !== -1 ? "development" : renderRootCode.indexOf("development") !== -1 ? "development" : renderRootCode.indexOf("true") !== -1 ? "development" : renderRootCode.indexOf("nextElement") !== -1 || renderRootCode.indexOf("nextComponent") !== -1 ? "unminified" : "development" : renderRootCode.indexOf("nextElement") !== -1 || renderRootCode.indexOf("nextComponent") !== -1 ? "unminified" : renderRootCode.indexOf("._registerComponent") !== -1 ? "outdated" : "production"; + } + } catch (err) {} + + return "production"; + } + + if (!window.__REACT_DEVTOOLS_GLOBAL_HOOK__) { + var hasDetectedBadDCE = !1, + hook = { + _renderers: {}, + helpers: {}, + checkDCE: function checkDCE(fn) { + try { + var toString = Function.prototype.toString, + code = toString.call(fn); + code.indexOf("^_^") > -1 && (hasDetectedBadDCE = !0, setTimeout(function () { + throw new Error("React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://fb.me/react-perf-use-the-production-build"); + })); + } catch (err) {} + }, + inject: function inject(renderer) { + var id = Math.random().toString(16).slice(2); + hook._renderers[id] = renderer; + var reactBuildType = hasDetectedBadDCE ? "deadcode" : detectReactBuildType(renderer); + return hook.emit("renderer", { + id: id, + renderer: renderer, + reactBuildType: reactBuildType + }), id; + }, + _listeners: {}, + sub: function sub(evt, fn) { + return hook.on(evt, fn), function () { + return hook.off(evt, fn); + }; + }, + on: function on(evt, fn) { + hook._listeners[evt] || (hook._listeners[evt] = []), hook._listeners[evt].push(fn); + }, + off: function off(evt, fn) { + if (hook._listeners[evt]) { + var ix = hook._listeners[evt].indexOf(fn); + + ix !== -1 && hook._listeners[evt].splice(ix, 1), hook._listeners[evt].length || (hook._listeners[evt] = null); + } + }, + emit: function emit(evt, data) { + hook._listeners[evt] && hook._listeners[evt].map(function (fn) { + return fn(data); + }); + }, + supportsFiber: !0, + _fiberRoots: {}, + getFiberRoots: function getFiberRoots(rendererID) { + var roots = hook._fiberRoots; + return roots[rendererID] || (roots[rendererID] = new Set()), roots[rendererID]; + }, + onCommitFiberUnmount: function onCommitFiberUnmount(rendererID, fiber) { + hook.helpers[rendererID] && hook.helpers[rendererID].handleCommitFiberUnmount(fiber); + }, + onCommitFiberRoot: function onCommitFiberRoot(rendererID, root) { + var mountedRoots = hook.getFiberRoots(rendererID), + current = root.current, + isKnownRoot = mountedRoots.has(root), + isUnmounting = null == current.memoizedState || null == current.memoizedState.element; + isKnownRoot || isUnmounting ? isKnownRoot && isUnmounting && mountedRoots["delete"](root) : mountedRoots.add(root), hook.helpers[rendererID] && hook.helpers[rendererID].handleCommitFiberRoot(root); + } + }; + Object.defineProperty(window, "__REACT_DEVTOOLS_GLOBAL_HOOK__", { + value: hook + }); + } + } + + module.exports = installGlobalHook; + }, function (module, exports) { + "use strict"; + + function installRelayHook(window) { + function decorate(obj, attr, fn) { + var old = obj[attr]; + + obj[attr] = function () { + var res = old.apply(this, arguments); + return fn.apply(this, arguments), res; + }; + } + + function emit(name, data) { + _eventQueue.push({ + name: name, + data: data + }), _listener && _listener(name, data); + } + + function setRequestListener(listener) { + if (_listener) throw new Error("Relay Devtools: Called only call setRequestListener once."); + return _listener = listener, _eventQueue.forEach(function (_ref) { + var name = _ref.name, + data = _ref.data; + listener(name, data); + }), function () { + _listener = null; + }; + } + + function recordRequest(type, start, request, requestNumber) { + var id = Math.random().toString(16).substr(2); + request.then(function (response) { + emit("relay:success", { + id: id, + end: performanceNow(), + response: response.response + }); + }, function (error) { + emit("relay:failure", { + id: id, + end: performanceNow(), + error: error + }); + }); + + for (var textChunks = [], text = request.getQueryString(); text.length > 0;) { + textChunks.push(text.substr(0, TEXT_CHUNK_LENGTH)), text = text.substr(TEXT_CHUNK_LENGTH); + } + + return { + id: id, + name: request.getDebugName(), + requestNumber: requestNumber, + start: start, + text: textChunks, + type: type, + variables: request.getVariables() + }; + } + + function instrumentRelayRequests(relayInternals) { + var NetworkLayer = relayInternals.NetworkLayer; + decorate(NetworkLayer, "sendMutation", function (mutation) { + requestNumber++, emit("relay:pending", [recordRequest("mutation", performanceNow(), mutation, requestNumber)]); + }), decorate(NetworkLayer, "sendQueries", function (queries) { + requestNumber++; + var start = performanceNow(); + emit("relay:pending", queries.map(function (query) { + return recordRequest("query", start, query, requestNumber); + })); + }); + var instrumented = {}; + + for (var key in relayInternals) { + relayInternals.hasOwnProperty(key) && (instrumented[key] = relayInternals[key]); + } + + return instrumented.setRequestListener = setRequestListener, instrumented; + } + + var performanceNow, + performance = window.performance; + performanceNow = performance && "function" == typeof performance.now ? function () { + return performance.now(); + } : function () { + return Date.now(); + }; + var TEXT_CHUNK_LENGTH = 500, + hook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__; + + if (hook) { + var _eventQueue = [], + _listener = null, + requestNumber = 0, + _relayInternals = null; + Object.defineProperty(hook, "_relayInternals", { + configurable: !0, + set: function set(relayInternals) { + _relayInternals = instrumentRelayRequests(relayInternals); + }, + get: function get() { + return _relayInternals; + } + }); + } + } + + module.exports = installRelayHook; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var setupBackend = __webpack_require__(34); + + module.exports = function (hook, agent) { + var subs = [hook.sub("renderer-attached", function (_ref) { + var id = _ref.id, + helpers = (_ref.renderer, _ref.helpers); + agent.setReactInternals(id, helpers), helpers.walkTree(agent.onMounted.bind(agent, id), agent.addRoot.bind(agent, id)); + }), hook.sub("root", function (_ref2) { + var renderer = _ref2.renderer, + internalInstance = _ref2.internalInstance; + return agent.addRoot(renderer, internalInstance); + }), hook.sub("mount", function (_ref3) { + var renderer = _ref3.renderer, + internalInstance = _ref3.internalInstance, + data = _ref3.data; + return agent.onMounted(renderer, internalInstance, data); + }), hook.sub("update", function (_ref4) { + var internalInstance = (_ref4.renderer, _ref4.internalInstance), + data = _ref4.data; + return agent.onUpdated(internalInstance, data); + }), hook.sub("unmount", function (_ref5) { + var internalInstance = (_ref5.renderer, _ref5.internalInstance); + return agent.onUnmounted(internalInstance); + })], + success = setupBackend(hook); + success && (hook.emit("react-devtools", agent), hook.reactDevtoolsAgent = agent, agent.on("shutdown", function () { + subs.forEach(function (fn) { + return fn(); + }), hook.reactDevtoolsAgent = null; + })); + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var attachRenderer = __webpack_require__(35); + + module.exports = function (hook) { + var oldReact = window.React && window.React.__internals; + oldReact && 0 === Object.keys(hook._renderers).length && hook.inject(oldReact); + + for (var rid in hook._renderers) { + hook.helpers[rid] = attachRenderer(hook, rid, hook._renderers[rid]), hook.emit("renderer-attached", { + id: rid, + renderer: hook._renderers[rid], + helpers: hook.helpers[rid] + }); + } + + hook.on("renderer", function (_ref) { + var id = _ref.id, + renderer = _ref.renderer; + hook.helpers[id] = attachRenderer(hook, id, renderer), hook.emit("renderer-attached", { + id: id, + renderer: renderer, + helpers: hook.helpers[id] + }); + }); + + var shutdown = function shutdown() { + for (var id in hook.helpers) { + hook.helpers[id].cleanup(); + } + + hook.off("shutdown", shutdown); + }; + + return hook.on("shutdown", shutdown), !0; + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function attachRenderer(hook, rid, renderer) { + var rootNodeIDMap = new Map(), + extras = {}, + isPre013 = !renderer.Reconciler; + if ("function" == typeof renderer.findFiberByHostInstance) return attachRendererFiber(hook, rid, renderer); + renderer.Mount.findNodeHandle && renderer.Mount.nativeTagToRootNodeID ? (extras.getNativeFromReactElement = function (component) { + return renderer.Mount.findNodeHandle(component); + }, extras.getReactElementFromNative = function (nativeTag) { + var id = renderer.Mount.nativeTagToRootNodeID(nativeTag); + return rootNodeIDMap.get(id); + }) : renderer.ComponentTree ? (extras.getNativeFromReactElement = function (component) { + return renderer.ComponentTree.getNodeFromInstance(component); + }, extras.getReactElementFromNative = function (node) { + return renderer.ComponentTree.getClosestInstanceFromNode(node); + }) : renderer.Mount.getID && renderer.Mount.getNode ? (extras.getNativeFromReactElement = function (component) { + try { + return renderer.Mount.getNode(component._rootNodeID); + } catch (e) { + return; + } + }, extras.getReactElementFromNative = function (node) { + for (var id = renderer.Mount.getID(node); node && node.parentNode && !id;) { + node = node.parentNode, id = renderer.Mount.getID(node); + } + + return rootNodeIDMap.get(id); + }) : console.warn("Unknown react version (does not have getID), probably an unshimmed React Native"); + var oldMethods, oldRenderComponent, oldRenderRoot; + return renderer.Mount._renderNewRootComponent ? oldRenderRoot = decorateResult(renderer.Mount, "_renderNewRootComponent", function (internalInstance) { + hook.emit("root", { + renderer: rid, + internalInstance: internalInstance + }); + }) : renderer.Mount.renderComponent && (oldRenderComponent = decorateResult(renderer.Mount, "renderComponent", function (internalInstance) { + hook.emit("root", { + renderer: rid, + internalInstance: internalInstance._reactInternalInstance + }); + })), renderer.Component ? (console.error("You are using a version of React with limited support in this version of the devtools.\nPlease upgrade to use at least 0.13, or you can downgrade to use the old version of the devtools:\ninstructions here https://github.com/facebook/react-devtools/tree/devtools-next#how-do-i-use-this-for-react--013"), oldMethods = decorateMany(renderer.Component.Mixin, { + mountComponent: function mountComponent() { + var _this = this; + + rootNodeIDMap.set(this._rootNodeID, this), setTimeout(function () { + hook.emit("mount", { + internalInstance: _this, + data: getData012(_this), + renderer: rid + }); + }, 0); + }, + updateComponent: function updateComponent() { + var _this2 = this; + + setTimeout(function () { + hook.emit("update", { + internalInstance: _this2, + data: getData012(_this2), + renderer: rid + }); + }, 0); + }, + unmountComponent: function unmountComponent() { + hook.emit("unmount", { + internalInstance: this, + renderer: rid + }), rootNodeIDMap["delete"](this._rootNodeID, this); + } + })) : renderer.Reconciler && (oldMethods = decorateMany(renderer.Reconciler, { + mountComponent: function mountComponent(internalInstance, rootID, transaction, context) { + var data = getData(internalInstance); + rootNodeIDMap.set(internalInstance._rootNodeID, internalInstance), hook.emit("mount", { + internalInstance: internalInstance, + data: data, + renderer: rid + }); + }, + performUpdateIfNecessary: function performUpdateIfNecessary(internalInstance, nextChild, transaction, context) { + hook.emit("update", { + internalInstance: internalInstance, + data: getData(internalInstance), + renderer: rid + }); + }, + receiveComponent: function receiveComponent(internalInstance, nextChild, transaction, context) { + hook.emit("update", { + internalInstance: internalInstance, + data: getData(internalInstance), + renderer: rid + }); + }, + unmountComponent: function unmountComponent(internalInstance) { + hook.emit("unmount", { + internalInstance: internalInstance, + renderer: rid + }), rootNodeIDMap["delete"](internalInstance._rootNodeID, internalInstance); + } + })), extras.walkTree = function (visit, visitRoot) { + var onMount = function onMount(component, data) { + rootNodeIDMap.set(component._rootNodeID, component), visit(component, data); + }; + + walkRoots(renderer.Mount._instancesByReactRootID || renderer.Mount._instancesByContainerID, onMount, visitRoot, isPre013); + }, extras.cleanup = function () { + oldMethods && (renderer.Component ? restoreMany(renderer.Component.Mixin, oldMethods) : restoreMany(renderer.Reconciler, oldMethods)), oldRenderRoot && (renderer.Mount._renderNewRootComponent = oldRenderRoot), oldRenderComponent && (renderer.Mount.renderComponent = oldRenderComponent), oldMethods = null, oldRenderRoot = null, oldRenderComponent = null; + }, extras; + } + + function walkRoots(roots, onMount, onRoot, isPre013) { + for (var name in roots) { + walkNode(roots[name], onMount, isPre013), onRoot(roots[name]); + } + } + + function walkNode(internalInstance, onMount, isPre013) { + var data = isPre013 ? getData012(internalInstance) : getData(internalInstance); + data.children && Array.isArray(data.children) && data.children.forEach(function (child) { + return walkNode(child, onMount, isPre013); + }), onMount(internalInstance, data); + } + + function decorateResult(obj, attr, fn) { + var old = obj[attr]; + return obj[attr] = function (instance) { + var res = old.apply(this, arguments); + return fn(res), res; + }, old; + } + + function decorate(obj, attr, fn) { + var old = obj[attr]; + return obj[attr] = function (instance) { + var res = old.apply(this, arguments); + return fn.apply(this, arguments), res; + }, old; + } + + function decorateMany(source, fns) { + var olds = {}; + + for (var name in fns) { + olds[name] = decorate(source, name, fns[name]); + } + + return olds; + } + + function restoreMany(source, olds) { + for (var name in olds) { + source[name] = olds[name]; + } + } + + var getData = __webpack_require__(36), + getData012 = __webpack_require__(41), + attachRendererFiber = __webpack_require__(42); + + module.exports = attachRenderer; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function getData(internalInstance) { + var children = null, + props = null, + state = null, + context = null, + updater = null, + name = null, + type = null, + key = null, + ref = null, + source = null, + text = null, + publicInstance = null, + nodeType = "Native"; + if ("object" !== ("undefined" == typeof internalInstance ? "undefined" : _typeof(internalInstance))) nodeType = "Text", text = internalInstance + "";else if (null === internalInstance._currentElement || internalInstance._currentElement === !1) nodeType = "Empty";else if (internalInstance._renderedComponent) nodeType = "NativeWrapper", children = [internalInstance._renderedComponent], props = internalInstance._instance.props, state = internalInstance._instance.state, context = internalInstance._instance.context, context && 0 === Object.keys(context).length && (context = null);else if (internalInstance._renderedChildren) children = childrenList(internalInstance._renderedChildren);else if (internalInstance._currentElement && internalInstance._currentElement.props) { + var unfilteredChildren = internalInstance._currentElement.props.children, + filteredChildren = []; + traverseAllChildrenImpl(unfilteredChildren, "", function (_traverseContext, child) { + var childType = "undefined" == typeof child ? "undefined" : _typeof(child); + "string" !== childType && "number" !== childType || filteredChildren.push(child); + }), children = filteredChildren.length <= 1 ? filteredChildren.length ? String(filteredChildren[0]) : void 0 : filteredChildren; + } + + if (!props && internalInstance._currentElement && internalInstance._currentElement.props && (props = internalInstance._currentElement.props), null != internalInstance._currentElement && (type = internalInstance._currentElement.type, internalInstance._currentElement.key && (key = String(internalInstance._currentElement.key)), source = internalInstance._currentElement._source, ref = internalInstance._currentElement.ref, "string" == typeof type ? (name = type, null != internalInstance._nativeNode && (publicInstance = internalInstance._nativeNode), null != internalInstance._hostNode && (publicInstance = internalInstance._hostNode)) : "function" == typeof type ? (nodeType = "Composite", name = getDisplayName(type), internalInstance._renderedComponent && (internalInstance._currentElement.props === internalInstance._renderedComponent._currentElement || internalInstance._currentElement.type.isReactTopLevelWrapper) && (nodeType = "Wrapper"), null === name && (name = "No display name")) : "string" == typeof internalInstance._stringText ? (nodeType = "Text", text = internalInstance._stringText) : name = getDisplayName(type)), internalInstance._instance) { + var inst = internalInstance._instance, + forceUpdate = inst.forceUpdate || inst.updater && inst.updater.enqueueForceUpdate && function (cb) { + inst.updater.enqueueForceUpdate(this, cb, "forceUpdate"); + }; + + updater = { + setState: inst.setState && inst.setState.bind(inst), + forceUpdate: forceUpdate && forceUpdate.bind(inst), + setInProps: forceUpdate && setInProps.bind(null, internalInstance, forceUpdate), + setInState: inst.forceUpdate && setInState.bind(null, inst), + setInContext: forceUpdate && setInContext.bind(null, inst, forceUpdate) + }, "function" == typeof type && (publicInstance = inst), inst._renderedChildren && (children = childrenList(inst._renderedChildren)); + } + + return "function" == typeof internalInstance.setNativeProps && (updater = { + setNativeProps: function setNativeProps(nativeProps) { + internalInstance.setNativeProps(nativeProps); + } + }), { + nodeType: nodeType, + type: type, + key: key, + ref: ref, + source: source, + name: name, + props: props, + state: state, + context: context, + children: children, + text: text, + updater: updater, + publicInstance: publicInstance + }; + } + + function setInProps(internalInst, forceUpdate, path, value) { + var element = internalInst._currentElement; + internalInst._currentElement = _extends({}, element, { + props: copyWithSet(element.props, path, value) + }), forceUpdate.call(internalInst._instance); + } + + function setInState(inst, path, value) { + setIn(inst.state, path, value), inst.forceUpdate(); + } + + function setInContext(inst, forceUpdate, path, value) { + setIn(inst.context, path, value), forceUpdate.call(inst); + } + + function setIn(obj, path, value) { + var last = path.pop(), + parent = path.reduce(function (obj_, attr) { + return obj_ ? obj_[attr] : null; + }, obj); + parent && (parent[last] = value); + } + + function childrenList(children) { + var res = []; + + for (var name in children) { + res.push(children[name]); + } + + return res; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]); + } + } + + return target; + }, + _typeof = "function" == typeof Symbol && "symbol" == typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }, + copyWithSet = __webpack_require__(37), + getDisplayName = __webpack_require__(38), + traverseAllChildrenImpl = __webpack_require__(39); + + module.exports = getData; + }, function (module, exports) { + "use strict"; + + function copyWithSetImpl(obj, path, idx, value) { + if (idx >= path.length) return value; + var key = path[idx], + updated = Array.isArray(obj) ? obj.slice() : _extends({}, obj); + return updated[key] = copyWithSetImpl(obj[key], path, idx + 1, value), updated; + } + + function copyWithSet(obj, path, value) { + return copyWithSetImpl(obj, path, 0, value); + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]); + } + } + + return target; + }; + + module.exports = copyWithSet; + }, function (module, exports) { + "use strict"; + + function getDisplayName(type) { + if (cachedDisplayNames.has(type)) return cachedDisplayNames.get(type); + var displayName = void 0; + "string" == typeof type.displayName && (displayName = type.displayName), displayName || (displayName = type.name || "Unknown"); + var match = displayName.match(FB_MODULE_RE); + + if (match) { + var componentName = match[1], + moduleName = match[2]; + componentName && moduleName && (moduleName === componentName || moduleName.startsWith(componentName + ".")) && (displayName = componentName); + } + + return cachedDisplayNames.set(type, displayName), displayName; + } + + var FB_MODULE_RE = /^(.*) \[from (.*)\]$/, + cachedDisplayNames = new WeakMap(); + module.exports = getDisplayName; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function escape(key) { + var escapeRegex = /[=:]/g, + escaperLookup = { + "=": "=0", + ":": "=2" + }, + escapedString = ("" + key).replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + return "$" + escapedString; + } + + function getComponentKey(component, index) { + return "object" === ("undefined" == typeof component ? "undefined" : _typeof(component)) && null !== component && null != component.key ? escape(component.key) : index.toString(36); + } + + function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = "undefined" == typeof children ? "undefined" : _typeof(children); + if ("undefined" !== type && "boolean" !== type || (children = null), null === children || "string" === type || "number" === type || "object" === type && children.$$typeof === REACT_ELEMENT_TYPE) return callback(traverseContext, children, "" === nameSoFar ? SEPARATOR + getComponentKey(children, 0) : nameSoFar), 1; + var child, + nextName, + subtreeCount = 0, + nextNamePrefix = "" === nameSoFar ? SEPARATOR : nameSoFar + SUBSEPARATOR; + if (Array.isArray(children)) for (var i = 0; i < children.length; i++) { + child = children[i], nextName = nextNamePrefix + getComponentKey(child, i), subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } else { + var iteratorFn = ITERATOR_SYMBOL && children[ITERATOR_SYMBOL] || children[FAUX_ITERATOR_SYMBOL]; + if ("function" == typeof iteratorFn) for (var step, iterator = iteratorFn.call(children), ii = 0; !(step = iterator.next()).done;) { + child = step.value, nextName = nextNamePrefix + getComponentKey(child, ii++), subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } else if ("object" === type) { + var addendum = " If you meant to render a collection of children, use an array instead.", + childrenString = "" + children; + invariant(!1, "The React Devtools cannot render an object as a child. (found: %s).%s", "[object Object]" === childrenString ? "object with keys {" + Object.keys(children).join(", ") + "}" : childrenString, addendum); + } + } + return subtreeCount; + } + + var _typeof = "function" == typeof Symbol && "symbol" == typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }, + invariant = __webpack_require__(40), + SEPARATOR = ".", + SUBSEPARATOR = ":", + FAUX_ITERATOR_SYMBOL = "@@iterator", + ITERATOR_SYMBOL = "function" == typeof Symbol && (typeof Symbol === "function" ? Symbol.iterator : "@@iterator"), + REACT_ELEMENT_TYPE = "function" == typeof Symbol && Symbol["for"] && Symbol["for"]("react.element") || 60103; + + module.exports = traverseAllChildrenImpl; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function invariant(condition, format, a, b, c, d, e, f) { + if (!condition) { + var error; + if (void 0 === format) error = new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else { + var args = [a, b, c, d, e, f], + argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })), error.name = "Invariant Violation"; + } + throw error.framesToPop = 1, error; + } + } + + module.exports = invariant; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function getData012(internalInstance) { + var children = null, + props = internalInstance.props, + state = internalInstance.state, + context = internalInstance.context, + updater = null, + name = null, + type = null, + key = null, + ref = null, + text = null, + publicInstance = null, + nodeType = "Native"; + return internalInstance._renderedComponent ? (nodeType = "Wrapper", children = [internalInstance._renderedComponent], context && 0 === Object.keys(context).length && (context = null)) : internalInstance._renderedChildren ? (name = internalInstance.constructor.displayName, children = childrenList(internalInstance._renderedChildren)) : "string" == typeof props.children && (name = internalInstance.constructor.displayName, children = props.children, nodeType = "Native"), !props && internalInstance._currentElement && internalInstance._currentElement.props && (props = internalInstance._currentElement.props), internalInstance._currentElement && (type = internalInstance._currentElement.type, internalInstance._currentElement.key && (key = String(internalInstance._currentElement.key)), ref = internalInstance._currentElement.ref, "string" == typeof type ? name = type : (nodeType = "Composite", name = type.displayName, name || (name = "No display name"))), name || (name = internalInstance.constructor.displayName || "No display name", nodeType = "Composite"), "string" == typeof props && (nodeType = "Text", text = props, props = null, name = null), internalInstance.forceUpdate && (updater = { + setState: internalInstance.setState.bind(internalInstance), + forceUpdate: internalInstance.forceUpdate.bind(internalInstance), + setInProps: internalInstance.forceUpdate && setInProps.bind(null, internalInstance), + setInState: internalInstance.forceUpdate && setInState.bind(null, internalInstance), + setInContext: internalInstance.forceUpdate && setInContext.bind(null, internalInstance) + }, publicInstance = internalInstance), { + nodeType: nodeType, + type: type, + key: key, + ref: ref, + source: null, + name: name, + props: props, + state: state, + context: context, + children: children, + text: text, + updater: updater, + publicInstance: publicInstance + }; + } + + function setInProps(inst, path, value) { + inst.props = copyWithSet(inst.props, path, value), inst.forceUpdate(); + } + + function setInState(inst, path, value) { + setIn(inst.state, path, value), inst.forceUpdate(); + } + + function setInContext(inst, path, value) { + setIn(inst.context, path, value), inst.forceUpdate(); + } + + function setIn(obj, path, value) { + var last = path.pop(), + parent = path.reduce(function (obj_, attr) { + return obj_ ? obj_[attr] : null; + }, obj); + parent && (parent[last] = value); + } + + function childrenList(children) { + var res = []; + + for (var name in children) { + res.push(children[name]); + } + + return res; + } + + var copyWithSet = __webpack_require__(37); + + module.exports = getData012; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function attachRendererFiber(hook, rid, renderer) { + function getOpaqueNode(fiber) { + if (opaqueNodes.has(fiber)) return fiber; + var alternate = fiber.alternate; + return null != alternate && opaqueNodes.has(alternate) ? alternate : (opaqueNodes.add(fiber), fiber); + } + + function hasDataChanged(prevFiber, nextFiber) { + if (prevFiber.tag === ClassComponent) { + if ((nextFiber.effectTag & PerformedWork) !== PerformedWork) return !1; + if (prevFiber.stateNode.context !== nextFiber.stateNode.context) return !0; + if (null != nextFiber.updateQueue && nextFiber.updateQueue.hasForceUpdate) return !0; + } + + return prevFiber.memoizedProps !== nextFiber.memoizedProps || prevFiber.memoizedState !== nextFiber.memoizedState || prevFiber.ref !== nextFiber.ref || prevFiber._debugSource !== nextFiber._debugSource; + } + + function flushPendingEvents() { + var events = pendingEvents; + pendingEvents = []; + + for (var i = 0; i < events.length; i++) { + var event = events[i]; + hook.emit(event.type, event); + } + } + + function enqueueMount(fiber) { + pendingEvents.push({ + internalInstance: getOpaqueNode(fiber), + data: getDataFiber(fiber, getOpaqueNode), + renderer: rid, + type: "mount" + }); + var isRoot = fiber.tag === HostRoot; + isRoot && pendingEvents.push({ + internalInstance: getOpaqueNode(fiber), + renderer: rid, + type: "root" + }); + } + + function enqueueUpdateIfNecessary(fiber, hasChildOrderChanged) { + (hasChildOrderChanged || hasDataChanged(fiber.alternate, fiber)) && pendingEvents.push({ + internalInstance: getOpaqueNode(fiber), + data: getDataFiber(fiber, getOpaqueNode), + renderer: rid, + type: "update" + }); + } + + function enqueueUnmount(fiber) { + var isRoot = fiber.tag === HostRoot, + opaqueNode = getOpaqueNode(fiber), + event = { + internalInstance: opaqueNode, + renderer: rid, + type: "unmount" + }; + isRoot ? pendingEvents.push(event) : pendingEvents.unshift(event), opaqueNodes["delete"](opaqueNode); + } + + function mountFiber(fiber) { + var node = fiber; + + outer: for (;;) { + if (node.child) node.child["return"] = node, node = node.child;else { + if (enqueueMount(node), node == fiber) return; + + if (!node.sibling) { + for (; node["return"];) { + if (node = node["return"], enqueueMount(node), node == fiber) return; + + if (node.sibling) { + node.sibling["return"] = node["return"], node = node.sibling; + continue outer; + } + } + + return; + } + + node.sibling["return"] = node["return"], node = node.sibling; + } + } + } + + function updateFiber(nextFiber, prevFiber) { + var hasChildOrderChanged = !1; + + if (nextFiber.child !== prevFiber.child) { + for (var nextChild = nextFiber.child, prevChildAtSameIndex = prevFiber.child; nextChild;) { + if (nextChild.alternate) { + var prevChild = nextChild.alternate; + updateFiber(nextChild, prevChild), hasChildOrderChanged || prevChild === prevChildAtSameIndex || (hasChildOrderChanged = !0); + } else mountFiber(nextChild), hasChildOrderChanged || (hasChildOrderChanged = !0); + + nextChild = nextChild.sibling, hasChildOrderChanged || null == prevChildAtSameIndex || (prevChildAtSameIndex = prevChildAtSameIndex.sibling); + } + + hasChildOrderChanged || null == prevChildAtSameIndex || (hasChildOrderChanged = !0); + } + + enqueueUpdateIfNecessary(nextFiber, hasChildOrderChanged); + } + + function walkTree() { + hook.getFiberRoots(rid).forEach(function (root) { + mountFiber(root.current); + }), flushPendingEvents(); + } + + function cleanup() {} + + function handleCommitFiberUnmount(fiber) { + enqueueUnmount(fiber); + } + + function handleCommitFiberRoot(root) { + var current = root.current, + alternate = current.alternate; + + if (alternate) { + var wasMounted = null != alternate.memoizedState && null != alternate.memoizedState.element, + isMounted = null != current.memoizedState && null != current.memoizedState.element; + !wasMounted && isMounted ? mountFiber(current) : wasMounted && isMounted ? updateFiber(current, alternate) : wasMounted && !isMounted && enqueueUnmount(current); + } else mountFiber(current); + + flushPendingEvents(); + } + + function getNativeFromReactElement(fiber) { + try { + var opaqueNode = fiber, + hostInstance = renderer.findHostInstanceByFiber(opaqueNode); + return hostInstance; + } catch (err) { + return null; + } + } + + function getReactElementFromNative(hostInstance) { + var fiber = renderer.findFiberByHostInstance(hostInstance); + + if (null != fiber) { + var opaqueNode = getOpaqueNode(fiber); + return opaqueNode; + } + + return null; + } + + var opaqueNodes = new Set(), + pendingEvents = []; + return { + getNativeFromReactElement: getNativeFromReactElement, + getReactElementFromNative: getReactElementFromNative, + handleCommitFiberRoot: handleCommitFiberRoot, + handleCommitFiberUnmount: handleCommitFiberUnmount, + cleanup: cleanup, + walkTree: walkTree + }; + } + + var getDataFiber = __webpack_require__(43), + _require = __webpack_require__(44), + ClassComponent = _require.ClassComponent, + HostRoot = _require.HostRoot, + PerformedWork = 1; + + module.exports = attachRendererFiber; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function getDataFiber(fiber, getOpaqueNode) { + var type = fiber.type, + key = fiber.key, + ref = fiber.ref, + source = fiber._debugSource, + publicInstance = null, + props = null, + state = null, + children = null, + context = null, + updater = null, + nodeType = null, + name = null, + text = null; + + switch (fiber.tag) { + case FunctionalComponent: + case ClassComponent: + nodeType = "Composite", name = getDisplayName(fiber.type), publicInstance = fiber.stateNode, props = fiber.memoizedProps, state = fiber.memoizedState, null != publicInstance && (context = publicInstance.context, context && 0 === Object.keys(context).length && (context = null)); + var inst = publicInstance; + inst && (updater = { + setState: inst.setState && inst.setState.bind(inst), + forceUpdate: inst.forceUpdate && inst.forceUpdate.bind(inst), + setInProps: inst.forceUpdate && setInProps.bind(null, fiber), + setInState: inst.forceUpdate && setInState.bind(null, inst), + setInContext: inst.forceUpdate && setInContext.bind(null, inst) + }), children = []; + break; + + case HostRoot: + nodeType = "Wrapper", children = []; + break; + + case HostPortal: + nodeType = "Portal", name = "ReactPortal", props = { + target: fiber.stateNode.containerInfo + }, children = []; + break; + + case HostComponent: + nodeType = "Native", name = fiber.type, name = name.replace("topsecret-", ""), publicInstance = fiber.stateNode, props = fiber.memoizedProps, children = "string" == typeof props.children || "number" == typeof props.children ? props.children.toString() : [], "function" == typeof fiber.stateNode.setNativeProps && (updater = { + setNativeProps: function setNativeProps(nativeProps) { + fiber.stateNode.setNativeProps(nativeProps); + } + }); + break; + + case HostText: + nodeType = "Text", text = fiber.memoizedProps; + break; + + case Fragment: + nodeType = "Wrapper", children = []; + break; + + default: + nodeType = "Native", props = fiber.memoizedProps, name = "TODO_NOT_IMPLEMENTED_YET", children = []; + } + + if (Array.isArray(children)) for (var child = fiber.child; child;) { + children.push(getOpaqueNode(child)), child = child.sibling; + } + return { + nodeType: nodeType, + type: type, + key: key, + ref: ref, + source: source, + name: name, + props: props, + state: state, + context: context, + children: children, + text: text, + updater: updater, + publicInstance: publicInstance + }; + } + + function setInProps(fiber, path, value) { + var inst = fiber.stateNode; + fiber.pendingProps = copyWithSet(inst.props, path, value), fiber.alternate && (fiber.alternate.pendingProps = fiber.pendingProps), fiber.stateNode.forceUpdate(); + } + + function setInState(inst, path, value) { + setIn(inst.state, path, value), inst.forceUpdate(); + } + + function setInContext(inst, path, value) { + setIn(inst.context, path, value), inst.forceUpdate(); + } + + function setIn(obj, path, value) { + var last = path.pop(), + parent = path.reduce(function (obj_, attr) { + return obj_ ? obj_[attr] : null; + }, obj); + parent && (parent[last] = value); + } + + var copyWithSet = __webpack_require__(37), + getDisplayName = __webpack_require__(38), + _require = __webpack_require__(44), + FunctionalComponent = _require.FunctionalComponent, + ClassComponent = _require.ClassComponent, + HostRoot = _require.HostRoot, + HostPortal = _require.HostPortal, + HostComponent = _require.HostComponent, + HostText = _require.HostText, + Fragment = _require.Fragment; + + module.exports = getDataFiber; + }, function (module, exports) { + "use strict"; + + module.exports = { + IndeterminateComponent: 0, + FunctionalComponent: 1, + ClassComponent: 2, + HostRoot: 3, + HostPortal: 4, + HostComponent: 5, + HostText: 6, + CoroutineComponent: 7, + CoroutineHandlerPhase: 8, + YieldComponent: 9, + Fragment: 10 + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function _defineProperty(obj, key, value) { + return key in obj ? Object.defineProperty(obj, key, { + value: value, + enumerable: !0, + configurable: !0, + writable: !0 + }) : obj[key] = value, obj; + } + + function measureStyle(agent, bridge, resolveRNStyle, id) { + var node = agent.elementData.get(id); + if (!node || !node.props) return void bridge.send("rn-style:measure", {}); + var style = resolveRNStyle(node.props.style); + styleOverridesByHostComponentId[id] && (style = babelHelpers.extends({}, style, styleOverridesByHostComponentId[id])); + var instance = node.publicInstance; + return instance && instance.measure ? void instance.measure(function (x, y, width, height, left, top) { + if ("number" != typeof x) return void bridge.send("rn-style:measure", { + style: style + }); + var margin = style && resolveBoxStyle("margin", style) || blank, + padding = style && resolveBoxStyle("padding", style) || blank; + bridge.send("rn-style:measure", { + style: style, + measuredLayout: { + x: x, + y: y, + width: width, + height: height, + left: left, + top: top, + margin: margin, + padding: padding + } + }); + }) : void bridge.send("rn-style:measure", { + style: style + }); + } + + function shallowClone(obj) { + var nobj = {}; + + for (var n in obj) { + nobj[n] = obj[n]; + } + + return nobj; + } + + function renameStyle(agent, id, oldName, newName, val) { + var _ref3, + data = agent.elementData.get(id), + newStyle = newName ? (_ref3 = {}, _defineProperty(_ref3, oldName, void 0), _defineProperty(_ref3, newName, val), _ref3) : _defineProperty({}, oldName, void 0); + + if (data && data.updater && data.updater.setInProps) { + var customStyle, + style = data && data.props && data.props.style; + + if (Array.isArray(style)) { + var lastLength = style.length - 1; + "object" !== _typeof(style[lastLength]) || Array.isArray(style[lastLength]) ? (style = style.concat([newStyle]), data.updater.setInProps(["style"], style)) : (customStyle = shallowClone(style[lastLength]), delete customStyle[oldName], newName ? customStyle[newName] = val : customStyle[oldName] = void 0, data.updater.setInProps(["style", lastLength], customStyle)); + } else "object" === ("undefined" == typeof style ? "undefined" : _typeof(style)) ? (customStyle = shallowClone(style), delete customStyle[oldName], newName ? customStyle[newName] = val : customStyle[oldName] = void 0, data.updater.setInProps(["style"], customStyle)) : (style = [style, newStyle], data.updater.setInProps(["style"], style)); + } else { + if (!(data && data.updater && data.updater.setNativeProps)) return; + styleOverridesByHostComponentId[id] ? babelHelpers.extends(styleOverridesByHostComponentId[id], newStyle) : styleOverridesByHostComponentId[id] = newStyle, data.updater.setNativeProps({ + style: newStyle + }); + } + + agent.emit("hideHighlight"); + } + + function setStyle(agent, id, attr, val) { + var data = agent.elementData.get(id), + newStyle = _defineProperty({}, attr, val); + + if (data && data.updater && data.updater.setInProps) { + var style = data.props && data.props.style; + + if (Array.isArray(style)) { + var lastLength = style.length - 1; + "object" !== _typeof(style[lastLength]) || Array.isArray(style[lastLength]) ? (style = style.concat([newStyle]), data.updater.setInProps(["style"], style)) : data.updater.setInProps(["style", lastLength, attr], val); + } else style = [style, newStyle], data.updater.setInProps(["style"], style); + } else { + if (!(data && data.updater && data.updater.setNativeProps)) return; + styleOverridesByHostComponentId[id] ? babelHelpers.extends(styleOverridesByHostComponentId[id], newStyle) : styleOverridesByHostComponentId[id] = newStyle, data.updater.setNativeProps({ + style: newStyle + }); + } + + agent.emit("hideHighlight"); + } + + var _typeof = "function" == typeof Symbol && "symbol" == typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }, + resolveBoxStyle = __webpack_require__(46), + styleOverridesByHostComponentId = {}; + + module.exports = function (bridge, agent, resolveRNStyle) { + bridge.onCall("rn-style:get", function (id) { + var node = agent.elementData.get(id); + return node && node.props ? resolveRNStyle(node.props.style) : null; + }), bridge.on("rn-style:measure", function (id) { + measureStyle(agent, bridge, resolveRNStyle, id); + }), bridge.on("rn-style:rename", function (_ref) { + var id = _ref.id, + oldName = _ref.oldName, + newName = _ref.newName, + val = _ref.val; + renameStyle(agent, id, oldName, newName, val), setTimeout(function () { + return measureStyle(agent, bridge, resolveRNStyle, id); + }); + }), bridge.on("rn-style:set", function (_ref2) { + var id = _ref2.id, + attr = _ref2.attr, + val = _ref2.val; + setStyle(agent, id, attr, val), setTimeout(function () { + return measureStyle(agent, bridge, resolveRNStyle, id); + }); + }); + }; + + var blank = { + top: 0, + left: 0, + right: 0, + bottom: 0 + }; + }, function (module, exports) { + "use strict"; + + function resolveBoxStyle(prefix, style) { + var res = {}, + subs = ["top", "left", "bottom", "right"], + set = !1; + return subs.forEach(function (sub) { + res[sub] = style[prefix] || 0; + }), style[prefix] && (set = !0), style[prefix + "Vertical"] && (res.top = res.bottom = style[prefix + "Vertical"], set = !0), style[prefix + "Horizontal"] && (res.left = res.right = style[prefix + "Horizontal"], set = !0), subs.forEach(function (sub) { + var val = style[prefix + capFirst(sub)]; + val && (res[sub] = val, set = !0); + }), set ? res : null; + } + + function capFirst(text) { + return text[0].toUpperCase() + text.slice(1); + } + + module.exports = resolveBoxStyle; + }, function (module, exports) { + "use strict"; + + function decorate(obj, attr, fn) { + var old = obj[attr]; + return obj[attr] = function () { + var res = old.apply(this, arguments); + return fn.apply(this, arguments), res; + }, function () { + obj[attr] = old; + }; + } + + var subscriptionEnabled = !1; + + module.exports = function (bridge, agent, hook) { + function sendStoreData() { + subscriptionEnabled && bridge.send("relay:store", { + id: "relay:store", + nodes: DefaultStoreData.getNodeData() + }); + } + + var shouldEnable = !!hook._relayInternals; + + if (bridge.onCall("relay:check", function () { + return shouldEnable; + }), shouldEnable) { + var _hook$_relayInternals = hook._relayInternals, + DefaultStoreData = _hook$_relayInternals.DefaultStoreData, + setRequestListener = _hook$_relayInternals.setRequestListener; + bridge.onCall("relay:store:enable", function () { + subscriptionEnabled = !0, sendStoreData(); + }), bridge.onCall("relay:store:disable", function () { + subscriptionEnabled = !1; + }), sendStoreData(), decorate(DefaultStoreData, "handleUpdatePayload", sendStoreData), decorate(DefaultStoreData, "handleQueryPayload", sendStoreData); + var removeListener = setRequestListener(function (event, data) { + bridge.send(event, data); + }); + hook.on("shutdown", removeListener); + } + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + var Highlighter = __webpack_require__(49); + + module.exports = function (agent) { + var hl = new Highlighter(window, function (node) { + agent.selectFromDOMNode(node); + }); + agent.on("highlight", function (data) { + return hl.highlight(data.node, data.name); + }), agent.on("highlightMany", function (nodes) { + return hl.highlightMany(nodes); + }), agent.on("hideHighlight", function () { + return hl.hideHighlight(); + }), agent.on("refreshMultiOverlay", function () { + return hl.refreshMultiOverlay(); + }), agent.on("startInspecting", function () { + return hl.startInspecting(); + }), agent.on("stopInspecting", function () { + return hl.stopInspecting(); + }), agent.on("shutdown", function () { + hl.remove(); + }); + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); + } + + function captureSubscription(obj, evt, cb) { + return obj.addEventListener(evt, cb, !0), function () { + return obj.removeEventListener(evt, cb, !0); + }; + } + + function makeMagnifier() { + var button = window.document.createElement("button"); + return button.innerHTML = "🔍", button.style.backgroundColor = "transparent", button.style.border = "none", button.style.outline = "none", button.style.cursor = "pointer", button.style.position = "fixed", button.style.bottom = "10px", button.style.right = "10px", button.style.fontSize = "30px", button.style.zIndex = 1e7, button; + } + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), Constructor; + }; + }(), + Overlay = __webpack_require__(50), + MultiOverlay = __webpack_require__(52), + Highlighter = function () { + function Highlighter(win, onSelect) { + _classCallCheck(this, Highlighter), this._win = win, this._onSelect = onSelect, this._overlay = null, this._multiOverlay = null, this._subs = []; + } + + return _createClass(Highlighter, [{ + key: "startInspecting", + value: function value() { + this._inspecting = !0, this._subs = [captureSubscription(this._win, "mouseover", this.onHover.bind(this)), captureSubscription(this._win, "mousedown", this.onMouseDown.bind(this)), captureSubscription(this._win, "click", this.onClick.bind(this))]; + } + }, { + key: "stopInspecting", + value: function value() { + this._subs.forEach(function (unsub) { + return unsub(); + }), this.hideHighlight(); + } + }, { + key: "remove", + value: function value() { + this.stopInspecting(), this._button && this._button.parentNode && this._button.parentNode.removeChild(this._button); + } + }, { + key: "highlight", + value: function value(node, name) { + this.removeMultiOverlay(), node.nodeType !== Node.COMMENT_NODE && (this._overlay || (this._overlay = new Overlay(this._win)), this._overlay.inspect(node, name)); + } + }, { + key: "highlightMany", + value: function value(nodes) { + this.removeOverlay(), this._multiOverlay || (this._multiOverlay = new MultiOverlay(this._win)), this._multiOverlay.highlightMany(nodes); + } + }, { + key: "hideHighlight", + value: function value() { + this._inspecting = !1, this.removeOverlay(), this.removeMultiOverlay(); + } + }, { + key: "refreshMultiOverlay", + value: function value() { + this._multiOverlay && this._multiOverlay.refresh(); + } + }, { + key: "removeOverlay", + value: function value() { + this._overlay && (this._overlay.remove(), this._overlay = null); + } + }, { + key: "removeMultiOverlay", + value: function value() { + this._multiOverlay && (this._multiOverlay.remove(), this._multiOverlay = null); + } + }, { + key: "onMouseDown", + value: function value(evt) { + this._inspecting && (evt.preventDefault(), evt.stopPropagation(), evt.cancelBubble = !0, this._onSelect(evt.target)); + } + }, { + key: "onClick", + value: function value(evt) { + this._inspecting && (this._subs.forEach(function (unsub) { + return unsub(); + }), evt.preventDefault(), evt.stopPropagation(), evt.cancelBubble = !0, this.hideHighlight()); + } + }, { + key: "onHover", + value: function value(evt) { + this._inspecting && (evt.preventDefault(), evt.stopPropagation(), evt.cancelBubble = !0, this.highlight(evt.target)); + } + }, { + key: "injectButton", + value: function value() { + this._button = makeMagnifier(), this._button.onclick = this.startInspecting.bind(this), this._win.document.body.appendChild(this._button); + } + }]), Highlighter; + }(); + + module.exports = Highlighter; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); + } + + function findTipPos(dims, win) { + var top, + tipHeight = 20, + margin = 5; + return top = dims.top + dims.height + tipHeight <= win.innerHeight ? dims.top + dims.height < 0 ? margin : dims.top + dims.height + margin : dims.top - tipHeight <= win.innerHeight ? dims.top - tipHeight - margin < margin ? margin : dims.top - tipHeight - margin : win.innerHeight - tipHeight - margin, top += "px", dims.left < 0 ? { + top: top, + left: margin + } : dims.left + 200 > win.innerWidth ? { + top: top, + right: margin + } : { + top: top, + left: dims.left + margin + "px" + }; + } + + function getElementDimensions(domElement) { + var calculatedStyle = window.getComputedStyle(domElement); + return { + borderLeft: +calculatedStyle.borderLeftWidth.match(/[0-9]*/)[0], + borderRight: +calculatedStyle.borderRightWidth.match(/[0-9]*/)[0], + borderTop: +calculatedStyle.borderTopWidth.match(/[0-9]*/)[0], + borderBottom: +calculatedStyle.borderBottomWidth.match(/[0-9]*/)[0], + marginLeft: +calculatedStyle.marginLeft.match(/[0-9]*/)[0], + marginRight: +calculatedStyle.marginRight.match(/[0-9]*/)[0], + marginTop: +calculatedStyle.marginTop.match(/[0-9]*/)[0], + marginBottom: +calculatedStyle.marginBottom.match(/[0-9]*/)[0], + paddingLeft: +calculatedStyle.paddingLeft.match(/[0-9]*/)[0], + paddingRight: +calculatedStyle.paddingRight.match(/[0-9]*/)[0], + paddingTop: +calculatedStyle.paddingTop.match(/[0-9]*/)[0], + paddingBottom: +calculatedStyle.paddingBottom.match(/[0-9]*/)[0] + }; + } + + function getOwnerWindow(node) { + return node.ownerDocument ? node.ownerDocument.defaultView : null; + } + + function getOwnerIframe(node) { + var nodeWindow = getOwnerWindow(node); + return nodeWindow ? nodeWindow.frameElement : null; + } + + function getBoundingClientRectWithBorderOffset(node) { + var dimensions = getElementDimensions(node); + return mergeRectOffsets([node.getBoundingClientRect(), { + top: dimensions.borderTop, + left: dimensions.borderLeft, + bottom: dimensions.borderBottom, + right: dimensions.borderRight, + width: 0, + height: 0 + }]); + } + + function mergeRectOffsets(rects) { + return rects.reduce(function (previousRect, rect) { + return null == previousRect ? rect : { + top: previousRect.top + rect.top, + left: previousRect.left + rect.left, + width: previousRect.width, + height: previousRect.height, + bottom: previousRect.bottom + rect.bottom, + right: previousRect.right + rect.right + }; + }); + } + + function getNestedBoundingClientRect(node, boundaryWindow) { + var ownerIframe = getOwnerIframe(node); + + if (ownerIframe && ownerIframe !== boundaryWindow) { + for (var rects = [node.getBoundingClientRect()], currentIframe = ownerIframe, onlyOneMore = !1; currentIframe;) { + var rect = getBoundingClientRectWithBorderOffset(currentIframe); + if (rects.push(rect), currentIframe = getOwnerIframe(currentIframe), onlyOneMore) break; + currentIframe && getOwnerWindow(currentIframe) === boundaryWindow && (onlyOneMore = !0); + } + + return mergeRectOffsets(rects); + } + + return node.getBoundingClientRect(); + } + + function boxWrap(dims, what, node) { + assign(node.style, { + borderTopWidth: dims[what + "Top"] + "px", + borderLeftWidth: dims[what + "Left"] + "px", + borderRightWidth: dims[what + "Right"] + "px", + borderBottomWidth: dims[what + "Bottom"] + "px", + borderStyle: "solid" + }); + } + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), Constructor; + }; + }(), + assign = __webpack_require__(3), + _require = __webpack_require__(51), + monospace = _require.monospace, + Overlay = function () { + function Overlay(window) { + _classCallCheck(this, Overlay); + + var doc = window.document; + this.win = window, this.container = doc.createElement("div"), this.node = doc.createElement("div"), this.border = doc.createElement("div"), this.padding = doc.createElement("div"), this.content = doc.createElement("div"), this.border.style.borderColor = overlayStyles.border, this.padding.style.borderColor = overlayStyles.padding, this.content.style.backgroundColor = overlayStyles.background, assign(this.node.style, { + borderColor: overlayStyles.margin, + pointerEvents: "none", + position: "fixed" + }), this.tip = doc.createElement("div"), assign(this.tip.style, { + backgroundColor: "#333740", + borderRadius: "2px", + fontFamily: monospace.family, + fontWeight: "bold", + padding: "3px 5px", + position: "fixed", + fontSize: monospace.sizes.normal + }), this.nameSpan = doc.createElement("span"), this.tip.appendChild(this.nameSpan), assign(this.nameSpan.style, { + color: "#ee78e6", + borderRight: "1px solid #aaaaaa", + paddingRight: "0.5rem", + marginRight: "0.5rem" + }), this.dimSpan = doc.createElement("span"), this.tip.appendChild(this.dimSpan), assign(this.dimSpan.style, { + color: "#d7d7d7" + }), this.container.style.zIndex = 1e7, this.node.style.zIndex = 1e7, this.tip.style.zIndex = 1e7, this.container.appendChild(this.node), this.container.appendChild(this.tip), this.node.appendChild(this.border), this.border.appendChild(this.padding), this.padding.appendChild(this.content), doc.body.appendChild(this.container); + } + + return _createClass(Overlay, [{ + key: "remove", + value: function value() { + this.container.parentNode && this.container.parentNode.removeChild(this.container); + } + }, { + key: "inspect", + value: function value(node, name) { + if (node.nodeType === Node.ELEMENT_NODE) { + var box = getNestedBoundingClientRect(node, this.win), + dims = getElementDimensions(node); + boxWrap(dims, "margin", this.node), boxWrap(dims, "border", this.border), boxWrap(dims, "padding", this.padding), assign(this.content.style, { + height: box.height - dims.borderTop - dims.borderBottom - dims.paddingTop - dims.paddingBottom + "px", + width: box.width - dims.borderLeft - dims.borderRight - dims.paddingLeft - dims.paddingRight + "px" + }), assign(this.node.style, { + top: box.top - dims.marginTop + "px", + left: box.left - dims.marginLeft + "px" + }), this.nameSpan.textContent = name || node.nodeName.toLowerCase(), this.dimSpan.textContent = box.width + "px × " + box.height + "px"; + var tipPos = findTipPos({ + top: box.top - dims.marginTop, + left: box.left - dims.marginLeft, + height: box.height + dims.marginTop + dims.marginBottom, + width: box.width + dims.marginLeft + dims.marginRight + }, this.win); + assign(this.tip.style, tipPos); + } + } + }]), Overlay; + }(), + overlayStyles = { + background: "rgba(120, 170, 210, 0.7)", + padding: "rgba(77, 200, 0, 0.3)", + margin: "rgba(255, 155, 0, 0.3)", + border: "rgba(255, 200, 50, 0.3)" + }; + + module.exports = Overlay; + }, function (module, exports) { + "use strict"; + + module.exports = { + monospace: { + family: "Menlo, Consolas, monospace", + sizes: { + normal: 11, + large: 14 + } + }, + sansSerif: { + family: '"Helvetica Neue", "Lucida Grande", -apple-system, BlinkMacSystemFont, "Segoe UI", Ubuntu, sans-serif', + sizes: { + small: 10, + normal: 12, + large: 14 + } + } + }; + }, function (module, exports, __webpack_require__) { + "use strict"; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); + } + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), Constructor; + }; + }(), + assign = __webpack_require__(3), + MultiOverlay = function () { + function MultiOverlay(window) { + _classCallCheck(this, MultiOverlay), this.win = window; + var doc = window.document; + this.container = doc.createElement("div"), doc.body.appendChild(this.container), this._currentNodes = null; + } + + return _createClass(MultiOverlay, [{ + key: "highlightMany", + value: function value(nodes) { + var _this = this; + + this._currentNodes = nodes, this.container.innerHTML = "", nodes.forEach(function (node) { + var div = _this.win.document.createElement("div"); + + if ("function" == typeof node.getBoundingClientRect) { + var box = node.getBoundingClientRect(); + box.bottom < 0 || box.top > window.innerHeight || (assign(div.style, { + top: box.top + "px", + left: box.left + "px", + width: box.width + "px", + height: box.height + "px", + border: "2px dotted rgba(200, 100, 100, .8)", + boxSizing: "border-box", + backgroundColor: "rgba(200, 100, 100, .2)", + position: "fixed", + zIndex: 1e7, + pointerEvents: "none" + }), _this.container.appendChild(div)); + } + }); + } + }, { + key: "refresh", + value: function value() { + this._currentNodes && this.highlightMany(this._currentNodes); + } + }, { + key: "remove", + value: function value() { + this.container.parentNode && (this.container.parentNode.removeChild(this.container), this._currentNodes = null); + } + }]), MultiOverlay; + }(); + + module.exports = MultiOverlay; + }]); + }); +},151,[],"react-devtools-core/build/backend.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var ReactNativePropRegistry; + + function getStyle(style) { + if (ReactNativePropRegistry === undefined) { + ReactNativePropRegistry = require(_dependencyMap[1], 'ReactNativePropRegistry'); + } + + if (typeof style === 'number') { + return ReactNativePropRegistry.getByID(style); + } + + return style; + } + + function flattenStyle(style) { + if (!style) { + return undefined; + } + + invariant(style !== true, 'style may be false but not true'); + + if (!Array.isArray(style)) { + return getStyle(style); + } + + var result = {}; + + for (var i = 0, styleLength = style.length; i < styleLength; ++i) { + var computedStyle = flattenStyle(style[i]); + + if (computedStyle) { + for (var key in computedStyle) { + result[key] = computedStyle[key]; + } + } + } + + return result; + } + + module.exports = flattenStyle; +},152,[18,153],"flattenStyle"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactNativePropRegistry; +},153,[74],"ReactNativePropRegistry"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var JSInspector = { + registerAgent: function registerAgent(type) { + if (global.__registerInspectorAgent) { + global.__registerInspectorAgent(type); + } + }, + getTimestamp: function getTimestamp() { + return global.__inspectorTimestamp(); + } + }; + module.exports = JSInspector; +},154,[],"JSInspector"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var InspectorAgent = require(_dependencyMap[0], 'InspectorAgent'); + + var JSInspector = require(_dependencyMap[1], 'JSInspector'); + + var Map = require(_dependencyMap[2], 'Map'); + + var XMLHttpRequest = require(_dependencyMap[3], 'XMLHttpRequest'); + + var Interceptor = function () { + function Interceptor(agent) { + babelHelpers.classCallCheck(this, Interceptor); + this._agent = agent; + this._requests = new Map(); + } + + babelHelpers.createClass(Interceptor, [{ + key: "getData", + value: function getData(requestId) { + return this._requests.get(requestId); + } + }, { + key: "requestSent", + value: function requestSent(id, url, method, headers) { + var requestId = String(id); + + this._requests.set(requestId, ''); + + var request = { + url: url, + method: method, + headers: headers, + initialPriority: 'Medium' + }; + var event = { + requestId: requestId, + documentURL: '', + frameId: '1', + loaderId: '1', + request: request, + timestamp: JSInspector.getTimestamp(), + initiator: { + type: 'other' + }, + type: 'Other' + }; + + this._agent.sendEvent('requestWillBeSent', event); + } + }, { + key: "responseReceived", + value: function responseReceived(id, url, status, headers) { + var requestId = String(id); + var response = { + url: url, + status: status, + statusText: String(status), + headers: headers, + requestHeaders: {}, + mimeType: this._getMimeType(headers), + connectionReused: false, + connectionId: -1, + encodedDataLength: 0, + securityState: 'unknown' + }; + var event = { + requestId: requestId, + frameId: '1', + loaderId: '1', + timestamp: JSInspector.getTimestamp(), + type: 'Other', + response: response + }; + + this._agent.sendEvent('responseReceived', event); + } + }, { + key: "dataReceived", + value: function dataReceived(id, data) { + var requestId = String(id); + var existingData = this._requests.get(requestId) || ''; + + this._requests.set(requestId, existingData.concat(data)); + + var event = { + requestId: requestId, + timestamp: JSInspector.getTimestamp(), + dataLength: data.length, + encodedDataLength: data.length + }; + + this._agent.sendEvent('dataReceived', event); + } + }, { + key: "loadingFinished", + value: function loadingFinished(id, encodedDataLength) { + var event = { + requestId: String(id), + timestamp: JSInspector.getTimestamp(), + encodedDataLength: encodedDataLength + }; + + this._agent.sendEvent('loadingFinished', event); + } + }, { + key: "loadingFailed", + value: function loadingFailed(id, error) { + var event = { + requestId: String(id), + timestamp: JSInspector.getTimestamp(), + type: 'Other', + errorText: error + }; + + this._agent.sendEvent('loadingFailed', event); + } + }, { + key: "_getMimeType", + value: function _getMimeType(headers) { + var contentType = headers['Content-Type'] || ''; + return contentType.split(';')[0]; + } + }]); + return Interceptor; + }(); + + var NetworkAgent = function (_InspectorAgent) { + babelHelpers.inherits(NetworkAgent, _InspectorAgent); + + function NetworkAgent() { + babelHelpers.classCallCheck(this, NetworkAgent); + return babelHelpers.possibleConstructorReturn(this, (NetworkAgent.__proto__ || Object.getPrototypeOf(NetworkAgent)).apply(this, arguments)); + } + + babelHelpers.createClass(NetworkAgent, [{ + key: "enable", + value: function enable(_ref) { + var maxResourceBufferSize = _ref.maxResourceBufferSize, + maxTotalBufferSize = _ref.maxTotalBufferSize; + this._interceptor = new Interceptor(this); + XMLHttpRequest.setInterceptor(this._interceptor); + } + }, { + key: "disable", + value: function disable() { + XMLHttpRequest.setInterceptor(null); + this._interceptor = null; + } + }, { + key: "getResponseBody", + value: function getResponseBody(_ref2) { + var requestId = _ref2.requestId; + return { + body: this.interceptor().getData(requestId), + base64Encoded: false + }; + } + }, { + key: "interceptor", + value: function interceptor() { + if (this._interceptor) { + return this._interceptor; + } else { + throw Error('_interceptor can not be null'); + } + } + }]); + return NetworkAgent; + }(InspectorAgent); + + NetworkAgent.DOMAIN = 'Network'; + module.exports = NetworkAgent; +},155,[156,154,79,109],"NetworkAgent"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var InspectorAgent = function () { + function InspectorAgent(eventSender) { + babelHelpers.classCallCheck(this, InspectorAgent); + this._eventSender = eventSender; + } + + babelHelpers.createClass(InspectorAgent, [{ + key: "sendEvent", + value: function sendEvent(name, params) { + this._eventSender(name, params); + } + }]); + return InspectorAgent; + }(); + + module.exports = InspectorAgent; +},156,[],"InspectorAgent"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var BatchedBridge = require(_dependencyMap[0], 'BatchedBridge'); + + var RCTEventEmitter = { + register: function register(eventEmitter) { + BatchedBridge.registerCallableModule('RCTEventEmitter', eventEmitter); + } + }; + module.exports = RCTEventEmitter; +},157,[69],"RCTEventEmitter"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeModules = require(_dependencyMap[0], 'NativeModules'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var defineLazyObjectProperty = require(_dependencyMap[2], 'defineLazyObjectProperty'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var UIManager = NativeModules.UIManager; + invariant(UIManager, 'UIManager is undefined. The native module config is probably incorrect.'); + UIManager.__takeSnapshot = UIManager.takeSnapshot; + + UIManager.takeSnapshot = function () { + invariant(false, 'UIManager.takeSnapshot should not be called directly. ' + 'Use ReactNative.takeSnapshot instead.'); + }; + + if (Platform.OS === 'ios') { + Object.keys(UIManager).forEach(function (viewName) { + var viewConfig = UIManager[viewName]; + + if (viewConfig.Manager) { + defineLazyObjectProperty(viewConfig, 'Constants', { + get: function get() { + var viewManager = NativeModules[viewConfig.Manager]; + var constants = {}; + viewManager && Object.keys(viewManager).forEach(function (key) { + var value = viewManager[key]; + + if (typeof value !== 'function') { + constants[key] = value; + } + }); + return constants; + } + }); + defineLazyObjectProperty(viewConfig, 'Commands', { + get: function get() { + var viewManager = NativeModules[viewConfig.Manager]; + var commands = {}; + var index = 0; + viewManager && Object.keys(viewManager).forEach(function (key) { + var value = viewManager[key]; + + if (typeof value === 'function') { + commands[key] = index++; + } + }); + return commands; + } + }); + } + }); + } else if (Platform.OS === 'android' && UIManager.ViewManagerNames) { + UIManager.ViewManagerNames.forEach(function (viewManagerName) { + defineLazyObjectProperty(UIManager, viewManagerName, { + get: function get() { + return UIManager.getConstantsForViewManager(viewManagerName); + } + }); + }); + } + + module.exports = UIManager; +},158,[68,105,77,18],"UIManager"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Platform = require(_dependencyMap[0], 'Platform'); + + var UIManager = require(_dependencyMap[1], 'UIManager'); + + var TextInputState = { + _currentlyFocusedID: null, + currentlyFocusedField: function currentlyFocusedField() { + return this._currentlyFocusedID; + }, + focusTextInput: function focusTextInput(textFieldID) { + if (this._currentlyFocusedID !== textFieldID && textFieldID !== null) { + this._currentlyFocusedID = textFieldID; + + if (Platform.OS === 'ios') { + UIManager.focus(textFieldID); + } else if (Platform.OS === 'android') { + UIManager.dispatchViewManagerCommand(textFieldID, UIManager.AndroidTextInput.Commands.focusTextInput, null); + } + } + }, + blurTextInput: function blurTextInput(textFieldID) { + if (this._currentlyFocusedID === textFieldID && textFieldID !== null) { + this._currentlyFocusedID = null; + + if (Platform.OS === 'ios') { + UIManager.blur(textFieldID); + } else if (Platform.OS === 'android') { + UIManager.dispatchViewManagerCommand(textFieldID, UIManager.AndroidTextInput.Commands.blurTextInput, null); + } + } + } + }; + module.exports = TextInputState; +},159,[105,158],"TextInputState"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var deepDiffer = function deepDiffer(one, two) { + if (one === two) { + return false; + } + + if (typeof one === 'function' && typeof two === 'function') { + return false; + } + + if (typeof one !== 'object' || one === null) { + return one !== two; + } + + if (typeof two !== 'object' || two === null) { + return true; + } + + if (one.constructor !== two.constructor) { + return true; + } + + if (Array.isArray(one)) { + var len = one.length; + + if (two.length !== len) { + return true; + } + + for (var ii = 0; ii < len; ii++) { + if (deepDiffer(one[ii], two[ii])) { + return true; + } + } + } else { + for (var key in one) { + if (deepDiffer(one[key], two[key])) { + return true; + } + } + + for (var twoKey in two) { + if (one[twoKey] === undefined && two[twoKey] !== undefined) { + return true; + } + } + } + + return false; + }; + + module.exports = deepDiffer; +},160,[],"deepDiffer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + function is(x, y) { + if (x === y) { + return x !== 0 || y !== 0 || 1 / x === 1 / y; + } else { + return x !== x && y !== y; + } + } + + function shallowEqual(objA, objB) { + if (is(objA, objB)) { + return true; + } + + if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { + return false; + } + + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); + + if (keysA.length !== keysB.length) { + return false; + } + + for (var i = 0; i < keysA.length; i++) { + if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { + return false; + } + } + + return true; + } + + module.exports = shallowEqual; +},161,[],"fbjs/lib/shallowEqual.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function deepFreezeAndThrowOnMutationInDev(object) { + if (__DEV__) { + if (typeof object !== 'object' || object === null || Object.isFrozen(object) || Object.isSealed(object)) { + return; + } + + var keys = Object.keys(object); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + + if (object.hasOwnProperty(key)) { + object.__defineGetter__(key, identity.bind(null, object[key])); + + object.__defineSetter__(key, throwOnImmutableMutation.bind(null, key)); + } + } + + Object.freeze(object); + Object.seal(object); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + + if (object.hasOwnProperty(key)) { + deepFreezeAndThrowOnMutationInDev(object[key]); + } + } + } + } + + function throwOnImmutableMutation(key, value) { + throw Error('You attempted to set the key `' + key + '` with the value `' + JSON.stringify(value) + '` on an object that is meant to be immutable ' + 'and has been frozen.'); + } + + function identity(value) { + return value; + } + + module.exports = deepFreezeAndThrowOnMutationInDev; +},162,[],"deepFreezeAndThrowOnMutationInDev"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ReactFeatureFlags = { + debugRenderPhaseSideEffects: false + }; + module.exports = ReactFeatureFlags; +},163,[],"ReactFeatureFlags"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + require(_dependencyMap[0], "InitializeCore"); + + var invariant = require(_dependencyMap[1], "fbjs/lib/invariant"), + emptyFunction = require(_dependencyMap[2], "fbjs/lib/emptyFunction"), + RCTEventEmitter = require(_dependencyMap[3], "RCTEventEmitter"), + UIManager = require(_dependencyMap[4], "UIManager"), + React = require(_dependencyMap[5], "react"), + ExceptionsManager = require(_dependencyMap[6], "ExceptionsManager"), + TextInputState = require(_dependencyMap[7], "TextInputState"), + deepDiffer = require(_dependencyMap[8], "deepDiffer"), + flattenStyle = require(_dependencyMap[9], "flattenStyle"), + emptyObject = require(_dependencyMap[10], "fbjs/lib/emptyObject"), + shallowEqual = require(_dependencyMap[11], "fbjs/lib/shallowEqual"), + ReactErrorUtils = { + _caughtError: null, + _hasCaughtError: !1, + _rethrowError: null, + _hasRethrowError: !1, + injection: { + injectErrorUtils: function injectErrorUtils(injectedErrorUtils) { + invariant("function" === typeof injectedErrorUtils.invokeGuardedCallback, "Injected invokeGuardedCallback() must be a function."); + _invokeGuardedCallback = injectedErrorUtils.invokeGuardedCallback; + } + }, + invokeGuardedCallback: function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) { + _invokeGuardedCallback.apply(ReactErrorUtils, arguments); + }, + invokeGuardedCallbackAndCatchFirstError: function invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) { + ReactErrorUtils.invokeGuardedCallback.apply(this, arguments); + + if (ReactErrorUtils.hasCaughtError()) { + var error = ReactErrorUtils.clearCaughtError(); + ReactErrorUtils._hasRethrowError || (ReactErrorUtils._hasRethrowError = !0, ReactErrorUtils._rethrowError = error); + } + }, + rethrowCaughtError: function rethrowCaughtError() { + return _rethrowCaughtError.apply(ReactErrorUtils, arguments); + }, + hasCaughtError: function hasCaughtError() { + return ReactErrorUtils._hasCaughtError; + }, + clearCaughtError: function clearCaughtError() { + if (ReactErrorUtils._hasCaughtError) { + var error = ReactErrorUtils._caughtError; + ReactErrorUtils._caughtError = null; + ReactErrorUtils._hasCaughtError = !1; + return error; + } + + invariant(!1, "clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue."); + } + }; + + function _invokeGuardedCallback(name, func, context, a, b, c, d, e, f) { + ReactErrorUtils._hasCaughtError = !1; + ReactErrorUtils._caughtError = null; + var funcArgs = Array.prototype.slice.call(arguments, 3); + + try { + func.apply(context, funcArgs); + } catch (error) { + ReactErrorUtils._caughtError = error, ReactErrorUtils._hasCaughtError = !0; + } + } + + function _rethrowCaughtError() { + if (ReactErrorUtils._hasRethrowError) { + var error = ReactErrorUtils._rethrowError; + ReactErrorUtils._rethrowError = null; + ReactErrorUtils._hasRethrowError = !1; + throw error; + } + } + + var eventPluginOrder = null, + namesToPlugins = {}; + + function recomputePluginOrdering() { + if (eventPluginOrder) for (var pluginName in namesToPlugins) { + var pluginModule = namesToPlugins[pluginName], + pluginIndex = eventPluginOrder.indexOf(pluginName); + invariant(-1 < pluginIndex, "EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.", pluginName); + + if (!plugins[pluginIndex]) { + invariant(pluginModule.extractEvents, "EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.", pluginName); + plugins[pluginIndex] = pluginModule; + pluginIndex = pluginModule.eventTypes; + + for (var eventName in pluginIndex) { + var JSCompiler_inline_result = void 0; + var dispatchConfig = pluginIndex[eventName], + pluginModule$jscomp$0 = pluginModule, + eventName$jscomp$0 = eventName; + invariant(!eventNameDispatchConfigs.hasOwnProperty(eventName$jscomp$0), "EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.", eventName$jscomp$0); + eventNameDispatchConfigs[eventName$jscomp$0] = dispatchConfig; + var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; + + if (phasedRegistrationNames) { + for (JSCompiler_inline_result in phasedRegistrationNames) { + phasedRegistrationNames.hasOwnProperty(JSCompiler_inline_result) && publishRegistrationName(phasedRegistrationNames[JSCompiler_inline_result], pluginModule$jscomp$0, eventName$jscomp$0); + } + + JSCompiler_inline_result = !0; + } else dispatchConfig.registrationName ? (publishRegistrationName(dispatchConfig.registrationName, pluginModule$jscomp$0, eventName$jscomp$0), JSCompiler_inline_result = !0) : JSCompiler_inline_result = !1; + + invariant(JSCompiler_inline_result, "EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.", eventName, pluginName); + } + } + } + } + + function publishRegistrationName(registrationName, pluginModule) { + invariant(!registrationNameModules[registrationName], "EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.", registrationName); + registrationNameModules[registrationName] = pluginModule; + } + + var plugins = [], + eventNameDispatchConfigs = {}, + registrationNameModules = {}, + getFiberCurrentPropsFromNode = null, + getInstanceFromNode = null, + getNodeFromInstance = null; + + function isEndish(topLevelType) { + return "topMouseUp" === topLevelType || "topTouchEnd" === topLevelType || "topTouchCancel" === topLevelType; + } + + function isMoveish(topLevelType) { + return "topMouseMove" === topLevelType || "topTouchMove" === topLevelType; + } + + function isStartish(topLevelType) { + return "topMouseDown" === topLevelType || "topTouchStart" === topLevelType; + } + + function executeDispatch(event, simulated, listener, inst) { + simulated = event.type || "unknown-event"; + event.currentTarget = getNodeFromInstance(inst); + ReactErrorUtils.invokeGuardedCallbackAndCatchFirstError(simulated, listener, void 0, event); + event.currentTarget = null; + } + + function executeDirectDispatch(event) { + var dispatchListener = event._dispatchListeners, + dispatchInstance = event._dispatchInstances; + invariant(!Array.isArray(dispatchListener), "executeDirectDispatch(...): Invalid `event`."); + event.currentTarget = dispatchListener ? getNodeFromInstance(dispatchInstance) : null; + dispatchListener = dispatchListener ? dispatchListener(event) : null; + event.currentTarget = null; + event._dispatchListeners = null; + event._dispatchInstances = null; + return dispatchListener; + } + + function accumulateInto(current, next) { + invariant(null != next, "accumulateInto(...): Accumulated items must not be null or undefined."); + if (null == current) return next; + + if (Array.isArray(current)) { + if (Array.isArray(next)) return current.push.apply(current, next), current; + current.push(next); + return current; + } + + return Array.isArray(next) ? [current].concat(next) : [current, next]; + } + + function forEachAccumulated(arr, cb, scope) { + Array.isArray(arr) ? arr.forEach(cb, scope) : arr && cb.call(scope, arr); + } + + var eventQueue = null; + + function executeDispatchesAndReleaseTopLevel(e) { + if (e) { + var dispatchListeners = e._dispatchListeners, + dispatchInstances = e._dispatchInstances; + if (Array.isArray(dispatchListeners)) for (var i = 0; i < dispatchListeners.length && !e.isPropagationStopped(); i++) { + executeDispatch(e, !1, dispatchListeners[i], dispatchInstances[i]); + } else dispatchListeners && executeDispatch(e, !1, dispatchListeners, dispatchInstances); + e._dispatchListeners = null; + e._dispatchInstances = null; + e.isPersistent() || e.constructor.release(e); + } + } + + var injection = { + injectEventPluginOrder: function injectEventPluginOrder(injectedEventPluginOrder) { + invariant(!eventPluginOrder, "EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."); + eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); + recomputePluginOrdering(); + }, + injectEventPluginsByName: function injectEventPluginsByName(injectedNamesToPlugins) { + var isOrderingDirty = !1, + pluginName; + + for (pluginName in injectedNamesToPlugins) { + if (injectedNamesToPlugins.hasOwnProperty(pluginName)) { + var pluginModule = injectedNamesToPlugins[pluginName]; + namesToPlugins.hasOwnProperty(pluginName) && namesToPlugins[pluginName] === pluginModule || (invariant(!namesToPlugins[pluginName], "EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.", pluginName), namesToPlugins[pluginName] = pluginModule, isOrderingDirty = !0); + } + } + + isOrderingDirty && recomputePluginOrdering(); + } + }; + + function getListener(inst, registrationName) { + var listener = inst.stateNode; + if (!listener) return null; + var props = getFiberCurrentPropsFromNode(listener); + if (!props) return null; + listener = props[registrationName]; + + a: switch (registrationName) { + case "onClick": + case "onClickCapture": + case "onDoubleClick": + case "onDoubleClickCapture": + case "onMouseDown": + case "onMouseDownCapture": + case "onMouseMove": + case "onMouseMoveCapture": + case "onMouseUp": + case "onMouseUpCapture": + (props = !props.disabled) || (inst = inst.type, props = !("button" === inst || "input" === inst || "select" === inst || "textarea" === inst)); + inst = !props; + break a; + + default: + inst = !1; + } + + if (inst) return null; + invariant(!listener || "function" === typeof listener, "Expected `%s` listener to be a function, instead got a value of `%s` type.", registrationName, typeof listener); + return listener; + } + + function getParent(inst) { + do { + inst = inst["return"]; + } while (inst && 5 !== inst.tag); + + return inst ? inst : null; + } + + function traverseTwoPhase(inst, fn, arg) { + for (var path = []; inst;) { + path.push(inst), inst = getParent(inst); + } + + for (inst = path.length; 0 < inst--;) { + fn(path[inst], "captured", arg); + } + + for (inst = 0; inst < path.length; inst++) { + fn(path[inst], "bubbled", arg); + } + } + + function accumulateDirectionalDispatches(inst, phase, event) { + if (phase = getListener(inst, event.dispatchConfig.phasedRegistrationNames[phase])) event._dispatchListeners = accumulateInto(event._dispatchListeners, phase), event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } + + function accumulateTwoPhaseDispatchesSingle(event) { + event && event.dispatchConfig.phasedRegistrationNames && traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); + } + + function accumulateTwoPhaseDispatchesSingleSkipTarget(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + var targetInst = event._targetInst; + targetInst = targetInst ? getParent(targetInst) : null; + traverseTwoPhase(targetInst, accumulateDirectionalDispatches, event); + } + } + + function accumulateDirectDispatchesSingle(event) { + if (event && event.dispatchConfig.registrationName) { + var inst = event._targetInst; + + if (inst && event && event.dispatchConfig.registrationName) { + var listener = getListener(inst, event.dispatchConfig.registrationName); + listener && (event._dispatchListeners = accumulateInto(event._dispatchListeners, listener), event._dispatchInstances = accumulateInto(event._dispatchInstances, inst)); + } + } + } + + var shouldBeReleasedProperties = "dispatchConfig _targetInst nativeEvent isDefaultPrevented isPropagationStopped _dispatchListeners _dispatchInstances".split(" "), + EventInterface = { + type: null, + target: null, + currentTarget: emptyFunction.thatReturnsNull, + eventPhase: null, + bubbles: null, + cancelable: null, + timeStamp: function timeStamp(event) { + return event.timeStamp || Date.now(); + }, + defaultPrevented: null, + isTrusted: null + }; + + function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) { + this.dispatchConfig = dispatchConfig; + this._targetInst = targetInst; + this.nativeEvent = nativeEvent; + dispatchConfig = this.constructor.Interface; + + for (var propName in dispatchConfig) { + dispatchConfig.hasOwnProperty(propName) && ((targetInst = dispatchConfig[propName]) ? this[propName] = targetInst(nativeEvent) : "target" === propName ? this.target = nativeEventTarget : this[propName] = nativeEvent[propName]); + } + + this.isDefaultPrevented = (null != nativeEvent.defaultPrevented ? nativeEvent.defaultPrevented : !1 === nativeEvent.returnValue) ? emptyFunction.thatReturnsTrue : emptyFunction.thatReturnsFalse; + this.isPropagationStopped = emptyFunction.thatReturnsFalse; + return this; + } + + babelHelpers.extends(SyntheticEvent.prototype, { + preventDefault: function preventDefault() { + this.defaultPrevented = !0; + var event = this.nativeEvent; + event && (event.preventDefault ? event.preventDefault() : "unknown" !== typeof event.returnValue && (event.returnValue = !1), this.isDefaultPrevented = emptyFunction.thatReturnsTrue); + }, + stopPropagation: function stopPropagation() { + var event = this.nativeEvent; + event && (event.stopPropagation ? event.stopPropagation() : "unknown" !== typeof event.cancelBubble && (event.cancelBubble = !0), this.isPropagationStopped = emptyFunction.thatReturnsTrue); + }, + persist: function persist() { + this.isPersistent = emptyFunction.thatReturnsTrue; + }, + isPersistent: emptyFunction.thatReturnsFalse, + destructor: function destructor() { + var Interface = this.constructor.Interface, + propName; + + for (propName in Interface) { + this[propName] = null; + } + + for (Interface = 0; Interface < shouldBeReleasedProperties.length; Interface++) { + this[shouldBeReleasedProperties[Interface]] = null; + } + } + }); + SyntheticEvent.Interface = EventInterface; + + SyntheticEvent.augmentClass = function (Class, Interface) { + function E() {} + + E.prototype = this.prototype; + var prototype = new E(); + babelHelpers.extends(prototype, Class.prototype); + Class.prototype = prototype; + Class.prototype.constructor = Class; + Class.Interface = babelHelpers.extends({}, this.Interface, Interface); + Class.augmentClass = this.augmentClass; + addEventPoolingTo(Class); + }; + + addEventPoolingTo(SyntheticEvent); + + function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) { + if (this.eventPool.length) { + var instance = this.eventPool.pop(); + this.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst); + return instance; + } + + return new this(dispatchConfig, targetInst, nativeEvent, nativeInst); + } + + function releasePooledEvent(event) { + invariant(event instanceof this, "Trying to release an event instance into a pool of a different type."); + event.destructor(); + 10 > this.eventPool.length && this.eventPool.push(event); + } + + function addEventPoolingTo(EventConstructor) { + EventConstructor.eventPool = []; + EventConstructor.getPooled = getPooledEvent; + EventConstructor.release = releasePooledEvent; + } + + function ResponderSyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); + } + + SyntheticEvent.augmentClass(ResponderSyntheticEvent, { + touchHistory: function touchHistory() { + return null; + } + }); + var touchBank = [], + touchHistory = { + touchBank: touchBank, + numberActiveTouches: 0, + indexOfSingleActiveTouch: -1, + mostRecentTimeStamp: 0 + }; + + function timestampForTouch(touch) { + return touch.timeStamp || touch.timestamp; + } + + function getTouchIdentifier(_ref) { + _ref = _ref.identifier; + invariant(null != _ref, "Touch object is missing identifier."); + return _ref; + } + + function recordTouchStart(touch) { + var identifier = getTouchIdentifier(touch), + touchRecord = touchBank[identifier]; + touchRecord ? (touchRecord.touchActive = !0, touchRecord.startPageX = touch.pageX, touchRecord.startPageY = touch.pageY, touchRecord.startTimeStamp = timestampForTouch(touch), touchRecord.currentPageX = touch.pageX, touchRecord.currentPageY = touch.pageY, touchRecord.currentTimeStamp = timestampForTouch(touch), touchRecord.previousPageX = touch.pageX, touchRecord.previousPageY = touch.pageY, touchRecord.previousTimeStamp = timestampForTouch(touch)) : (touchRecord = { + touchActive: !0, + startPageX: touch.pageX, + startPageY: touch.pageY, + startTimeStamp: timestampForTouch(touch), + currentPageX: touch.pageX, + currentPageY: touch.pageY, + currentTimeStamp: timestampForTouch(touch), + previousPageX: touch.pageX, + previousPageY: touch.pageY, + previousTimeStamp: timestampForTouch(touch) + }, touchBank[identifier] = touchRecord); + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } + + function recordTouchMove(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + touchRecord ? (touchRecord.touchActive = !0, touchRecord.previousPageX = touchRecord.currentPageX, touchRecord.previousPageY = touchRecord.currentPageY, touchRecord.previousTimeStamp = touchRecord.currentTimeStamp, touchRecord.currentPageX = touch.pageX, touchRecord.currentPageY = touch.pageY, touchRecord.currentTimeStamp = timestampForTouch(touch), touchHistory.mostRecentTimeStamp = timestampForTouch(touch)) : console.error("Cannot record touch move without a touch start.\nTouch Move: %s\n", "Touch Bank: %s", printTouch(touch), printTouchBank()); + } + + function recordTouchEnd(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + touchRecord ? (touchRecord.touchActive = !1, touchRecord.previousPageX = touchRecord.currentPageX, touchRecord.previousPageY = touchRecord.currentPageY, touchRecord.previousTimeStamp = touchRecord.currentTimeStamp, touchRecord.currentPageX = touch.pageX, touchRecord.currentPageY = touch.pageY, touchRecord.currentTimeStamp = timestampForTouch(touch), touchHistory.mostRecentTimeStamp = timestampForTouch(touch)) : console.error("Cannot record touch end without a touch start.\nTouch End: %s\n", "Touch Bank: %s", printTouch(touch), printTouchBank()); + } + + function printTouch(touch) { + return JSON.stringify({ + identifier: touch.identifier, + pageX: touch.pageX, + pageY: touch.pageY, + timestamp: timestampForTouch(touch) + }); + } + + function printTouchBank() { + var printed = JSON.stringify(touchBank.slice(0, 20)); + 20 < touchBank.length && (printed += " (original size: " + touchBank.length + ")"); + return printed; + } + + var ResponderTouchHistoryStore = { + recordTouchTrack: function recordTouchTrack(topLevelType, nativeEvent) { + if (isMoveish(topLevelType)) nativeEvent.changedTouches.forEach(recordTouchMove);else if (isStartish(topLevelType)) nativeEvent.changedTouches.forEach(recordTouchStart), touchHistory.numberActiveTouches = nativeEvent.touches.length, 1 === touchHistory.numberActiveTouches && (touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier);else if (isEndish(topLevelType) && (nativeEvent.changedTouches.forEach(recordTouchEnd), touchHistory.numberActiveTouches = nativeEvent.touches.length, 1 === touchHistory.numberActiveTouches)) for (topLevelType = 0; topLevelType < touchBank.length; topLevelType++) { + if (nativeEvent = touchBank[topLevelType], null != nativeEvent && nativeEvent.touchActive) { + touchHistory.indexOfSingleActiveTouch = topLevelType; + break; + } + } + }, + touchHistory: touchHistory + }; + + function accumulate(current, next) { + invariant(null != next, "accumulate(...): Accumulated items must be not be null or undefined."); + return null == current ? next : Array.isArray(current) ? current.concat(next) : Array.isArray(next) ? [current].concat(next) : [current, next]; + } + + var responderInst = null, + trackedTouchCount = 0, + previousActiveTouches = 0; + + function changeResponder(nextResponderInst, blockHostResponder) { + var oldResponderInst = responderInst; + responderInst = nextResponderInst; + if (null !== ResponderEventPlugin.GlobalResponderHandler) ResponderEventPlugin.GlobalResponderHandler.onChange(oldResponderInst, nextResponderInst, blockHostResponder); + } + + var eventTypes = { + startShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onStartShouldSetResponder", + captured: "onStartShouldSetResponderCapture" + } + }, + scrollShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onScrollShouldSetResponder", + captured: "onScrollShouldSetResponderCapture" + } + }, + selectionChangeShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onSelectionChangeShouldSetResponder", + captured: "onSelectionChangeShouldSetResponderCapture" + } + }, + moveShouldSetResponder: { + phasedRegistrationNames: { + bubbled: "onMoveShouldSetResponder", + captured: "onMoveShouldSetResponderCapture" + } + }, + responderStart: { + registrationName: "onResponderStart" + }, + responderMove: { + registrationName: "onResponderMove" + }, + responderEnd: { + registrationName: "onResponderEnd" + }, + responderRelease: { + registrationName: "onResponderRelease" + }, + responderTerminationRequest: { + registrationName: "onResponderTerminationRequest" + }, + responderGrant: { + registrationName: "onResponderGrant" + }, + responderReject: { + registrationName: "onResponderReject" + }, + responderTerminate: { + registrationName: "onResponderTerminate" + } + }, + ResponderEventPlugin = { + _getResponder: function _getResponder() { + return responderInst; + }, + eventTypes: eventTypes, + extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + if (isStartish(topLevelType)) trackedTouchCount += 1;else if (isEndish(topLevelType)) if (0 <= trackedTouchCount) --trackedTouchCount;else return console.error("Ended a touch event which was not counted in `trackedTouchCount`."), null; + ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent); + + if (targetInst && ("topScroll" === topLevelType && !nativeEvent.responderIgnoreScroll || 0 < trackedTouchCount && "topSelectionChange" === topLevelType || isStartish(topLevelType) || isMoveish(topLevelType))) { + var shouldSetEventType = isStartish(topLevelType) ? eventTypes.startShouldSetResponder : isMoveish(topLevelType) ? eventTypes.moveShouldSetResponder : "topSelectionChange" === topLevelType ? eventTypes.selectionChangeShouldSetResponder : eventTypes.scrollShouldSetResponder; + if (responderInst) b: { + var JSCompiler_temp = responderInst; + + for (var depthA = 0, tempA = JSCompiler_temp; tempA; tempA = getParent(tempA)) { + depthA++; + } + + tempA = 0; + + for (var tempB = targetInst; tempB; tempB = getParent(tempB)) { + tempA++; + } + + for (; 0 < depthA - tempA;) { + JSCompiler_temp = getParent(JSCompiler_temp), depthA--; + } + + for (; 0 < tempA - depthA;) { + targetInst = getParent(targetInst), tempA--; + } + + for (; depthA--;) { + if (JSCompiler_temp === targetInst || JSCompiler_temp === targetInst.alternate) break b; + JSCompiler_temp = getParent(JSCompiler_temp); + targetInst = getParent(targetInst); + } + + JSCompiler_temp = null; + } else JSCompiler_temp = targetInst; + targetInst = JSCompiler_temp === responderInst; + JSCompiler_temp = ResponderSyntheticEvent.getPooled(shouldSetEventType, JSCompiler_temp, nativeEvent, nativeEventTarget); + JSCompiler_temp.touchHistory = ResponderTouchHistoryStore.touchHistory; + targetInst ? forEachAccumulated(JSCompiler_temp, accumulateTwoPhaseDispatchesSingleSkipTarget) : forEachAccumulated(JSCompiler_temp, accumulateTwoPhaseDispatchesSingle); + + b: { + shouldSetEventType = JSCompiler_temp._dispatchListeners; + targetInst = JSCompiler_temp._dispatchInstances; + if (Array.isArray(shouldSetEventType)) for (depthA = 0; depthA < shouldSetEventType.length && !JSCompiler_temp.isPropagationStopped(); depthA++) { + if (shouldSetEventType[depthA](JSCompiler_temp, targetInst[depthA])) { + shouldSetEventType = targetInst[depthA]; + break b; + } + } else if (shouldSetEventType && shouldSetEventType(JSCompiler_temp, targetInst)) { + shouldSetEventType = targetInst; + break b; + } + shouldSetEventType = null; + } + + JSCompiler_temp._dispatchInstances = null; + JSCompiler_temp._dispatchListeners = null; + JSCompiler_temp.isPersistent() || JSCompiler_temp.constructor.release(JSCompiler_temp); + if (shouldSetEventType && shouldSetEventType !== responderInst) { + if (JSCompiler_temp = ResponderSyntheticEvent.getPooled(eventTypes.responderGrant, shouldSetEventType, nativeEvent, nativeEventTarget), JSCompiler_temp.touchHistory = ResponderTouchHistoryStore.touchHistory, forEachAccumulated(JSCompiler_temp, accumulateDirectDispatchesSingle), targetInst = !0 === executeDirectDispatch(JSCompiler_temp), responderInst) { + if (depthA = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminationRequest, responderInst, nativeEvent, nativeEventTarget), depthA.touchHistory = ResponderTouchHistoryStore.touchHistory, forEachAccumulated(depthA, accumulateDirectDispatchesSingle), tempA = !depthA._dispatchListeners || executeDirectDispatch(depthA), depthA.isPersistent() || depthA.constructor.release(depthA), tempA) { + depthA = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminate, responderInst, nativeEvent, nativeEventTarget); + depthA.touchHistory = ResponderTouchHistoryStore.touchHistory; + forEachAccumulated(depthA, accumulateDirectDispatchesSingle); + var JSCompiler_temp$jscomp$0 = accumulate(JSCompiler_temp$jscomp$0, [JSCompiler_temp, depthA]); + changeResponder(shouldSetEventType, targetInst); + } else shouldSetEventType = ResponderSyntheticEvent.getPooled(eventTypes.responderReject, shouldSetEventType, nativeEvent, nativeEventTarget), shouldSetEventType.touchHistory = ResponderTouchHistoryStore.touchHistory, forEachAccumulated(shouldSetEventType, accumulateDirectDispatchesSingle), JSCompiler_temp$jscomp$0 = accumulate(JSCompiler_temp$jscomp$0, shouldSetEventType); + } else JSCompiler_temp$jscomp$0 = accumulate(JSCompiler_temp$jscomp$0, JSCompiler_temp), changeResponder(shouldSetEventType, targetInst); + } else JSCompiler_temp$jscomp$0 = null; + } else JSCompiler_temp$jscomp$0 = null; + + shouldSetEventType = responderInst && isStartish(topLevelType); + JSCompiler_temp = responderInst && isMoveish(topLevelType); + targetInst = responderInst && isEndish(topLevelType); + if (shouldSetEventType = shouldSetEventType ? eventTypes.responderStart : JSCompiler_temp ? eventTypes.responderMove : targetInst ? eventTypes.responderEnd : null) shouldSetEventType = ResponderSyntheticEvent.getPooled(shouldSetEventType, responderInst, nativeEvent, nativeEventTarget), shouldSetEventType.touchHistory = ResponderTouchHistoryStore.touchHistory, forEachAccumulated(shouldSetEventType, accumulateDirectDispatchesSingle), JSCompiler_temp$jscomp$0 = accumulate(JSCompiler_temp$jscomp$0, shouldSetEventType); + shouldSetEventType = responderInst && "topTouchCancel" === topLevelType; + if (topLevelType = responderInst && !shouldSetEventType && isEndish(topLevelType)) a: { + if ((topLevelType = nativeEvent.touches) && 0 !== topLevelType.length) for (JSCompiler_temp = 0; JSCompiler_temp < topLevelType.length; JSCompiler_temp++) { + if (targetInst = topLevelType[JSCompiler_temp].target, null !== targetInst && void 0 !== targetInst && 0 !== targetInst) { + depthA = getInstanceFromNode(targetInst); + + b: { + for (targetInst = responderInst; depthA;) { + if (targetInst === depthA || targetInst === depthA.alternate) { + targetInst = !0; + break b; + } + + depthA = getParent(depthA); + } + + targetInst = !1; + } + + if (targetInst) { + topLevelType = !1; + break a; + } + } + } + topLevelType = !0; + } + if (topLevelType = shouldSetEventType ? eventTypes.responderTerminate : topLevelType ? eventTypes.responderRelease : null) nativeEvent = ResponderSyntheticEvent.getPooled(topLevelType, responderInst, nativeEvent, nativeEventTarget), nativeEvent.touchHistory = ResponderTouchHistoryStore.touchHistory, forEachAccumulated(nativeEvent, accumulateDirectDispatchesSingle), JSCompiler_temp$jscomp$0 = accumulate(JSCompiler_temp$jscomp$0, nativeEvent), changeResponder(null); + nativeEvent = ResponderTouchHistoryStore.touchHistory.numberActiveTouches; + if (ResponderEventPlugin.GlobalInteractionHandler && nativeEvent !== previousActiveTouches) ResponderEventPlugin.GlobalInteractionHandler.onChange(nativeEvent); + previousActiveTouches = nativeEvent; + return JSCompiler_temp$jscomp$0; + }, + GlobalResponderHandler: null, + GlobalInteractionHandler: null, + injection: { + injectGlobalResponderHandler: function injectGlobalResponderHandler(GlobalResponderHandler) { + ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler; + }, + injectGlobalInteractionHandler: function injectGlobalInteractionHandler(GlobalInteractionHandler) { + ResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler; + } + } + }, + customBubblingEventTypes = {}, + customDirectEventTypes = {}, + ReactNativeBridgeEventPlugin = { + eventTypes: {}, + extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var bubbleDispatchConfig = customBubblingEventTypes[topLevelType], + directDispatchConfig = customDirectEventTypes[topLevelType]; + invariant(bubbleDispatchConfig || directDispatchConfig, 'Unsupported top level event type "%s" dispatched', topLevelType); + topLevelType = SyntheticEvent.getPooled(bubbleDispatchConfig || directDispatchConfig, targetInst, nativeEvent, nativeEventTarget); + if (bubbleDispatchConfig) forEachAccumulated(topLevelType, accumulateTwoPhaseDispatchesSingle);else if (directDispatchConfig) forEachAccumulated(topLevelType, accumulateDirectDispatchesSingle);else return null; + return topLevelType; + }, + processEventTypes: function processEventTypes(viewConfig) { + var bubblingEventTypes = viewConfig.bubblingEventTypes; + viewConfig = viewConfig.directEventTypes; + if (null != bubblingEventTypes) for (var _topLevelType in bubblingEventTypes) { + null == customBubblingEventTypes[_topLevelType] && (ReactNativeBridgeEventPlugin.eventTypes[_topLevelType] = customBubblingEventTypes[_topLevelType] = bubblingEventTypes[_topLevelType]); + } + if (null != viewConfig) for (var _topLevelType2 in viewConfig) { + null == customDirectEventTypes[_topLevelType2] && (ReactNativeBridgeEventPlugin.eventTypes[_topLevelType2] = customDirectEventTypes[_topLevelType2] = viewConfig[_topLevelType2]); + } + } + }, + instanceCache = {}, + instanceProps = {}; + + function uncacheFiberNode(tag) { + delete instanceCache[tag]; + delete instanceProps[tag]; + } + + function getInstanceFromTag(tag) { + return instanceCache[tag] || null; + } + + var ReactNativeComponentTree = Object.freeze({ + precacheFiberNode: function precacheFiberNode(hostInst, tag) { + instanceCache[tag] = hostInst; + }, + uncacheFiberNode: uncacheFiberNode, + getClosestInstanceFromNode: getInstanceFromTag, + getInstanceFromNode: getInstanceFromTag, + getNodeFromInstance: function getNodeFromInstance(inst) { + inst = inst.stateNode._nativeTag; + invariant(inst, "All native instances should have a tag."); + return inst; + }, + getFiberCurrentPropsFromNode: function getFiberCurrentPropsFromNode(stateNode) { + return instanceProps[stateNode._nativeTag] || null; + }, + updateFiberProps: function updateFiberProps(tag, props) { + instanceProps[tag] = props; + } + }), + restoreTarget = null, + restoreQueue = null; + + function restoreStateOfTarget(target) { + if (target = getInstanceFromNode(target)) { + invariant(null, "Fiber needs to be injected to handle a fiber target for controlled events. This error is likely caused by a bug in React. Please file an issue."); + var props = getFiberCurrentPropsFromNode(target.stateNode); + null.restoreControlledState(target.stateNode, target.type, props); + } + } + + function fiberBatchedUpdates(fn, bookkeeping) { + return fn(bookkeeping); + } + + var isNestingBatched = !1; + + function batchedUpdates(fn, bookkeeping) { + if (isNestingBatched) return fiberBatchedUpdates(fn, bookkeeping); + isNestingBatched = !0; + + try { + return fiberBatchedUpdates(fn, bookkeeping); + } finally { + if (isNestingBatched = !1, restoreTarget && (bookkeeping = restoreTarget, fn = restoreQueue, restoreQueue = restoreTarget = null, restoreStateOfTarget(bookkeeping), fn)) for (bookkeeping = 0; bookkeeping < fn.length; bookkeeping++) { + restoreStateOfTarget(fn[bookkeeping]); + } + } + } + + function handleTopLevel(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + for (var events, i = 0; i < plugins.length; i++) { + var possiblePlugin = plugins[i]; + possiblePlugin && (possiblePlugin = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget)) && (events = accumulateInto(events, possiblePlugin)); + } + + events && (eventQueue = accumulateInto(eventQueue, events)); + topLevelType = eventQueue; + eventQueue = null; + topLevelType && (forEachAccumulated(topLevelType, executeDispatchesAndReleaseTopLevel), invariant(!eventQueue, "processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented."), ReactErrorUtils.rethrowCaughtError()); + } + + var ReactNativeTagHandles = { + tagsStartAt: 1, + tagCount: 1, + allocateTag: function allocateTag() { + for (; this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount);) { + ReactNativeTagHandles.tagCount++; + } + + var tag = ReactNativeTagHandles.tagCount; + ReactNativeTagHandles.tagCount++; + return tag; + }, + assertRootTag: function assertRootTag(tag) { + invariant(this.reactTagIsNativeTopRootID(tag), "Expect a native root tag, instead got %s", tag); + }, + reactTagIsNativeTopRootID: function reactTagIsNativeTopRootID(reactTag) { + return 1 === reactTag % 10; + } + }, + EMPTY_NATIVE_EVENT = {}; + + function _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam) { + var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT, + inst = getInstanceFromTag(rootNodeID); + batchedUpdates(function () { + handleTopLevel(topLevelType, inst, nativeEvent, nativeEvent.target); + }); + } + + var ReactNativeEventEmitter = Object.freeze({ + getListener: getListener, + registrationNames: registrationNameModules, + _receiveRootNodeIDEvent: _receiveRootNodeIDEvent, + receiveEvent: function receiveEvent(rootNodeID, topLevelType, nativeEventParam) { + _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam); + }, + receiveTouches: function receiveTouches(eventTopLevelType, touches, changedIndices) { + if ("topTouchEnd" === eventTopLevelType || "topTouchCancel" === eventTopLevelType) { + var JSCompiler_temp = []; + + for (var i = 0; i < changedIndices.length; i++) { + var index = changedIndices[i]; + JSCompiler_temp.push(touches[index]); + touches[index] = null; + } + + for (i = changedIndices = 0; i < touches.length; i++) { + index = touches[i], null !== index && (touches[changedIndices++] = index); + } + + touches.length = changedIndices; + } else for (JSCompiler_temp = [], i = 0; i < changedIndices.length; i++) { + JSCompiler_temp.push(touches[changedIndices[i]]); + } + + for (changedIndices = 0; changedIndices < JSCompiler_temp.length; changedIndices++) { + i = JSCompiler_temp[changedIndices]; + i.changedTouches = JSCompiler_temp; + i.touches = touches; + index = null; + var target = i.target; + null === target || void 0 === target || target < ReactNativeTagHandles.tagsStartAt || (index = target); + + _receiveRootNodeIDEvent(index, eventTopLevelType, i); + } + }, + handleTopLevel: handleTopLevel + }); + RCTEventEmitter.register(ReactNativeEventEmitter); + injection.injectEventPluginOrder(["ResponderEventPlugin", "ReactNativeBridgeEventPlugin"]); + getFiberCurrentPropsFromNode = ReactNativeComponentTree.getFiberCurrentPropsFromNode; + getInstanceFromNode = ReactNativeComponentTree.getInstanceFromNode; + getNodeFromInstance = ReactNativeComponentTree.getNodeFromInstance; + ResponderEventPlugin.injection.injectGlobalResponderHandler({ + onChange: function onChange(from, to, blockNativeResponder) { + null !== to ? UIManager.setJSResponder(to.stateNode._nativeTag, blockNativeResponder) : UIManager.clearJSResponder(); + } + }); + injection.injectEventPluginsByName({ + ResponderEventPlugin: ResponderEventPlugin, + ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin + }); + + function defaultShowDialog() { + return !0; + } + + var showDialog = defaultShowDialog, + hasSymbol = "function" === typeof Symbol && Symbol["for"], + REACT_ELEMENT_TYPE = hasSymbol ? Symbol["for"]("react.element") : 60103, + REACT_CALL_TYPE = hasSymbol ? Symbol["for"]("react.call") : 60104, + REACT_RETURN_TYPE = hasSymbol ? Symbol["for"]("react.return") : 60105, + REACT_PORTAL_TYPE = hasSymbol ? Symbol["for"]("react.portal") : 60106, + REACT_FRAGMENT_TYPE = hasSymbol ? Symbol["for"]("react.fragment") : 60107, + MAYBE_ITERATOR_SYMBOL = "function" === typeof Symbol && (typeof Symbol === "function" ? Symbol.iterator : "@@iterator"); + + function getIteratorFn(maybeIterable) { + if (null === maybeIterable || "undefined" === typeof maybeIterable) return null; + maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"]; + return "function" === typeof maybeIterable ? maybeIterable : null; + } + + function _createPortal(children, containerInfo, implementation) { + var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null; + return { + $$typeof: REACT_PORTAL_TYPE, + key: null == key ? null : "" + key, + children: children, + containerInfo: containerInfo, + implementation: implementation + }; + } + + var TouchHistoryMath = { + centroidDimension: function centroidDimension(touchHistory, touchesChangedAfter, isXAxis, ofCurrent) { + var touchBank = touchHistory.touchBank, + total = 0, + count = 0; + touchHistory = 1 === touchHistory.numberActiveTouches ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] : null; + if (null !== touchHistory) touchHistory.touchActive && touchHistory.currentTimeStamp > touchesChangedAfter && (total += ofCurrent && isXAxis ? touchHistory.currentPageX : ofCurrent && !isXAxis ? touchHistory.currentPageY : !ofCurrent && isXAxis ? touchHistory.previousPageX : touchHistory.previousPageY, count = 1);else for (touchHistory = 0; touchHistory < touchBank.length; touchHistory++) { + var touchTrack = touchBank[touchHistory]; + null !== touchTrack && void 0 !== touchTrack && touchTrack.touchActive && touchTrack.currentTimeStamp >= touchesChangedAfter && (total += ofCurrent && isXAxis ? touchTrack.currentPageX : ofCurrent && !isXAxis ? touchTrack.currentPageY : !ofCurrent && isXAxis ? touchTrack.previousPageX : touchTrack.previousPageY, count++); + } + return 0 < count ? total / count : TouchHistoryMath.noCentroid; + }, + currentCentroidXOfTouchesChangedAfter: function currentCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, !0, !0); + }, + currentCentroidYOfTouchesChangedAfter: function currentCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, !1, !0); + }, + previousCentroidXOfTouchesChangedAfter: function previousCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, !0, !1); + }, + previousCentroidYOfTouchesChangedAfter: function previousCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) { + return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, !1, !1); + }, + currentCentroidX: function currentCentroidX(touchHistory) { + return TouchHistoryMath.centroidDimension(touchHistory, 0, !0, !0); + }, + currentCentroidY: function currentCentroidY(touchHistory) { + return TouchHistoryMath.centroidDimension(touchHistory, 0, !1, !0); + }, + noCentroid: -1 + }, + ReactCurrentOwner = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, + ReactGlobalSharedState = Object.freeze({ + ReactCurrentOwner: ReactCurrentOwner, + ReactDebugCurrentFrame: null + }), + objects = {}, + uniqueID = 1, + emptyObject$2 = {}, + ReactNativePropRegistry = function () { + function ReactNativePropRegistry() { + if (!(this instanceof ReactNativePropRegistry)) throw new TypeError("Cannot call a class as a function"); + } + + ReactNativePropRegistry.register = function (object) { + var id = ++uniqueID; + objects[id] = object; + return id; + }; + + ReactNativePropRegistry.getByID = function (id) { + if (!id) return emptyObject$2; + var object = objects[id]; + return object ? object : (console.warn("Invalid style with id `" + id + "`. Skipping ..."), emptyObject$2); + }; + + return ReactNativePropRegistry; + }(), + emptyObject$1 = {}, + removedKeys = null, + removedKeyCount = 0; + + function resolveObject(idOrObject) { + return "number" === typeof idOrObject ? ReactNativePropRegistry.getByID(idOrObject) : idOrObject; + } + + function restoreDeletedValuesInNestedArray(updatePayload, node, validAttributes) { + if (Array.isArray(node)) for (var i = node.length; i-- && 0 < removedKeyCount;) { + restoreDeletedValuesInNestedArray(updatePayload, node[i], validAttributes); + } else if (node && 0 < removedKeyCount) for (i in node = resolveObject(node), removedKeys) { + if (removedKeys[i]) { + var nextProp = node[i]; + + if (void 0 !== nextProp) { + var attributeConfig = validAttributes[i]; + + if (attributeConfig) { + "function" === typeof nextProp && (nextProp = !0); + "undefined" === typeof nextProp && (nextProp = null); + if ("object" !== typeof attributeConfig) updatePayload[i] = nextProp;else if ("function" === typeof attributeConfig.diff || "function" === typeof attributeConfig.process) nextProp = "function" === typeof attributeConfig.process ? attributeConfig.process(nextProp) : nextProp, updatePayload[i] = nextProp; + removedKeys[i] = !1; + removedKeyCount--; + } + } + } + } + } + + function diffNestedProperty(updatePayload, prevProp, nextProp, validAttributes) { + if (!updatePayload && prevProp === nextProp) return updatePayload; + if (!prevProp || !nextProp) return nextProp ? addNestedProperty(updatePayload, nextProp, validAttributes) : prevProp ? clearNestedProperty(updatePayload, prevProp, validAttributes) : updatePayload; + if (!Array.isArray(prevProp) && !Array.isArray(nextProp)) return diffProperties(updatePayload, resolveObject(prevProp), resolveObject(nextProp), validAttributes); + + if (Array.isArray(prevProp) && Array.isArray(nextProp)) { + var minLength = prevProp.length < nextProp.length ? prevProp.length : nextProp.length, + i; + + for (i = 0; i < minLength; i++) { + updatePayload = diffNestedProperty(updatePayload, prevProp[i], nextProp[i], validAttributes); + } + + for (; i < prevProp.length; i++) { + updatePayload = clearNestedProperty(updatePayload, prevProp[i], validAttributes); + } + + for (; i < nextProp.length; i++) { + updatePayload = addNestedProperty(updatePayload, nextProp[i], validAttributes); + } + + return updatePayload; + } + + return Array.isArray(prevProp) ? diffProperties(updatePayload, flattenStyle(prevProp), resolveObject(nextProp), validAttributes) : diffProperties(updatePayload, resolveObject(prevProp), flattenStyle(nextProp), validAttributes); + } + + function addNestedProperty(updatePayload, nextProp, validAttributes) { + if (!nextProp) return updatePayload; + if (!Array.isArray(nextProp)) return nextProp = resolveObject(nextProp), diffProperties(updatePayload, emptyObject$1, nextProp, validAttributes); + + for (var i = 0; i < nextProp.length; i++) { + updatePayload = addNestedProperty(updatePayload, nextProp[i], validAttributes); + } + + return updatePayload; + } + + function clearNestedProperty(updatePayload, prevProp, validAttributes) { + if (!prevProp) return updatePayload; + if (!Array.isArray(prevProp)) return prevProp = resolveObject(prevProp), diffProperties(updatePayload, prevProp, emptyObject$1, validAttributes); + + for (var i = 0; i < prevProp.length; i++) { + updatePayload = clearNestedProperty(updatePayload, prevProp[i], validAttributes); + } + + return updatePayload; + } + + function diffProperties(updatePayload, prevProps, nextProps, validAttributes) { + var attributeConfig, propKey; + + for (propKey in nextProps) { + if (attributeConfig = validAttributes[propKey]) { + var prevProp = prevProps[propKey]; + var nextProp = nextProps[propKey]; + "function" === typeof nextProp && (nextProp = !0, "function" === typeof prevProp && (prevProp = !0)); + "undefined" === typeof nextProp && (nextProp = null, "undefined" === typeof prevProp && (prevProp = null)); + removedKeys && (removedKeys[propKey] = !1); + if (updatePayload && void 0 !== updatePayload[propKey]) { + if ("object" !== typeof attributeConfig) updatePayload[propKey] = nextProp;else { + if ("function" === typeof attributeConfig.diff || "function" === typeof attributeConfig.process) attributeConfig = "function" === typeof attributeConfig.process ? attributeConfig.process(nextProp) : nextProp, updatePayload[propKey] = attributeConfig; + } + } else if (prevProp !== nextProp) if ("object" !== typeof attributeConfig) ("object" !== typeof nextProp || null === nextProp || deepDiffer(prevProp, nextProp)) && ((updatePayload || (updatePayload = {}))[propKey] = nextProp);else if ("function" === typeof attributeConfig.diff || "function" === typeof attributeConfig.process) { + if (void 0 === prevProp || ("function" === typeof attributeConfig.diff ? attributeConfig.diff(prevProp, nextProp) : "object" !== typeof nextProp || null === nextProp || deepDiffer(prevProp, nextProp))) attributeConfig = "function" === typeof attributeConfig.process ? attributeConfig.process(nextProp) : nextProp, (updatePayload || (updatePayload = {}))[propKey] = attributeConfig; + } else removedKeys = null, removedKeyCount = 0, updatePayload = diffNestedProperty(updatePayload, prevProp, nextProp, attributeConfig), 0 < removedKeyCount && updatePayload && (restoreDeletedValuesInNestedArray(updatePayload, nextProp, attributeConfig), removedKeys = null); + } + } + + for (propKey in prevProps) { + void 0 === nextProps[propKey] && (!(attributeConfig = validAttributes[propKey]) || updatePayload && void 0 !== updatePayload[propKey] || (prevProp = prevProps[propKey], void 0 !== prevProp && ("object" !== typeof attributeConfig || "function" === typeof attributeConfig.diff || "function" === typeof attributeConfig.process ? ((updatePayload || (updatePayload = {}))[propKey] = null, removedKeys || (removedKeys = {}), removedKeys[propKey] || (removedKeys[propKey] = !0, removedKeyCount++)) : updatePayload = clearNestedProperty(updatePayload, prevProp, attributeConfig)))); + } + + return updatePayload; + } + + function mountSafeCallback(context, callback) { + return function () { + if (callback) { + if ("boolean" === typeof context.__isMounted) { + if (!context.__isMounted) return; + } else if ("function" === typeof context.isMounted && !context.isMounted()) return; + + return callback.apply(context, arguments); + } + }; + } + + function getComponentName(fiber) { + fiber = fiber.type; + return "string" === typeof fiber ? fiber : "function" === typeof fiber ? fiber.displayName || fiber.name : null; + } + + var debugRenderPhaseSideEffects = require(_dependencyMap[12], "ReactFeatureFlags").debugRenderPhaseSideEffects; + + function isFiberMountedImpl(fiber) { + var node = fiber; + if (fiber.alternate) for (; node["return"];) { + node = node["return"]; + } else { + if (0 !== (node.effectTag & 2)) return 1; + + for (; node["return"];) { + if (node = node["return"], 0 !== (node.effectTag & 2)) return 1; + } + } + return 3 === node.tag ? 2 : 3; + } + + function isMounted(component) { + return (component = component._reactInternalFiber) ? 2 === isFiberMountedImpl(component) : !1; + } + + function assertIsMounted(fiber) { + invariant(2 === isFiberMountedImpl(fiber), "Unable to find node on an unmounted component."); + } + + function findCurrentFiberUsingSlowPath(fiber) { + var alternate = fiber.alternate; + if (!alternate) return alternate = isFiberMountedImpl(fiber), invariant(3 !== alternate, "Unable to find node on an unmounted component."), 1 === alternate ? null : fiber; + + for (var a = fiber, b = alternate;;) { + var parentA = a["return"], + parentB = parentA ? parentA.alternate : null; + if (!parentA || !parentB) break; + + if (parentA.child === parentB.child) { + for (var child = parentA.child; child;) { + if (child === a) return assertIsMounted(parentA), fiber; + if (child === b) return assertIsMounted(parentA), alternate; + child = child.sibling; + } + + invariant(!1, "Unable to find node on an unmounted component."); + } + + if (a["return"] !== b["return"]) a = parentA, b = parentB;else { + child = !1; + + for (var _child = parentA.child; _child;) { + if (_child === a) { + child = !0; + a = parentA; + b = parentB; + break; + } + + if (_child === b) { + child = !0; + b = parentA; + a = parentB; + break; + } + + _child = _child.sibling; + } + + if (!child) { + for (_child = parentB.child; _child;) { + if (_child === a) { + child = !0; + a = parentB; + b = parentA; + break; + } + + if (_child === b) { + child = !0; + b = parentB; + a = parentA; + break; + } + + _child = _child.sibling; + } + + invariant(child, "Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue."); + } + } + invariant(a.alternate === b, "Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue."); + } + + invariant(3 === a.tag, "Unable to find node on an unmounted component."); + return a.stateNode.current === a ? fiber : alternate; + } + + function findCurrentHostFiber(parent) { + parent = findCurrentFiberUsingSlowPath(parent); + if (!parent) return null; + + for (var node = parent;;) { + if (5 === node.tag || 6 === node.tag) return node; + if (node.child) node.child["return"] = node, node = node.child;else { + if (node === parent) break; + + for (; !node.sibling;) { + if (!node["return"] || node["return"] === parent) return null; + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + return null; + } + + function findCurrentHostFiberWithNoPortals(parent) { + parent = findCurrentFiberUsingSlowPath(parent); + if (!parent) return null; + + for (var node = parent;;) { + if (5 === node.tag || 6 === node.tag) return node; + if (node.child && 4 !== node.tag) node.child["return"] = node, node = node.child;else { + if (node === parent) break; + + for (; !node.sibling;) { + if (!node["return"] || node["return"] === parent) return null; + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + return null; + } + + var valueStack = [], + index = -1; + + function pop(cursor) { + 0 > index || (cursor.current = valueStack[index], valueStack[index] = null, index--); + } + + function push(cursor, value) { + index++; + valueStack[index] = cursor.current; + cursor.current = value; + } + + new Set(); + var contextStackCursor = { + current: emptyObject + }, + didPerformWorkStackCursor = { + current: !1 + }, + previousContext = emptyObject; + + function getUnmaskedContext(workInProgress) { + return isContextProvider(workInProgress) ? previousContext : contextStackCursor.current; + } + + function getMaskedContext(workInProgress, unmaskedContext) { + var contextTypes = workInProgress.type.contextTypes; + if (!contextTypes) return emptyObject; + var instance = workInProgress.stateNode; + if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) return instance.__reactInternalMemoizedMaskedChildContext; + var context = {}, + key; + + for (key in contextTypes) { + context[key] = unmaskedContext[key]; + } + + instance && (workInProgress = workInProgress.stateNode, workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext, workInProgress.__reactInternalMemoizedMaskedChildContext = context); + return context; + } + + function isContextProvider(fiber) { + return 2 === fiber.tag && null != fiber.type.childContextTypes; + } + + function popContextProvider(fiber) { + isContextProvider(fiber) && (pop(didPerformWorkStackCursor, fiber), pop(contextStackCursor, fiber)); + } + + function pushTopLevelContextObject(fiber, context, didChange) { + invariant(null == contextStackCursor.cursor, "Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue."); + push(contextStackCursor, context, fiber); + push(didPerformWorkStackCursor, didChange, fiber); + } + + function processChildContext(fiber, parentContext) { + var instance = fiber.stateNode, + childContextTypes = fiber.type.childContextTypes; + if ("function" !== typeof instance.getChildContext) return parentContext; + instance = instance.getChildContext(); + + for (var contextKey in instance) { + invariant(contextKey in childContextTypes, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', getComponentName(fiber) || "Unknown", contextKey); + } + + return babelHelpers.extends({}, parentContext, instance); + } + + function pushContextProvider(workInProgress) { + if (!isContextProvider(workInProgress)) return !1; + var instance = workInProgress.stateNode; + instance = instance && instance.__reactInternalMemoizedMergedChildContext || emptyObject; + previousContext = contextStackCursor.current; + push(contextStackCursor, instance, workInProgress); + push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress); + return !0; + } + + function invalidateContextProvider(workInProgress, didChange) { + var instance = workInProgress.stateNode; + invariant(instance, "Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue."); + + if (didChange) { + var mergedContext = processChildContext(workInProgress, previousContext); + instance.__reactInternalMemoizedMergedChildContext = mergedContext; + pop(didPerformWorkStackCursor, workInProgress); + pop(contextStackCursor, workInProgress); + push(contextStackCursor, mergedContext, workInProgress); + } else pop(didPerformWorkStackCursor, workInProgress); + + push(didPerformWorkStackCursor, didChange, workInProgress); + } + + function FiberNode(tag, pendingProps, key, internalContextTag) { + this.tag = tag; + this.key = key; + this.stateNode = this.type = null; + this.sibling = this.child = this["return"] = null; + this.index = 0; + this.ref = null; + this.pendingProps = pendingProps; + this.memoizedState = this.updateQueue = this.memoizedProps = null; + this.internalContextTag = internalContextTag; + this.effectTag = 0; + this.lastEffect = this.firstEffect = this.nextEffect = null; + this.expirationTime = 0; + this.alternate = null; + } + + function createFiber(tag, pendingProps, key, internalContextTag) { + return new FiberNode(tag, pendingProps, key, internalContextTag); + } + + function createWorkInProgress(current, pendingProps, expirationTime) { + var workInProgress = current.alternate; + null === workInProgress ? (workInProgress = createFiber(current.tag, pendingProps, current.key, current.internalContextTag), workInProgress.type = current.type, workInProgress.stateNode = current.stateNode, workInProgress.alternate = current, current.alternate = workInProgress) : (workInProgress.pendingProps = pendingProps, workInProgress.effectTag = 0, workInProgress.nextEffect = null, workInProgress.firstEffect = null, workInProgress.lastEffect = null); + workInProgress.expirationTime = expirationTime; + workInProgress.child = current.child; + workInProgress.memoizedProps = current.memoizedProps; + workInProgress.memoizedState = current.memoizedState; + workInProgress.updateQueue = current.updateQueue; + workInProgress.sibling = current.sibling; + workInProgress.index = current.index; + workInProgress.ref = current.ref; + return workInProgress; + } + + function createFiberFromElement(element, internalContextTag, expirationTime) { + var fiber = void 0, + type = element.type, + key = element.key; + element = element.props; + "function" === typeof type ? (fiber = type.prototype && type.prototype.isReactComponent ? createFiber(2, element, key, internalContextTag) : createFiber(0, element, key, internalContextTag), fiber.type = type) : "string" === typeof type ? (fiber = createFiber(5, element, key, internalContextTag), fiber.type = type) : "object" === typeof type && null !== type && "number" === typeof type.tag ? (fiber = type, fiber.pendingProps = element) : invariant(!1, "Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", null == type ? type : typeof type, ""); + fiber.expirationTime = expirationTime; + return fiber; + } + + function createFiberFromFragment(elements, internalContextTag, expirationTime, key) { + elements = createFiber(10, elements, key, internalContextTag); + elements.expirationTime = expirationTime; + return elements; + } + + function createFiberFromText(content, internalContextTag, expirationTime) { + content = createFiber(6, content, null, internalContextTag); + content.expirationTime = expirationTime; + return content; + } + + function createFiberFromCall(call, internalContextTag, expirationTime) { + internalContextTag = createFiber(7, call, call.key, internalContextTag); + internalContextTag.type = call.handler; + internalContextTag.expirationTime = expirationTime; + return internalContextTag; + } + + function createFiberFromReturn(returnNode, internalContextTag, expirationTime) { + returnNode = createFiber(9, null, null, internalContextTag); + returnNode.expirationTime = expirationTime; + return returnNode; + } + + function createFiberFromPortal(portal, internalContextTag, expirationTime) { + internalContextTag = createFiber(4, null !== portal.children ? portal.children : [], portal.key, internalContextTag); + internalContextTag.expirationTime = expirationTime; + internalContextTag.stateNode = { + containerInfo: portal.containerInfo, + pendingChildren: null, + implementation: portal.implementation + }; + return internalContextTag; + } + + var onCommitFiberRoot = null, + onCommitFiberUnmount = null; + + function catchErrors(fn) { + return function (arg) { + try { + return fn(arg); + } catch (err) {} + }; + } + + function injectInternals(internals) { + if ("undefined" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1; + var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__; + if (hook.isDisabled || !hook.supportsFiber) return !0; + + try { + var rendererID = hook.inject(internals); + onCommitFiberRoot = catchErrors(function (root) { + return hook.onCommitFiberRoot(rendererID, root); + }); + onCommitFiberUnmount = catchErrors(function (fiber) { + return hook.onCommitFiberUnmount(rendererID, fiber); + }); + } catch (err) {} + + return !0; + } + + function onCommitRoot(root) { + "function" === typeof onCommitFiberRoot && onCommitFiberRoot(root); + } + + function onCommitUnmount(fiber) { + "function" === typeof onCommitFiberUnmount && onCommitFiberUnmount(fiber); + } + + function createUpdateQueue(baseState) { + return { + baseState: baseState, + expirationTime: 0, + first: null, + last: null, + callbackList: null, + hasForceUpdate: !1, + isInitialized: !1 + }; + } + + function insertUpdateIntoQueue(queue, update) { + null === queue.last ? queue.first = queue.last = update : (queue.last.next = update, queue.last = update); + if (0 === queue.expirationTime || queue.expirationTime > update.expirationTime) queue.expirationTime = update.expirationTime; + } + + function insertUpdateIntoFiber(fiber, update) { + var alternateFiber = fiber.alternate, + queue1 = fiber.updateQueue; + null === queue1 && (queue1 = fiber.updateQueue = createUpdateQueue(null)); + null !== alternateFiber ? (fiber = alternateFiber.updateQueue, null === fiber && (fiber = alternateFiber.updateQueue = createUpdateQueue(null))) : fiber = null; + fiber = fiber !== queue1 ? fiber : null; + null === fiber ? insertUpdateIntoQueue(queue1, update) : null === queue1.last || null === fiber.last ? (insertUpdateIntoQueue(queue1, update), insertUpdateIntoQueue(fiber, update)) : (insertUpdateIntoQueue(queue1, update), fiber.last = update); + } + + function getStateFromUpdate(update, instance, prevState, props) { + update = update.partialState; + return "function" === typeof update ? (debugRenderPhaseSideEffects && update.call(instance, prevState, props), update.call(instance, prevState, props)) : update; + } + + function processUpdateQueue(current, workInProgress, queue, instance, props, renderExpirationTime) { + null !== current && current.updateQueue === queue && (queue = workInProgress.updateQueue = { + baseState: queue.baseState, + expirationTime: queue.expirationTime, + first: queue.first, + last: queue.last, + isInitialized: queue.isInitialized, + callbackList: null, + hasForceUpdate: !1 + }); + queue.expirationTime = 0; + queue.isInitialized ? current = queue.baseState : (current = queue.baseState = workInProgress.memoizedState, queue.isInitialized = !0); + + for (var dontMutatePrevState = !0, update = queue.first, didSkip = !1; null !== update;) { + var updateExpirationTime = update.expirationTime; + + if (updateExpirationTime > renderExpirationTime) { + var remainingExpirationTime = queue.expirationTime; + if (0 === remainingExpirationTime || remainingExpirationTime > updateExpirationTime) queue.expirationTime = updateExpirationTime; + didSkip || (didSkip = !0, queue.baseState = current); + } else { + didSkip || (queue.first = update.next, null === queue.first && (queue.last = null)); + if (update.isReplace) current = getStateFromUpdate(update, instance, current, props), dontMutatePrevState = !0;else if (updateExpirationTime = getStateFromUpdate(update, instance, current, props)) current = dontMutatePrevState ? babelHelpers.extends({}, current, updateExpirationTime) : babelHelpers.extends(current, updateExpirationTime), dontMutatePrevState = !1; + update.isForced && (queue.hasForceUpdate = !0); + null !== update.callback && (updateExpirationTime = queue.callbackList, null === updateExpirationTime && (updateExpirationTime = queue.callbackList = []), updateExpirationTime.push(update)); + } + + update = update.next; + } + + null !== queue.callbackList ? workInProgress.effectTag |= 32 : null !== queue.first || queue.hasForceUpdate || (workInProgress.updateQueue = null); + didSkip || (queue.baseState = current); + return current; + } + + function commitCallbacks(queue, context) { + var callbackList = queue.callbackList; + if (null !== callbackList) for (queue.callbackList = null, queue = 0; queue < callbackList.length; queue++) { + var update = callbackList[queue], + _callback = update.callback; + update.callback = null; + invariant("function" === typeof _callback, "Invalid argument passed as callback. Expected a function. Instead received: %s", _callback); + + _callback.call(context); + } + } + + function ReactFiberClassComponent(scheduleWork, computeExpirationForFiber, memoizeProps, memoizeState) { + function adoptClassInstance(workInProgress, instance) { + instance.updater = updater; + workInProgress.stateNode = instance; + instance._reactInternalFiber = workInProgress; + } + + var updater = { + isMounted: isMounted, + enqueueSetState: function enqueueSetState(instance, partialState, callback) { + instance = instance._reactInternalFiber; + callback = void 0 === callback ? null : callback; + var expirationTime = computeExpirationForFiber(instance); + insertUpdateIntoFiber(instance, { + expirationTime: expirationTime, + partialState: partialState, + callback: callback, + isReplace: !1, + isForced: !1, + nextCallback: null, + next: null + }); + scheduleWork(instance, expirationTime); + }, + enqueueReplaceState: function enqueueReplaceState(instance, state, callback) { + instance = instance._reactInternalFiber; + callback = void 0 === callback ? null : callback; + var expirationTime = computeExpirationForFiber(instance); + insertUpdateIntoFiber(instance, { + expirationTime: expirationTime, + partialState: state, + callback: callback, + isReplace: !0, + isForced: !1, + nextCallback: null, + next: null + }); + scheduleWork(instance, expirationTime); + }, + enqueueForceUpdate: function enqueueForceUpdate(instance, callback) { + instance = instance._reactInternalFiber; + callback = void 0 === callback ? null : callback; + var expirationTime = computeExpirationForFiber(instance); + insertUpdateIntoFiber(instance, { + expirationTime: expirationTime, + partialState: null, + callback: callback, + isReplace: !1, + isForced: !0, + nextCallback: null, + next: null + }); + scheduleWork(instance, expirationTime); + } + }; + return { + adoptClassInstance: adoptClassInstance, + constructClassInstance: function constructClassInstance(workInProgress, props) { + var ctor = workInProgress.type, + unmaskedContext = getUnmaskedContext(workInProgress), + needsContext = 2 === workInProgress.tag && null != workInProgress.type.contextTypes, + context = needsContext ? getMaskedContext(workInProgress, unmaskedContext) : emptyObject; + props = new ctor(props, context); + adoptClassInstance(workInProgress, props); + needsContext && (workInProgress = workInProgress.stateNode, workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext, workInProgress.__reactInternalMemoizedMaskedChildContext = context); + return props; + }, + mountClassInstance: function mountClassInstance(workInProgress, renderExpirationTime) { + var current = workInProgress.alternate, + instance = workInProgress.stateNode, + state = instance.state || null, + props = workInProgress.pendingProps, + unmaskedContext = getUnmaskedContext(workInProgress); + instance.props = props; + instance.state = workInProgress.memoizedState = state; + instance.refs = emptyObject; + instance.context = getMaskedContext(workInProgress, unmaskedContext); + null != workInProgress.type && null != workInProgress.type.prototype && !0 === workInProgress.type.prototype.unstable_isAsyncReactComponent && (workInProgress.internalContextTag |= 1); + "function" === typeof instance.componentWillMount && (state = instance.state, instance.componentWillMount(), debugRenderPhaseSideEffects && instance.componentWillMount(), state !== instance.state && updater.enqueueReplaceState(instance, instance.state, null), state = workInProgress.updateQueue, null !== state && (instance.state = processUpdateQueue(current, workInProgress, state, instance, props, renderExpirationTime))); + "function" === typeof instance.componentDidMount && (workInProgress.effectTag |= 4); + }, + updateClassInstance: function updateClassInstance(current, workInProgress, renderExpirationTime) { + var instance = workInProgress.stateNode; + instance.props = workInProgress.memoizedProps; + instance.state = workInProgress.memoizedState; + var oldProps = workInProgress.memoizedProps, + newProps = workInProgress.pendingProps, + oldContext = instance.context, + newUnmaskedContext = getUnmaskedContext(workInProgress); + newUnmaskedContext = getMaskedContext(workInProgress, newUnmaskedContext); + "function" !== typeof instance.componentWillReceiveProps || oldProps === newProps && oldContext === newUnmaskedContext || (oldContext = instance.state, instance.componentWillReceiveProps(newProps, newUnmaskedContext), debugRenderPhaseSideEffects && instance.componentWillReceiveProps(newProps, newUnmaskedContext), instance.state !== oldContext && updater.enqueueReplaceState(instance, instance.state, null)); + oldContext = workInProgress.memoizedState; + renderExpirationTime = null !== workInProgress.updateQueue ? processUpdateQueue(current, workInProgress, workInProgress.updateQueue, instance, newProps, renderExpirationTime) : oldContext; + if (!(oldProps !== newProps || oldContext !== renderExpirationTime || didPerformWorkStackCursor.current || null !== workInProgress.updateQueue && workInProgress.updateQueue.hasForceUpdate)) return "function" !== typeof instance.componentDidUpdate || oldProps === current.memoizedProps && oldContext === current.memoizedState || (workInProgress.effectTag |= 4), !1; + if (null === oldProps || null !== workInProgress.updateQueue && workInProgress.updateQueue.hasForceUpdate) var shouldUpdate = !0;else { + shouldUpdate = workInProgress.stateNode; + var type = workInProgress.type; + "function" === typeof shouldUpdate.shouldComponentUpdate ? (type = shouldUpdate.shouldComponentUpdate(newProps, renderExpirationTime, newUnmaskedContext), debugRenderPhaseSideEffects && shouldUpdate.shouldComponentUpdate(newProps, renderExpirationTime, newUnmaskedContext), shouldUpdate = type) : shouldUpdate = type.prototype && type.prototype.isPureReactComponent ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldContext, renderExpirationTime) : !0; + } + shouldUpdate ? ("function" === typeof instance.componentWillUpdate && (instance.componentWillUpdate(newProps, renderExpirationTime, newUnmaskedContext), debugRenderPhaseSideEffects && instance.componentWillUpdate(newProps, renderExpirationTime, newUnmaskedContext)), "function" === typeof instance.componentDidUpdate && (workInProgress.effectTag |= 4)) : ("function" !== typeof instance.componentDidUpdate || oldProps === current.memoizedProps && oldContext === current.memoizedState || (workInProgress.effectTag |= 4), memoizeProps(workInProgress, newProps), memoizeState(workInProgress, renderExpirationTime)); + instance.props = newProps; + instance.state = renderExpirationTime; + instance.context = newUnmaskedContext; + return shouldUpdate; + } + }; + } + + var isArray$1 = Array.isArray; + + function coerceRef(current, element) { + var mixedRef = element.ref; + + if (null !== mixedRef && "function" !== typeof mixedRef) { + if (element._owner) { + element = element._owner; + var inst = void 0; + element && (invariant(2 === element.tag, "Stateless function components cannot have refs."), inst = element.stateNode); + invariant(inst, "Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.", mixedRef); + var stringRef = "" + mixedRef; + if (null !== current && null !== current.ref && current.ref._stringRef === stringRef) return current.ref; + + current = function current(value) { + var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs; + null === value ? delete refs[stringRef] : refs[stringRef] = value; + }; + + current._stringRef = stringRef; + return current; + } + + invariant("string" === typeof mixedRef, "Expected ref to be a function or a string."); + invariant(element._owner, "Element ref was specified as a string (%s) but no owner was set. You may have multiple copies of React loaded. (details: https://fb.me/react-refs-must-have-owner).", mixedRef); + } + + return mixedRef; + } + + function throwOnInvalidObjectType(returnFiber, newChild) { + "textarea" !== returnFiber.type && invariant(!1, "Objects are not valid as a React child (found: %s).%s", "[object Object]" === Object.prototype.toString.call(newChild) ? "object with keys {" + Object.keys(newChild).join(", ") + "}" : newChild, ""); + } + + function ChildReconciler(shouldTrackSideEffects) { + function deleteChild(returnFiber, childToDelete) { + if (shouldTrackSideEffects) { + var last = returnFiber.lastEffect; + null !== last ? (last.nextEffect = childToDelete, returnFiber.lastEffect = childToDelete) : returnFiber.firstEffect = returnFiber.lastEffect = childToDelete; + childToDelete.nextEffect = null; + childToDelete.effectTag = 8; + } + } + + function deleteRemainingChildren(returnFiber, currentFirstChild) { + if (!shouldTrackSideEffects) return null; + + for (; null !== currentFirstChild;) { + deleteChild(returnFiber, currentFirstChild), currentFirstChild = currentFirstChild.sibling; + } + + return null; + } + + function mapRemainingChildren(returnFiber, currentFirstChild) { + for (returnFiber = new Map(); null !== currentFirstChild;) { + null !== currentFirstChild.key ? returnFiber.set(currentFirstChild.key, currentFirstChild) : returnFiber.set(currentFirstChild.index, currentFirstChild), currentFirstChild = currentFirstChild.sibling; + } + + return returnFiber; + } + + function useFiber(fiber, pendingProps, expirationTime) { + fiber = createWorkInProgress(fiber, pendingProps, expirationTime); + fiber.index = 0; + fiber.sibling = null; + return fiber; + } + + function placeChild(newFiber, lastPlacedIndex, newIndex) { + newFiber.index = newIndex; + if (!shouldTrackSideEffects) return lastPlacedIndex; + newIndex = newFiber.alternate; + if (null !== newIndex) return newIndex = newIndex.index, newIndex < lastPlacedIndex ? (newFiber.effectTag = 2, lastPlacedIndex) : newIndex; + newFiber.effectTag = 2; + return lastPlacedIndex; + } + + function placeSingleChild(newFiber) { + shouldTrackSideEffects && null === newFiber.alternate && (newFiber.effectTag = 2); + return newFiber; + } + + function updateTextNode(returnFiber, current, textContent, expirationTime) { + if (null === current || 6 !== current.tag) return current = createFiberFromText(textContent, returnFiber.internalContextTag, expirationTime), current["return"] = returnFiber, current; + current = useFiber(current, textContent, expirationTime); + current["return"] = returnFiber; + return current; + } + + function updateElement(returnFiber, current, element, expirationTime) { + if (null !== current && current.type === element.type) return expirationTime = useFiber(current, element.props, expirationTime), expirationTime.ref = coerceRef(current, element), expirationTime["return"] = returnFiber, expirationTime; + expirationTime = createFiberFromElement(element, returnFiber.internalContextTag, expirationTime); + expirationTime.ref = coerceRef(current, element); + expirationTime["return"] = returnFiber; + return expirationTime; + } + + function updateCall(returnFiber, current, call, expirationTime) { + if (null === current || 7 !== current.tag) return current = createFiberFromCall(call, returnFiber.internalContextTag, expirationTime), current["return"] = returnFiber, current; + current = useFiber(current, call, expirationTime); + current["return"] = returnFiber; + return current; + } + + function updateReturn(returnFiber, current, returnNode, expirationTime) { + if (null === current || 9 !== current.tag) return current = createFiberFromReturn(returnNode, returnFiber.internalContextTag, expirationTime), current.type = returnNode.value, current["return"] = returnFiber, current; + current = useFiber(current, null, expirationTime); + current.type = returnNode.value; + current["return"] = returnFiber; + return current; + } + + function updatePortal(returnFiber, current, portal, expirationTime) { + if (null === current || 4 !== current.tag || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) return current = createFiberFromPortal(portal, returnFiber.internalContextTag, expirationTime), current["return"] = returnFiber, current; + current = useFiber(current, portal.children || [], expirationTime); + current["return"] = returnFiber; + return current; + } + + function updateFragment(returnFiber, current, fragment, expirationTime, key) { + if (null === current || 10 !== current.tag) return current = createFiberFromFragment(fragment, returnFiber.internalContextTag, expirationTime, key), current["return"] = returnFiber, current; + current = useFiber(current, fragment, expirationTime); + current["return"] = returnFiber; + return current; + } + + function createChild(returnFiber, newChild, expirationTime) { + if ("string" === typeof newChild || "number" === typeof newChild) return newChild = createFiberFromText("" + newChild, returnFiber.internalContextTag, expirationTime), newChild["return"] = returnFiber, newChild; + + if ("object" === typeof newChild && null !== newChild) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + if (newChild.type === REACT_FRAGMENT_TYPE) return newChild = createFiberFromFragment(newChild.props.children, returnFiber.internalContextTag, expirationTime, newChild.key), newChild["return"] = returnFiber, newChild; + expirationTime = createFiberFromElement(newChild, returnFiber.internalContextTag, expirationTime); + expirationTime.ref = coerceRef(null, newChild); + expirationTime["return"] = returnFiber; + return expirationTime; + + case REACT_CALL_TYPE: + return newChild = createFiberFromCall(newChild, returnFiber.internalContextTag, expirationTime), newChild["return"] = returnFiber, newChild; + + case REACT_RETURN_TYPE: + return expirationTime = createFiberFromReturn(newChild, returnFiber.internalContextTag, expirationTime), expirationTime.type = newChild.value, expirationTime["return"] = returnFiber, expirationTime; + + case REACT_PORTAL_TYPE: + return newChild = createFiberFromPortal(newChild, returnFiber.internalContextTag, expirationTime), newChild["return"] = returnFiber, newChild; + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) return newChild = createFiberFromFragment(newChild, returnFiber.internalContextTag, expirationTime, null), newChild["return"] = returnFiber, newChild; + throwOnInvalidObjectType(returnFiber, newChild); + } + + return null; + } + + function updateSlot(returnFiber, oldFiber, newChild, expirationTime) { + var key = null !== oldFiber ? oldFiber.key : null; + if ("string" === typeof newChild || "number" === typeof newChild) return null !== key ? null : updateTextNode(returnFiber, oldFiber, "" + newChild, expirationTime); + + if ("object" === typeof newChild && null !== newChild) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + return newChild.key === key ? newChild.type === REACT_FRAGMENT_TYPE ? updateFragment(returnFiber, oldFiber, newChild.props.children, expirationTime, key) : updateElement(returnFiber, oldFiber, newChild, expirationTime) : null; + + case REACT_CALL_TYPE: + return newChild.key === key ? updateCall(returnFiber, oldFiber, newChild, expirationTime) : null; + + case REACT_RETURN_TYPE: + return null === key ? updateReturn(returnFiber, oldFiber, newChild, expirationTime) : null; + + case REACT_PORTAL_TYPE: + return newChild.key === key ? updatePortal(returnFiber, oldFiber, newChild, expirationTime) : null; + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) return null !== key ? null : updateFragment(returnFiber, oldFiber, newChild, expirationTime, null); + throwOnInvalidObjectType(returnFiber, newChild); + } + + return null; + } + + function updateFromMap(existingChildren, returnFiber, newIdx, newChild, expirationTime) { + if ("string" === typeof newChild || "number" === typeof newChild) return existingChildren = existingChildren.get(newIdx) || null, updateTextNode(returnFiber, existingChildren, "" + newChild, expirationTime); + + if ("object" === typeof newChild && null !== newChild) { + switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + return existingChildren = existingChildren.get(null === newChild.key ? newIdx : newChild.key) || null, newChild.type === REACT_FRAGMENT_TYPE ? updateFragment(returnFiber, existingChildren, newChild.props.children, expirationTime, newChild.key) : updateElement(returnFiber, existingChildren, newChild, expirationTime); + + case REACT_CALL_TYPE: + return existingChildren = existingChildren.get(null === newChild.key ? newIdx : newChild.key) || null, updateCall(returnFiber, existingChildren, newChild, expirationTime); + + case REACT_RETURN_TYPE: + return existingChildren = existingChildren.get(newIdx) || null, updateReturn(returnFiber, existingChildren, newChild, expirationTime); + + case REACT_PORTAL_TYPE: + return existingChildren = existingChildren.get(null === newChild.key ? newIdx : newChild.key) || null, updatePortal(returnFiber, existingChildren, newChild, expirationTime); + } + + if (isArray$1(newChild) || getIteratorFn(newChild)) return existingChildren = existingChildren.get(newIdx) || null, updateFragment(returnFiber, existingChildren, newChild, expirationTime, null); + throwOnInvalidObjectType(returnFiber, newChild); + } + + return null; + } + + function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, expirationTime) { + for (var resultingFirstChild = null, previousNewFiber = null, oldFiber = currentFirstChild, newIdx = currentFirstChild = 0, nextOldFiber = null; null !== oldFiber && newIdx < newChildren.length; newIdx++) { + oldFiber.index > newIdx ? (nextOldFiber = oldFiber, oldFiber = null) : nextOldFiber = oldFiber.sibling; + var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], expirationTime); + + if (null === newFiber) { + null === oldFiber && (oldFiber = nextOldFiber); + break; + } + + shouldTrackSideEffects && oldFiber && null === newFiber.alternate && deleteChild(returnFiber, oldFiber); + currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx); + null === previousNewFiber ? resultingFirstChild = newFiber : previousNewFiber.sibling = newFiber; + previousNewFiber = newFiber; + oldFiber = nextOldFiber; + } + + if (newIdx === newChildren.length) return deleteRemainingChildren(returnFiber, oldFiber), resultingFirstChild; + + if (null === oldFiber) { + for (; newIdx < newChildren.length; newIdx++) { + if (oldFiber = createChild(returnFiber, newChildren[newIdx], expirationTime)) currentFirstChild = placeChild(oldFiber, currentFirstChild, newIdx), null === previousNewFiber ? resultingFirstChild = oldFiber : previousNewFiber.sibling = oldFiber, previousNewFiber = oldFiber; + } + + return resultingFirstChild; + } + + for (oldFiber = mapRemainingChildren(returnFiber, oldFiber); newIdx < newChildren.length; newIdx++) { + if (nextOldFiber = updateFromMap(oldFiber, returnFiber, newIdx, newChildren[newIdx], expirationTime)) { + if (shouldTrackSideEffects && null !== nextOldFiber.alternate) oldFiber["delete"](null === nextOldFiber.key ? newIdx : nextOldFiber.key); + currentFirstChild = placeChild(nextOldFiber, currentFirstChild, newIdx); + null === previousNewFiber ? resultingFirstChild = nextOldFiber : previousNewFiber.sibling = nextOldFiber; + previousNewFiber = nextOldFiber; + } + } + + shouldTrackSideEffects && oldFiber.forEach(function (child) { + return deleteChild(returnFiber, child); + }); + return resultingFirstChild; + } + + function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, expirationTime) { + var iteratorFn = getIteratorFn(newChildrenIterable); + invariant("function" === typeof iteratorFn, "An object is not an iterable. This error is likely caused by a bug in React. Please file an issue."); + newChildrenIterable = iteratorFn.call(newChildrenIterable); + invariant(null != newChildrenIterable, "An iterable object provided no iterator."); + + for (var previousNewFiber = iteratorFn = null, oldFiber = currentFirstChild, newIdx = currentFirstChild = 0, nextOldFiber = null, step = newChildrenIterable.next(); null !== oldFiber && !step.done; newIdx++, step = newChildrenIterable.next()) { + oldFiber.index > newIdx ? (nextOldFiber = oldFiber, oldFiber = null) : nextOldFiber = oldFiber.sibling; + var newFiber = updateSlot(returnFiber, oldFiber, step.value, expirationTime); + + if (null === newFiber) { + oldFiber || (oldFiber = nextOldFiber); + break; + } + + shouldTrackSideEffects && oldFiber && null === newFiber.alternate && deleteChild(returnFiber, oldFiber); + currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx); + null === previousNewFiber ? iteratorFn = newFiber : previousNewFiber.sibling = newFiber; + previousNewFiber = newFiber; + oldFiber = nextOldFiber; + } + + if (step.done) return deleteRemainingChildren(returnFiber, oldFiber), iteratorFn; + + if (null === oldFiber) { + for (; !step.done; newIdx++, step = newChildrenIterable.next()) { + step = createChild(returnFiber, step.value, expirationTime), null !== step && (currentFirstChild = placeChild(step, currentFirstChild, newIdx), null === previousNewFiber ? iteratorFn = step : previousNewFiber.sibling = step, previousNewFiber = step); + } + + return iteratorFn; + } + + for (oldFiber = mapRemainingChildren(returnFiber, oldFiber); !step.done; newIdx++, step = newChildrenIterable.next()) { + if (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, expirationTime), null !== step) { + if (shouldTrackSideEffects && null !== step.alternate) oldFiber["delete"](null === step.key ? newIdx : step.key); + currentFirstChild = placeChild(step, currentFirstChild, newIdx); + null === previousNewFiber ? iteratorFn = step : previousNewFiber.sibling = step; + previousNewFiber = step; + } + } + + shouldTrackSideEffects && oldFiber.forEach(function (child) { + return deleteChild(returnFiber, child); + }); + return iteratorFn; + } + + return function (returnFiber, currentFirstChild, newChild, expirationTime) { + "object" === typeof newChild && null !== newChild && newChild.type === REACT_FRAGMENT_TYPE && null === newChild.key && (newChild = newChild.props.children); + var isObject = "object" === typeof newChild && null !== newChild; + if (isObject) switch (newChild.$$typeof) { + case REACT_ELEMENT_TYPE: + a: { + var key = newChild.key; + + for (isObject = currentFirstChild; null !== isObject;) { + if (isObject.key === key) { + if (10 === isObject.tag ? newChild.type === REACT_FRAGMENT_TYPE : isObject.type === newChild.type) { + deleteRemainingChildren(returnFiber, isObject.sibling); + currentFirstChild = useFiber(isObject, newChild.type === REACT_FRAGMENT_TYPE ? newChild.props.children : newChild.props, expirationTime); + currentFirstChild.ref = coerceRef(isObject, newChild); + currentFirstChild["return"] = returnFiber; + returnFiber = currentFirstChild; + break a; + } else { + deleteRemainingChildren(returnFiber, isObject); + break; + } + } else deleteChild(returnFiber, isObject); + isObject = isObject.sibling; + } + + newChild.type === REACT_FRAGMENT_TYPE ? (currentFirstChild = createFiberFromFragment(newChild.props.children, returnFiber.internalContextTag, expirationTime, newChild.key), currentFirstChild["return"] = returnFiber, returnFiber = currentFirstChild) : (expirationTime = createFiberFromElement(newChild, returnFiber.internalContextTag, expirationTime), expirationTime.ref = coerceRef(currentFirstChild, newChild), expirationTime["return"] = returnFiber, returnFiber = expirationTime); + } + + return placeSingleChild(returnFiber); + + case REACT_CALL_TYPE: + a: { + for (isObject = newChild.key; null !== currentFirstChild;) { + if (currentFirstChild.key === isObject) { + if (7 === currentFirstChild.tag) { + deleteRemainingChildren(returnFiber, currentFirstChild.sibling); + currentFirstChild = useFiber(currentFirstChild, newChild, expirationTime); + currentFirstChild["return"] = returnFiber; + returnFiber = currentFirstChild; + break a; + } else { + deleteRemainingChildren(returnFiber, currentFirstChild); + break; + } + } else deleteChild(returnFiber, currentFirstChild); + currentFirstChild = currentFirstChild.sibling; + } + + currentFirstChild = createFiberFromCall(newChild, returnFiber.internalContextTag, expirationTime); + currentFirstChild["return"] = returnFiber; + returnFiber = currentFirstChild; + } + + return placeSingleChild(returnFiber); + + case REACT_RETURN_TYPE: + a: { + if (null !== currentFirstChild) if (9 === currentFirstChild.tag) { + deleteRemainingChildren(returnFiber, currentFirstChild.sibling); + currentFirstChild = useFiber(currentFirstChild, null, expirationTime); + currentFirstChild.type = newChild.value; + currentFirstChild["return"] = returnFiber; + returnFiber = currentFirstChild; + break a; + } else deleteRemainingChildren(returnFiber, currentFirstChild); + currentFirstChild = createFiberFromReturn(newChild, returnFiber.internalContextTag, expirationTime); + currentFirstChild.type = newChild.value; + currentFirstChild["return"] = returnFiber; + returnFiber = currentFirstChild; + } + + return placeSingleChild(returnFiber); + + case REACT_PORTAL_TYPE: + a: { + for (isObject = newChild.key; null !== currentFirstChild;) { + if (currentFirstChild.key === isObject) { + if (4 === currentFirstChild.tag && currentFirstChild.stateNode.containerInfo === newChild.containerInfo && currentFirstChild.stateNode.implementation === newChild.implementation) { + deleteRemainingChildren(returnFiber, currentFirstChild.sibling); + currentFirstChild = useFiber(currentFirstChild, newChild.children || [], expirationTime); + currentFirstChild["return"] = returnFiber; + returnFiber = currentFirstChild; + break a; + } else { + deleteRemainingChildren(returnFiber, currentFirstChild); + break; + } + } else deleteChild(returnFiber, currentFirstChild); + currentFirstChild = currentFirstChild.sibling; + } + + currentFirstChild = createFiberFromPortal(newChild, returnFiber.internalContextTag, expirationTime); + currentFirstChild["return"] = returnFiber; + returnFiber = currentFirstChild; + } + + return placeSingleChild(returnFiber); + } + if ("string" === typeof newChild || "number" === typeof newChild) return newChild = "" + newChild, null !== currentFirstChild && 6 === currentFirstChild.tag ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling), currentFirstChild = useFiber(currentFirstChild, newChild, expirationTime)) : (deleteRemainingChildren(returnFiber, currentFirstChild), currentFirstChild = createFiberFromText(newChild, returnFiber.internalContextTag, expirationTime)), currentFirstChild["return"] = returnFiber, returnFiber = currentFirstChild, placeSingleChild(returnFiber); + if (isArray$1(newChild)) return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, expirationTime); + if (getIteratorFn(newChild)) return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, expirationTime); + isObject && throwOnInvalidObjectType(returnFiber, newChild); + if ("undefined" === typeof newChild) switch (returnFiber.tag) { + case 2: + case 1: + expirationTime = returnFiber.type, invariant(!1, "%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.", expirationTime.displayName || expirationTime.name || "Component"); + } + return deleteRemainingChildren(returnFiber, currentFirstChild); + }; + } + + var reconcileChildFibers = ChildReconciler(!0), + mountChildFibers = ChildReconciler(!1); + + function ReactFiberBeginWork(config, hostContext, hydrationContext, scheduleWork, computeExpirationForFiber) { + function reconcileChildren(current, workInProgress, nextChildren) { + var renderExpirationTime = workInProgress.expirationTime; + workInProgress.child = null === current ? mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime) : reconcileChildFibers(workInProgress, current.child, nextChildren, renderExpirationTime); + } + + function markRef(current, workInProgress) { + var ref = workInProgress.ref; + null === ref || current && current.ref === ref || (workInProgress.effectTag |= 128); + } + + function finishClassComponent(current, workInProgress, shouldUpdate, hasContext) { + markRef(current, workInProgress); + if (!shouldUpdate) return hasContext && invalidateContextProvider(workInProgress, !1), bailoutOnAlreadyFinishedWork(current, workInProgress); + shouldUpdate = workInProgress.stateNode; + ReactCurrentOwner.current = workInProgress; + debugRenderPhaseSideEffects && shouldUpdate.render(); + var nextChildren = shouldUpdate.render(); + workInProgress.effectTag |= 1; + reconcileChildren(current, workInProgress, nextChildren); + workInProgress.memoizedState = shouldUpdate.state; + workInProgress.memoizedProps = shouldUpdate.props; + hasContext && invalidateContextProvider(workInProgress, !0); + return workInProgress.child; + } + + function pushHostRootContext(workInProgress) { + var root = workInProgress.stateNode; + root.pendingContext ? pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context) : root.context && pushTopLevelContextObject(workInProgress, root.context, !1); + pushHostContainer(workInProgress, root.containerInfo); + } + + function bailoutOnAlreadyFinishedWork(current, workInProgress) { + invariant(null === current || workInProgress.child === current.child, "Resuming work not yet implemented."); + + if (null !== workInProgress.child) { + current = workInProgress.child; + var newChild = createWorkInProgress(current, current.pendingProps, current.expirationTime); + workInProgress.child = newChild; + + for (newChild["return"] = workInProgress; null !== current.sibling;) { + current = current.sibling, newChild = newChild.sibling = createWorkInProgress(current, current.pendingProps, current.expirationTime), newChild["return"] = workInProgress; + } + + newChild.sibling = null; + } + + return workInProgress.child; + } + + function bailoutOnLowPriority(current, workInProgress) { + switch (workInProgress.tag) { + case 3: + pushHostRootContext(workInProgress); + break; + + case 2: + pushContextProvider(workInProgress); + break; + + case 4: + pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo); + } + + return null; + } + + var shouldSetTextContent = config.shouldSetTextContent, + useSyncScheduling = config.useSyncScheduling, + shouldDeprioritizeSubtree = config.shouldDeprioritizeSubtree, + pushHostContext = hostContext.pushHostContext, + pushHostContainer = hostContext.pushHostContainer, + enterHydrationState = hydrationContext.enterHydrationState, + resetHydrationState = hydrationContext.resetHydrationState, + tryToClaimNextHydratableInstance = hydrationContext.tryToClaimNextHydratableInstance; + config = ReactFiberClassComponent(scheduleWork, computeExpirationForFiber, function (workInProgress, nextProps) { + workInProgress.memoizedProps = nextProps; + }, function (workInProgress, nextState) { + workInProgress.memoizedState = nextState; + }); + var adoptClassInstance = config.adoptClassInstance, + constructClassInstance = config.constructClassInstance, + mountClassInstance = config.mountClassInstance, + updateClassInstance = config.updateClassInstance; + return { + beginWork: function beginWork(current, workInProgress, renderExpirationTime) { + if (0 === workInProgress.expirationTime || workInProgress.expirationTime > renderExpirationTime) return bailoutOnLowPriority(current, workInProgress); + + switch (workInProgress.tag) { + case 0: + invariant(null === current, "An indeterminate component should never have mounted. This error is likely caused by a bug in React. Please file an issue."); + var fn = workInProgress.type, + props = workInProgress.pendingProps, + unmaskedContext = getUnmaskedContext(workInProgress); + unmaskedContext = getMaskedContext(workInProgress, unmaskedContext); + fn = fn(props, unmaskedContext); + workInProgress.effectTag |= 1; + "object" === typeof fn && null !== fn && "function" === typeof fn.render ? (workInProgress.tag = 2, props = pushContextProvider(workInProgress), adoptClassInstance(workInProgress, fn), mountClassInstance(workInProgress, renderExpirationTime), current = finishClassComponent(current, workInProgress, !0, props)) : (workInProgress.tag = 1, reconcileChildren(current, workInProgress, fn), workInProgress.memoizedProps = props, current = workInProgress.child); + return current; + + case 1: + return props = workInProgress.type, renderExpirationTime = workInProgress.pendingProps, didPerformWorkStackCursor.current || workInProgress.memoizedProps !== renderExpirationTime ? (fn = getUnmaskedContext(workInProgress), fn = getMaskedContext(workInProgress, fn), props = props(renderExpirationTime, fn), workInProgress.effectTag |= 1, reconcileChildren(current, workInProgress, props), workInProgress.memoizedProps = renderExpirationTime, current = workInProgress.child) : current = bailoutOnAlreadyFinishedWork(current, workInProgress), current; + + case 2: + return props = pushContextProvider(workInProgress), fn = void 0, null === current ? workInProgress.stateNode ? invariant(!1, "Resuming work not yet implemented.") : (constructClassInstance(workInProgress, workInProgress.pendingProps), mountClassInstance(workInProgress, renderExpirationTime), fn = !0) : fn = updateClassInstance(current, workInProgress, renderExpirationTime), finishClassComponent(current, workInProgress, fn, props); + + case 3: + return pushHostRootContext(workInProgress), props = workInProgress.updateQueue, null !== props ? (fn = workInProgress.memoizedState, props = processUpdateQueue(current, workInProgress, props, null, null, renderExpirationTime), fn === props ? (resetHydrationState(), current = bailoutOnAlreadyFinishedWork(current, workInProgress)) : (fn = props.element, unmaskedContext = workInProgress.stateNode, (null === current || null === current.child) && unmaskedContext.hydrate && enterHydrationState(workInProgress) ? (workInProgress.effectTag |= 2, workInProgress.child = mountChildFibers(workInProgress, null, fn, renderExpirationTime)) : (resetHydrationState(), reconcileChildren(current, workInProgress, fn)), workInProgress.memoizedState = props, current = workInProgress.child)) : (resetHydrationState(), current = bailoutOnAlreadyFinishedWork(current, workInProgress)), current; + + case 5: + pushHostContext(workInProgress); + null === current && tryToClaimNextHydratableInstance(workInProgress); + props = workInProgress.type; + var memoizedProps = workInProgress.memoizedProps; + fn = workInProgress.pendingProps; + unmaskedContext = null !== current ? current.memoizedProps : null; + didPerformWorkStackCursor.current || memoizedProps !== fn ? (memoizedProps = fn.children, shouldSetTextContent(props, fn) ? memoizedProps = null : unmaskedContext && shouldSetTextContent(props, unmaskedContext) && (workInProgress.effectTag |= 16), markRef(current, workInProgress), 2147483647 !== renderExpirationTime && !useSyncScheduling && shouldDeprioritizeSubtree(props, fn) ? (workInProgress.expirationTime = 2147483647, current = null) : (reconcileChildren(current, workInProgress, memoizedProps), workInProgress.memoizedProps = fn, current = workInProgress.child)) : current = bailoutOnAlreadyFinishedWork(current, workInProgress); + return current; + + case 6: + return null === current && tryToClaimNextHydratableInstance(workInProgress), workInProgress.memoizedProps = workInProgress.pendingProps, null; + + case 8: + workInProgress.tag = 7; + + case 7: + return props = workInProgress.pendingProps, didPerformWorkStackCursor.current || workInProgress.memoizedProps !== props || (props = workInProgress.memoizedProps), fn = props.children, workInProgress.stateNode = null === current ? mountChildFibers(workInProgress, workInProgress.stateNode, fn, renderExpirationTime) : reconcileChildFibers(workInProgress, workInProgress.stateNode, fn, renderExpirationTime), workInProgress.memoizedProps = props, workInProgress.stateNode; + + case 9: + return null; + + case 4: + return pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo), props = workInProgress.pendingProps, didPerformWorkStackCursor.current || workInProgress.memoizedProps !== props ? (null === current ? workInProgress.child = reconcileChildFibers(workInProgress, null, props, renderExpirationTime) : reconcileChildren(current, workInProgress, props), workInProgress.memoizedProps = props, current = workInProgress.child) : current = bailoutOnAlreadyFinishedWork(current, workInProgress), current; + + case 10: + return renderExpirationTime = workInProgress.pendingProps, didPerformWorkStackCursor.current || null !== renderExpirationTime && workInProgress.memoizedProps !== renderExpirationTime ? (reconcileChildren(current, workInProgress, renderExpirationTime), workInProgress.memoizedProps = renderExpirationTime, current = workInProgress.child) : current = bailoutOnAlreadyFinishedWork(current, workInProgress), current; + + default: + invariant(!1, "Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue."); + } + }, + beginFailedWork: function beginFailedWork(current, workInProgress, renderExpirationTime) { + switch (workInProgress.tag) { + case 2: + pushContextProvider(workInProgress); + break; + + case 3: + pushHostRootContext(workInProgress); + break; + + default: + invariant(!1, "Invalid type of work. This error is likely caused by a bug in React. Please file an issue."); + } + + workInProgress.effectTag |= 64; + null === current ? workInProgress.child = null : workInProgress.child !== current.child && (workInProgress.child = current.child); + if (0 === workInProgress.expirationTime || workInProgress.expirationTime > renderExpirationTime) return bailoutOnLowPriority(current, workInProgress); + workInProgress.firstEffect = null; + workInProgress.lastEffect = null; + workInProgress.child = null === current ? mountChildFibers(workInProgress, null, null, renderExpirationTime) : reconcileChildFibers(workInProgress, current.child, null, renderExpirationTime); + 2 === workInProgress.tag && (current = workInProgress.stateNode, workInProgress.memoizedProps = current.props, workInProgress.memoizedState = current.state); + return workInProgress.child; + } + }; + } + + function ReactFiberCompleteWork(config, hostContext, hydrationContext) { + function markUpdate(workInProgress) { + workInProgress.effectTag |= 4; + } + + var createInstance = config.createInstance, + createTextInstance = config.createTextInstance, + appendInitialChild = config.appendInitialChild, + finalizeInitialChildren = config.finalizeInitialChildren, + prepareUpdate = config.prepareUpdate, + persistence = config.persistence, + getRootHostContainer = hostContext.getRootHostContainer, + popHostContext = hostContext.popHostContext, + getHostContext = hostContext.getHostContext, + popHostContainer = hostContext.popHostContainer, + prepareToHydrateHostInstance = hydrationContext.prepareToHydrateHostInstance, + prepareToHydrateHostTextInstance = hydrationContext.prepareToHydrateHostTextInstance, + popHydrationState = hydrationContext.popHydrationState, + updateHostContainer = void 0, + updateHostComponent = void 0, + updateHostText = void 0; + config.mutation ? (updateHostContainer = function updateHostContainer() {}, updateHostComponent = function updateHostComponent(current, workInProgress, updatePayload) { + (workInProgress.updateQueue = updatePayload) && markUpdate(workInProgress); + }, updateHostText = function updateHostText(current, workInProgress, oldText, newText) { + oldText !== newText && markUpdate(workInProgress); + }) : persistence ? invariant(!1, "Persistent reconciler is disabled.") : invariant(!1, "Noop reconciler is disabled."); + return { + completeWork: function completeWork(current, workInProgress, renderExpirationTime) { + var newProps = workInProgress.pendingProps; + + switch (workInProgress.tag) { + case 1: + return null; + + case 2: + return popContextProvider(workInProgress), null; + + case 3: + popHostContainer(workInProgress); + pop(didPerformWorkStackCursor, workInProgress); + pop(contextStackCursor, workInProgress); + newProps = workInProgress.stateNode; + newProps.pendingContext && (newProps.context = newProps.pendingContext, newProps.pendingContext = null); + if (null === current || null === current.child) popHydrationState(workInProgress), workInProgress.effectTag &= -3; + updateHostContainer(workInProgress); + return null; + + case 5: + popHostContext(workInProgress); + renderExpirationTime = getRootHostContainer(); + var type = workInProgress.type; + + if (null !== current && null != workInProgress.stateNode) { + var oldProps = current.memoizedProps, + instance = workInProgress.stateNode, + currentHostContext = getHostContext(); + instance = prepareUpdate(instance, type, oldProps, newProps, renderExpirationTime, currentHostContext); + updateHostComponent(current, workInProgress, instance, type, oldProps, newProps, renderExpirationTime); + current.ref !== workInProgress.ref && (workInProgress.effectTag |= 128); + } else { + if (!newProps) return invariant(null !== workInProgress.stateNode, "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."), null; + current = getHostContext(); + if (popHydrationState(workInProgress)) prepareToHydrateHostInstance(workInProgress, renderExpirationTime, current) && markUpdate(workInProgress);else { + current = createInstance(type, newProps, renderExpirationTime, current, workInProgress); + + a: for (oldProps = workInProgress.child; null !== oldProps;) { + if (5 === oldProps.tag || 6 === oldProps.tag) appendInitialChild(current, oldProps.stateNode);else if (4 !== oldProps.tag && null !== oldProps.child) { + oldProps.child["return"] = oldProps; + oldProps = oldProps.child; + continue; + } + if (oldProps === workInProgress) break; + + for (; null === oldProps.sibling;) { + if (null === oldProps["return"] || oldProps["return"] === workInProgress) break a; + oldProps = oldProps["return"]; + } + + oldProps.sibling["return"] = oldProps["return"]; + oldProps = oldProps.sibling; + } + + finalizeInitialChildren(current, type, newProps, renderExpirationTime) && markUpdate(workInProgress); + workInProgress.stateNode = current; + } + null !== workInProgress.ref && (workInProgress.effectTag |= 128); + } + + return null; + + case 6: + if (current && null != workInProgress.stateNode) updateHostText(current, workInProgress, current.memoizedProps, newProps);else { + if ("string" !== typeof newProps) return invariant(null !== workInProgress.stateNode, "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."), null; + current = getRootHostContainer(); + renderExpirationTime = getHostContext(); + popHydrationState(workInProgress) ? prepareToHydrateHostTextInstance(workInProgress) && markUpdate(workInProgress) : workInProgress.stateNode = createTextInstance(newProps, current, renderExpirationTime, workInProgress); + } + return null; + + case 7: + newProps = workInProgress.memoizedProps; + invariant(newProps, "Should be resolved by now. This error is likely caused by a bug in React. Please file an issue."); + workInProgress.tag = 8; + type = []; + + a: for ((oldProps = workInProgress.stateNode) && (oldProps["return"] = workInProgress); null !== oldProps;) { + if (5 === oldProps.tag || 6 === oldProps.tag || 4 === oldProps.tag) invariant(!1, "A call cannot have host component children.");else if (9 === oldProps.tag) type.push(oldProps.type);else if (null !== oldProps.child) { + oldProps.child["return"] = oldProps; + oldProps = oldProps.child; + continue; + } + + for (; null === oldProps.sibling;) { + if (null === oldProps["return"] || oldProps["return"] === workInProgress) break a; + oldProps = oldProps["return"]; + } + + oldProps.sibling["return"] = oldProps["return"]; + oldProps = oldProps.sibling; + } + + oldProps = newProps.handler; + newProps = oldProps(newProps.props, type); + workInProgress.child = reconcileChildFibers(workInProgress, null !== current ? current.child : null, newProps, renderExpirationTime); + return workInProgress.child; + + case 8: + return workInProgress.tag = 7, null; + + case 9: + return null; + + case 10: + return null; + + case 4: + return popHostContainer(workInProgress), updateHostContainer(workInProgress), null; + + case 0: + invariant(!1, "An indeterminate component should have become determinate before completing. This error is likely caused by a bug in React. Please file an issue."); + + default: + invariant(!1, "Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue."); + } + } + }; + } + + function ReactFiberCommitWork(config, captureError) { + function safelyDetachRef(current) { + var ref = current.ref; + if (null !== ref) try { + ref(null); + } catch (refError) { + captureError(current, refError); + } + } + + function commitUnmount(current) { + "function" === typeof onCommitUnmount && onCommitUnmount(current); + + switch (current.tag) { + case 2: + safelyDetachRef(current); + var instance = current.stateNode; + if ("function" === typeof instance.componentWillUnmount) try { + instance.props = current.memoizedProps, instance.state = current.memoizedState, instance.componentWillUnmount(); + } catch (unmountError) { + captureError(current, unmountError); + } + break; + + case 5: + safelyDetachRef(current); + break; + + case 7: + commitNestedUnmounts(current.stateNode); + break; + + case 4: + mutation && unmountHostComponents(current); + } + } + + function commitNestedUnmounts(root) { + for (var node = root;;) { + if (commitUnmount(node), null === node.child || mutation && 4 === node.tag) { + if (node === root) break; + + for (; null === node.sibling;) { + if (null === node["return"] || node["return"] === root) return; + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } else node.child["return"] = node, node = node.child; + } + } + + function isHostParent(fiber) { + return 5 === fiber.tag || 3 === fiber.tag || 4 === fiber.tag; + } + + function unmountHostComponents(current) { + for (var node = current, currentParentIsValid = !1, currentParent = void 0, currentParentIsContainer = void 0;;) { + if (!currentParentIsValid) { + currentParentIsValid = node["return"]; + + a: for (;;) { + invariant(null !== currentParentIsValid, "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue."); + + switch (currentParentIsValid.tag) { + case 5: + currentParent = currentParentIsValid.stateNode; + currentParentIsContainer = !1; + break a; + + case 3: + currentParent = currentParentIsValid.stateNode.containerInfo; + currentParentIsContainer = !0; + break a; + + case 4: + currentParent = currentParentIsValid.stateNode.containerInfo; + currentParentIsContainer = !0; + break a; + } + + currentParentIsValid = currentParentIsValid["return"]; + } + + currentParentIsValid = !0; + } + + if (5 === node.tag || 6 === node.tag) commitNestedUnmounts(node), currentParentIsContainer ? removeChildFromContainer(currentParent, node.stateNode) : removeChild(currentParent, node.stateNode);else if (4 === node.tag ? currentParent = node.stateNode.containerInfo : commitUnmount(node), null !== node.child) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === current) break; + + for (; null === node.sibling;) { + if (null === node["return"] || node["return"] === current) return; + node = node["return"]; + 4 === node.tag && (currentParentIsValid = !1); + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + } + + var getPublicInstance = config.getPublicInstance, + mutation = config.mutation; + config = config.persistence; + mutation || (config ? invariant(!1, "Persistent reconciler is disabled.") : invariant(!1, "Noop reconciler is disabled.")); + var commitMount = mutation.commitMount, + commitUpdate = mutation.commitUpdate, + resetTextContent = mutation.resetTextContent, + commitTextUpdate = mutation.commitTextUpdate, + appendChild = mutation.appendChild, + appendChildToContainer = mutation.appendChildToContainer, + insertBefore = mutation.insertBefore, + insertInContainerBefore = mutation.insertInContainerBefore, + removeChild = mutation.removeChild, + removeChildFromContainer = mutation.removeChildFromContainer; + return { + commitResetTextContent: function commitResetTextContent(current) { + resetTextContent(current.stateNode); + }, + commitPlacement: function commitPlacement(finishedWork) { + a: { + for (var parent = finishedWork["return"]; null !== parent;) { + if (isHostParent(parent)) { + var parentFiber = parent; + break a; + } + + parent = parent["return"]; + } + + invariant(!1, "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue."); + parentFiber = void 0; + } + + var isContainer = parent = void 0; + + switch (parentFiber.tag) { + case 5: + parent = parentFiber.stateNode; + isContainer = !1; + break; + + case 3: + parent = parentFiber.stateNode.containerInfo; + isContainer = !0; + break; + + case 4: + parent = parentFiber.stateNode.containerInfo; + isContainer = !0; + break; + + default: + invariant(!1, "Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue."); + } + + parentFiber.effectTag & 16 && (resetTextContent(parent), parentFiber.effectTag &= -17); + + a: b: for (parentFiber = finishedWork;;) { + for (; null === parentFiber.sibling;) { + if (null === parentFiber["return"] || isHostParent(parentFiber["return"])) { + parentFiber = null; + break a; + } + + parentFiber = parentFiber["return"]; + } + + parentFiber.sibling["return"] = parentFiber["return"]; + + for (parentFiber = parentFiber.sibling; 5 !== parentFiber.tag && 6 !== parentFiber.tag;) { + if (parentFiber.effectTag & 2) continue b; + if (null === parentFiber.child || 4 === parentFiber.tag) continue b;else parentFiber.child["return"] = parentFiber, parentFiber = parentFiber.child; + } + + if (!(parentFiber.effectTag & 2)) { + parentFiber = parentFiber.stateNode; + break a; + } + } + + for (var node = finishedWork;;) { + if (5 === node.tag || 6 === node.tag) parentFiber ? isContainer ? insertInContainerBefore(parent, node.stateNode, parentFiber) : insertBefore(parent, node.stateNode, parentFiber) : isContainer ? appendChildToContainer(parent, node.stateNode) : appendChild(parent, node.stateNode);else if (4 !== node.tag && null !== node.child) { + node.child["return"] = node; + node = node.child; + continue; + } + if (node === finishedWork) break; + + for (; null === node.sibling;) { + if (null === node["return"] || node["return"] === finishedWork) return; + node = node["return"]; + } + + node.sibling["return"] = node["return"]; + node = node.sibling; + } + }, + commitDeletion: function commitDeletion(current) { + unmountHostComponents(current); + current["return"] = null; + current.child = null; + current.alternate && (current.alternate.child = null, current.alternate["return"] = null); + }, + commitWork: function commitWork(current, finishedWork) { + switch (finishedWork.tag) { + case 2: + break; + + case 5: + var instance = finishedWork.stateNode; + + if (null != instance) { + var newProps = finishedWork.memoizedProps; + current = null !== current ? current.memoizedProps : newProps; + var type = finishedWork.type, + updatePayload = finishedWork.updateQueue; + finishedWork.updateQueue = null; + null !== updatePayload && commitUpdate(instance, updatePayload, type, current, newProps, finishedWork); + } + + break; + + case 6: + invariant(null !== finishedWork.stateNode, "This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue."); + instance = finishedWork.memoizedProps; + commitTextUpdate(finishedWork.stateNode, null !== current ? current.memoizedProps : instance, instance); + break; + + case 3: + break; + + default: + invariant(!1, "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue."); + } + }, + commitLifeCycles: function commitLifeCycles(current, finishedWork) { + switch (finishedWork.tag) { + case 2: + var instance = finishedWork.stateNode; + if (finishedWork.effectTag & 4) if (null === current) instance.props = finishedWork.memoizedProps, instance.state = finishedWork.memoizedState, instance.componentDidMount();else { + var prevProps = current.memoizedProps; + current = current.memoizedState; + instance.props = finishedWork.memoizedProps; + instance.state = finishedWork.memoizedState; + instance.componentDidUpdate(prevProps, current); + } + finishedWork = finishedWork.updateQueue; + null !== finishedWork && commitCallbacks(finishedWork, instance); + break; + + case 3: + instance = finishedWork.updateQueue; + null !== instance && commitCallbacks(instance, null !== finishedWork.child ? finishedWork.child.stateNode : null); + break; + + case 5: + instance = finishedWork.stateNode; + null === current && finishedWork.effectTag & 4 && commitMount(instance, finishedWork.type, finishedWork.memoizedProps, finishedWork); + break; + + case 6: + break; + + case 4: + break; + + default: + invariant(!1, "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue."); + } + }, + commitAttachRef: function commitAttachRef(finishedWork) { + var ref = finishedWork.ref; + + if (null !== ref) { + var instance = finishedWork.stateNode; + + switch (finishedWork.tag) { + case 5: + ref(getPublicInstance(instance)); + break; + + default: + ref(instance); + } + } + }, + commitDetachRef: function commitDetachRef(current) { + current = current.ref; + null !== current && current(null); + } + }; + } + + var NO_CONTEXT = {}; + + function ReactFiberHostContext(config) { + function requiredContext(c) { + invariant(c !== NO_CONTEXT, "Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."); + return c; + } + + var getChildHostContext = config.getChildHostContext, + getRootHostContext = config.getRootHostContext, + contextStackCursor = { + current: NO_CONTEXT + }, + contextFiberStackCursor = { + current: NO_CONTEXT + }, + rootInstanceStackCursor = { + current: NO_CONTEXT + }; + return { + getHostContext: function getHostContext() { + return requiredContext(contextStackCursor.current); + }, + getRootHostContainer: function getRootHostContainer() { + return requiredContext(rootInstanceStackCursor.current); + }, + popHostContainer: function popHostContainer(fiber) { + pop(contextStackCursor, fiber); + pop(contextFiberStackCursor, fiber); + pop(rootInstanceStackCursor, fiber); + }, + popHostContext: function popHostContext(fiber) { + contextFiberStackCursor.current === fiber && (pop(contextStackCursor, fiber), pop(contextFiberStackCursor, fiber)); + }, + pushHostContainer: function pushHostContainer(fiber, nextRootInstance) { + push(rootInstanceStackCursor, nextRootInstance, fiber); + nextRootInstance = getRootHostContext(nextRootInstance); + push(contextFiberStackCursor, fiber, fiber); + push(contextStackCursor, nextRootInstance, fiber); + }, + pushHostContext: function pushHostContext(fiber) { + var rootInstance = requiredContext(rootInstanceStackCursor.current), + context = requiredContext(contextStackCursor.current); + rootInstance = getChildHostContext(context, fiber.type, rootInstance); + context !== rootInstance && (push(contextFiberStackCursor, fiber, fiber), push(contextStackCursor, rootInstance, fiber)); + }, + resetHostContainer: function resetHostContainer() { + contextStackCursor.current = NO_CONTEXT; + rootInstanceStackCursor.current = NO_CONTEXT; + } + }; + } + + function ReactFiberHydrationContext(config) { + function deleteHydratableInstance(returnFiber, instance) { + var fiber = createFiber(5, null, null, 0); + fiber.type = "DELETED"; + fiber.stateNode = instance; + fiber["return"] = returnFiber; + fiber.effectTag = 8; + null !== returnFiber.lastEffect ? (returnFiber.lastEffect.nextEffect = fiber, returnFiber.lastEffect = fiber) : returnFiber.firstEffect = returnFiber.lastEffect = fiber; + } + + function tryHydrate(fiber, nextInstance) { + switch (fiber.tag) { + case 5: + return nextInstance = canHydrateInstance(nextInstance, fiber.type, fiber.pendingProps), null !== nextInstance ? (fiber.stateNode = nextInstance, !0) : !1; + + case 6: + return nextInstance = canHydrateTextInstance(nextInstance, fiber.pendingProps), null !== nextInstance ? (fiber.stateNode = nextInstance, !0) : !1; + + default: + return !1; + } + } + + function popToNextHostParent(fiber) { + for (fiber = fiber["return"]; null !== fiber && 5 !== fiber.tag && 3 !== fiber.tag;) { + fiber = fiber["return"]; + } + + hydrationParentFiber = fiber; + } + + var shouldSetTextContent = config.shouldSetTextContent; + config = config.hydration; + if (!config) return { + enterHydrationState: function enterHydrationState() { + return !1; + }, + resetHydrationState: function resetHydrationState() {}, + tryToClaimNextHydratableInstance: function tryToClaimNextHydratableInstance() {}, + prepareToHydrateHostInstance: function prepareToHydrateHostInstance() { + invariant(!1, "Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue."); + }, + prepareToHydrateHostTextInstance: function prepareToHydrateHostTextInstance() { + invariant(!1, "Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue."); + }, + popHydrationState: function popHydrationState() { + return !1; + } + }; + var canHydrateInstance = config.canHydrateInstance, + canHydrateTextInstance = config.canHydrateTextInstance, + getNextHydratableSibling = config.getNextHydratableSibling, + getFirstHydratableChild = config.getFirstHydratableChild, + hydrateInstance = config.hydrateInstance, + hydrateTextInstance = config.hydrateTextInstance, + hydrationParentFiber = null, + nextHydratableInstance = null, + isHydrating = !1; + return { + enterHydrationState: function enterHydrationState(fiber) { + nextHydratableInstance = getFirstHydratableChild(fiber.stateNode.containerInfo); + hydrationParentFiber = fiber; + return isHydrating = !0; + }, + resetHydrationState: function resetHydrationState() { + nextHydratableInstance = hydrationParentFiber = null; + isHydrating = !1; + }, + tryToClaimNextHydratableInstance: function tryToClaimNextHydratableInstance(fiber) { + if (isHydrating) { + var nextInstance = nextHydratableInstance; + + if (nextInstance) { + if (!tryHydrate(fiber, nextInstance)) { + nextInstance = getNextHydratableSibling(nextInstance); + + if (!nextInstance || !tryHydrate(fiber, nextInstance)) { + fiber.effectTag |= 2; + isHydrating = !1; + hydrationParentFiber = fiber; + return; + } + + deleteHydratableInstance(hydrationParentFiber, nextHydratableInstance); + } + + hydrationParentFiber = fiber; + nextHydratableInstance = getFirstHydratableChild(nextInstance); + } else fiber.effectTag |= 2, isHydrating = !1, hydrationParentFiber = fiber; + } + }, + prepareToHydrateHostInstance: function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) { + rootContainerInstance = hydrateInstance(fiber.stateNode, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber); + fiber.updateQueue = rootContainerInstance; + return null !== rootContainerInstance ? !0 : !1; + }, + prepareToHydrateHostTextInstance: function prepareToHydrateHostTextInstance(fiber) { + return hydrateTextInstance(fiber.stateNode, fiber.memoizedProps, fiber); + }, + popHydrationState: function popHydrationState(fiber) { + if (fiber !== hydrationParentFiber) return !1; + if (!isHydrating) return popToNextHostParent(fiber), isHydrating = !0, !1; + var type = fiber.type; + if (5 !== fiber.tag || "head" !== type && "body" !== type && !shouldSetTextContent(type, fiber.memoizedProps)) for (type = nextHydratableInstance; type;) { + deleteHydratableInstance(fiber, type), type = getNextHydratableSibling(type); + } + popToNextHostParent(fiber); + nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null; + return !0; + } + }; + } + + function ReactFiberScheduler(config) { + function completeUnitOfWork(workInProgress$jscomp$0) { + for (;;) { + var next = completeWork(workInProgress$jscomp$0.alternate, workInProgress$jscomp$0, nextRenderExpirationTime), + returnFiber = workInProgress$jscomp$0["return"], + siblingFiber = workInProgress$jscomp$0.sibling; + var workInProgress = workInProgress$jscomp$0; + + if (2147483647 === nextRenderExpirationTime || 2147483647 !== workInProgress.expirationTime) { + if (2 !== workInProgress.tag && 3 !== workInProgress.tag) var newExpirationTime = 0;else newExpirationTime = workInProgress.updateQueue, newExpirationTime = null === newExpirationTime ? 0 : newExpirationTime.expirationTime; + + for (var child = workInProgress.child; null !== child;) { + 0 !== child.expirationTime && (0 === newExpirationTime || newExpirationTime > child.expirationTime) && (newExpirationTime = child.expirationTime), child = child.sibling; + } + + workInProgress.expirationTime = newExpirationTime; + } + + if (null !== next) return next; + null !== returnFiber && (null === returnFiber.firstEffect && (returnFiber.firstEffect = workInProgress$jscomp$0.firstEffect), null !== workInProgress$jscomp$0.lastEffect && (null !== returnFiber.lastEffect && (returnFiber.lastEffect.nextEffect = workInProgress$jscomp$0.firstEffect), returnFiber.lastEffect = workInProgress$jscomp$0.lastEffect), 1 < workInProgress$jscomp$0.effectTag && (null !== returnFiber.lastEffect ? returnFiber.lastEffect.nextEffect = workInProgress$jscomp$0 : returnFiber.firstEffect = workInProgress$jscomp$0, returnFiber.lastEffect = workInProgress$jscomp$0)); + if (null !== siblingFiber) return siblingFiber; + if (null !== returnFiber) workInProgress$jscomp$0 = returnFiber;else { + workInProgress$jscomp$0.stateNode.isReadyForCommit = !0; + break; + } + } + + return null; + } + + function performUnitOfWork(workInProgress) { + var next = beginWork(workInProgress.alternate, workInProgress, nextRenderExpirationTime); + null === next && (next = completeUnitOfWork(workInProgress)); + ReactCurrentOwner.current = null; + return next; + } + + function performFailedUnitOfWork(workInProgress) { + var next = beginFailedWork(workInProgress.alternate, workInProgress, nextRenderExpirationTime); + null === next && (next = completeUnitOfWork(workInProgress)); + ReactCurrentOwner.current = null; + return next; + } + + function workLoop(expirationTime) { + if (null !== capturedErrors) { + if (!(0 === nextRenderExpirationTime || nextRenderExpirationTime > expirationTime)) if (nextRenderExpirationTime <= mostRecentCurrentTime) for (; null !== nextUnitOfWork;) { + nextUnitOfWork = hasCapturedError(nextUnitOfWork) ? performFailedUnitOfWork(nextUnitOfWork) : performUnitOfWork(nextUnitOfWork); + } else for (; null !== nextUnitOfWork && !shouldYield();) { + nextUnitOfWork = hasCapturedError(nextUnitOfWork) ? performFailedUnitOfWork(nextUnitOfWork) : performUnitOfWork(nextUnitOfWork); + } + } else if (!(0 === nextRenderExpirationTime || nextRenderExpirationTime > expirationTime)) if (nextRenderExpirationTime <= mostRecentCurrentTime) for (; null !== nextUnitOfWork;) { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } else for (; null !== nextUnitOfWork && !shouldYield();) { + nextUnitOfWork = performUnitOfWork(nextUnitOfWork); + } + } + + function renderRoot(root, expirationTime) { + invariant(!isWorking, "renderRoot was called recursively. This error is likely caused by a bug in React. Please file an issue."); + isWorking = !0; + root.isReadyForCommit = !1; + + if (root !== nextRoot || expirationTime !== nextRenderExpirationTime || null === nextUnitOfWork) { + for (; -1 < index;) { + valueStack[index] = null, index--; + } + + previousContext = emptyObject; + contextStackCursor.current = emptyObject; + didPerformWorkStackCursor.current = !1; + resetHostContainer(); + nextRoot = root; + nextRenderExpirationTime = expirationTime; + nextUnitOfWork = createWorkInProgress(nextRoot.current, null, expirationTime); + } + + var didError = !1, + error = null; + + try { + workLoop(expirationTime); + } catch (e) { + didError = !0, error = e; + } + + for (; didError;) { + if (didFatal) { + firstUncaughtError = error; + break; + } + + var failedWork = nextUnitOfWork; + if (null === failedWork) didFatal = !0;else { + var boundary = captureError(failedWork, error); + invariant(null !== boundary, "Should have found an error boundary. This error is likely caused by a bug in React. Please file an issue."); + + if (!didFatal) { + try { + didError = boundary; + error = expirationTime; + + for (boundary = didError; null !== failedWork;) { + switch (failedWork.tag) { + case 2: + popContextProvider(failedWork); + break; + + case 5: + popHostContext(failedWork); + break; + + case 3: + popHostContainer(failedWork); + break; + + case 4: + popHostContainer(failedWork); + } + + if (failedWork === boundary || failedWork.alternate === boundary) break; + failedWork = failedWork["return"]; + } + + nextUnitOfWork = performFailedUnitOfWork(didError); + workLoop(error); + } catch (e) { + didError = !0; + error = e; + continue; + } + + break; + } + } + } + + expirationTime = firstUncaughtError; + didFatal = isWorking = !1; + firstUncaughtError = null; + null !== expirationTime && onUncaughtError(expirationTime); + return root.isReadyForCommit ? root.current.alternate : null; + } + + function captureError(failedWork, error$jscomp$0) { + var boundary = ReactCurrentOwner.current = null, + errorBoundaryFound = !1, + willRetry = !1, + errorBoundaryName = null; + if (3 === failedWork.tag) boundary = failedWork, isFailedBoundary(failedWork) && (didFatal = !0);else for (var node = failedWork["return"]; null !== node && null === boundary;) { + 2 === node.tag ? "function" === typeof node.stateNode.componentDidCatch && (errorBoundaryFound = !0, errorBoundaryName = getComponentName(node), boundary = node, willRetry = !0) : 3 === node.tag && (boundary = node); + + if (isFailedBoundary(node)) { + if (isUnmounting || null !== commitPhaseBoundaries && (commitPhaseBoundaries.has(node) || null !== node.alternate && commitPhaseBoundaries.has(node.alternate))) return null; + boundary = null; + willRetry = !1; + } + + node = node["return"]; + } + + if (null !== boundary) { + null === failedBoundaries && (failedBoundaries = new Set()); + failedBoundaries.add(boundary); + var info = ""; + node = failedWork; + + do { + a: switch (node.tag) { + case 0: + case 1: + case 2: + case 5: + var owner = node._debugOwner, + source = node._debugSource; + var JSCompiler_inline_result = getComponentName(node); + var ownerName = null; + owner && (ownerName = getComponentName(owner)); + owner = source; + JSCompiler_inline_result = "\n in " + (JSCompiler_inline_result || "Unknown") + (owner ? " (at " + owner.fileName.replace(/^.*[\\\/]/, "") + ":" + owner.lineNumber + ")" : ownerName ? " (created by " + ownerName + ")" : ""); + break a; + + default: + JSCompiler_inline_result = ""; + } + + info += JSCompiler_inline_result; + node = node["return"]; + } while (node); + + node = info; + failedWork = getComponentName(failedWork); + null === capturedErrors && (capturedErrors = new Map()); + error$jscomp$0 = { + componentName: failedWork, + componentStack: node, + error: error$jscomp$0, + errorBoundary: errorBoundaryFound ? boundary.stateNode : null, + errorBoundaryFound: errorBoundaryFound, + errorBoundaryName: errorBoundaryName, + willRetry: willRetry + }; + capturedErrors.set(boundary, error$jscomp$0); + + try { + if (!1 !== showDialog(error$jscomp$0)) { + var error = error$jscomp$0.error; + error && error.suppressReactErrorLogging || console.error(error); + } + } catch (e) { + e && e.suppressReactErrorLogging || console.error(e); + } + + isCommitting ? (null === commitPhaseBoundaries && (commitPhaseBoundaries = new Set()), commitPhaseBoundaries.add(boundary)) : scheduleErrorRecovery(boundary); + return boundary; + } + + null === firstUncaughtError && (firstUncaughtError = error$jscomp$0); + return null; + } + + function hasCapturedError(fiber) { + return null !== capturedErrors && (capturedErrors.has(fiber) || null !== fiber.alternate && capturedErrors.has(fiber.alternate)); + } + + function isFailedBoundary(fiber) { + return null !== failedBoundaries && (failedBoundaries.has(fiber) || null !== fiber.alternate && failedBoundaries.has(fiber.alternate)); + } + + function computeAsyncExpiration() { + return 20 * (((recalculateCurrentTime() + 100) / 20 | 0) + 1); + } + + function computeExpirationForFiber(fiber) { + return 0 !== expirationContext ? expirationContext : isWorking ? isCommitting ? 1 : nextRenderExpirationTime : !useSyncScheduling || fiber.internalContextTag & 1 ? computeAsyncExpiration() : 1; + } + + function scheduleWork(fiber, expirationTime) { + return scheduleWorkImpl(fiber, expirationTime, !1); + } + + function scheduleWorkImpl(fiber, expirationTime) { + for (; null !== fiber;) { + if (0 === fiber.expirationTime || fiber.expirationTime > expirationTime) fiber.expirationTime = expirationTime; + null !== fiber.alternate && (0 === fiber.alternate.expirationTime || fiber.alternate.expirationTime > expirationTime) && (fiber.alternate.expirationTime = expirationTime); + if (null === fiber["return"]) if (3 === fiber.tag) { + var root = fiber.stateNode; + !isWorking && root === nextRoot && expirationTime < nextRenderExpirationTime && (nextUnitOfWork = nextRoot = null, nextRenderExpirationTime = 0); + requestWork(root, expirationTime); + !isWorking && root === nextRoot && expirationTime < nextRenderExpirationTime && (nextUnitOfWork = nextRoot = null, nextRenderExpirationTime = 0); + } else break; + fiber = fiber["return"]; + } + } + + function scheduleErrorRecovery(fiber) { + scheduleWorkImpl(fiber, 1, !0); + } + + function recalculateCurrentTime() { + return mostRecentCurrentTime = ((now() - startTime) / 10 | 0) + 2; + } + + function scheduleCallbackWithExpiration(expirationTime) { + if (0 !== callbackExpirationTime) { + if (expirationTime > callbackExpirationTime) return; + cancelDeferredCallback(callbackID); + } + + var currentMs = now() - startTime; + callbackExpirationTime = expirationTime; + callbackID = scheduleDeferredCallback(performAsyncWork, { + timeout: 10 * (expirationTime - 2) - currentMs + }); + } + + function requestWork(root, expirationTime) { + nestedUpdateCount > NESTED_UPDATE_LIMIT && invariant(!1, "Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops."); + if (null === root.nextScheduledRoot) root.remainingExpirationTime = expirationTime, null === lastScheduledRoot ? (firstScheduledRoot = lastScheduledRoot = root, root.nextScheduledRoot = root) : (lastScheduledRoot = lastScheduledRoot.nextScheduledRoot = root, lastScheduledRoot.nextScheduledRoot = firstScheduledRoot);else { + var remainingExpirationTime = root.remainingExpirationTime; + if (0 === remainingExpirationTime || expirationTime < remainingExpirationTime) root.remainingExpirationTime = expirationTime; + } + isRendering || (isBatchingUpdates ? isUnbatchingUpdates && (nextFlushedRoot = root, nextFlushedExpirationTime = 1, performWorkOnRoot(root, 1, recalculateCurrentTime())) : 1 === expirationTime ? performWork(1, null) : scheduleCallbackWithExpiration(expirationTime)); + } + + function findHighestPriorityRoot() { + var highestPriorityWork = 0, + highestPriorityRoot = null; + if (null !== lastScheduledRoot) for (var previousScheduledRoot = lastScheduledRoot, root = firstScheduledRoot; null !== root;) { + var remainingExpirationTime = root.remainingExpirationTime; + + if (0 === remainingExpirationTime) { + invariant(null !== previousScheduledRoot && null !== lastScheduledRoot, "Should have a previous and last root. This error is likely caused by a bug in React. Please file an issue."); + + if (root === root.nextScheduledRoot) { + firstScheduledRoot = lastScheduledRoot = root.nextScheduledRoot = null; + break; + } else if (root === firstScheduledRoot) firstScheduledRoot = remainingExpirationTime = root.nextScheduledRoot, lastScheduledRoot.nextScheduledRoot = remainingExpirationTime, root.nextScheduledRoot = null;else if (root === lastScheduledRoot) { + lastScheduledRoot = previousScheduledRoot; + lastScheduledRoot.nextScheduledRoot = firstScheduledRoot; + root.nextScheduledRoot = null; + break; + } else previousScheduledRoot.nextScheduledRoot = root.nextScheduledRoot, root.nextScheduledRoot = null; + + root = previousScheduledRoot.nextScheduledRoot; + } else { + if (0 === highestPriorityWork || remainingExpirationTime < highestPriorityWork) highestPriorityWork = remainingExpirationTime, highestPriorityRoot = root; + if (root === lastScheduledRoot) break; + previousScheduledRoot = root; + root = root.nextScheduledRoot; + } + } + previousScheduledRoot = nextFlushedRoot; + null !== previousScheduledRoot && previousScheduledRoot === highestPriorityRoot ? nestedUpdateCount++ : nestedUpdateCount = 0; + nextFlushedRoot = highestPriorityRoot; + nextFlushedExpirationTime = highestPriorityWork; + } + + function performAsyncWork(dl) { + performWork(0, dl); + } + + function performWork(minExpirationTime, dl) { + deadline = dl; + + for (findHighestPriorityRoot(); null !== nextFlushedRoot && 0 !== nextFlushedExpirationTime && (0 === minExpirationTime || nextFlushedExpirationTime <= minExpirationTime) && !deadlineDidExpire;) { + performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, recalculateCurrentTime()), findHighestPriorityRoot(); + } + + null !== deadline && (callbackExpirationTime = 0, callbackID = -1); + 0 !== nextFlushedExpirationTime && scheduleCallbackWithExpiration(nextFlushedExpirationTime); + deadline = null; + deadlineDidExpire = !1; + nestedUpdateCount = 0; + finishRendering(); + } + + function finishRendering() { + if (null !== completedBatches) { + var batches = completedBatches; + completedBatches = null; + + for (var i = 0; i < batches.length; i++) { + var batch = batches[i]; + + try { + batch._onComplete(); + } catch (error) { + hasUnhandledError || (hasUnhandledError = !0, unhandledError = error); + } + } + } + + if (hasUnhandledError) throw batches = unhandledError, unhandledError = null, hasUnhandledError = !1, batches; + } + + function performWorkOnRoot(root, expirationTime, currentTime) { + invariant(!isRendering, "performWorkOnRoot was called recursively. This error is likely caused by a bug in React. Please file an issue."); + isRendering = !0; + expirationTime <= currentTime ? (currentTime = root.finishedWork, null !== currentTime ? completeRoot(root, currentTime, expirationTime) : (root.finishedWork = null, currentTime = renderRoot(root, expirationTime), null !== currentTime && completeRoot(root, currentTime, expirationTime))) : (currentTime = root.finishedWork, null !== currentTime ? completeRoot(root, currentTime, expirationTime) : (root.finishedWork = null, currentTime = renderRoot(root, expirationTime), null !== currentTime && (shouldYield() ? root.finishedWork = currentTime : completeRoot(root, currentTime, expirationTime)))); + isRendering = !1; + } + + function completeRoot(root, finishedWork, expirationTime) { + var firstBatch = root.firstBatch; + + if (null !== firstBatch && firstBatch._expirationTime <= expirationTime && (null === completedBatches ? completedBatches = [firstBatch] : completedBatches.push(firstBatch), firstBatch._defer)) { + root.finishedWork = finishedWork; + root.remainingExpirationTime = 0; + return; + } + + root.finishedWork = null; + isCommitting = isWorking = !0; + expirationTime = finishedWork.stateNode; + invariant(expirationTime.current !== finishedWork, "Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue."); + expirationTime.isReadyForCommit = !1; + ReactCurrentOwner.current = null; + 1 < finishedWork.effectTag ? null !== finishedWork.lastEffect ? (finishedWork.lastEffect.nextEffect = finishedWork, firstBatch = finishedWork.firstEffect) : firstBatch = finishedWork : firstBatch = finishedWork.firstEffect; + prepareForCommit(); + + for (nextEffect = firstBatch; null !== nextEffect;) { + var didError = !1, + _error = void 0; + + try { + for (; null !== nextEffect;) { + var effectTag = nextEffect.effectTag; + effectTag & 16 && commitResetTextContent(nextEffect); + + if (effectTag & 128) { + var current = nextEffect.alternate; + null !== current && commitDetachRef(current); + } + + switch (effectTag & -242) { + case 2: + commitPlacement(nextEffect); + nextEffect.effectTag &= -3; + break; + + case 6: + commitPlacement(nextEffect); + nextEffect.effectTag &= -3; + commitWork(nextEffect.alternate, nextEffect); + break; + + case 4: + commitWork(nextEffect.alternate, nextEffect); + break; + + case 8: + isUnmounting = !0, commitDeletion(nextEffect), isUnmounting = !1; + } + + nextEffect = nextEffect.nextEffect; + } + } catch (e) { + didError = !0, _error = e; + } + + didError && (invariant(null !== nextEffect, "Should have next effect. This error is likely caused by a bug in React. Please file an issue."), captureError(nextEffect, _error), null !== nextEffect && (nextEffect = nextEffect.nextEffect)); + } + + resetAfterCommit(); + expirationTime.current = finishedWork; + + for (nextEffect = firstBatch; null !== nextEffect;) { + effectTag = !1; + current = void 0; + + try { + for (; null !== nextEffect;) { + var effectTag$jscomp$0 = nextEffect.effectTag; + effectTag$jscomp$0 & 36 && commitLifeCycles(nextEffect.alternate, nextEffect); + effectTag$jscomp$0 & 128 && commitAttachRef(nextEffect); + if (effectTag$jscomp$0 & 64) switch (firstBatch = nextEffect, didError = void 0, null !== capturedErrors && (didError = capturedErrors.get(firstBatch), capturedErrors["delete"](firstBatch), null == didError && null !== firstBatch.alternate && (firstBatch = firstBatch.alternate, didError = capturedErrors.get(firstBatch), capturedErrors["delete"](firstBatch))), invariant(null != didError, "No error for given unit of work. This error is likely caused by a bug in React. Please file an issue."), firstBatch.tag) { + case 2: + firstBatch.stateNode.componentDidCatch(didError.error, { + componentStack: didError.componentStack + }); + break; + + case 3: + null === firstUncaughtError && (firstUncaughtError = didError.error); + break; + + default: + invariant(!1, "Invalid type of work. This error is likely caused by a bug in React. Please file an issue."); + } + var next = nextEffect.nextEffect; + nextEffect.nextEffect = null; + nextEffect = next; + } + } catch (e) { + effectTag = !0, current = e; + } + + effectTag && (invariant(null !== nextEffect, "Should have next effect. This error is likely caused by a bug in React. Please file an issue."), captureError(nextEffect, current), null !== nextEffect && (nextEffect = nextEffect.nextEffect)); + } + + isWorking = isCommitting = !1; + "function" === typeof onCommitRoot && onCommitRoot(finishedWork.stateNode); + commitPhaseBoundaries && (commitPhaseBoundaries.forEach(scheduleErrorRecovery), commitPhaseBoundaries = null); + null !== firstUncaughtError && (finishedWork = firstUncaughtError, firstUncaughtError = null, onUncaughtError(finishedWork)); + finishedWork = expirationTime.current.expirationTime; + 0 === finishedWork && (failedBoundaries = capturedErrors = null); + root.remainingExpirationTime = finishedWork; + } + + function shouldYield() { + return null === deadline || deadline.timeRemaining() > timeHeuristicForUnitOfWork ? !1 : deadlineDidExpire = !0; + } + + function onUncaughtError(error) { + invariant(null !== nextFlushedRoot, "Should be working on a root. This error is likely caused by a bug in React. Please file an issue."); + nextFlushedRoot.remainingExpirationTime = 0; + hasUnhandledError || (hasUnhandledError = !0, unhandledError = error); + } + + var hostContext = ReactFiberHostContext(config), + hydrationContext = ReactFiberHydrationContext(config), + popHostContainer = hostContext.popHostContainer, + popHostContext = hostContext.popHostContext, + resetHostContainer = hostContext.resetHostContainer, + _ReactFiberBeginWork = ReactFiberBeginWork(config, hostContext, hydrationContext, scheduleWork, computeExpirationForFiber), + beginWork = _ReactFiberBeginWork.beginWork, + beginFailedWork = _ReactFiberBeginWork.beginFailedWork, + completeWork = ReactFiberCompleteWork(config, hostContext, hydrationContext).completeWork; + + hostContext = ReactFiberCommitWork(config, captureError); + var commitResetTextContent = hostContext.commitResetTextContent, + commitPlacement = hostContext.commitPlacement, + commitDeletion = hostContext.commitDeletion, + commitWork = hostContext.commitWork, + commitLifeCycles = hostContext.commitLifeCycles, + commitAttachRef = hostContext.commitAttachRef, + commitDetachRef = hostContext.commitDetachRef, + now = config.now, + scheduleDeferredCallback = config.scheduleDeferredCallback, + cancelDeferredCallback = config.cancelDeferredCallback, + useSyncScheduling = config.useSyncScheduling, + prepareForCommit = config.prepareForCommit, + resetAfterCommit = config.resetAfterCommit, + startTime = now(), + mostRecentCurrentTime = 2, + lastUniqueAsyncExpiration = 0, + expirationContext = 0, + isWorking = !1, + nextUnitOfWork = null, + nextRoot = null, + nextRenderExpirationTime = 0, + nextEffect = null, + capturedErrors = null, + failedBoundaries = null, + commitPhaseBoundaries = null, + firstUncaughtError = null, + didFatal = !1, + isCommitting = !1, + isUnmounting = !1, + firstScheduledRoot = null, + lastScheduledRoot = null, + callbackExpirationTime = 0, + callbackID = -1, + isRendering = !1, + nextFlushedRoot = null, + nextFlushedExpirationTime = 0, + deadlineDidExpire = !1, + hasUnhandledError = !1, + unhandledError = null, + deadline = null, + isBatchingUpdates = !1, + isUnbatchingUpdates = !1, + completedBatches = null, + NESTED_UPDATE_LIMIT = 1e3, + nestedUpdateCount = 0, + timeHeuristicForUnitOfWork = 1; + return { + computeAsyncExpiration: computeAsyncExpiration, + computeExpirationForFiber: computeExpirationForFiber, + scheduleWork: scheduleWork, + requestWork: requestWork, + flushRoot: function flushRoot(root, expirationTime) { + invariant(!isRendering, "work.commit(): Cannot commit while already rendering. This likely means you attempted to commit from inside a lifecycle method."); + performWorkOnRoot(root, expirationTime, expirationTime); + finishRendering(); + }, + batchedUpdates: function batchedUpdates(fn, a) { + var previousIsBatchingUpdates = isBatchingUpdates; + isBatchingUpdates = !0; + + try { + return fn(a); + } finally { + (isBatchingUpdates = previousIsBatchingUpdates) || isRendering || performWork(1, null); + } + }, + unbatchedUpdates: function unbatchedUpdates(fn) { + if (isBatchingUpdates && !isUnbatchingUpdates) { + isUnbatchingUpdates = !0; + + try { + return fn(); + } finally { + isUnbatchingUpdates = !1; + } + } + + return fn(); + }, + flushSync: function flushSync(fn) { + var previousIsBatchingUpdates = isBatchingUpdates; + isBatchingUpdates = !0; + + try { + a: { + var previousExpirationContext = expirationContext; + expirationContext = 1; + + try { + var JSCompiler_inline_result = fn(); + break a; + } finally { + expirationContext = previousExpirationContext; + } + + JSCompiler_inline_result = void 0; + } + + return JSCompiler_inline_result; + } finally { + isBatchingUpdates = previousIsBatchingUpdates, invariant(!isRendering, "flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering."), performWork(1, null); + } + }, + deferredUpdates: function deferredUpdates(fn) { + var previousExpirationContext = expirationContext; + expirationContext = computeAsyncExpiration(); + + try { + return fn(); + } finally { + expirationContext = previousExpirationContext; + } + }, + computeUniqueAsyncExpiration: function computeUniqueAsyncExpiration() { + var result = computeAsyncExpiration(); + result <= lastUniqueAsyncExpiration && (result = lastUniqueAsyncExpiration + 1); + return lastUniqueAsyncExpiration = result; + } + }; + } + + function ReactFiberReconciler$1(config) { + function updateContainerAtExpirationTime(element, container, parentComponent, expirationTime, callback) { + var current = container.current; + + if (parentComponent) { + parentComponent = parentComponent._reactInternalFiber; + var parentContext; + + b: { + invariant(2 === isFiberMountedImpl(parentComponent) && 2 === parentComponent.tag, "Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue."); + + for (parentContext = parentComponent; 3 !== parentContext.tag;) { + if (isContextProvider(parentContext)) { + parentContext = parentContext.stateNode.__reactInternalMemoizedMergedChildContext; + break b; + } + + parentContext = parentContext["return"]; + invariant(parentContext, "Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue."); + } + + parentContext = parentContext.stateNode.context; + } + + parentComponent = isContextProvider(parentComponent) ? processChildContext(parentComponent, parentContext) : parentContext; + } else parentComponent = emptyObject; + + null === container.context ? container.context = parentComponent : container.pendingContext = parentComponent; + container = callback; + insertUpdateIntoFiber(current, { + expirationTime: expirationTime, + partialState: { + element: element + }, + callback: void 0 === container ? null : container, + isReplace: !1, + isForced: !1, + next: null + }); + scheduleWork(current, expirationTime); + return expirationTime; + } + + function findHostInstance(fiber) { + fiber = findCurrentHostFiber(fiber); + return null === fiber ? null : fiber.stateNode; + } + + var getPublicInstance = config.getPublicInstance; + config = ReactFiberScheduler(config); + var computeAsyncExpiration = config.computeAsyncExpiration, + computeExpirationForFiber = config.computeExpirationForFiber, + scheduleWork = config.scheduleWork; + return { + createContainer: function createContainer(containerInfo, hydrate) { + var uninitializedFiber = createFiber(3, null, 0); + containerInfo = { + current: uninitializedFiber, + containerInfo: containerInfo, + pendingChildren: null, + remainingExpirationTime: 0, + isReadyForCommit: !1, + finishedWork: null, + context: null, + pendingContext: null, + hydrate: hydrate, + firstBatch: null, + nextScheduledRoot: null + }; + return uninitializedFiber.stateNode = containerInfo; + }, + updateContainer: function updateContainer(element, container, parentComponent, callback) { + var current = container.current; + current = null != element && null != element.type && null != element.type.prototype && !0 === element.type.prototype.unstable_isAsyncReactComponent ? computeAsyncExpiration() : computeExpirationForFiber(current); + return updateContainerAtExpirationTime(element, container, parentComponent, current, callback); + }, + updateContainerAtExpirationTime: updateContainerAtExpirationTime, + flushRoot: config.flushRoot, + requestWork: config.requestWork, + computeUniqueAsyncExpiration: config.computeUniqueAsyncExpiration, + batchedUpdates: config.batchedUpdates, + unbatchedUpdates: config.unbatchedUpdates, + deferredUpdates: config.deferredUpdates, + flushSync: config.flushSync, + getPublicRootInstance: function getPublicRootInstance(container) { + container = container.current; + if (!container.child) return null; + + switch (container.child.tag) { + case 5: + return getPublicInstance(container.child.stateNode); + + default: + return container.child.stateNode; + } + }, + findHostInstance: findHostInstance, + findHostInstanceWithNoPortals: function findHostInstanceWithNoPortals(fiber) { + fiber = findCurrentHostFiberWithNoPortals(fiber); + return null === fiber ? null : fiber.stateNode; + }, + injectIntoDevTools: function injectIntoDevTools(devToolsConfig) { + var _findFiberByHostInstance = devToolsConfig.findFiberByHostInstance; + return injectInternals(babelHelpers.extends({}, devToolsConfig, { + findHostInstanceByFiber: function findHostInstanceByFiber(fiber) { + return findHostInstance(fiber); + }, + findFiberByHostInstance: function findFiberByHostInstance(instance) { + return _findFiberByHostInstance ? _findFiberByHostInstance(instance) : null; + } + })); + } + }; + } + + var ReactFiberReconciler$2 = Object.freeze({ + default: ReactFiberReconciler$1 + }), + ReactFiberReconciler$3 = ReactFiberReconciler$2 && ReactFiberReconciler$1 || ReactFiberReconciler$2, + reactReconciler = ReactFiberReconciler$3["default"] ? ReactFiberReconciler$3["default"] : ReactFiberReconciler$3, + viewConfigCallbacks = new Map(), + viewConfigs = new Map(), + ReactNativeFiberHostComponent = function () { + function ReactNativeFiberHostComponent(tag, viewConfig) { + if (!(this instanceof ReactNativeFiberHostComponent)) throw new TypeError("Cannot call a class as a function"); + this._nativeTag = tag; + this._children = []; + this.viewConfig = viewConfig; + } + + ReactNativeFiberHostComponent.prototype.blur = function () { + TextInputState.blurTextInput(this._nativeTag); + }; + + ReactNativeFiberHostComponent.prototype.focus = function () { + TextInputState.focusTextInput(this._nativeTag); + }; + + ReactNativeFiberHostComponent.prototype.measure = function (callback) { + UIManager.measure(this._nativeTag, mountSafeCallback(this, callback)); + }; + + ReactNativeFiberHostComponent.prototype.measureInWindow = function (callback) { + UIManager.measureInWindow(this._nativeTag, mountSafeCallback(this, callback)); + }; + + ReactNativeFiberHostComponent.prototype.measureLayout = function (relativeToNativeNode, onSuccess, onFail) { + UIManager.measureLayout(this._nativeTag, relativeToNativeNode, mountSafeCallback(this, onFail), mountSafeCallback(this, onSuccess)); + }; + + ReactNativeFiberHostComponent.prototype.setNativeProps = function (nativeProps) { + nativeProps = diffProperties(null, emptyObject$1, nativeProps, this.viewConfig.validAttributes); + null != nativeProps && UIManager.updateView(this._nativeTag, this.viewConfig.uiViewClassName, nativeProps); + }; + + return ReactNativeFiberHostComponent; + }(), + now = "object" === typeof performance && "function" === typeof performance.now ? function () { + return performance.now(); + } : function () { + return Date.now(); + }, + scheduledCallback = null, + frameDeadline = 0, + frameDeadlineObject = { + timeRemaining: function timeRemaining() { + return frameDeadline - now(); + } + }; + + function setTimeoutCallback() { + frameDeadline = now() + 5; + var callback = scheduledCallback; + scheduledCallback = null; + null !== callback && callback(frameDeadlineObject); + } + + function recursivelyUncacheFiberNode(node) { + "number" === typeof node ? uncacheFiberNode(node) : (uncacheFiberNode(node._nativeTag), node._children.forEach(recursivelyUncacheFiberNode)); + } + + var NativeRenderer = reactReconciler({ + appendInitialChild: function appendInitialChild(parentInstance, child) { + parentInstance._children.push(child); + }, + createInstance: function createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) { + hostContext = ReactNativeTagHandles.allocateTag(); + if (viewConfigs.has(type)) var viewConfig = viewConfigs.get(type);else viewConfig = viewConfigCallbacks.get(type), invariant("function" === typeof viewConfig, "View config not found for name %s", type), viewConfigCallbacks.set(type, null), viewConfig = viewConfig(), viewConfigs.set(type, viewConfig); + invariant(viewConfig, "View config not found for name %s", type); + type = viewConfig; + viewConfig = diffProperties(null, emptyObject$1, props, type.validAttributes); + UIManager.createView(hostContext, type.uiViewClassName, rootContainerInstance, viewConfig); + rootContainerInstance = new ReactNativeFiberHostComponent(hostContext, type); + instanceCache[hostContext] = internalInstanceHandle; + instanceProps[hostContext] = props; + return rootContainerInstance; + }, + createTextInstance: function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) { + hostContext = ReactNativeTagHandles.allocateTag(); + UIManager.createView(hostContext, "RCTRawText", rootContainerInstance, { + text: text + }); + instanceCache[hostContext] = internalInstanceHandle; + return hostContext; + }, + finalizeInitialChildren: function finalizeInitialChildren(parentInstance) { + if (0 === parentInstance._children.length) return !1; + + var nativeTags = parentInstance._children.map(function (child) { + return "number" === typeof child ? child : child._nativeTag; + }); + + UIManager.setChildren(parentInstance._nativeTag, nativeTags); + return !1; + }, + getRootHostContext: function getRootHostContext() { + return emptyObject; + }, + getChildHostContext: function getChildHostContext() { + return emptyObject; + }, + getPublicInstance: function getPublicInstance(instance) { + return instance; + }, + now: now, + prepareForCommit: function prepareForCommit() {}, + prepareUpdate: function prepareUpdate() { + return emptyObject; + }, + resetAfterCommit: function resetAfterCommit() {}, + scheduleDeferredCallback: function scheduleDeferredCallback(callback) { + scheduledCallback = callback; + return setTimeout(setTimeoutCallback, 1); + }, + cancelDeferredCallback: function cancelDeferredCallback(callbackID) { + scheduledCallback = null; + clearTimeout(callbackID); + }, + shouldDeprioritizeSubtree: function shouldDeprioritizeSubtree() { + return !1; + }, + shouldSetTextContent: function shouldSetTextContent() { + return !1; + }, + useSyncScheduling: !0, + mutation: { + appendChild: function appendChild(parentInstance, child) { + var childTag = "number" === typeof child ? child : child._nativeTag, + children = parentInstance._children, + index = children.indexOf(child); + 0 <= index ? (children.splice(index, 1), children.push(child), UIManager.manageChildren(parentInstance._nativeTag, [index], [children.length - 1], [], [], [])) : (children.push(child), UIManager.manageChildren(parentInstance._nativeTag, [], [], [childTag], [children.length - 1], [])); + }, + appendChildToContainer: function appendChildToContainer(parentInstance, child) { + UIManager.setChildren(parentInstance, ["number" === typeof child ? child : child._nativeTag]); + }, + commitTextUpdate: function commitTextUpdate(textInstance, oldText, newText) { + UIManager.updateView(textInstance, "RCTRawText", { + text: newText + }); + }, + commitMount: function commitMount() {}, + commitUpdate: function commitUpdate(instance, updatePayloadTODO, type, oldProps, newProps) { + updatePayloadTODO = instance.viewConfig; + instanceProps[instance._nativeTag] = newProps; + oldProps = diffProperties(null, oldProps, newProps, updatePayloadTODO.validAttributes); + null != oldProps && UIManager.updateView(instance._nativeTag, updatePayloadTODO.uiViewClassName, oldProps); + }, + insertBefore: function insertBefore(parentInstance, child, beforeChild) { + var children = parentInstance._children, + index = children.indexOf(child); + 0 <= index ? (children.splice(index, 1), beforeChild = children.indexOf(beforeChild), children.splice(beforeChild, 0, child), UIManager.manageChildren(parentInstance._nativeTag, [index], [beforeChild], [], [], [])) : (index = children.indexOf(beforeChild), children.splice(index, 0, child), UIManager.manageChildren(parentInstance._nativeTag, [], [], ["number" === typeof child ? child : child._nativeTag], [index], [])); + }, + insertInContainerBefore: function insertInContainerBefore(parentInstance) { + invariant("number" !== typeof parentInstance, "Container does not support insertBefore operation"); + }, + removeChild: function removeChild(parentInstance, child) { + recursivelyUncacheFiberNode(child); + var children = parentInstance._children; + child = children.indexOf(child); + children.splice(child, 1); + UIManager.manageChildren(parentInstance._nativeTag, [], [], [], [], [child]); + }, + removeChildFromContainer: function removeChildFromContainer(parentInstance, child) { + recursivelyUncacheFiberNode(child); + UIManager.manageChildren(parentInstance, [], [], [], [], [0]); + }, + resetTextContent: function resetTextContent() {} + } + }); + + function findNodeHandle(componentOrHandle) { + if (null == componentOrHandle) return null; + if ("number" === typeof componentOrHandle) return componentOrHandle; + var internalInstance = componentOrHandle._reactInternalFiber; + if (internalInstance) return NativeRenderer.findHostInstance(internalInstance); + if (componentOrHandle) return componentOrHandle; + invariant("object" === typeof componentOrHandle && "_nativeTag" in componentOrHandle || null != componentOrHandle.render && "function" === typeof componentOrHandle.render, "findNodeHandle(...): Argument is not a component (type: %s, keys: %s)", typeof componentOrHandle, Object.keys(componentOrHandle)); + invariant(!1, "findNodeHandle(...): Unable to find node handle for unmounted component."); + } + + function findNumericNodeHandleFiber(componentOrHandle) { + componentOrHandle = findNodeHandle(componentOrHandle); + return null == componentOrHandle || "number" === typeof componentOrHandle ? componentOrHandle : componentOrHandle._nativeTag; + } + + function _inherits(subClass, superClass) { + if ("function" !== typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: !1, + writable: !0, + configurable: !0 + } + }); + superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass); + } + + var ReactNativeComponent = function (_React$Component) { + function ReactNativeComponent() { + if (!(this instanceof ReactNativeComponent)) throw new TypeError("Cannot call a class as a function"); + + var call = _React$Component.apply(this, arguments); + + if (!this) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !call || "object" !== typeof call && "function" !== typeof call ? this : call; + } + + _inherits(ReactNativeComponent, _React$Component); + + ReactNativeComponent.prototype.blur = function () { + TextInputState.blurTextInput(findNumericNodeHandleFiber(this)); + }; + + ReactNativeComponent.prototype.focus = function () { + TextInputState.focusTextInput(findNumericNodeHandleFiber(this)); + }; + + ReactNativeComponent.prototype.measure = function (callback) { + UIManager.measure(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }; + + ReactNativeComponent.prototype.measureInWindow = function (callback) { + UIManager.measureInWindow(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }; + + ReactNativeComponent.prototype.measureLayout = function (relativeToNativeNode, onSuccess, onFail) { + UIManager.measureLayout(findNumericNodeHandleFiber(this), relativeToNativeNode, mountSafeCallback(this, onFail), mountSafeCallback(this, onSuccess)); + }; + + ReactNativeComponent.prototype.setNativeProps = function (nativeProps) { + var maybeInstance = void 0; + + try { + maybeInstance = findNodeHandle(this); + } catch (error) {} + + if (null != maybeInstance) { + var viewConfig = maybeInstance.viewConfig; + nativeProps = diffProperties(null, emptyObject$1, nativeProps, viewConfig.validAttributes); + null != nativeProps && UIManager.updateView(maybeInstance._nativeTag, viewConfig.uiViewClassName, nativeProps); + } + }; + + return ReactNativeComponent; + }(React.Component), + getInspectorDataForViewTag = void 0; + + getInspectorDataForViewTag = function getInspectorDataForViewTag() { + invariant(!1, "getInspectorDataForViewTag() is not available in production"); + }; + + fiberBatchedUpdates = NativeRenderer.batchedUpdates; + var roots = new Map(); + + function fn$jscomp$inline_616(capturedError) { + var componentStack = capturedError.componentStack, + error = capturedError.error; + + if (error instanceof Error) { + capturedError = error.message; + var name = error.name; + + try { + error.message = (capturedError ? name + ": " + capturedError : name) + "\n\nThis error is located at:" + componentStack; + } catch (e) {} + } else error = "string" === typeof error ? Error(error + "\n\nThis error is located at:" + componentStack) : Error("Unspecified error at:" + componentStack); + + ExceptionsManager.handleException(error, !1); + return !1; + } + + invariant(showDialog === defaultShowDialog, "The custom dialog was already injected."); + invariant("function" === typeof fn$jscomp$inline_616, "Injected showDialog() must be a function."); + showDialog = fn$jscomp$inline_616; + var ReactNativeRenderer = { + NativeComponent: ReactNativeComponent, + findNodeHandle: findNumericNodeHandleFiber, + render: function render(element, containerTag, callback) { + var root = roots.get(containerTag); + root || (root = NativeRenderer.createContainer(containerTag, !1), roots.set(containerTag, root)); + NativeRenderer.updateContainer(element, root, null, callback); + return NativeRenderer.getPublicRootInstance(root); + }, + unmountComponentAtNode: function unmountComponentAtNode(containerTag) { + var root = roots.get(containerTag); + root && NativeRenderer.updateContainer(null, root, null, function () { + roots["delete"](containerTag); + }); + }, + unmountComponentAtNodeAndRemoveContainer: function unmountComponentAtNodeAndRemoveContainer(containerTag) { + ReactNativeRenderer.unmountComponentAtNode(containerTag); + UIManager.removeRootView(containerTag); + }, + createPortal: function createPortal(children, containerTag) { + return _createPortal(children, containerTag, null, 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null); + }, + unstable_batchedUpdates: batchedUpdates, + flushSync: NativeRenderer.flushSync, + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + NativeMethodsMixin: { + measure: function measure(callback) { + UIManager.measure(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }, + measureInWindow: function measureInWindow(callback) { + UIManager.measureInWindow(findNumericNodeHandleFiber(this), mountSafeCallback(this, callback)); + }, + measureLayout: function measureLayout(relativeToNativeNode, onSuccess, onFail) { + UIManager.measureLayout(findNumericNodeHandleFiber(this), relativeToNativeNode, mountSafeCallback(this, onFail), mountSafeCallback(this, onSuccess)); + }, + setNativeProps: function setNativeProps(nativeProps) { + var maybeInstance = void 0; + + try { + maybeInstance = findNodeHandle(this); + } catch (error) {} + + if (null != maybeInstance) { + var viewConfig = maybeInstance.viewConfig; + nativeProps = diffProperties(null, emptyObject$1, nativeProps, viewConfig.validAttributes); + null != nativeProps && UIManager.updateView(maybeInstance._nativeTag, viewConfig.uiViewClassName, nativeProps); + } + }, + focus: function focus() { + TextInputState.focusTextInput(findNumericNodeHandleFiber(this)); + }, + blur: function blur() { + TextInputState.blurTextInput(findNumericNodeHandleFiber(this)); + } + }, + ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin, + ReactGlobalSharedState: ReactGlobalSharedState, + ReactNativeComponentTree: ReactNativeComponentTree, + ReactNativePropRegistry: ReactNativePropRegistry, + TouchHistoryMath: TouchHistoryMath, + createReactNativeComponentClass: function createReactNativeComponentClass(name, callback) { + invariant(!viewConfigCallbacks.has(name), "Tried to register two views with the same name %s", name); + viewConfigCallbacks.set(name, callback); + return name; + }, + takeSnapshot: function takeSnapshot(view, options) { + "number" !== typeof view && "window" !== view && (view = findNumericNodeHandleFiber(view) || "window"); + return UIManager.__takeSnapshot(view, options); + } + } + }; + NativeRenderer.injectIntoDevTools({ + findFiberByHostInstance: getInstanceFromTag, + getInspectorDataForViewTag: getInspectorDataForViewTag, + bundleType: 0, + version: "16.2.0", + rendererPackageName: "react-native-renderer" + }); + var ReactNativeRenderer$2 = Object.freeze({ + default: ReactNativeRenderer + }), + ReactNativeRenderer$3 = ReactNativeRenderer$2 && ReactNativeRenderer || ReactNativeRenderer$2; + module.exports = ReactNativeRenderer$3["default"] ? ReactNativeRenderer$3["default"] : ReactNativeRenderer$3; +},164,[76,18,16,157,158,12,84,159,160,152,15,161,163],"ReactNativeRenderer-prod"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactDebugTool; +},165,[74],"ReactDebugTool"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var NativeMethodsMixin = require(_dependencyMap[1], 'NativeMethodsMixin'); + + var Platform = require(_dependencyMap[2], 'Platform'); + + var ProgressBarAndroid = require(_dependencyMap[3], 'ProgressBarAndroid'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var React = require(_dependencyMap[5], 'React'); + + var StyleSheet = require(_dependencyMap[6], 'StyleSheet'); + + var View = require(_dependencyMap[7], 'View'); + + var ViewPropTypes = require(_dependencyMap[8], 'ViewPropTypes'); + + var createReactClass = require(_dependencyMap[9], 'create-react-class'); + + var requireNativeComponent = require(_dependencyMap[10], 'requireNativeComponent'); + + var GRAY = '#999999'; + var ActivityIndicator = createReactClass({ + displayName: 'ActivityIndicator', + mixins: [NativeMethodsMixin], + propTypes: babelHelpers.extends({}, ViewPropTypes, { + animating: PropTypes.bool, + color: ColorPropType, + size: PropTypes.oneOfType([PropTypes.oneOf(['small', 'large']), PropTypes.number]), + hidesWhenStopped: PropTypes.bool + }), + getDefaultProps: function getDefaultProps() { + return { + animating: true, + color: Platform.OS === 'ios' ? GRAY : undefined, + hidesWhenStopped: true, + size: 'small' + }; + }, + render: function render() { + var _props = this.props, + onLayout = _props.onLayout, + style = _props.style, + props = babelHelpers.objectWithoutProperties(_props, ["onLayout", "style"]); + var sizeStyle = void 0; + + switch (props.size) { + case 'small': + sizeStyle = styles.sizeSmall; + break; + + case 'large': + sizeStyle = styles.sizeLarge; + break; + + default: + sizeStyle = { + height: props.size, + width: props.size + }; + break; + } + + var nativeProps = babelHelpers.extends({}, props, { + style: sizeStyle, + styleAttr: 'Normal', + indeterminate: true + }); + return React.createElement( + View, + { + onLayout: onLayout, + style: [styles.container, style], + __source: { + fileName: _jsxFileName, + lineNumber: 114 + } + }, + Platform.OS === 'ios' ? React.createElement(RCTActivityIndicator, babelHelpers.extends({}, nativeProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 116 + } + })) : React.createElement(ProgressBarAndroid, babelHelpers.extends({}, nativeProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 118 + } + })) + ); + } + }); + var styles = StyleSheet.create({ + container: { + alignItems: 'center', + justifyContent: 'center' + }, + sizeSmall: { + width: 20, + height: 20 + }, + sizeLarge: { + width: 36, + height: 36 + } + }); + + if (Platform.OS === 'ios') { + var RCTActivityIndicator = requireNativeComponent('RCTActivityIndicatorView', ActivityIndicator, { + nativeOnly: { + activityIndicatorViewStyle: true + } + }); + } + + module.exports = ActivityIndicator; +},166,[167,169,105,170,24,171,209,211,172,213,186],"ActivityIndicator"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var normalizeColor = require(_dependencyMap[0], 'normalizeColor'); + + var colorPropType = function colorPropType(isRequired, props, propName, componentName, location, propFullName) { + var color = props[propName]; + + if (color === undefined || color === null) { + if (isRequired) { + return new Error('Required ' + location + ' `' + (propFullName || propName) + '` was not specified in `' + componentName + '`.'); + } + + return; + } + + if (typeof color === 'number') { + return; + } + + if (normalizeColor(color) === null) { + return new Error('Invalid ' + location + ' `' + (propFullName || propName) + '` supplied to `' + componentName + '`: ' + color + '\n' + "Valid color formats are\n - '#f0f' (#rgb)\n - '#f0fc' (#rgba)\n - '#ff00ff' (#rrggbb)\n - '#ff00ff00' (#rrggbbaa)\n - 'rgb(255, 255, 255)'\n - 'rgba(255, 255, 255, 1.0)'\n - 'hsl(360, 100%, 100%)'\n - 'hsla(360, 100%, 100%, 1.0)'\n - 'transparent'\n - 'red'\n - 0xff00ff00 (0xrrggbbaa)\n"); + } + }; + + var ColorPropType = colorPropType.bind(null, false); + ColorPropType.isRequired = colorPropType.bind(null, true); + module.exports = ColorPropType; +},167,[168],"ColorPropType"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function normalizeColor(color) { + var match; + + if (typeof color === 'number') { + if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) { + return color; + } + + return null; + } + + if (match = matchers.hex6.exec(color)) { + return parseInt(match[1] + 'ff', 16) >>> 0; + } + + if (names.hasOwnProperty(color)) { + return names[color]; + } + + if (match = matchers.rgb.exec(color)) { + return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0; + } + + if (match = matchers.rgba.exec(color)) { + return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0; + } + + if (match = matchers.hex3.exec(color)) { + return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0; + } + + if (match = matchers.hex8.exec(color)) { + return parseInt(match[1], 16) >>> 0; + } + + if (match = matchers.hex4.exec(color)) { + return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0; + } + + if (match = matchers.hsl.exec(color)) { + return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0; + } + + if (match = matchers.hsla.exec(color)) { + return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0; + } + + return null; + } + + function hue2rgb(p, q, t) { + if (t < 0) { + t += 1; + } + + if (t > 1) { + t -= 1; + } + + if (t < 1 / 6) { + return p + (q - p) * 6 * t; + } + + if (t < 1 / 2) { + return q; + } + + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6; + } + + return p; + } + + function hslToRgb(h, s, l) { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + var r = hue2rgb(p, q, h + 1 / 3); + var g = hue2rgb(p, q, h); + var b = hue2rgb(p, q, h - 1 / 3); + return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8; + } + + var NUMBER = '[-+]?\\d*\\.?\\d+'; + var PERCENTAGE = NUMBER + '%'; + + function call() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return '\\(\\s*(' + args.join(')\\s*,\\s*(') + ')\\s*\\)'; + } + + var matchers = { + rgb: new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER)), + rgba: new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)), + hsl: new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)), + hsla: new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)), + hex3: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex4: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#([0-9a-fA-F]{6})$/, + hex8: /^#([0-9a-fA-F]{8})$/ + }; + + function parse255(str) { + var int = parseInt(str, 10); + + if (int < 0) { + return 0; + } + + if (int > 255) { + return 255; + } + + return int; + } + + function parse360(str) { + var int = parseFloat(str); + return (int % 360 + 360) % 360 / 360; + } + + function parse1(str) { + var num = parseFloat(str); + + if (num < 0) { + return 0; + } + + if (num > 1) { + return 255; + } + + return Math.round(num * 255); + } + + function parsePercentage(str) { + var int = parseFloat(str); + + if (int < 0) { + return 0; + } + + if (int > 100) { + return 1; + } + + return int / 100; + } + + var names = { + transparent: 0x00000000, + aliceblue: 0xf0f8ffff, + antiquewhite: 0xfaebd7ff, + aqua: 0x00ffffff, + aquamarine: 0x7fffd4ff, + azure: 0xf0ffffff, + beige: 0xf5f5dcff, + bisque: 0xffe4c4ff, + black: 0x000000ff, + blanchedalmond: 0xffebcdff, + blue: 0x0000ffff, + blueviolet: 0x8a2be2ff, + brown: 0xa52a2aff, + burlywood: 0xdeb887ff, + burntsienna: 0xea7e5dff, + cadetblue: 0x5f9ea0ff, + chartreuse: 0x7fff00ff, + chocolate: 0xd2691eff, + coral: 0xff7f50ff, + cornflowerblue: 0x6495edff, + cornsilk: 0xfff8dcff, + crimson: 0xdc143cff, + cyan: 0x00ffffff, + darkblue: 0x00008bff, + darkcyan: 0x008b8bff, + darkgoldenrod: 0xb8860bff, + darkgray: 0xa9a9a9ff, + darkgreen: 0x006400ff, + darkgrey: 0xa9a9a9ff, + darkkhaki: 0xbdb76bff, + darkmagenta: 0x8b008bff, + darkolivegreen: 0x556b2fff, + darkorange: 0xff8c00ff, + darkorchid: 0x9932ccff, + darkred: 0x8b0000ff, + darksalmon: 0xe9967aff, + darkseagreen: 0x8fbc8fff, + darkslateblue: 0x483d8bff, + darkslategray: 0x2f4f4fff, + darkslategrey: 0x2f4f4fff, + darkturquoise: 0x00ced1ff, + darkviolet: 0x9400d3ff, + deeppink: 0xff1493ff, + deepskyblue: 0x00bfffff, + dimgray: 0x696969ff, + dimgrey: 0x696969ff, + dodgerblue: 0x1e90ffff, + firebrick: 0xb22222ff, + floralwhite: 0xfffaf0ff, + forestgreen: 0x228b22ff, + fuchsia: 0xff00ffff, + gainsboro: 0xdcdcdcff, + ghostwhite: 0xf8f8ffff, + gold: 0xffd700ff, + goldenrod: 0xdaa520ff, + gray: 0x808080ff, + green: 0x008000ff, + greenyellow: 0xadff2fff, + grey: 0x808080ff, + honeydew: 0xf0fff0ff, + hotpink: 0xff69b4ff, + indianred: 0xcd5c5cff, + indigo: 0x4b0082ff, + ivory: 0xfffff0ff, + khaki: 0xf0e68cff, + lavender: 0xe6e6faff, + lavenderblush: 0xfff0f5ff, + lawngreen: 0x7cfc00ff, + lemonchiffon: 0xfffacdff, + lightblue: 0xadd8e6ff, + lightcoral: 0xf08080ff, + lightcyan: 0xe0ffffff, + lightgoldenrodyellow: 0xfafad2ff, + lightgray: 0xd3d3d3ff, + lightgreen: 0x90ee90ff, + lightgrey: 0xd3d3d3ff, + lightpink: 0xffb6c1ff, + lightsalmon: 0xffa07aff, + lightseagreen: 0x20b2aaff, + lightskyblue: 0x87cefaff, + lightslategray: 0x778899ff, + lightslategrey: 0x778899ff, + lightsteelblue: 0xb0c4deff, + lightyellow: 0xffffe0ff, + lime: 0x00ff00ff, + limegreen: 0x32cd32ff, + linen: 0xfaf0e6ff, + magenta: 0xff00ffff, + maroon: 0x800000ff, + mediumaquamarine: 0x66cdaaff, + mediumblue: 0x0000cdff, + mediumorchid: 0xba55d3ff, + mediumpurple: 0x9370dbff, + mediumseagreen: 0x3cb371ff, + mediumslateblue: 0x7b68eeff, + mediumspringgreen: 0x00fa9aff, + mediumturquoise: 0x48d1ccff, + mediumvioletred: 0xc71585ff, + midnightblue: 0x191970ff, + mintcream: 0xf5fffaff, + mistyrose: 0xffe4e1ff, + moccasin: 0xffe4b5ff, + navajowhite: 0xffdeadff, + navy: 0x000080ff, + oldlace: 0xfdf5e6ff, + olive: 0x808000ff, + olivedrab: 0x6b8e23ff, + orange: 0xffa500ff, + orangered: 0xff4500ff, + orchid: 0xda70d6ff, + palegoldenrod: 0xeee8aaff, + palegreen: 0x98fb98ff, + paleturquoise: 0xafeeeeff, + palevioletred: 0xdb7093ff, + papayawhip: 0xffefd5ff, + peachpuff: 0xffdab9ff, + peru: 0xcd853fff, + pink: 0xffc0cbff, + plum: 0xdda0ddff, + powderblue: 0xb0e0e6ff, + purple: 0x800080ff, + rebeccapurple: 0x663399ff, + red: 0xff0000ff, + rosybrown: 0xbc8f8fff, + royalblue: 0x4169e1ff, + saddlebrown: 0x8b4513ff, + salmon: 0xfa8072ff, + sandybrown: 0xf4a460ff, + seagreen: 0x2e8b57ff, + seashell: 0xfff5eeff, + sienna: 0xa0522dff, + silver: 0xc0c0c0ff, + skyblue: 0x87ceebff, + slateblue: 0x6a5acdff, + slategray: 0x708090ff, + slategrey: 0x708090ff, + snow: 0xfffafaff, + springgreen: 0x00ff7fff, + steelblue: 0x4682b4ff, + tan: 0xd2b48cff, + teal: 0x008080ff, + thistle: 0xd8bfd8ff, + tomato: 0xff6347ff, + turquoise: 0x40e0d0ff, + violet: 0xee82eeff, + wheat: 0xf5deb3ff, + white: 0xffffffff, + whitesmoke: 0xf5f5f5ff, + yellow: 0xffff00ff, + yellowgreen: 0x9acd32ff + }; + module.exports = normalizeColor; +},168,[],"normalizeColor"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + var NativeMethodsMixin = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.NativeMethodsMixin; + module.exports = NativeMethodsMixin; +},169,[74],"NativeMethodsMixin"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var React = require(_dependencyMap[2], 'React'); + + var ReactNative = require(_dependencyMap[3], 'ReactNative'); + + var ViewPropTypes = require(_dependencyMap[4], 'ViewPropTypes'); + + var requireNativeComponent = require(_dependencyMap[5], 'requireNativeComponent'); + + var STYLE_ATTRIBUTES = ['Horizontal', 'Normal', 'Small', 'Large', 'Inverse', 'SmallInverse', 'LargeInverse']; + + var indeterminateType = function indeterminateType(props, propName, componentName) { + var checker = function checker() { + var indeterminate = props[propName]; + var styleAttr = props.styleAttr; + + if (!indeterminate && styleAttr !== 'Horizontal') { + return new Error('indeterminate=false is only valid for styleAttr=Horizontal'); + } + }; + + for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + rest[_key - 3] = arguments[_key]; + } + + return PropTypes.bool.apply(PropTypes, [props, propName, componentName].concat(rest)) || checker(); + }; + + var ProgressBarAndroid = function (_ReactNative$NativeCo) { + babelHelpers.inherits(ProgressBarAndroid, _ReactNative$NativeCo); + + function ProgressBarAndroid() { + babelHelpers.classCallCheck(this, ProgressBarAndroid); + return babelHelpers.possibleConstructorReturn(this, (ProgressBarAndroid.__proto__ || Object.getPrototypeOf(ProgressBarAndroid)).apply(this, arguments)); + } + + babelHelpers.createClass(ProgressBarAndroid, [{ + key: "render", + value: function render() { + return React.createElement(AndroidProgressBar, babelHelpers.extends({}, this.props, { + __source: { + fileName: _jsxFileName, + lineNumber: 112 + } + })); + } + }]); + return ProgressBarAndroid; + }(ReactNative.NativeComponent); + + ProgressBarAndroid.propTypes = babelHelpers.extends({}, ViewPropTypes, { + styleAttr: PropTypes.oneOf(STYLE_ATTRIBUTES), + animating: PropTypes.bool, + indeterminate: indeterminateType, + progress: PropTypes.number, + color: ColorPropType, + testID: PropTypes.string + }); + ProgressBarAndroid.defaultProps = { + styleAttr: 'Normal', + indeterminate: true, + animating: true + }; + var AndroidProgressBar = requireNativeComponent('AndroidProgressBar', ProgressBarAndroid, { + nativeOnly: { + animating: true + } + }); + module.exports = ProgressBarAndroid; +},170,[167,24,171,74,172,186],"ProgressBarAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + module.exports = require(_dependencyMap[0], 'react'); +},171,[12],"React"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EdgeInsetsPropType = require(_dependencyMap[0], 'EdgeInsetsPropType'); + + var PlatformViewPropTypes = require(_dependencyMap[1], 'PlatformViewPropTypes'); + + var PropTypes = require(_dependencyMap[2], 'prop-types'); + + var StyleSheetPropType = require(_dependencyMap[3], 'StyleSheetPropType'); + + var ViewStylePropTypes = require(_dependencyMap[4], 'ViewStylePropTypes'); + + var _require = require(_dependencyMap[5], 'ViewAccessibility'), + AccessibilityComponentTypes = _require.AccessibilityComponentTypes, + AccessibilityTraits = _require.AccessibilityTraits; + + var stylePropType = StyleSheetPropType(ViewStylePropTypes); + module.exports = babelHelpers.extends({}, PlatformViewPropTypes, { + accessible: PropTypes.bool, + accessibilityLabel: PropTypes.node, + accessibilityActions: PropTypes.arrayOf(PropTypes.string), + accessibilityComponentType: PropTypes.oneOf(AccessibilityComponentTypes), + accessibilityLiveRegion: PropTypes.oneOf(['none', 'polite', 'assertive']), + importantForAccessibility: PropTypes.oneOf(['auto', 'yes', 'no', 'no-hide-descendants']), + accessibilityTraits: PropTypes.oneOfType([PropTypes.oneOf(AccessibilityTraits), PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits))]), + accessibilityViewIsModal: PropTypes.bool, + onAccessibilityAction: PropTypes.func, + onAccessibilityTap: PropTypes.func, + onMagicTap: PropTypes.func, + testID: PropTypes.string, + nativeID: PropTypes.string, + onResponderGrant: PropTypes.func, + onResponderMove: PropTypes.func, + onResponderReject: PropTypes.func, + onResponderRelease: PropTypes.func, + onResponderTerminate: PropTypes.func, + onResponderTerminationRequest: PropTypes.func, + onStartShouldSetResponder: PropTypes.func, + onStartShouldSetResponderCapture: PropTypes.func, + onMoveShouldSetResponder: PropTypes.func, + onMoveShouldSetResponderCapture: PropTypes.func, + hitSlop: EdgeInsetsPropType, + onLayout: PropTypes.func, + pointerEvents: PropTypes.oneOf(['box-none', 'none', 'box-only', 'auto']), + style: stylePropType, + removeClippedSubviews: PropTypes.bool, + renderToHardwareTextureAndroid: PropTypes.bool, + shouldRasterizeIOS: PropTypes.bool, + collapsable: PropTypes.bool, + needsOffscreenAlphaCompositing: PropTypes.bool + }); +},172,[173,178,24,179,180,185],"ViewPropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PropTypes = require(_dependencyMap[0], 'prop-types'); + + var createStrictShapeTypeChecker = require(_dependencyMap[1], 'createStrictShapeTypeChecker'); + + var EdgeInsetsPropType = createStrictShapeTypeChecker({ + top: PropTypes.number, + left: PropTypes.number, + bottom: PropTypes.number, + right: PropTypes.number + }); + module.exports = EdgeInsetsPropType; +},173,[24,174],"EdgeInsetsPropType"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var merge = require(_dependencyMap[1], 'merge'); + + function createStrictShapeTypeChecker(shapeTypes) { + function checkType(isRequired, props, propName, componentName, location) { + if (!props[propName]) { + if (isRequired) { + invariant(false, "Required object `" + propName + "` was not specified in " + ("`" + componentName + "`.")); + } + + return; + } + + var propValue = props[propName]; + var propType = typeof propValue; + var locationName = location || '(unknown)'; + + if (propType !== 'object') { + invariant(false, "Invalid " + locationName + " `" + propName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); + } + + var allKeys = merge(props[propName], shapeTypes); + + for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) { + rest[_key - 5] = arguments[_key]; + } + + for (var key in allKeys) { + var checker = shapeTypes[key]; + + if (!checker) { + invariant(false, "Invalid props." + propName + " key `" + key + "` supplied to `" + componentName + "`." + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')); + } + + var error = checker.apply(undefined, [propValue, key, componentName, location].concat(rest)); + + if (error) { + invariant(false, error.message + '\nBad object: ' + JSON.stringify(props[propName], null, ' ')); + } + } + } + + function chainedCheckType(props, propName, componentName, location) { + for (var _len2 = arguments.length, rest = Array(_len2 > 4 ? _len2 - 4 : 0), _key2 = 4; _key2 < _len2; _key2++) { + rest[_key2 - 4] = arguments[_key2]; + } + + return checkType.apply(undefined, [false, props, propName, componentName, location].concat(rest)); + } + + chainedCheckType.isRequired = checkType.bind(null, true); + return chainedCheckType; + } + + module.exports = createStrictShapeTypeChecker; +},174,[18,175],"createStrictShapeTypeChecker"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var mergeInto = require(_dependencyMap[0], 'mergeInto'); + + var merge = function merge(one, two) { + var result = {}; + mergeInto(result, one); + mergeInto(result, two); + return result; + }; + + module.exports = merge; +},175,[176],"merge"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var mergeHelpers = require(_dependencyMap[0], 'mergeHelpers'); + + var checkMergeObjectArg = mergeHelpers.checkMergeObjectArg; + var checkMergeIntoObjectArg = mergeHelpers.checkMergeIntoObjectArg; + + function mergeInto(one, two) { + checkMergeIntoObjectArg(one); + + if (two != null) { + checkMergeObjectArg(two); + + for (var key in two) { + if (!two.hasOwnProperty(key)) { + continue; + } + + one[key] = two[key]; + } + } + } + + module.exports = mergeInto; +},176,[177],"mergeInto"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var MAX_MERGE_DEPTH = 36; + + var isTerminal = function isTerminal(o) { + return typeof o !== 'object' || o instanceof Date || o === null; + }; + + var mergeHelpers = { + MAX_MERGE_DEPTH: MAX_MERGE_DEPTH, + isTerminal: isTerminal, + normalizeMergeArg: function normalizeMergeArg(arg) { + return arg === undefined || arg === null ? {} : arg; + }, + checkMergeArrayArgs: function checkMergeArrayArgs(one, two) { + invariant(Array.isArray(one) && Array.isArray(two), 'Tried to merge arrays, instead got %s and %s.', one, two); + }, + checkMergeObjectArgs: function checkMergeObjectArgs(one, two) { + mergeHelpers.checkMergeObjectArg(one); + mergeHelpers.checkMergeObjectArg(two); + }, + checkMergeObjectArg: function checkMergeObjectArg(arg) { + invariant(!isTerminal(arg) && !Array.isArray(arg), 'Tried to merge an object, instead got %s.', arg); + }, + checkMergeIntoObjectArg: function checkMergeIntoObjectArg(arg) { + invariant((!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg), 'Tried to merge into an object, instead got %s.', arg); + }, + checkMergeLevel: function checkMergeLevel(level) { + invariant(level < MAX_MERGE_DEPTH, 'Maximum deep merge depth exceeded. You may be attempting to merge ' + 'circular structures in an unsupported way.'); + }, + checkArrayStrategy: function checkArrayStrategy(strategy) { + invariant(strategy === undefined || strategy in mergeHelpers.ArrayStrategies, 'You must provide an array strategy to deep merge functions to ' + 'instruct the deep merge how to resolve merging two arrays.'); + }, + ArrayStrategies: { + Clobber: 'Clobber', + Concat: 'Concat', + IndexByIndex: 'IndexByIndex' + } + }; + module.exports = mergeHelpers; +},177,[18],"mergeHelpers"); +__d(function (global, require, module, exports, _dependencyMap) { + module.export = {}; +},178,[],"PlatformViewPropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var createStrictShapeTypeChecker = require(_dependencyMap[0], 'createStrictShapeTypeChecker'); + + var flattenStyle = require(_dependencyMap[1], 'flattenStyle'); + + function StyleSheetPropType(shape) { + var shapePropType = createStrictShapeTypeChecker(shape); + return function (props, propName, componentName, location) { + var newProps = props; + + if (props[propName]) { + newProps = {}; + newProps[propName] = flattenStyle(props[propName]); + } + + for (var _len = arguments.length, rest = Array(_len > 4 ? _len - 4 : 0), _key = 4; _key < _len; _key++) { + rest[_key - 4] = arguments[_key]; + } + + return shapePropType.apply(undefined, [newProps, propName, componentName, location].concat(rest)); + }; + } + + module.exports = StyleSheetPropType; +},179,[174,152],"StyleSheetPropType"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var LayoutPropTypes = require(_dependencyMap[1], 'LayoutPropTypes'); + + var ReactPropTypes = require(_dependencyMap[2], 'prop-types'); + + var ShadowPropTypesIOS = require(_dependencyMap[3], 'ShadowPropTypesIOS'); + + var TransformPropTypes = require(_dependencyMap[4], 'TransformPropTypes'); + + var ViewStylePropTypes = babelHelpers.extends({}, LayoutPropTypes, ShadowPropTypesIOS, TransformPropTypes, { + backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']), + backgroundColor: ColorPropType, + borderColor: ColorPropType, + borderTopColor: ColorPropType, + borderRightColor: ColorPropType, + borderBottomColor: ColorPropType, + borderLeftColor: ColorPropType, + borderStartColor: ColorPropType, + borderEndColor: ColorPropType, + borderRadius: ReactPropTypes.number, + borderTopLeftRadius: ReactPropTypes.number, + borderTopRightRadius: ReactPropTypes.number, + borderTopStartRadius: ReactPropTypes.number, + borderTopEndRadius: ReactPropTypes.number, + borderBottomLeftRadius: ReactPropTypes.number, + borderBottomRightRadius: ReactPropTypes.number, + borderBottomStartRadius: ReactPropTypes.number, + borderBottomEndRadius: ReactPropTypes.number, + borderStyle: ReactPropTypes.oneOf(['solid', 'dotted', 'dashed']), + borderWidth: ReactPropTypes.number, + borderTopWidth: ReactPropTypes.number, + borderRightWidth: ReactPropTypes.number, + borderBottomWidth: ReactPropTypes.number, + borderLeftWidth: ReactPropTypes.number, + opacity: ReactPropTypes.number, + elevation: ReactPropTypes.number + }); + module.exports = ViewStylePropTypes; +},180,[167,181,24,182,183],"ViewStylePropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ReactPropTypes = require(_dependencyMap[0], 'prop-types'); + + var LayoutPropTypes = { + display: ReactPropTypes.oneOf(['none', 'flex']), + width: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + height: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + start: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + end: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + top: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + left: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + right: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + bottom: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + minWidth: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + maxWidth: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + minHeight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + maxHeight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + margin: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginVertical: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginHorizontal: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginTop: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginBottom: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginLeft: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginRight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginStart: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + marginEnd: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + padding: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingVertical: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingHorizontal: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingTop: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingBottom: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingLeft: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingRight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingStart: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + paddingEnd: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + borderWidth: ReactPropTypes.number, + borderTopWidth: ReactPropTypes.number, + borderStartWidth: ReactPropTypes.number, + borderEndWidth: ReactPropTypes.number, + borderRightWidth: ReactPropTypes.number, + borderBottomWidth: ReactPropTypes.number, + borderLeftWidth: ReactPropTypes.number, + position: ReactPropTypes.oneOf(['absolute', 'relative']), + flexDirection: ReactPropTypes.oneOf(['row', 'row-reverse', 'column', 'column-reverse']), + flexWrap: ReactPropTypes.oneOf(['wrap', 'nowrap']), + justifyContent: ReactPropTypes.oneOf(['flex-start', 'flex-end', 'center', 'space-between', 'space-around']), + alignItems: ReactPropTypes.oneOf(['flex-start', 'flex-end', 'center', 'stretch', 'baseline']), + alignSelf: ReactPropTypes.oneOf(['auto', 'flex-start', 'flex-end', 'center', 'stretch', 'baseline']), + alignContent: ReactPropTypes.oneOf(['flex-start', 'flex-end', 'center', 'stretch', 'space-between', 'space-around']), + overflow: ReactPropTypes.oneOf(['visible', 'hidden', 'scroll']), + flex: ReactPropTypes.number, + flexGrow: ReactPropTypes.number, + flexShrink: ReactPropTypes.number, + flexBasis: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]), + aspectRatio: ReactPropTypes.number, + zIndex: ReactPropTypes.number, + direction: ReactPropTypes.oneOf(['inherit', 'ltr', 'rtl']) + }; + module.exports = LayoutPropTypes; +},181,[24],"LayoutPropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var ReactPropTypes = require(_dependencyMap[1], 'prop-types'); + + var ShadowPropTypesIOS = { + shadowColor: ColorPropType, + shadowOffset: ReactPropTypes.shape({ + width: ReactPropTypes.number, + height: ReactPropTypes.number + }), + shadowOpacity: ReactPropTypes.number, + shadowRadius: ReactPropTypes.number + }; + module.exports = ShadowPropTypesIOS; +},182,[167,24],"ShadowPropTypesIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ReactPropTypes = require(_dependencyMap[0], 'prop-types'); + + var deprecatedPropType = require(_dependencyMap[1], 'deprecatedPropType'); + + var TransformMatrixPropType = function TransformMatrixPropType(props, propName, componentName) { + if (props[propName]) { + return new Error('The transformMatrix style property is deprecated. ' + 'Use `transform: [{ matrix: ... }]` instead.'); + } + }; + + var DecomposedMatrixPropType = function DecomposedMatrixPropType(props, propName, componentName) { + if (props[propName]) { + return new Error('The decomposedMatrix style property is deprecated. ' + 'Use `transform: [...]` instead.'); + } + }; + + var TransformPropTypes = { + transform: ReactPropTypes.arrayOf(ReactPropTypes.oneOfType([ReactPropTypes.shape({ + perspective: ReactPropTypes.number + }), ReactPropTypes.shape({ + rotate: ReactPropTypes.string + }), ReactPropTypes.shape({ + rotateX: ReactPropTypes.string + }), ReactPropTypes.shape({ + rotateY: ReactPropTypes.string + }), ReactPropTypes.shape({ + rotateZ: ReactPropTypes.string + }), ReactPropTypes.shape({ + scale: ReactPropTypes.number + }), ReactPropTypes.shape({ + scaleX: ReactPropTypes.number + }), ReactPropTypes.shape({ + scaleY: ReactPropTypes.number + }), ReactPropTypes.shape({ + translateX: ReactPropTypes.number + }), ReactPropTypes.shape({ + translateY: ReactPropTypes.number + }), ReactPropTypes.shape({ + skewX: ReactPropTypes.string + }), ReactPropTypes.shape({ + skewY: ReactPropTypes.string + })])), + transformMatrix: TransformMatrixPropType, + decomposedMatrix: DecomposedMatrixPropType, + scaleX: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'), + scaleY: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'), + rotation: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'), + translateX: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'), + translateY: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.') + }; + module.exports = TransformPropTypes; +},183,[24,184],"TransformPropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var UIManager = require(_dependencyMap[0], 'UIManager'); + + function deprecatedPropType(propType, explanation) { + return function validate(props, propName, componentName) { + if (!UIManager[componentName] && props[propName] !== undefined) { + console.warn("`" + propName + "` supplied to `" + componentName + "` has been deprecated. " + explanation); + } + + for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + rest[_key - 3] = arguments[_key]; + } + + return propType.apply(undefined, [props, propName, componentName].concat(rest)); + }; + } + + module.exports = deprecatedPropType; +},184,[158],"deprecatedPropType"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + module.exports = { + AccessibilityTraits: ['none', 'button', 'link', 'header', 'search', 'image', 'selected', 'plays', 'key', 'text', 'summary', 'disabled', 'frequentUpdates', 'startsMedia', 'adjustable', 'allowsDirectInteraction', 'pageTurn'], + AccessibilityComponentTypes: ['none', 'button', 'radiobutton_checked', 'radiobutton_unchecked'] + }; +},185,[],"ViewAccessibility"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Platform = require(_dependencyMap[0], 'Platform'); + + var ReactNativeBridgeEventPlugin = require(_dependencyMap[1], 'ReactNativeBridgeEventPlugin'); + + var ReactNativeStyleAttributes = require(_dependencyMap[2], 'ReactNativeStyleAttributes'); + + var UIManager = require(_dependencyMap[3], 'UIManager'); + + var createReactNativeComponentClass = require(_dependencyMap[4], 'createReactNativeComponentClass'); + + var insetsDiffer = require(_dependencyMap[5], 'insetsDiffer'); + + var matricesDiffer = require(_dependencyMap[6], 'matricesDiffer'); + + var pointsDiffer = require(_dependencyMap[7], 'pointsDiffer'); + + var processColor = require(_dependencyMap[8], 'processColor'); + + var resolveAssetSource = require(_dependencyMap[9], 'resolveAssetSource'); + + var sizesDiffer = require(_dependencyMap[10], 'sizesDiffer'); + + var verifyPropTypes = require(_dependencyMap[11], 'verifyPropTypes'); + + var invariant = require(_dependencyMap[12], 'fbjs/lib/invariant'); + + var warning = require(_dependencyMap[13], 'fbjs/lib/warning'); + + var hasAttachedDefaultEventTypes = false; + + function requireNativeComponent(viewName, componentInterface, extraConfig) { + function attachDefaultEventTypes(viewConfig) { + if (Platform.OS === 'android') { + if (UIManager.ViewManagerNames) { + viewConfig = merge(viewConfig, UIManager.getDefaultEventTypes()); + } else { + viewConfig.bubblingEventTypes = merge(viewConfig.bubblingEventTypes, UIManager.genericBubblingEventTypes); + viewConfig.directEventTypes = merge(viewConfig.directEventTypes, UIManager.genericDirectEventTypes); + } + } + } + + function merge(destination, source) { + if (!source) { + return destination; + } + + if (!destination) { + return source; + } + + for (var key in source) { + if (!source.hasOwnProperty(key)) { + continue; + } + + var sourceValue = source[key]; + + if (destination.hasOwnProperty(key)) { + var destinationValue = destination[key]; + + if (typeof sourceValue === 'object' && typeof destinationValue === 'object') { + sourceValue = merge(destinationValue, sourceValue); + } + } + + destination[key] = sourceValue; + } + + return destination; + } + + function getViewConfig() { + var viewConfig = UIManager[viewName]; + invariant(viewConfig != null && !viewConfig.NativeProps != null, 'Native component for "%s" does not exist', viewName); + viewConfig.uiViewClassName = viewName; + viewConfig.validAttributes = {}; + + if (componentInterface) { + viewConfig.propTypes = typeof componentInterface.__propTypesSecretDontUseThesePlease === 'object' ? componentInterface.__propTypesSecretDontUseThesePlease : componentInterface.propTypes; + } else { + viewConfig.propTypes = null; + } + + var baseModuleName = viewConfig.baseModuleName; + var nativeProps = babelHelpers.extends({}, viewConfig.NativeProps); + + while (baseModuleName) { + var baseModule = UIManager[baseModuleName]; + + if (!baseModule) { + warning(false, 'Base module "%s" does not exist', baseModuleName); + baseModuleName = null; + } else { + nativeProps = babelHelpers.extends({}, nativeProps, baseModule.NativeProps); + baseModuleName = baseModule.baseModuleName; + } + } + + for (var key in nativeProps) { + var useAttribute = false; + var attribute = {}; + var differ = TypeToDifferMap[nativeProps[key]]; + + if (differ) { + attribute.diff = differ; + useAttribute = true; + } + + var processor = TypeToProcessorMap[nativeProps[key]]; + + if (processor) { + attribute.process = processor; + useAttribute = true; + } + + viewConfig.validAttributes[key] = useAttribute ? attribute : true; + } + + viewConfig.validAttributes.style = ReactNativeStyleAttributes; + + if (__DEV__) { + componentInterface && verifyPropTypes(componentInterface, viewConfig, extraConfig && extraConfig.nativeOnly); + } + + if (!hasAttachedDefaultEventTypes) { + attachDefaultEventTypes(viewConfig); + hasAttachedDefaultEventTypes = true; + } + + ReactNativeBridgeEventPlugin.processEventTypes(viewConfig); + return viewConfig; + } + + return createReactNativeComponentClass(viewName, getViewConfig); + } + + var TypeToDifferMap = { + CATransform3D: matricesDiffer, + CGPoint: pointsDiffer, + CGSize: sizesDiffer, + UIEdgeInsets: insetsDiffer + }; + + function processColorArray(colors) { + return colors && colors.map(processColor); + } + + var TypeToProcessorMap = { + CGColor: processColor, + CGColorArray: processColorArray, + UIColor: processColor, + UIColorArray: processColorArray, + CGImage: resolveAssetSource, + UIImage: resolveAssetSource, + RCTImageSource: resolveAssetSource, + Color: processColor, + ColorArray: processColorArray + }; + module.exports = requireNativeComponent; +},186,[105,187,188,158,197,198,199,200,193,201,196,208,18,19],"requireNativeComponent"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactNativeBridgeEventPlugin; +},187,[74],"ReactNativeBridgeEventPlugin"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ImageStylePropTypes = require(_dependencyMap[0], 'ImageStylePropTypes'); + + var TextStylePropTypes = require(_dependencyMap[1], 'TextStylePropTypes'); + + var ViewStylePropTypes = require(_dependencyMap[2], 'ViewStylePropTypes'); + + var keyMirror = require(_dependencyMap[3], 'fbjs/lib/keyMirror'); + + var processColor = require(_dependencyMap[4], 'processColor'); + + var processTransform = require(_dependencyMap[5], 'processTransform'); + + var sizesDiffer = require(_dependencyMap[6], 'sizesDiffer'); + + var ReactNativeStyleAttributes = babelHelpers.extends({}, keyMirror(ViewStylePropTypes), keyMirror(TextStylePropTypes), keyMirror(ImageStylePropTypes)); + ReactNativeStyleAttributes.transform = { + process: processTransform + }; + ReactNativeStyleAttributes.shadowOffset = { + diff: sizesDiffer + }; + var colorAttributes = { + process: processColor + }; + ReactNativeStyleAttributes.backgroundColor = colorAttributes; + ReactNativeStyleAttributes.borderBottomColor = colorAttributes; + ReactNativeStyleAttributes.borderColor = colorAttributes; + ReactNativeStyleAttributes.borderLeftColor = colorAttributes; + ReactNativeStyleAttributes.borderRightColor = colorAttributes; + ReactNativeStyleAttributes.borderTopColor = colorAttributes; + ReactNativeStyleAttributes.borderStartColor = colorAttributes; + ReactNativeStyleAttributes.borderEndColor = colorAttributes; + ReactNativeStyleAttributes.color = colorAttributes; + ReactNativeStyleAttributes.shadowColor = colorAttributes; + ReactNativeStyleAttributes.textDecorationColor = colorAttributes; + ReactNativeStyleAttributes.tintColor = colorAttributes; + ReactNativeStyleAttributes.textShadowColor = colorAttributes; + ReactNativeStyleAttributes.overlayColor = colorAttributes; + module.exports = ReactNativeStyleAttributes; +},188,[189,192,180,191,193,194,196],"ReactNativeStyleAttributes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var ImageResizeMode = require(_dependencyMap[1], 'ImageResizeMode'); + + var LayoutPropTypes = require(_dependencyMap[2], 'LayoutPropTypes'); + + var ReactPropTypes = require(_dependencyMap[3], 'prop-types'); + + var ShadowPropTypesIOS = require(_dependencyMap[4], 'ShadowPropTypesIOS'); + + var TransformPropTypes = require(_dependencyMap[5], 'TransformPropTypes'); + + var ImageStylePropTypes = babelHelpers.extends({}, LayoutPropTypes, ShadowPropTypesIOS, TransformPropTypes, { + resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)), + backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']), + backgroundColor: ColorPropType, + borderColor: ColorPropType, + borderWidth: ReactPropTypes.number, + borderRadius: ReactPropTypes.number, + overflow: ReactPropTypes.oneOf(['visible', 'hidden']), + tintColor: ColorPropType, + opacity: ReactPropTypes.number, + overlayColor: ReactPropTypes.string, + borderTopLeftRadius: ReactPropTypes.number, + borderTopRightRadius: ReactPropTypes.number, + borderBottomLeftRadius: ReactPropTypes.number, + borderBottomRightRadius: ReactPropTypes.number + }); + module.exports = ImageStylePropTypes; +},189,[167,190,181,24,182,183],"ImageStylePropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var keyMirror = require(_dependencyMap[0], 'fbjs/lib/keyMirror'); + + var ImageResizeMode = keyMirror({ + contain: null, + cover: null, + stretch: null, + center: null, + repeat: null + }); + module.exports = ImageResizeMode; +},190,[191],"ImageResizeMode"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], './invariant'); + + var keyMirror = function keyMirror(obj) { + var ret = {}; + var key; + !(obj instanceof Object && !Array.isArray(obj)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'keyMirror(...): Argument must be an object.') : invariant(false) : void 0; + + for (key in obj) { + if (!obj.hasOwnProperty(key)) { + continue; + } + + ret[key] = key; + } + + return ret; + }; + + module.exports = keyMirror; +},191,[18],"fbjs/lib/keyMirror.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var ReactPropTypes = require(_dependencyMap[1], 'prop-types'); + + var ViewStylePropTypes = require(_dependencyMap[2], 'ViewStylePropTypes'); + + var TextStylePropTypes = babelHelpers.extends({}, ViewStylePropTypes, { + color: ColorPropType, + fontFamily: ReactPropTypes.string, + fontSize: ReactPropTypes.number, + fontStyle: ReactPropTypes.oneOf(['normal', 'italic']), + fontWeight: ReactPropTypes.oneOf(['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900']), + fontVariant: ReactPropTypes.arrayOf(ReactPropTypes.oneOf(['small-caps', 'oldstyle-nums', 'lining-nums', 'tabular-nums', 'proportional-nums'])), + textShadowOffset: ReactPropTypes.shape({ + width: ReactPropTypes.number, + height: ReactPropTypes.number + }), + textShadowRadius: ReactPropTypes.number, + textShadowColor: ColorPropType, + letterSpacing: ReactPropTypes.number, + lineHeight: ReactPropTypes.number, + textAlign: ReactPropTypes.oneOf(['auto', 'left', 'right', 'center', 'justify']), + textAlignVertical: ReactPropTypes.oneOf(['auto', 'top', 'bottom', 'center']), + includeFontPadding: ReactPropTypes.bool, + textDecorationLine: ReactPropTypes.oneOf(['none', 'underline', 'line-through', 'underline line-through']), + textDecorationStyle: ReactPropTypes.oneOf(['solid', 'double', 'dotted', 'dashed']), + textDecorationColor: ColorPropType, + writingDirection: ReactPropTypes.oneOf(['auto', 'ltr', 'rtl']) + }); + module.exports = TextStylePropTypes; +},192,[167,24,180],"TextStylePropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Platform = require(_dependencyMap[0], 'Platform'); + + var normalizeColor = require(_dependencyMap[1], 'normalizeColor'); + + function processColor(color) { + if (color === undefined || color === null) { + return color; + } + + var int32Color = normalizeColor(color); + + if (int32Color === null || int32Color === undefined) { + return undefined; + } + + int32Color = (int32Color << 24 | int32Color >>> 8) >>> 0; + + if (Platform.OS === 'android') { + int32Color = int32Color | 0x0; + } + + return int32Color; + } + + module.exports = processColor; +},193,[105,168],"processColor"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var MatrixMath = require(_dependencyMap[0], 'MatrixMath'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var stringifySafe = require(_dependencyMap[3], 'stringifySafe'); + + function processTransform(transform) { + if (__DEV__) { + _validateTransforms(transform); + } + + if (Platform.OS === 'android' || Platform.OS === 'ios') { + return transform; + } + + var result = MatrixMath.createIdentityMatrix(); + transform.forEach(function (transformation) { + var key = Object.keys(transformation)[0]; + var value = transformation[key]; + + switch (key) { + case 'matrix': + MatrixMath.multiplyInto(result, result, value); + break; + + case 'perspective': + _multiplyTransform(result, MatrixMath.reusePerspectiveCommand, [value]); + + break; + + case 'rotateX': + _multiplyTransform(result, MatrixMath.reuseRotateXCommand, [_convertToRadians(value)]); + + break; + + case 'rotateY': + _multiplyTransform(result, MatrixMath.reuseRotateYCommand, [_convertToRadians(value)]); + + break; + + case 'rotate': + case 'rotateZ': + _multiplyTransform(result, MatrixMath.reuseRotateZCommand, [_convertToRadians(value)]); + + break; + + case 'scale': + _multiplyTransform(result, MatrixMath.reuseScaleCommand, [value]); + + break; + + case 'scaleX': + _multiplyTransform(result, MatrixMath.reuseScaleXCommand, [value]); + + break; + + case 'scaleY': + _multiplyTransform(result, MatrixMath.reuseScaleYCommand, [value]); + + break; + + case 'translate': + _multiplyTransform(result, MatrixMath.reuseTranslate3dCommand, [value[0], value[1], value[2] || 0]); + + break; + + case 'translateX': + _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [value, 0]); + + break; + + case 'translateY': + _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [0, value]); + + break; + + case 'skewX': + _multiplyTransform(result, MatrixMath.reuseSkewXCommand, [_convertToRadians(value)]); + + break; + + case 'skewY': + _multiplyTransform(result, MatrixMath.reuseSkewYCommand, [_convertToRadians(value)]); + + break; + + default: + throw new Error('Invalid transform name: ' + key); + } + }); + return result; + } + + function _multiplyTransform(result, matrixMathFunction, args) { + var matrixToApply = MatrixMath.createIdentityMatrix(); + var argsWithIdentity = [matrixToApply].concat(args); + matrixMathFunction.apply(this, argsWithIdentity); + MatrixMath.multiplyInto(result, result, matrixToApply); + } + + function _convertToRadians(value) { + var floatValue = parseFloat(value); + return value.indexOf('rad') > -1 ? floatValue : floatValue * Math.PI / 180; + } + + function _validateTransforms(transform) { + transform.forEach(function (transformation) { + var keys = Object.keys(transformation); + invariant(keys.length === 1, 'You must specify exactly one property per transform object. Passed properties: %s', stringifySafe(transformation)); + var key = keys[0]; + var value = transformation[key]; + + _validateTransform(key, value, transformation); + }); + } + + function _validateTransform(key, value, transformation) { + invariant(!value.getValue, 'You passed an Animated.Value to a normal component. ' + 'You need to wrap that component in an Animated. For example, ' + 'replace by .'); + var multivalueTransforms = ['matrix', 'translate']; + + if (multivalueTransforms.indexOf(key) !== -1) { + invariant(Array.isArray(value), 'Transform with key of %s must have an array as the value: %s', key, stringifySafe(transformation)); + } + + switch (key) { + case 'matrix': + invariant(value.length === 9 || value.length === 16, 'Matrix transform must have a length of 9 (2d) or 16 (3d). ' + 'Provided matrix has a length of %s: %s', value.length, stringifySafe(transformation)); + break; + + case 'translate': + invariant(value.length === 2 || value.length === 3, 'Transform with key translate must be an array of length 2 or 3, found %s: %s', value.length, stringifySafe(transformation)); + break; + + case 'rotateX': + case 'rotateY': + case 'rotateZ': + case 'rotate': + case 'skewX': + case 'skewY': + invariant(typeof value === 'string', 'Transform with key of "%s" must be a string: %s', key, stringifySafe(transformation)); + invariant(value.indexOf('deg') > -1 || value.indexOf('rad') > -1, 'Rotate transform must be expressed in degrees (deg) or radians ' + '(rad): %s', stringifySafe(transformation)); + break; + + case 'perspective': + invariant(typeof value === 'number', 'Transform with key of "%s" must be a number: %s', key, stringifySafe(transformation)); + invariant(value !== 0, 'Transform with key of "%s" cannot be zero: %s', key, stringifySafe(transformation)); + break; + + case 'translateX': + case 'translateY': + case 'scale': + case 'scaleX': + case 'scaleY': + invariant(typeof value === 'number', 'Transform with key of "%s" must be a number: %s', key, stringifySafe(transformation)); + break; + + default: + invariant(false, 'Invalid transform %s: %s', key, stringifySafe(transformation)); + } + } + + module.exports = processTransform; +},194,[195,105,18,92],"processTransform"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var MatrixMath = { + createIdentityMatrix: function createIdentityMatrix() { + return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; + }, + createCopy: function createCopy(m) { + return [m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]]; + }, + createOrthographic: function createOrthographic(left, right, bottom, top, near, far) { + var a = 2 / (right - left); + var b = 2 / (top - bottom); + var c = -2 / (far - near); + var tx = -(right + left) / (right - left); + var ty = -(top + bottom) / (top - bottom); + var tz = -(far + near) / (far - near); + return [a, 0, 0, 0, 0, b, 0, 0, 0, 0, c, 0, tx, ty, tz, 1]; + }, + createFrustum: function createFrustum(left, right, bottom, top, near, far) { + var r_width = 1 / (right - left); + var r_height = 1 / (top - bottom); + var r_depth = 1 / (near - far); + var x = 2 * (near * r_width); + var y = 2 * (near * r_height); + var A = (right + left) * r_width; + var B = (top + bottom) * r_height; + var C = (far + near) * r_depth; + var D = 2 * (far * near * r_depth); + return [x, 0, 0, 0, 0, y, 0, 0, A, B, C, -1, 0, 0, D, 0]; + }, + createPerspective: function createPerspective(fovInRadians, aspect, near, far) { + var h = 1 / Math.tan(fovInRadians / 2); + var r_depth = 1 / (near - far); + var C = (far + near) * r_depth; + var D = 2 * (far * near * r_depth); + return [h / aspect, 0, 0, 0, 0, h, 0, 0, 0, 0, C, -1, 0, 0, D, 0]; + }, + createTranslate2d: function createTranslate2d(x, y) { + var mat = MatrixMath.createIdentityMatrix(); + MatrixMath.reuseTranslate2dCommand(mat, x, y); + return mat; + }, + reuseTranslate2dCommand: function reuseTranslate2dCommand(matrixCommand, x, y) { + matrixCommand[12] = x; + matrixCommand[13] = y; + }, + reuseTranslate3dCommand: function reuseTranslate3dCommand(matrixCommand, x, y, z) { + matrixCommand[12] = x; + matrixCommand[13] = y; + matrixCommand[14] = z; + }, + createScale: function createScale(factor) { + var mat = MatrixMath.createIdentityMatrix(); + MatrixMath.reuseScaleCommand(mat, factor); + return mat; + }, + reuseScaleCommand: function reuseScaleCommand(matrixCommand, factor) { + matrixCommand[0] = factor; + matrixCommand[5] = factor; + }, + reuseScale3dCommand: function reuseScale3dCommand(matrixCommand, x, y, z) { + matrixCommand[0] = x; + matrixCommand[5] = y; + matrixCommand[10] = z; + }, + reusePerspectiveCommand: function reusePerspectiveCommand(matrixCommand, p) { + matrixCommand[11] = -1 / p; + }, + reuseScaleXCommand: function reuseScaleXCommand(matrixCommand, factor) { + matrixCommand[0] = factor; + }, + reuseScaleYCommand: function reuseScaleYCommand(matrixCommand, factor) { + matrixCommand[5] = factor; + }, + reuseScaleZCommand: function reuseScaleZCommand(matrixCommand, factor) { + matrixCommand[10] = factor; + }, + reuseRotateXCommand: function reuseRotateXCommand(matrixCommand, radians) { + matrixCommand[5] = Math.cos(radians); + matrixCommand[6] = Math.sin(radians); + matrixCommand[9] = -Math.sin(radians); + matrixCommand[10] = Math.cos(radians); + }, + reuseRotateYCommand: function reuseRotateYCommand(matrixCommand, amount) { + matrixCommand[0] = Math.cos(amount); + matrixCommand[2] = -Math.sin(amount); + matrixCommand[8] = Math.sin(amount); + matrixCommand[10] = Math.cos(amount); + }, + reuseRotateZCommand: function reuseRotateZCommand(matrixCommand, radians) { + matrixCommand[0] = Math.cos(radians); + matrixCommand[1] = Math.sin(radians); + matrixCommand[4] = -Math.sin(radians); + matrixCommand[5] = Math.cos(radians); + }, + createRotateZ: function createRotateZ(radians) { + var mat = MatrixMath.createIdentityMatrix(); + MatrixMath.reuseRotateZCommand(mat, radians); + return mat; + }, + reuseSkewXCommand: function reuseSkewXCommand(matrixCommand, radians) { + matrixCommand[4] = Math.tan(radians); + }, + reuseSkewYCommand: function reuseSkewYCommand(matrixCommand, radians) { + matrixCommand[1] = Math.tan(radians); + }, + multiplyInto: function multiplyInto(out, a, b) { + var a00 = a[0], + a01 = a[1], + a02 = a[2], + a03 = a[3], + a10 = a[4], + a11 = a[5], + a12 = a[6], + a13 = a[7], + a20 = a[8], + a21 = a[9], + a22 = a[10], + a23 = a[11], + a30 = a[12], + a31 = a[13], + a32 = a[14], + a33 = a[15]; + var b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3]; + out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + }, + determinant: function determinant(matrix) { + var _matrix = babelHelpers.slicedToArray(matrix, 16), + m00 = _matrix[0], + m01 = _matrix[1], + m02 = _matrix[2], + m03 = _matrix[3], + m10 = _matrix[4], + m11 = _matrix[5], + m12 = _matrix[6], + m13 = _matrix[7], + m20 = _matrix[8], + m21 = _matrix[9], + m22 = _matrix[10], + m23 = _matrix[11], + m30 = _matrix[12], + m31 = _matrix[13], + m32 = _matrix[14], + m33 = _matrix[15]; + + return m03 * m12 * m21 * m30 - m02 * m13 * m21 * m30 - m03 * m11 * m22 * m30 + m01 * m13 * m22 * m30 + m02 * m11 * m23 * m30 - m01 * m12 * m23 * m30 - m03 * m12 * m20 * m31 + m02 * m13 * m20 * m31 + m03 * m10 * m22 * m31 - m00 * m13 * m22 * m31 - m02 * m10 * m23 * m31 + m00 * m12 * m23 * m31 + m03 * m11 * m20 * m32 - m01 * m13 * m20 * m32 - m03 * m10 * m21 * m32 + m00 * m13 * m21 * m32 + m01 * m10 * m23 * m32 - m00 * m11 * m23 * m32 - m02 * m11 * m20 * m33 + m01 * m12 * m20 * m33 + m02 * m10 * m21 * m33 - m00 * m12 * m21 * m33 - m01 * m10 * m22 * m33 + m00 * m11 * m22 * m33; + }, + inverse: function inverse(matrix) { + var det = MatrixMath.determinant(matrix); + + if (!det) { + return matrix; + } + + var _matrix2 = babelHelpers.slicedToArray(matrix, 16), + m00 = _matrix2[0], + m01 = _matrix2[1], + m02 = _matrix2[2], + m03 = _matrix2[3], + m10 = _matrix2[4], + m11 = _matrix2[5], + m12 = _matrix2[6], + m13 = _matrix2[7], + m20 = _matrix2[8], + m21 = _matrix2[9], + m22 = _matrix2[10], + m23 = _matrix2[11], + m30 = _matrix2[12], + m31 = _matrix2[13], + m32 = _matrix2[14], + m33 = _matrix2[15]; + + return [(m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) / det, (m03 * m22 * m31 - m02 * m23 * m31 - m03 * m21 * m32 + m01 * m23 * m32 + m02 * m21 * m33 - m01 * m22 * m33) / det, (m02 * m13 * m31 - m03 * m12 * m31 + m03 * m11 * m32 - m01 * m13 * m32 - m02 * m11 * m33 + m01 * m12 * m33) / det, (m03 * m12 * m21 - m02 * m13 * m21 - m03 * m11 * m22 + m01 * m13 * m22 + m02 * m11 * m23 - m01 * m12 * m23) / det, (m13 * m22 * m30 - m12 * m23 * m30 - m13 * m20 * m32 + m10 * m23 * m32 + m12 * m20 * m33 - m10 * m22 * m33) / det, (m02 * m23 * m30 - m03 * m22 * m30 + m03 * m20 * m32 - m00 * m23 * m32 - m02 * m20 * m33 + m00 * m22 * m33) / det, (m03 * m12 * m30 - m02 * m13 * m30 - m03 * m10 * m32 + m00 * m13 * m32 + m02 * m10 * m33 - m00 * m12 * m33) / det, (m02 * m13 * m20 - m03 * m12 * m20 + m03 * m10 * m22 - m00 * m13 * m22 - m02 * m10 * m23 + m00 * m12 * m23) / det, (m11 * m23 * m30 - m13 * m21 * m30 + m13 * m20 * m31 - m10 * m23 * m31 - m11 * m20 * m33 + m10 * m21 * m33) / det, (m03 * m21 * m30 - m01 * m23 * m30 - m03 * m20 * m31 + m00 * m23 * m31 + m01 * m20 * m33 - m00 * m21 * m33) / det, (m01 * m13 * m30 - m03 * m11 * m30 + m03 * m10 * m31 - m00 * m13 * m31 - m01 * m10 * m33 + m00 * m11 * m33) / det, (m03 * m11 * m20 - m01 * m13 * m20 - m03 * m10 * m21 + m00 * m13 * m21 + m01 * m10 * m23 - m00 * m11 * m23) / det, (m12 * m21 * m30 - m11 * m22 * m30 - m12 * m20 * m31 + m10 * m22 * m31 + m11 * m20 * m32 - m10 * m21 * m32) / det, (m01 * m22 * m30 - m02 * m21 * m30 + m02 * m20 * m31 - m00 * m22 * m31 - m01 * m20 * m32 + m00 * m21 * m32) / det, (m02 * m11 * m30 - m01 * m12 * m30 - m02 * m10 * m31 + m00 * m12 * m31 + m01 * m10 * m32 - m00 * m11 * m32) / det, (m01 * m12 * m20 - m02 * m11 * m20 + m02 * m10 * m21 - m00 * m12 * m21 - m01 * m10 * m22 + m00 * m11 * m22) / det]; + }, + transpose: function transpose(m) { + return [m[0], m[4], m[8], m[12], m[1], m[5], m[9], m[13], m[2], m[6], m[10], m[14], m[3], m[7], m[11], m[15]]; + }, + multiplyVectorByMatrix: function multiplyVectorByMatrix(v, m) { + var _v = babelHelpers.slicedToArray(v, 4), + vx = _v[0], + vy = _v[1], + vz = _v[2], + vw = _v[3]; + + return [vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12], vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13], vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14], vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15]]; + }, + v3Length: function v3Length(a) { + return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]); + }, + v3Normalize: function v3Normalize(vector, v3Length) { + var im = 1 / (v3Length || MatrixMath.v3Length(vector)); + return [vector[0] * im, vector[1] * im, vector[2] * im]; + }, + v3Dot: function v3Dot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + }, + v3Combine: function v3Combine(a, b, aScale, bScale) { + return [aScale * a[0] + bScale * b[0], aScale * a[1] + bScale * b[1], aScale * a[2] + bScale * b[2]]; + }, + v3Cross: function v3Cross(a, b) { + return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; + }, + quaternionToDegreesXYZ: function quaternionToDegreesXYZ(q, matrix, row) { + var _q = babelHelpers.slicedToArray(q, 4), + qx = _q[0], + qy = _q[1], + qz = _q[2], + qw = _q[3]; + + var qw2 = qw * qw; + var qx2 = qx * qx; + var qy2 = qy * qy; + var qz2 = qz * qz; + var test = qx * qy + qz * qw; + var unit = qw2 + qx2 + qy2 + qz2; + var conv = 180 / Math.PI; + + if (test > 0.49999 * unit) { + return [0, 2 * Math.atan2(qx, qw) * conv, 90]; + } + + if (test < -0.49999 * unit) { + return [0, -2 * Math.atan2(qx, qw) * conv, -90]; + } + + return [MatrixMath.roundTo3Places(Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx2 - 2 * qz2) * conv), MatrixMath.roundTo3Places(Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy2 - 2 * qz2) * conv), MatrixMath.roundTo3Places(Math.asin(2 * qx * qy + 2 * qz * qw) * conv)]; + }, + roundTo3Places: function roundTo3Places(n) { + var arr = n.toString().split('e'); + return Math.round(arr[0] + 'e' + (arr[1] ? +arr[1] - 3 : 3)) * 0.001; + }, + decomposeMatrix: function decomposeMatrix(transformMatrix) { + invariant(transformMatrix.length === 16, 'Matrix decomposition needs a list of 3d matrix values, received %s', transformMatrix); + var perspective = []; + var quaternion = []; + var scale = []; + var skew = []; + var translation = []; + + if (!transformMatrix[15]) { + return; + } + + var matrix = []; + var perspectiveMatrix = []; + + for (var i = 0; i < 4; i++) { + matrix.push([]); + + for (var j = 0; j < 4; j++) { + var value = transformMatrix[i * 4 + j] / transformMatrix[15]; + matrix[i].push(value); + perspectiveMatrix.push(j === 3 ? 0 : value); + } + } + + perspectiveMatrix[15] = 1; + + if (!MatrixMath.determinant(perspectiveMatrix)) { + return; + } + + if (matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0) { + var rightHandSide = [matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]]; + var inversePerspectiveMatrix = MatrixMath.inverse(perspectiveMatrix); + var transposedInversePerspectiveMatrix = MatrixMath.transpose(inversePerspectiveMatrix); + var perspective = MatrixMath.multiplyVectorByMatrix(rightHandSide, transposedInversePerspectiveMatrix); + } else { + perspective[0] = perspective[1] = perspective[2] = 0; + perspective[3] = 1; + } + + for (var i = 0; i < 3; i++) { + translation[i] = matrix[3][i]; + } + + var row = []; + + for (i = 0; i < 3; i++) { + row[i] = [matrix[i][0], matrix[i][1], matrix[i][2]]; + } + + scale[0] = MatrixMath.v3Length(row[0]); + row[0] = MatrixMath.v3Normalize(row[0], scale[0]); + skew[0] = MatrixMath.v3Dot(row[0], row[1]); + row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]); + skew[0] = MatrixMath.v3Dot(row[0], row[1]); + row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]); + scale[1] = MatrixMath.v3Length(row[1]); + row[1] = MatrixMath.v3Normalize(row[1], scale[1]); + skew[0] /= scale[1]; + skew[1] = MatrixMath.v3Dot(row[0], row[2]); + row[2] = MatrixMath.v3Combine(row[2], row[0], 1.0, -skew[1]); + skew[2] = MatrixMath.v3Dot(row[1], row[2]); + row[2] = MatrixMath.v3Combine(row[2], row[1], 1.0, -skew[2]); + scale[2] = MatrixMath.v3Length(row[2]); + row[2] = MatrixMath.v3Normalize(row[2], scale[2]); + skew[1] /= scale[2]; + skew[2] /= scale[2]; + var pdum3 = MatrixMath.v3Cross(row[1], row[2]); + + if (MatrixMath.v3Dot(row[0], pdum3) < 0) { + for (i = 0; i < 3; i++) { + scale[i] *= -1; + row[i][0] *= -1; + row[i][1] *= -1; + row[i][2] *= -1; + } + } + + quaternion[0] = 0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2], 0)); + quaternion[1] = 0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2], 0)); + quaternion[2] = 0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2], 0)); + quaternion[3] = 0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2], 0)); + + if (row[2][1] > row[1][2]) { + quaternion[0] = -quaternion[0]; + } + + if (row[0][2] > row[2][0]) { + quaternion[1] = -quaternion[1]; + } + + if (row[1][0] > row[0][1]) { + quaternion[2] = -quaternion[2]; + } + + var rotationDegrees; + + if (quaternion[0] < 0.001 && quaternion[0] >= 0 && quaternion[1] < 0.001 && quaternion[1] >= 0) { + rotationDegrees = [0, 0, MatrixMath.roundTo3Places(Math.atan2(row[0][1], row[0][0]) * 180 / Math.PI)]; + } else { + rotationDegrees = MatrixMath.quaternionToDegreesXYZ(quaternion, matrix, row); + } + + return { + rotationDegrees: rotationDegrees, + perspective: perspective, + quaternion: quaternion, + scale: scale, + skew: skew, + translation: translation, + rotate: rotationDegrees[2], + rotateX: rotationDegrees[0], + rotateY: rotationDegrees[1], + scaleX: scale[0], + scaleY: scale[1], + translateX: translation[0], + translateY: translation[1] + }; + } + }; + module.exports = MatrixMath; +},195,[18],"MatrixMath"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var dummySize = { + width: undefined, + height: undefined + }; + + var sizesDiffer = function sizesDiffer(one, two) { + one = one || dummySize; + two = two || dummySize; + return one !== two && (one.width !== two.width || one.height !== two.height); + }; + + module.exports = sizesDiffer; +},196,[],"sizesDiffer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.createReactNativeComponentClass; +},197,[74],"createReactNativeComponentClass"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var dummyInsets = { + top: undefined, + left: undefined, + right: undefined, + bottom: undefined + }; + + var insetsDiffer = function insetsDiffer(one, two) { + one = one || dummyInsets; + two = two || dummyInsets; + return one !== two && (one.top !== two.top || one.left !== two.left || one.right !== two.right || one.bottom !== two.bottom); + }; + + module.exports = insetsDiffer; +},198,[],"insetsDiffer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var matricesDiffer = function matricesDiffer(one, two) { + if (one === two) { + return false; + } + + return !one || !two || one[12] !== two[12] || one[13] !== two[13] || one[14] !== two[14] || one[5] !== two[5] || one[10] !== two[10] || one[1] !== two[1] || one[2] !== two[2] || one[3] !== two[3] || one[4] !== two[4] || one[6] !== two[6] || one[7] !== two[7] || one[8] !== two[8] || one[9] !== two[9] || one[11] !== two[11] || one[15] !== two[15]; + }; + + module.exports = matricesDiffer; +},199,[],"matricesDiffer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var dummyPoint = { + x: undefined, + y: undefined + }; + + var pointsDiffer = function pointsDiffer(one, two) { + one = one || dummyPoint; + two = two || dummyPoint; + return one !== two && (one.x !== two.x || one.y !== two.y); + }; + + module.exports = pointsDiffer; +},200,[],"pointsDiffer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AssetRegistry = require(_dependencyMap[0], 'AssetRegistry'); + + var AssetSourceResolver = require(_dependencyMap[1], 'AssetSourceResolver'); + + var NativeModules = require(_dependencyMap[2], 'NativeModules'); + + var _customSourceTransformer = void 0, + _serverURL = void 0, + _scriptURL = void 0, + _embeddedBundleURL = void 0; + + function getDevServerURL() { + if (_serverURL === undefined) { + var scriptURL = NativeModules.SourceCode.scriptURL; + var match = scriptURL && scriptURL.match(/^https?:\/\/.*?\//); + + if (match) { + _serverURL = match[0]; + } else { + _serverURL = null; + } + } + + return _serverURL; + } + + function _coerceLocalScriptURL(scriptURL) { + if (scriptURL) { + if (scriptURL.startsWith('assets://')) { + return null; + } + + scriptURL = scriptURL.substring(0, scriptURL.lastIndexOf('/') + 1); + + if (!scriptURL.includes('://')) { + scriptURL = 'file://' + scriptURL; + } + } + + return scriptURL; + } + + function getScriptURL() { + if (_scriptURL === undefined) { + var scriptURL = NativeModules.SourceCode.scriptURL; + _scriptURL = _coerceLocalScriptURL(scriptURL); + } + + return _scriptURL; + } + + function getEmbeddedBundledURL() { + var scriptURL = NativeModules.SourceCode.embeddedBundleURL; + _embeddedBundleURL = _coerceLocalScriptURL(scriptURL); + return _embeddedBundleURL; + } + + function setCustomSourceTransformer(transformer) { + _customSourceTransformer = transformer; + } + + function resolveAssetSource(source) { + if (typeof source === 'object') { + return source; + } + + var asset = AssetRegistry.getAssetByID(source); + + if (!asset) { + return null; + } + + var resolver = new AssetSourceResolver(getDevServerURL(), getScriptURL(), getEmbeddedBundledURL(), asset); + + if (_customSourceTransformer) { + return _customSourceTransformer(resolver); + } + + return resolver.defaultAsset(); + } + + module.exports = resolveAssetSource; + module.exports.pickScale = AssetSourceResolver.pickScale; + module.exports.setCustomSourceTransformer = setCustomSourceTransformer; +},201,[202,203,68],"resolveAssetSource"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var assets = []; + + function registerAsset(asset) { + return assets.push(asset); + } + + function getAssetByID(assetId) { + return assets[assetId - 1]; + } + + module.exports = { + registerAsset: registerAsset, + getAssetByID: getAssetByID + }; +},202,[],"AssetRegistry"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PixelRatio = require(_dependencyMap[0], 'PixelRatio'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var assetPathUtils = require(_dependencyMap[2], '../../local-cli/bundle/assetPathUtils'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + function getScaledAssetPath(asset) { + var scale = AssetSourceResolver.pickScale(asset.scales, PixelRatio.get()); + var scaleSuffix = scale === 1 ? '' : '@' + scale + 'x'; + var assetDir = assetPathUtils.getBasePath(asset); + return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type; + } + + function getAssetPathInDrawableFolder(asset) { + var scale = AssetSourceResolver.pickScale(asset.scales, PixelRatio.get()); + var drawbleFolder = assetPathUtils.getAndroidResourceFolderName(asset, scale); + var fileName = assetPathUtils.getAndroidResourceIdentifier(asset); + return drawbleFolder + '/' + fileName + '.' + asset.type; + } + + var AssetSourceResolver = function () { + function AssetSourceResolver(serverUrl, jsbundleUrl, embeddedBundleUrl, asset) { + babelHelpers.classCallCheck(this, AssetSourceResolver); + this.serverUrl = serverUrl; + this.jsbundleUrl = jsbundleUrl; + this.embeddedBundleUrl = embeddedBundleUrl; + this.asset = asset; + } + + babelHelpers.createClass(AssetSourceResolver, [{ + key: "isLoadedFromServer", + value: function isLoadedFromServer() { + return !!this.serverUrl; + } + }, { + key: "isLoadedFromFileSystem", + value: function isLoadedFromFileSystem() { + return !!(this.jsbundleUrl && this.jsbundleUrl.startsWith('file://')); + } + }, { + key: "canLoadFromEmbeddedBundledLocation", + value: function canLoadFromEmbeddedBundledLocation() { + return !!this.embeddedBundleUrl; + } + }, { + key: "defaultAsset", + value: function defaultAsset() { + if (this.isLoadedFromServer()) { + return this.assetServerURL(); + } + + if (Platform.OS === 'android') { + return this.isLoadedFromFileSystem() ? this.drawableFolderInBundle() : this.resourceIdentifierWithoutScale(); + } else { + return this.scaledAssetURLNearBundle(); + } + } + }, { + key: "assetServerURL", + value: function assetServerURL() { + invariant(!!this.serverUrl, 'need server to load from'); + return this.fromSource(this.serverUrl + getScaledAssetPath(this.asset) + '?platform=' + Platform.OS + '&hash=' + this.asset.hash); + } + }, { + key: "scaledAssetPath", + value: function scaledAssetPath() { + return this.fromSource(getScaledAssetPath(this.asset)); + } + }, { + key: "scaledAssetURLNearBundle", + value: function scaledAssetURLNearBundle() { + var path = this.jsbundleUrl || 'file://'; + return this.fromSource(path + getScaledAssetPath(this.asset)); + } + }, { + key: "scaledAssetURLInEmbeddedBundleUrl", + value: function scaledAssetURLInEmbeddedBundleUrl() { + var path = this.embeddedBundleUrl || 'file://'; + return this.fromSource(path + getScaledAssetPath(this.asset)); + } + }, { + key: "resourceIdentifierWithoutScale", + value: function resourceIdentifierWithoutScale() { + invariant(Platform.OS === 'android', 'resource identifiers work on Android'); + return this.fromSource(assetPathUtils.getAndroidResourceIdentifier(this.asset)); + } + }, { + key: "drawableFolderInBundle", + value: function drawableFolderInBundle() { + var path = this.jsbundleUrl || 'file://'; + return this.fromSource(path + getAssetPathInDrawableFolder(this.asset)); + } + }, { + key: "fromSource", + value: function fromSource(source) { + return { + __packager_asset: true, + width: this.asset.width, + height: this.asset.height, + uri: source, + scale: AssetSourceResolver.pickScale(this.asset.scales, PixelRatio.get()) + }; + } + }], [{ + key: "pickScale", + value: function pickScale(scales, deviceScale) { + for (var i = 0; i < scales.length; i++) { + if (scales[i] >= deviceScale) { + return scales[i]; + } + } + + return scales[scales.length - 1] || 1; + } + }]); + return AssetSourceResolver; + }(); + + module.exports = AssetSourceResolver; +},203,[204,105,207,18],"AssetSourceResolver"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Dimensions = require(_dependencyMap[0], 'Dimensions'); + + var PixelRatio = function () { + function PixelRatio() { + babelHelpers.classCallCheck(this, PixelRatio); + } + + babelHelpers.createClass(PixelRatio, null, [{ + key: "get", + value: function get() { + return Dimensions.get('window').scale; + } + }, { + key: "getFontScale", + value: function getFontScale() { + return Dimensions.get('window').fontScale || PixelRatio.get(); + } + }, { + key: "getPixelSizeForLayoutSize", + value: function getPixelSizeForLayoutSize(layoutSize) { + return Math.round(layoutSize * PixelRatio.get()); + } + }, { + key: "roundToNearestPixel", + value: function roundToNearestPixel(layoutSize) { + var ratio = PixelRatio.get(); + return Math.round(layoutSize * ratio) / ratio; + } + }, { + key: "startDetecting", + value: function startDetecting() {} + }]); + return PixelRatio; + }(); + + module.exports = PixelRatio; +},204,[205],"PixelRatio"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var DeviceInfo = require(_dependencyMap[0], 'DeviceInfo'); + + var EventEmitter = require(_dependencyMap[1], 'EventEmitter'); + + var Platform = require(_dependencyMap[2], 'Platform'); + + var RCTDeviceEventEmitter = require(_dependencyMap[3], 'RCTDeviceEventEmitter'); + + var invariant = require(_dependencyMap[4], 'fbjs/lib/invariant'); + + var eventEmitter = new EventEmitter(); + var dimensionsInitialized = false; + var dimensions = {}; + + var Dimensions = function () { + function Dimensions() { + babelHelpers.classCallCheck(this, Dimensions); + } + + babelHelpers.createClass(Dimensions, null, [{ + key: "set", + value: function set(dims) { + if (dims && dims.windowPhysicalPixels) { + dims = JSON.parse(JSON.stringify(dims)); + var windowPhysicalPixels = dims.windowPhysicalPixels; + dims.window = { + width: windowPhysicalPixels.width / windowPhysicalPixels.scale, + height: windowPhysicalPixels.height / windowPhysicalPixels.scale, + scale: windowPhysicalPixels.scale, + fontScale: windowPhysicalPixels.fontScale + }; + + if (Platform.OS === 'android') { + var screenPhysicalPixels = dims.screenPhysicalPixels; + dims.screen = { + width: screenPhysicalPixels.width / screenPhysicalPixels.scale, + height: screenPhysicalPixels.height / screenPhysicalPixels.scale, + scale: screenPhysicalPixels.scale, + fontScale: screenPhysicalPixels.fontScale + }; + delete dims.screenPhysicalPixels; + } else { + dims.screen = dims.window; + } + + delete dims.windowPhysicalPixels; + } + + babelHelpers.extends(dimensions, dims); + + if (dimensionsInitialized) { + eventEmitter.emit('change', { + window: dimensions.window, + screen: dimensions.screen + }); + } else { + dimensionsInitialized = true; + } + } + }, { + key: "get", + value: function get(dim) { + invariant(dimensions[dim], 'No dimension set for key ' + dim); + return dimensions[dim]; + } + }, { + key: "addEventListener", + value: function addEventListener(type, handler) { + invariant(type === 'change', 'Trying to subscribe to unknown event: "%s"', type); + eventEmitter.addListener(type, handler); + } + }, { + key: "removeEventListener", + value: function removeEventListener(type, handler) { + invariant(type === 'change', 'Trying to remove listener for unknown event: "%s"', type); + eventEmitter.removeListener(type, handler); + } + }]); + return Dimensions; + }(); + + Dimensions.set(DeviceInfo.Dimensions); + RCTDeviceEventEmitter.addListener('didUpdateDimensions', function (update) { + Dimensions.set(update); + }); + module.exports = Dimensions; +},205,[206,118,105,121,18],"Dimensions"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var DeviceInfo = require(_dependencyMap[0], 'NativeModules').DeviceInfo; + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + invariant(DeviceInfo, 'DeviceInfo native module is not installed correctly'); + module.exports = DeviceInfo; +},206,[68,18],"DeviceInfo"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function getAndroidAssetSuffix(scale) { + switch (scale) { + case 0.75: + return 'ldpi'; + + case 1: + return 'mdpi'; + + case 1.5: + return 'hdpi'; + + case 2: + return 'xhdpi'; + + case 3: + return 'xxhdpi'; + + case 4: + return 'xxxhdpi'; + } + + throw new Error('no such scale'); + } + + var drawableFileTypes = new Set(['gif', 'jpeg', 'jpg', 'png', 'svg', 'webp', 'xml']); + + function getAndroidResourceFolderName(asset, scale) { + if (!drawableFileTypes.has(asset.type)) { + return 'raw'; + } + + var suffix = getAndroidAssetSuffix(scale); + + if (!suffix) { + throw new Error('Don\'t know which android drawable suffix to use for asset: ' + JSON.stringify(asset)); + } + + var androidFolder = 'drawable-' + suffix; + return androidFolder; + } + + function getAndroidResourceIdentifier(asset) { + var folderPath = getBasePath(asset); + return (folderPath + '/' + asset.name).toLowerCase().replace(/\//g, '_').replace(/([^a-z0-9_])/g, '').replace(/^assets_/, ''); + } + + function getBasePath(asset) { + var basePath = asset.httpServerLocation; + + if (basePath[0] === '/') { + basePath = basePath.substr(1); + } + + return basePath; + } + + module.exports = { + getAndroidAssetSuffix: getAndroidAssetSuffix, + getAndroidResourceFolderName: getAndroidResourceFolderName, + getAndroidResourceIdentifier: getAndroidResourceIdentifier, + getBasePath: getBasePath + }; +},207,[],"react-native/local-cli/bundle/assetPathUtils.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ReactNativeStyleAttributes = require(_dependencyMap[0], 'ReactNativeStyleAttributes'); + + function verifyPropTypes(componentInterface, viewConfig, nativePropsToIgnore) { + if (!viewConfig) { + return; + } + + var componentName = componentInterface.displayName || componentInterface.name || 'unknown'; + var propTypes = componentInterface.__propTypesSecretDontUseThesePlease || componentInterface.propTypes; + + if (!propTypes) { + throw new Error('`' + componentName + '` has no propTypes defined`'); + } + + var nativeProps = viewConfig.NativeProps; + + for (var prop in nativeProps) { + if (!propTypes[prop] && !ReactNativeStyleAttributes[prop] && (!nativePropsToIgnore || !nativePropsToIgnore[prop])) { + var message; + + if (propTypes.hasOwnProperty(prop)) { + message = '`' + componentName + '` has incorrectly defined propType for native prop `' + viewConfig.uiViewClassName + '.' + prop + '` of native type `' + nativeProps[prop]; + } else { + message = '`' + componentName + '` has no propType for native prop `' + viewConfig.uiViewClassName + '.' + prop + '` of native type `' + nativeProps[prop] + '`'; + } + + message += "\nIf you haven't changed this prop yourself, this usually means that " + 'your versions of the native code and JavaScript code are out of sync. Updating both ' + 'should make this error go away.'; + throw new Error(message); + } + } + } + + module.exports = verifyPropTypes; +},208,[188],"verifyPropTypes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PixelRatio = require(_dependencyMap[0], 'PixelRatio'); + + var ReactNativePropRegistry = require(_dependencyMap[1], 'ReactNativePropRegistry'); + + var ReactNativeStyleAttributes = require(_dependencyMap[2], 'ReactNativeStyleAttributes'); + + var StyleSheetValidation = require(_dependencyMap[3], 'StyleSheetValidation'); + + var flatten = require(_dependencyMap[4], 'flattenStyle'); + + var hairlineWidth = PixelRatio.roundToNearestPixel(0.4); + + if (hairlineWidth === 0) { + hairlineWidth = 1 / PixelRatio.get(); + } + + var absoluteFillObject = { + position: 'absolute', + left: 0, + right: 0, + top: 0, + bottom: 0 + }; + var absoluteFill = ReactNativePropRegistry.register(absoluteFillObject); + module.exports = { + hairlineWidth: hairlineWidth, + absoluteFill: absoluteFill, + absoluteFillObject: absoluteFillObject, + compose: function compose(style1, style2) { + if (style1 && style2) { + return [style1, style2]; + } else { + return style1 || style2; + } + }, + flatten: flatten, + setStyleAttributePreprocessor: function setStyleAttributePreprocessor(property, process) { + var value = void 0; + + if (typeof ReactNativeStyleAttributes[property] === 'string') { + value = {}; + } else if (typeof ReactNativeStyleAttributes[property] === 'object') { + value = ReactNativeStyleAttributes[property]; + } else { + console.error(property + " is not a valid style attribute"); + return; + } + + if (__DEV__ && typeof value.process === 'function') { + console.warn("Overwriting " + property + " style attribute preprocessor"); + } + + ReactNativeStyleAttributes[property] = babelHelpers.extends({}, value, { + process: process + }); + }, + create: function create(obj) { + var result = {}; + + for (var key in obj) { + StyleSheetValidation.validateStyle(key, obj); + result[key] = obj[key] && ReactNativePropRegistry.register(obj[key]); + } + + return result; + } + }; +},209,[204,153,188,210,152],"StyleSheet"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ImageStylePropTypes = require(_dependencyMap[0], 'ImageStylePropTypes'); + + var TextStylePropTypes = require(_dependencyMap[1], 'TextStylePropTypes'); + + var ViewStylePropTypes = require(_dependencyMap[2], 'ViewStylePropTypes'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + + var StyleSheetValidation = function () { + function StyleSheetValidation() { + babelHelpers.classCallCheck(this, StyleSheetValidation); + } + + babelHelpers.createClass(StyleSheetValidation, null, [{ + key: "validateStyleProp", + value: function validateStyleProp(prop, style, caller) { + if (!__DEV__) { + return; + } + + if (allStylePropTypes[prop] === undefined) { + var message1 = '"' + prop + '" is not a valid style property.'; + var message2 = '\nValid style props: ' + JSON.stringify(Object.keys(allStylePropTypes).sort(), null, ' '); + styleError(message1, style, caller, message2); + } + + var error = allStylePropTypes[prop](style, prop, caller, 'prop', null, ReactPropTypesSecret); + + if (error) { + styleError(error.message, style, caller); + } + } + }, { + key: "validateStyle", + value: function validateStyle(name, styles) { + if (!__DEV__) { + return; + } + + for (var prop in styles[name]) { + StyleSheetValidation.validateStyleProp(prop, styles[name], 'StyleSheet ' + name); + } + } + }, { + key: "addValidStylePropTypes", + value: function addValidStylePropTypes(stylePropTypes) { + for (var key in stylePropTypes) { + allStylePropTypes[key] = stylePropTypes[key]; + } + } + }]); + return StyleSheetValidation; + }(); + + var styleError = function styleError(message1, style, caller, message2) { + invariant(false, message1 + '\n' + (caller || '<>') + ': ' + JSON.stringify(style, null, ' ') + (message2 || '')); + }; + + var allStylePropTypes = {}; + StyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes); + StyleSheetValidation.addValidStylePropTypes(TextStylePropTypes); + StyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes); + module.exports = StyleSheetValidation; +},210,[189,192,180,18],"StyleSheetValidation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/View/View.js"; + + var NativeMethodsMixin = require(_dependencyMap[0], 'NativeMethodsMixin'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var PropTypes = require(_dependencyMap[2], 'prop-types'); + + var React = require(_dependencyMap[3], 'React'); + + var ReactNativeStyleAttributes = require(_dependencyMap[4], 'ReactNativeStyleAttributes'); + + var ReactNativeViewAttributes = require(_dependencyMap[5], 'ReactNativeViewAttributes'); + + var ViewPropTypes = require(_dependencyMap[6], 'ViewPropTypes'); + + var createReactClass = require(_dependencyMap[7], 'create-react-class'); + + var invariant = require(_dependencyMap[8], 'fbjs/lib/invariant'); + + var requireNativeComponent = require(_dependencyMap[9], 'requireNativeComponent'); + + var View = createReactClass({ + displayName: 'View', + mixins: [NativeMethodsMixin], + propTypes: ViewPropTypes, + viewConfig: { + uiViewClassName: 'RCTView', + validAttributes: ReactNativeViewAttributes.RCTView + }, + contextTypes: { + isInAParentText: PropTypes.bool + }, + render: function render() { + invariant(!(this.context.isInAParentText && Platform.OS === 'android'), 'Nesting of within is not supported on Android.'); + return React.createElement(RCTView, babelHelpers.extends({}, this.props, { + __source: { + fileName: _jsxFileName, + lineNumber: 71 + } + })); + } + }); + var RCTView = requireNativeComponent('RCTView', View, { + nativeOnly: { + nativeBackgroundAndroid: true, + nativeForegroundAndroid: true + } + }); + + if (__DEV__) { + var UIManager = require(_dependencyMap[10], 'UIManager'); + + var viewConfig = UIManager.viewConfigs && UIManager.viewConfigs.RCTView || {}; + + for (var prop in viewConfig.nativeProps) { + var viewAny = View; + + if (!viewAny.propTypes[prop] && !ReactNativeStyleAttributes[prop]) { + throw new Error('View is missing propType for native prop `' + prop + '`'); + } + } + } + + var ViewToExport = RCTView; + + if (__DEV__) { + ViewToExport = View; + } + + module.exports = ViewToExport; +},211,[169,105,24,171,188,212,172,213,18,186,158],"View"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ReactNativeStyleAttributes = require(_dependencyMap[0], 'ReactNativeStyleAttributes'); + + var ReactNativeViewAttributes = {}; + ReactNativeViewAttributes.UIView = { + pointerEvents: true, + accessible: true, + accessibilityActions: true, + accessibilityLabel: true, + accessibilityComponentType: true, + accessibilityLiveRegion: true, + accessibilityTraits: true, + importantForAccessibility: true, + nativeID: true, + testID: true, + renderToHardwareTextureAndroid: true, + shouldRasterizeIOS: true, + onLayout: true, + onAccessibilityAction: true, + onAccessibilityTap: true, + onMagicTap: true, + collapsable: true, + needsOffscreenAlphaCompositing: true, + style: ReactNativeStyleAttributes + }; + ReactNativeViewAttributes.RCTView = babelHelpers.extends({}, ReactNativeViewAttributes.UIView, { + removeClippedSubviews: true + }); + module.exports = ReactNativeViewAttributes; +},212,[188],"ReactNativeViewAttributes"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var React = require(_dependencyMap[0], 'react'); + + var factory = require(_dependencyMap[1], './factory'); + + if (typeof React === 'undefined') { + throw Error('create-react-class could not find the React object. If you are using script tags, ' + 'make sure that React is being loaded before create-react-class.'); + } + + var ReactNoopUpdateQueue = new React.Component().updater; + module.exports = factory(React.Component, React.isValidElement, ReactNoopUpdateQueue); +},213,[12,214],"create-react-class/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _assign = require(_dependencyMap[0], 'object-assign'); + + var emptyObject = require(_dependencyMap[1], 'fbjs/lib/emptyObject'); + + var _invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + if (process.env.NODE_ENV !== 'production') { + var warning = require(_dependencyMap[3], 'fbjs/lib/warning'); + } + + var MIXINS_KEY = 'mixins'; + + function identity(fn) { + return fn; + } + + var ReactPropTypeLocationNames; + + if (process.env.NODE_ENV !== 'production') { + ReactPropTypeLocationNames = { + prop: 'prop', + context: 'context', + childContext: 'child context' + }; + } else { + ReactPropTypeLocationNames = {}; + } + + function factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) { + var injectedMixins = []; + var ReactClassInterface = { + mixins: 'DEFINE_MANY', + statics: 'DEFINE_MANY', + propTypes: 'DEFINE_MANY', + contextTypes: 'DEFINE_MANY', + childContextTypes: 'DEFINE_MANY', + getDefaultProps: 'DEFINE_MANY_MERGED', + getInitialState: 'DEFINE_MANY_MERGED', + getChildContext: 'DEFINE_MANY_MERGED', + render: 'DEFINE_ONCE', + componentWillMount: 'DEFINE_MANY', + componentDidMount: 'DEFINE_MANY', + componentWillReceiveProps: 'DEFINE_MANY', + shouldComponentUpdate: 'DEFINE_ONCE', + componentWillUpdate: 'DEFINE_MANY', + componentDidUpdate: 'DEFINE_MANY', + componentWillUnmount: 'DEFINE_MANY', + UNSAFE_componentWillMount: 'DEFINE_MANY', + UNSAFE_componentWillReceiveProps: 'DEFINE_MANY', + UNSAFE_componentWillUpdate: 'DEFINE_MANY', + updateComponent: 'OVERRIDE_BASE' + }; + var ReactClassStaticInterface = { + getDerivedStateFromProps: 'DEFINE_MANY_MERGED' + }; + var RESERVED_SPEC_KEYS = { + displayName: function displayName(Constructor, _displayName) { + Constructor.displayName = _displayName; + }, + mixins: function mixins(Constructor, _mixins) { + if (_mixins) { + for (var i = 0; i < _mixins.length; i++) { + mixSpecIntoComponent(Constructor, _mixins[i]); + } + } + }, + childContextTypes: function childContextTypes(Constructor, _childContextTypes) { + if (process.env.NODE_ENV !== 'production') { + validateTypeDef(Constructor, _childContextTypes, 'childContext'); + } + + Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, _childContextTypes); + }, + contextTypes: function contextTypes(Constructor, _contextTypes) { + if (process.env.NODE_ENV !== 'production') { + validateTypeDef(Constructor, _contextTypes, 'context'); + } + + Constructor.contextTypes = _assign({}, Constructor.contextTypes, _contextTypes); + }, + getDefaultProps: function getDefaultProps(Constructor, _getDefaultProps) { + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, _getDefaultProps); + } else { + Constructor.getDefaultProps = _getDefaultProps; + } + }, + propTypes: function propTypes(Constructor, _propTypes) { + if (process.env.NODE_ENV !== 'production') { + validateTypeDef(Constructor, _propTypes, 'prop'); + } + + Constructor.propTypes = _assign({}, Constructor.propTypes, _propTypes); + }, + statics: function statics(Constructor, _statics) { + mixStaticSpecIntoComponent(Constructor, _statics); + }, + autobind: function autobind() {} + }; + + function validateTypeDef(Constructor, typeDef, location) { + for (var propName in typeDef) { + if (typeDef.hasOwnProperty(propName)) { + if (process.env.NODE_ENV !== 'production') { + warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName); + } + } + } + } + + function validateMethodOverride(isAlreadyDefined, name) { + var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; + + if (ReactClassMixin.hasOwnProperty(name)) { + _invariant(specPolicy === 'OVERRIDE_BASE', 'ReactClassInterface: You are attempting to override ' + '`%s` from your class specification. Ensure that your method names ' + 'do not overlap with React methods.', name); + } + + if (isAlreadyDefined) { + _invariant(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED', 'ReactClassInterface: You are attempting to define ' + '`%s` on your component more than once. This conflict may be due ' + 'to a mixin.', name); + } + } + + function mixSpecIntoComponent(Constructor, spec) { + if (!spec) { + if (process.env.NODE_ENV !== 'production') { + var typeofSpec = typeof spec; + var isMixinValid = typeofSpec === 'object' && spec !== null; + + if (process.env.NODE_ENV !== 'production') { + warning(isMixinValid, "%s: You're attempting to include a mixin that is either null " + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec); + } + } + + return; + } + + _invariant(typeof spec !== 'function', "ReactClass: You're attempting to " + 'use a component class or function as a mixin. Instead, just use a ' + 'regular object.'); + + _invariant(!isValidElement(spec), "ReactClass: You're attempting to " + 'use a component as a mixin. Instead, just use a regular object.'); + + var proto = Constructor.prototype; + var autoBindPairs = proto.__reactAutoBindPairs; + + if (spec.hasOwnProperty(MIXINS_KEY)) { + RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); + } + + for (var name in spec) { + if (!spec.hasOwnProperty(name)) { + continue; + } + + if (name === MIXINS_KEY) { + continue; + } + + var property = spec[name]; + var isAlreadyDefined = proto.hasOwnProperty(name); + validateMethodOverride(isAlreadyDefined, name); + + if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { + RESERVED_SPEC_KEYS[name](Constructor, property); + } else { + var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); + var isFunction = typeof property === 'function'; + var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; + + if (shouldAutoBind) { + autoBindPairs.push(name, property); + proto[name] = property; + } else { + if (isAlreadyDefined) { + var specPolicy = ReactClassInterface[name]; + + _invariant(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY'), 'ReactClass: Unexpected spec policy %s for key %s ' + 'when mixing in component specs.', specPolicy, name); + + if (specPolicy === 'DEFINE_MANY_MERGED') { + proto[name] = createMergedResultFunction(proto[name], property); + } else if (specPolicy === 'DEFINE_MANY') { + proto[name] = createChainedFunction(proto[name], property); + } + } else { + proto[name] = property; + + if (process.env.NODE_ENV !== 'production') { + if (typeof property === 'function' && spec.displayName) { + proto[name].displayName = spec.displayName + '_' + name; + } + } + } + } + } + } + } + + function mixStaticSpecIntoComponent(Constructor, statics) { + if (!statics) { + return; + } + + for (var name in statics) { + var property = statics[name]; + + if (!statics.hasOwnProperty(name)) { + continue; + } + + var isReserved = name in RESERVED_SPEC_KEYS; + + _invariant(!isReserved, 'ReactClass: You are attempting to define a reserved ' + 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' + 'as an instance property instead; it will still be accessible on the ' + 'constructor.', name); + + var isAlreadyDefined = name in Constructor; + + if (isAlreadyDefined) { + var specPolicy = ReactClassStaticInterface.hasOwnProperty(name) ? ReactClassStaticInterface[name] : null; + + _invariant(specPolicy === 'DEFINE_MANY_MERGED', 'ReactClass: You are attempting to define ' + '`%s` on your component more than once. This conflict may be ' + 'due to a mixin.', name); + + Constructor[name] = createMergedResultFunction(Constructor[name], property); + return; + } + + Constructor[name] = property; + } + } + + function mergeIntoWithNoDuplicateKeys(one, two) { + _invariant(one && two && typeof one === 'object' && typeof two === 'object', 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'); + + for (var key in two) { + if (two.hasOwnProperty(key)) { + _invariant(one[key] === undefined, 'mergeIntoWithNoDuplicateKeys(): ' + 'Tried to merge two objects with the same key: `%s`. This conflict ' + 'may be due to a mixin; in particular, this may be caused by two ' + 'getInitialState() or getDefaultProps() methods returning objects ' + 'with clashing keys.', key); + + one[key] = two[key]; + } + } + + return one; + } + + function createMergedResultFunction(one, two) { + return function mergedResult() { + var a = one.apply(this, arguments); + var b = two.apply(this, arguments); + + if (a == null) { + return b; + } else if (b == null) { + return a; + } + + var c = {}; + mergeIntoWithNoDuplicateKeys(c, a); + mergeIntoWithNoDuplicateKeys(c, b); + return c; + }; + } + + function createChainedFunction(one, two) { + return function chainedFunction() { + one.apply(this, arguments); + two.apply(this, arguments); + }; + } + + function bindAutoBindMethod(component, method) { + var boundMethod = method.bind(component); + + if (process.env.NODE_ENV !== 'production') { + boundMethod.__reactBoundContext = component; + boundMethod.__reactBoundMethod = method; + boundMethod.__reactBoundArguments = null; + var componentName = component.constructor.displayName; + var _bind = boundMethod.bind; + + boundMethod.bind = function (newThis) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (newThis !== component && newThis !== null) { + if (process.env.NODE_ENV !== 'production') { + warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName); + } + } else if (!args.length) { + if (process.env.NODE_ENV !== 'production') { + warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName); + } + + return boundMethod; + } + + var reboundMethod = _bind.apply(boundMethod, arguments); + + reboundMethod.__reactBoundContext = component; + reboundMethod.__reactBoundMethod = method; + reboundMethod.__reactBoundArguments = args; + return reboundMethod; + }; + } + + return boundMethod; + } + + function bindAutoBindMethods(component) { + var pairs = component.__reactAutoBindPairs; + + for (var i = 0; i < pairs.length; i += 2) { + var autoBindKey = pairs[i]; + var method = pairs[i + 1]; + component[autoBindKey] = bindAutoBindMethod(component, method); + } + } + + var IsMountedPreMixin = { + componentDidMount: function componentDidMount() { + this.__isMounted = true; + } + }; + var IsMountedPostMixin = { + componentWillUnmount: function componentWillUnmount() { + this.__isMounted = false; + } + }; + var ReactClassMixin = { + replaceState: function replaceState(newState, callback) { + this.updater.enqueueReplaceState(this, newState, callback); + }, + isMounted: function isMounted() { + if (process.env.NODE_ENV !== 'production') { + warning(this.__didWarnIsMounted, '%s: isMounted is deprecated. Instead, make sure to clean up ' + 'subscriptions and pending requests in componentWillUnmount to ' + 'prevent memory leaks.', this.constructor && this.constructor.displayName || this.name || 'Component'); + this.__didWarnIsMounted = true; + } + + return !!this.__isMounted; + } + }; + + var ReactClassComponent = function ReactClassComponent() {}; + + _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); + + function createClass(spec) { + var Constructor = identity(function (props, context, updater) { + if (process.env.NODE_ENV !== 'production') { + warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory'); + } + + if (this.__reactAutoBindPairs.length) { + bindAutoBindMethods(this); + } + + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + this.state = null; + var initialState = this.getInitialState ? this.getInitialState() : null; + + if (process.env.NODE_ENV !== 'production') { + if (initialState === undefined && this.getInitialState._isMockFunction) { + initialState = null; + } + } + + _invariant(typeof initialState === 'object' && !Array.isArray(initialState), '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent'); + + this.state = initialState; + }); + Constructor.prototype = new ReactClassComponent(); + Constructor.prototype.constructor = Constructor; + Constructor.prototype.__reactAutoBindPairs = []; + injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); + mixSpecIntoComponent(Constructor, IsMountedPreMixin); + mixSpecIntoComponent(Constructor, spec); + mixSpecIntoComponent(Constructor, IsMountedPostMixin); + + if (Constructor.getDefaultProps) { + Constructor.defaultProps = Constructor.getDefaultProps(); + } + + if (process.env.NODE_ENV !== 'production') { + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps.isReactClassApproved = {}; + } + + if (Constructor.prototype.getInitialState) { + Constructor.prototype.getInitialState.isReactClassApproved = {}; + } + } + + _invariant(Constructor.prototype.render, 'createClass(...): Class specification must implement a `render` method.'); + + if (process.env.NODE_ENV !== 'production') { + warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component'); + warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component'); + warning(!Constructor.prototype.UNSAFE_componentWillRecieveProps, '%s has a method called UNSAFE_componentWillRecieveProps(). ' + 'Did you mean UNSAFE_componentWillReceiveProps()?', spec.displayName || 'A component'); + } + + for (var methodName in ReactClassInterface) { + if (!Constructor.prototype[methodName]) { + Constructor.prototype[methodName] = null; + } + } + + return Constructor; + } + + return createClass; + } + + module.exports = factory; +},214,[14,15,18,19],"create-react-class/factory.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/ART/ReactNativeART.js"; + + var Color = require(_dependencyMap[0], 'art/core/color'); + + var Path = require(_dependencyMap[1], 'ARTSerializablePath'); + + var Transform = require(_dependencyMap[2], 'art/core/transform'); + + var React = require(_dependencyMap[3], 'React'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var ReactNativeViewAttributes = require(_dependencyMap[5], 'ReactNativeViewAttributes'); + + var createReactNativeComponentClass = require(_dependencyMap[6], 'createReactNativeComponentClass'); + + var merge = require(_dependencyMap[7], 'merge'); + + var invariant = require(_dependencyMap[8], 'fbjs/lib/invariant'); + + function arrayDiffer(a, b) { + if (a == null || b == null) { + return true; + } + + if (a.length !== b.length) { + return true; + } + + for (var i = 0; i < a.length; i++) { + if (a[i] !== b[i]) { + return true; + } + } + + return false; + } + + function fontAndLinesDiffer(a, b) { + if (a === b) { + return false; + } + + if (a.font !== b.font) { + if (a.font === null) { + return true; + } + + if (b.font === null) { + return true; + } + + if (a.font.fontFamily !== b.font.fontFamily || a.font.fontSize !== b.font.fontSize || a.font.fontWeight !== b.font.fontWeight || a.font.fontStyle !== b.font.fontStyle) { + return true; + } + } + + return arrayDiffer(a.lines, b.lines); + } + + var SurfaceViewAttributes = merge(ReactNativeViewAttributes.UIView, {}); + var NodeAttributes = { + transform: { + diff: arrayDiffer + }, + opacity: true + }; + var GroupAttributes = merge(NodeAttributes, { + clipping: { + diff: arrayDiffer + } + }); + var RenderableAttributes = merge(NodeAttributes, { + fill: { + diff: arrayDiffer + }, + stroke: { + diff: arrayDiffer + }, + strokeWidth: true, + strokeCap: true, + strokeJoin: true, + strokeDash: { + diff: arrayDiffer + } + }); + var ShapeAttributes = merge(RenderableAttributes, { + d: { + diff: arrayDiffer + } + }); + var TextAttributes = merge(RenderableAttributes, { + alignment: true, + frame: { + diff: fontAndLinesDiffer + }, + path: { + diff: arrayDiffer + } + }); + var NativeSurfaceView = createReactNativeComponentClass('ARTSurfaceView', function () { + return { + validAttributes: SurfaceViewAttributes, + uiViewClassName: 'ARTSurfaceView' + }; + }); + var NativeGroup = createReactNativeComponentClass('ARTGroup', function () { + return { + validAttributes: GroupAttributes, + uiViewClassName: 'ARTGroup' + }; + }); + var NativeShape = createReactNativeComponentClass('ARTShape', function () { + return { + validAttributes: ShapeAttributes, + uiViewClassName: 'ARTShape' + }; + }); + var NativeText = createReactNativeComponentClass('ARTText', function () { + return { + validAttributes: TextAttributes, + uiViewClassName: 'ARTText' + }; + }); + + function childrenAsString(children) { + if (!children) { + return ''; + } + + if (typeof children === 'string') { + return children; + } + + if (children.length) { + return children.join('\n'); + } + + return ''; + } + + var Surface = function (_React$Component) { + babelHelpers.inherits(Surface, _React$Component); + + function Surface() { + babelHelpers.classCallCheck(this, Surface); + return babelHelpers.possibleConstructorReturn(this, (Surface.__proto__ || Object.getPrototypeOf(Surface)).apply(this, arguments)); + } + + babelHelpers.createClass(Surface, [{ + key: "getChildContext", + value: function getChildContext() { + return { + isInSurface: true + }; + } + }, { + key: "render", + value: function render() { + var props = this.props; + var w = extractNumber(props.width, 0); + var h = extractNumber(props.height, 0); + return React.createElement( + NativeSurfaceView, + { + style: [props.style, { + width: w, + height: h + }], + __source: { + fileName: _jsxFileName, + lineNumber: 159 + } + }, + this.props.children + ); + } + }]); + return Surface; + }(React.Component); + + Surface.childContextTypes = { + isInSurface: PropTypes.bool + }; + + function extractNumber(value, defaultValue) { + if (value == null) { + return defaultValue; + } + + return +value; + } + + var pooledTransform = new Transform(); + + function extractTransform(props) { + var scaleX = props.scaleX != null ? props.scaleX : props.scale != null ? props.scale : 1; + var scaleY = props.scaleY != null ? props.scaleY : props.scale != null ? props.scale : 1; + pooledTransform.transformTo(1, 0, 0, 1, 0, 0).move(props.x || 0, props.y || 0).rotate(props.rotation || 0, props.originX, props.originY).scale(scaleX, scaleY, props.originX, props.originY); + + if (props.transform != null) { + pooledTransform.transform(props.transform); + } + + return [pooledTransform.xx, pooledTransform.yx, pooledTransform.xy, pooledTransform.yy, pooledTransform.x, pooledTransform.y]; + } + + function extractOpacity(props) { + if (props.visible === false) { + return 0; + } + + if (props.opacity == null) { + return 1; + } + + return +props.opacity; + } + + var Group = function (_React$Component2) { + babelHelpers.inherits(Group, _React$Component2); + + function Group() { + babelHelpers.classCallCheck(this, Group); + return babelHelpers.possibleConstructorReturn(this, (Group.__proto__ || Object.getPrototypeOf(Group)).apply(this, arguments)); + } + + babelHelpers.createClass(Group, [{ + key: "render", + value: function render() { + var props = this.props; + invariant(this.context.isInSurface, 'ART: must be a child of a '); + return React.createElement( + NativeGroup, + { + opacity: extractOpacity(props), + transform: extractTransform(props), + __source: { + fileName: _jsxFileName, + lineNumber: 231 + } + }, + this.props.children + ); + } + }]); + return Group; + }(React.Component); + + Group.contextTypes = { + isInSurface: PropTypes.bool.isRequired + }; + + var ClippingRectangle = function (_React$Component3) { + babelHelpers.inherits(ClippingRectangle, _React$Component3); + + function ClippingRectangle() { + babelHelpers.classCallCheck(this, ClippingRectangle); + return babelHelpers.possibleConstructorReturn(this, (ClippingRectangle.__proto__ || Object.getPrototypeOf(ClippingRectangle)).apply(this, arguments)); + } + + babelHelpers.createClass(ClippingRectangle, [{ + key: "render", + value: function render() { + var props = this.props; + var x = extractNumber(props.x, 0); + var y = extractNumber(props.y, 0); + var w = extractNumber(props.width, 0); + var h = extractNumber(props.height, 0); + var clipping = [x, y, w, h]; + var propsExcludingXAndY = merge(props); + delete propsExcludingXAndY.x; + delete propsExcludingXAndY.y; + return React.createElement( + NativeGroup, + { + clipping: clipping, + opacity: extractOpacity(props), + transform: extractTransform(propsExcludingXAndY), + __source: { + fileName: _jsxFileName, + lineNumber: 253 + } + }, + this.props.children + ); + } + }]); + return ClippingRectangle; + }(React.Component); + + var SOLID_COLOR = 0; + var LINEAR_GRADIENT = 1; + var RADIAL_GRADIENT = 2; + var PATTERN = 3; + + function insertColorIntoArray(color, targetArray, atIndex) { + var c = new Color(color); + targetArray[atIndex + 0] = c.red / 255; + targetArray[atIndex + 1] = c.green / 255; + targetArray[atIndex + 2] = c.blue / 255; + targetArray[atIndex + 3] = c.alpha; + } + + function insertColorsIntoArray(stops, targetArray, atIndex) { + var i = 0; + + if ('length' in stops) { + while (i < stops.length) { + insertColorIntoArray(stops[i], targetArray, atIndex + i * 4); + i++; + } + } else { + for (var offset in stops) { + insertColorIntoArray(stops[offset], targetArray, atIndex + i * 4); + i++; + } + } + + return atIndex + i * 4; + } + + function insertOffsetsIntoArray(stops, targetArray, atIndex, multi, reverse) { + var offsetNumber; + var i = 0; + + if ('length' in stops) { + while (i < stops.length) { + offsetNumber = i / (stops.length - 1) * multi; + targetArray[atIndex + i] = reverse ? 1 - offsetNumber : offsetNumber; + i++; + } + } else { + for (var offsetString in stops) { + offsetNumber = +offsetString * multi; + targetArray[atIndex + i] = reverse ? 1 - offsetNumber : offsetNumber; + i++; + } + } + + return atIndex + i; + } + + function insertColorStopsIntoArray(stops, targetArray, atIndex) { + var lastIndex = insertColorsIntoArray(stops, targetArray, atIndex); + insertOffsetsIntoArray(stops, targetArray, lastIndex, 1, false); + } + + function insertDoubleColorStopsIntoArray(stops, targetArray, atIndex) { + var lastIndex = insertColorsIntoArray(stops, targetArray, atIndex); + lastIndex = insertColorsIntoArray(stops, targetArray, lastIndex); + lastIndex = insertOffsetsIntoArray(stops, targetArray, lastIndex, 0.5, false); + insertOffsetsIntoArray(stops, targetArray, lastIndex, 0.5, true); + } + + function applyBoundingBoxToBrushData(brushData, props) { + var type = brushData[0]; + var width = +props.width; + var height = +props.height; + + if (type === LINEAR_GRADIENT) { + brushData[1] *= width; + brushData[2] *= height; + brushData[3] *= width; + brushData[4] *= height; + } else if (type === RADIAL_GRADIENT) { + brushData[1] *= width; + brushData[2] *= height; + brushData[3] *= width; + brushData[4] *= height; + brushData[5] *= width; + brushData[6] *= height; + } else if (type === PATTERN) {} + } + + function extractBrush(colorOrBrush, props) { + if (colorOrBrush == null) { + return null; + } + + if (colorOrBrush._brush) { + if (colorOrBrush._bb) { + applyBoundingBoxToBrushData(colorOrBrush._brush, props); + colorOrBrush._bb = false; + } + + return colorOrBrush._brush; + } + + var c = new Color(colorOrBrush); + return [SOLID_COLOR, c.red / 255, c.green / 255, c.blue / 255, c.alpha]; + } + + function extractColor(color) { + if (color == null) { + return null; + } + + var c = new Color(color); + return [c.red / 255, c.green / 255, c.blue / 255, c.alpha]; + } + + function extractStrokeCap(strokeCap) { + switch (strokeCap) { + case 'butt': + return 0; + + case 'square': + return 2; + + default: + return 1; + } + } + + function extractStrokeJoin(strokeJoin) { + switch (strokeJoin) { + case 'miter': + return 0; + + case 'bevel': + return 2; + + default: + return 1; + } + } + + var Shape = function (_React$Component4) { + babelHelpers.inherits(Shape, _React$Component4); + + function Shape() { + babelHelpers.classCallCheck(this, Shape); + return babelHelpers.possibleConstructorReturn(this, (Shape.__proto__ || Object.getPrototypeOf(Shape)).apply(this, arguments)); + } + + babelHelpers.createClass(Shape, [{ + key: "render", + value: function render() { + var props = this.props; + var path = props.d || childrenAsString(props.children); + var d = (path instanceof Path ? path : new Path(path)).toJSON(); + return React.createElement(NativeShape, { + fill: extractBrush(props.fill, props), + opacity: extractOpacity(props), + stroke: extractColor(props.stroke), + strokeCap: extractStrokeCap(props.strokeCap), + strokeDash: props.strokeDash || null, + strokeJoin: extractStrokeJoin(props.strokeJoin), + strokeWidth: extractNumber(props.strokeWidth, 1), + transform: extractTransform(props), + d: d, + __source: { + fileName: _jsxFileName, + lineNumber: 401 + } + }); + } + }]); + return Shape; + }(React.Component); + + var cachedFontObjectsFromString = {}; + var fontFamilyPrefix = /^[\s"']*/; + var fontFamilySuffix = /[\s"']*$/; + + function extractSingleFontFamily(fontFamilyString) { + return fontFamilyString.split(',')[0].replace(fontFamilyPrefix, '').replace(fontFamilySuffix, ''); + } + + function parseFontString(font) { + if (cachedFontObjectsFromString.hasOwnProperty(font)) { + return cachedFontObjectsFromString[font]; + } + + var regexp = /^\s*((?:(?:normal|bold|italic)\s+)*)(?:(\d+(?:\.\d+)?)[ptexm\%]*(?:\s*\/.*?)?\s+)?\s*\"?([^\"]*)/i; + var match = regexp.exec(font); + + if (!match) { + return null; + } + + var fontFamily = extractSingleFontFamily(match[3]); + var fontSize = +match[2] || 12; + var isBold = /bold/.exec(match[1]); + var isItalic = /italic/.exec(match[1]); + cachedFontObjectsFromString[font] = { + fontFamily: fontFamily, + fontSize: fontSize, + fontWeight: isBold ? 'bold' : 'normal', + fontStyle: isItalic ? 'italic' : 'normal' + }; + return cachedFontObjectsFromString[font]; + } + + function extractFont(font) { + if (font == null) { + return null; + } + + if (typeof font === 'string') { + return parseFontString(font); + } + + var fontFamily = extractSingleFontFamily(font.fontFamily); + var fontSize = +font.fontSize || 12; + var fontWeight = font.fontWeight != null ? font.fontWeight.toString() : '400'; + return { + fontFamily: fontFamily, + fontSize: fontSize, + fontWeight: fontWeight, + fontStyle: font.fontStyle + }; + } + + var newLine = /\n/g; + + function extractFontAndLines(font, text) { + return { + font: extractFont(font), + lines: text.split(newLine) + }; + } + + function extractAlignment(alignment) { + switch (alignment) { + case 'right': + return 1; + + case 'center': + return 2; + + default: + return 0; + } + } + + var Text = function (_React$Component5) { + babelHelpers.inherits(Text, _React$Component5); + + function Text() { + babelHelpers.classCallCheck(this, Text); + return babelHelpers.possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).apply(this, arguments)); + } + + babelHelpers.createClass(Text, [{ + key: "render", + value: function render() { + var props = this.props; + var path = props.path; + var textPath = path ? (path instanceof Path ? path : new Path(path)).toJSON() : null; + var textFrame = extractFontAndLines(props.font, childrenAsString(props.children)); + return React.createElement(NativeText, { + fill: extractBrush(props.fill, props), + opacity: extractOpacity(props), + stroke: extractColor(props.stroke), + strokeCap: extractStrokeCap(props.strokeCap), + strokeDash: props.strokeDash || null, + strokeJoin: extractStrokeJoin(props.strokeJoin), + strokeWidth: extractNumber(props.strokeWidth, 1), + transform: extractTransform(props), + alignment: extractAlignment(props.alignment), + frame: textFrame, + path: textPath, + __source: { + fileName: _jsxFileName, + lineNumber: 500 + } + }); + } + }]); + return Text; + }(React.Component); + + function LinearGradient(stops, x1, y1, x2, y2) { + var type = LINEAR_GRADIENT; + + if (arguments.length < 5) { + var angle = (x1 == null ? 270 : x1) * Math.PI / 180; + var x = Math.cos(angle); + var y = -Math.sin(angle); + var l = (Math.abs(x) + Math.abs(y)) / 2; + x *= l; + y *= l; + x1 = 0.5 - x; + x2 = 0.5 + x; + y1 = 0.5 - y; + y2 = 0.5 + y; + this._bb = true; + } else { + this._bb = false; + } + + var brushData = [type, +x1, +y1, +x2, +y2]; + insertColorStopsIntoArray(stops, brushData, 5); + this._brush = brushData; + } + + function RadialGradient(stops, fx, fy, rx, ry, cx, cy) { + if (ry == null) { + ry = rx; + } + + if (cx == null) { + cx = fx; + } + + if (cy == null) { + cy = fy; + } + + if (fx == null) { + fx = fy = rx = ry = cx = cy = 0.5; + this._bb = true; + } else { + this._bb = false; + } + + var brushData = [RADIAL_GRADIENT, +fx, +fy, +rx * 2, +ry * 2, +cx, +cy]; + insertDoubleColorStopsIntoArray(stops, brushData, 7); + this._brush = brushData; + } + + function Pattern(url, width, height, left, top) { + this._brush = [PATTERN, url, +left || 0, +top || 0, +width, +height]; + } + + var ReactART = { + LinearGradient: LinearGradient, + RadialGradient: RadialGradient, + Pattern: Pattern, + Transform: Transform, + Path: Path, + Surface: Surface, + Group: Group, + ClippingRectangle: ClippingRectangle, + Shape: Shape, + Text: Text + }; + module.exports = ReactART; +},215,[216,217,220,171,24,212,197,175,18],"ReactNativeART"); +__d(function (global, require, module, exports, _dependencyMap) { + var colors = { + maroon: '#800000', + red: '#ff0000', + orange: '#ffA500', + yellow: '#ffff00', + olive: '#808000', + purple: '#800080', + fuchsia: "#ff00ff", + white: '#ffffff', + lime: '#00ff00', + green: '#008000', + navy: '#000080', + blue: '#0000ff', + aqua: '#00ffff', + teal: '#008080', + black: '#000000', + silver: '#c0c0c0', + gray: '#808080' + }; + + var map = function map(array, fn) { + var results = []; + + for (var i = 0, l = array.length; i < l; i++) { + results[i] = fn(array[i], i); + } + + return results; + }; + + var Color = function Color(color, type) { + if (color.isColor) { + this.red = color.red; + this.green = color.green; + this.blue = color.blue; + this.alpha = color.alpha; + } else { + var namedColor = colors[color]; + + if (namedColor) { + color = namedColor; + type = 'hex'; + } + + switch (typeof color) { + case 'string': + if (!type) type = (type = color.match(/^rgb|^hsb|^hsl/)) ? type[0] : 'hex'; + break; + + case 'object': + type = type || 'rgb'; + color = color.toString(); + break; + + case 'number': + type = 'hex'; + color = color.toString(16); + break; + } + + color = Color['parse' + type.toUpperCase()](color); + this.red = color[0]; + this.green = color[1]; + this.blue = color[2]; + this.alpha = color[3]; + } + + this.isColor = true; + }; + + var limit = function limit(number, min, max) { + return Math.min(max, Math.max(min, number)); + }; + + var listMatch = /([-.\d]+\%?)\s*,\s*([-.\d]+\%?)\s*,\s*([-.\d]+\%?)\s*,?\s*([-.\d]*\%?)/; + var hexMatch = /^#?([a-f0-9]{1,2})([a-f0-9]{1,2})([a-f0-9]{1,2})([a-f0-9]{0,2})$/i; + + Color.parseRGB = function (color) { + return map(color.match(listMatch).slice(1), function (bit, i) { + if (bit) bit = parseFloat(bit) * (bit[bit.length - 1] == '%' ? 2.55 : 1); + return i < 3 ? Math.round((bit %= 256) < 0 ? bit + 256 : bit) : limit(bit === '' ? 1 : Number(bit), 0, 1); + }); + }; + + Color.parseHEX = function (color) { + if (color.length == 1) color = color + color + color; + return map(color.match(hexMatch).slice(1), function (bit, i) { + if (i == 3) return bit ? parseInt(bit, 16) / 255 : 1; + return parseInt(bit.length == 1 ? bit + bit : bit, 16); + }); + }; + + Color.parseHSB = function (color) { + var hsb = map(color.match(listMatch).slice(1), function (bit, i) { + if (bit) bit = parseFloat(bit); + if (i === 0) return Math.round((bit %= 360) < 0 ? bit + 360 : bit);else if (i < 3) return limit(Math.round(bit), 0, 100);else return limit(bit === '' ? 1 : Number(bit), 0, 1); + }); + var a = hsb[3]; + var br = Math.round(hsb[2] / 100 * 255); + if (hsb[1] == 0) return [br, br, br, a]; + var hue = hsb[0]; + var f = hue % 60; + var p = Math.round(hsb[2] * (100 - hsb[1]) / 10000 * 255); + var q = Math.round(hsb[2] * (6000 - hsb[1] * f) / 600000 * 255); + var t = Math.round(hsb[2] * (6000 - hsb[1] * (60 - f)) / 600000 * 255); + + switch (Math.floor(hue / 60)) { + case 0: + return [br, t, p, a]; + + case 1: + return [q, br, p, a]; + + case 2: + return [p, br, t, a]; + + case 3: + return [p, q, br, a]; + + case 4: + return [t, p, br, a]; + + default: + return [br, p, q, a]; + } + }; + + Color.parseHSL = function (color) { + var hsb = map(color.match(listMatch).slice(1), function (bit, i) { + if (bit) bit = parseFloat(bit); + if (i === 0) return Math.round((bit %= 360) < 0 ? bit + 360 : bit);else if (i < 3) return limit(Math.round(bit), 0, 100);else return limit(bit === '' ? 1 : Number(bit), 0, 1); + }); + var h = hsb[0] / 60; + var s = hsb[1] / 100; + var l = hsb[2] / 100; + var a = hsb[3]; + var c = (1 - Math.abs(2 * l - 1)) * s; + var x = c * (1 - Math.abs(h % 2 - 1)); + var m = l - c / 2; + var p = Math.round((c + m) * 255); + var q = Math.round((x + m) * 255); + var t = Math.round(m * 255); + + switch (Math.floor(h)) { + case 0: + return [p, q, t, a]; + + case 1: + return [q, p, t, a]; + + case 2: + return [t, p, q, a]; + + case 3: + return [t, q, p, a]; + + case 4: + return [q, t, p, a]; + + default: + return [p, t, q, a]; + } + }; + + var toString = function toString(type, array) { + if (array[3] != 1) type += 'a';else array.pop(); + return type + '(' + array.join(', ') + ')'; + }; + + Color.prototype = { + toHSB: function toHSB(array) { + var red = this.red, + green = this.green, + blue = this.blue, + alpha = this.alpha; + var max = Math.max(red, green, blue), + min = Math.min(red, green, blue), + delta = max - min; + var hue = 0, + saturation = delta != 0 ? delta / max : 0, + brightness = max / 255; + + if (saturation) { + var rr = (max - red) / delta, + gr = (max - green) / delta, + br = (max - blue) / delta; + hue = red == max ? br - gr : green == max ? 2 + rr - br : 4 + gr - rr; + if ((hue /= 6) < 0) hue++; + } + + var hsb = [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100), alpha]; + return array ? hsb : toString('hsb', hsb); + }, + toHSL: function toHSL(array) { + var red = this.red, + green = this.green, + blue = this.blue, + alpha = this.alpha; + var max = Math.max(red, green, blue), + min = Math.min(red, green, blue), + delta = max - min; + var hue = 0, + saturation = delta != 0 ? delta / (255 - Math.abs(max + min - 255)) : 0, + lightness = (max + min) / 512; + + if (saturation) { + var rr = (max - red) / delta, + gr = (max - green) / delta, + br = (max - blue) / delta; + hue = red == max ? br - gr : green == max ? 2 + rr - br : 4 + gr - rr; + if ((hue /= 6) < 0) hue++; + } + + var hsl = [Math.round(hue * 360), Math.round(saturation * 100), Math.round(lightness * 100), alpha]; + return array ? hsl : toString('hsl', hsl); + }, + toHEX: function toHEX(array) { + var a = this.alpha; + var alpha = (a = Math.round(a * 255).toString(16)).length == 1 ? a + a : a; + var hex = map([this.red, this.green, this.blue], function (bit) { + bit = bit.toString(16); + return bit.length == 1 ? '0' + bit : bit; + }); + return array ? hex.concat(alpha) : '#' + hex.join('') + (alpha == 'ff' ? '' : alpha); + }, + toRGB: function toRGB(array) { + var rgb = [this.red, this.green, this.blue, this.alpha]; + return array ? rgb : toString('rgb', rgb); + } + }; + Color.prototype.toString = Color.prototype.toRGB; + + Color.hex = function (hex) { + return new Color(hex, 'hex'); + }; + + if (this.hex == null) this.hex = Color.hex; + + Color.hsb = function (h, s, b, a) { + return new Color([h || 0, s || 0, b || 0, a == null ? 1 : a], 'hsb'); + }; + + if (this.hsb == null) this.hsb = Color.hsb; + + Color.hsl = function (h, s, l, a) { + return new Color([h || 0, s || 0, l || 0, a == null ? 1 : a], 'hsl'); + }; + + if (this.hsl == null) this.hsl = Color.hsl; + + Color.rgb = function (r, g, b, a) { + return new Color([r || 0, g || 0, b || 0, a == null ? 1 : a], 'rgb'); + }; + + if (this.rgb == null) this.rgb = Color.rgb; + + Color.detach = function (color) { + color = new Color(color); + return [Color.rgb(color.red, color.green, color.blue).toString(), color.alpha]; + }; + + module.exports = Color; +},216,[],"art/core/color.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Class = require(_dependencyMap[0], 'art/core/class.js'); + + var Path = require(_dependencyMap[1], 'art/core/path.js'); + + var MOVE_TO = 0; + var CLOSE = 1; + var LINE_TO = 2; + var CURVE_TO = 3; + var ARC = 4; + var SerializablePath = Class(Path, { + initialize: function initialize(path) { + this.reset(); + + if (path instanceof SerializablePath) { + this.path = path.path.slice(0); + } else if (path) { + if (path.applyToPath) { + path.applyToPath(this); + } else { + this.push(path); + } + } + }, + onReset: function onReset() { + this.path = []; + }, + onMove: function onMove(sx, sy, x, y) { + this.path.push(MOVE_TO, x, y); + }, + onLine: function onLine(sx, sy, x, y) { + this.path.push(LINE_TO, x, y); + }, + onBezierCurve: function onBezierCurve(sx, sy, p1x, p1y, p2x, p2y, x, y) { + this.path.push(CURVE_TO, p1x, p1y, p2x, p2y, x, y); + }, + _arcToBezier: Path.prototype.onArc, + onArc: function onArc(sx, sy, ex, ey, cx, cy, rx, ry, sa, ea, ccw, rotation) { + if (rx !== ry || rotation) { + return this._arcToBezier(sx, sy, ex, ey, cx, cy, rx, ry, sa, ea, ccw, rotation); + } + + this.path.push(ARC, cx, cy, rx, sa, ea, ccw ? 0 : 1); + }, + onClose: function onClose() { + this.path.push(CLOSE); + }, + toJSON: function toJSON() { + return this.path; + } + }); + module.exports = SerializablePath; +},217,[218,219],"ARTSerializablePath"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = function (mixins) { + var proto = {}; + + for (var i = 0, l = arguments.length; i < l; i++) { + var mixin = arguments[i]; + if (typeof mixin == 'function') mixin = mixin.prototype; + + for (var key in mixin) { + proto[key] = mixin[key]; + } + } + + if (!proto.initialize) proto.initialize = function () {}; + + proto.constructor = function (a, b, c, d, e, f, g, h) { + return new proto.initialize(a, b, c, d, e, f, g, h); + }; + + proto.constructor.prototype = proto.initialize.prototype = proto; + return proto.constructor; + }; +},218,[],"art/core/class.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Class = require(_dependencyMap[0], './class'); + + module.exports = Class({ + initialize: function initialize(path) { + this.reset().push(path); + }, + push: function push() { + var p = Array.prototype.join.call(arguments, ' ').match(/[a-df-z]|[\-+]?(?:[\d\.]e[\-+]?|[^\s\-+,a-z])+/ig); + if (!p) return this; + var last, + cmd = p[0], + i = 1; + + while (cmd) { + switch (cmd) { + case 'm': + this.move(p[i++], p[i++]); + break; + + case 'l': + this.line(p[i++], p[i++]); + break; + + case 'c': + this.curve(p[i++], p[i++], p[i++], p[i++], p[i++], p[i++]); + break; + + case 's': + this.curve(p[i++], p[i++], null, null, p[i++], p[i++]); + break; + + case 'q': + this.curve(p[i++], p[i++], p[i++], p[i++]); + break; + + case 't': + this.curve(p[i++], p[i++]); + break; + + case 'a': + this.arc(p[i + 5], p[i + 6], p[i], p[i + 1], p[i + 3], !+p[i + 4], p[i + 2]); + i += 7; + break; + + case 'h': + this.line(p[i++], 0); + break; + + case 'v': + this.line(0, p[i++]); + break; + + case 'M': + this.moveTo(p[i++], p[i++]); + break; + + case 'L': + this.lineTo(p[i++], p[i++]); + break; + + case 'C': + this.curveTo(p[i++], p[i++], p[i++], p[i++], p[i++], p[i++]); + break; + + case 'S': + this.curveTo(p[i++], p[i++], null, null, p[i++], p[i++]); + break; + + case 'Q': + this.curveTo(p[i++], p[i++], p[i++], p[i++]); + break; + + case 'T': + this.curveTo(p[i++], p[i++]); + break; + + case 'A': + this.arcTo(p[i + 5], p[i + 6], p[i], p[i + 1], p[i + 3], !+p[i + 4], p[i + 2]); + i += 7; + break; + + case 'H': + this.lineTo(p[i++], this.penY); + break; + + case 'V': + this.lineTo(this.penX, p[i++]); + break; + + case 'Z': + case 'z': + this.close(); + break; + + default: + cmd = last; + i--; + continue; + } + + last = cmd; + if (last == 'm') last = 'l';else if (last == 'M') last = 'L'; + cmd = p[i++]; + } + + return this; + }, + reset: function reset() { + this.penX = this.penY = 0; + this.penDownX = this.penDownY = null; + this._pivotX = this._pivotY = 0; + this.onReset(); + return this; + }, + move: function move(x, y) { + this.onMove(this.penX, this.penY, this._pivotX = this.penX += +x, this._pivotY = this.penY += +y); + return this; + }, + moveTo: function moveTo(x, y) { + this.onMove(this.penX, this.penY, this._pivotX = this.penX = +x, this._pivotY = this.penY = +y); + return this; + }, + line: function line(x, y) { + return this.lineTo(this.penX + +x, this.penY + +y); + }, + lineTo: function lineTo(x, y) { + if (this.penDownX == null) { + this.penDownX = this.penX; + this.penDownY = this.penY; + } + + this.onLine(this.penX, this.penY, this._pivotX = this.penX = +x, this._pivotY = this.penY = +y); + return this; + }, + curve: function curve(c1x, c1y, c2x, c2y, ex, ey) { + var x = this.penX, + y = this.penY; + return this.curveTo(x + +c1x, y + +c1y, c2x == null ? null : x + +c2x, c2y == null ? null : y + +c2y, ex == null ? null : x + +ex, ey == null ? null : y + +ey); + }, + curveTo: function curveTo(c1x, c1y, c2x, c2y, ex, ey) { + var x = this.penX, + y = this.penY; + + if (c2x == null) { + c2x = +c1x; + c2y = +c1y; + c1x = x * 2 - (this._pivotX || 0); + c1y = y * 2 - (this._pivotY || 0); + } + + if (ex == null) { + this._pivotX = +c1x; + this._pivotY = +c1y; + ex = +c2x; + ey = +c2y; + c2x = (ex + +c1x * 2) / 3; + c2y = (ey + +c1y * 2) / 3; + c1x = (x + +c1x * 2) / 3; + c1y = (y + +c1y * 2) / 3; + } else { + this._pivotX = +c2x; + this._pivotY = +c2y; + } + + if (this.penDownX == null) { + this.penDownX = x; + this.penDownY = y; + } + + this.onBezierCurve(x, y, +c1x, +c1y, +c2x, +c2y, this.penX = +ex, this.penY = +ey); + return this; + }, + arc: function arc(x, y, rx, ry, outer, counterClockwise, rotation) { + return this.arcTo(this.penX + +x, this.penY + +y, rx, ry, outer, counterClockwise, rotation); + }, + arcTo: function arcTo(x, y, rx, ry, outer, counterClockwise, rotation) { + ry = Math.abs(+ry || +rx || +y - this.penY); + rx = Math.abs(+rx || +x - this.penX); + if (!rx || !ry || x == this.penX && y == this.penY) return this.lineTo(x, y); + var tX = this.penX, + tY = this.penY, + clockwise = !+counterClockwise, + large = !!+outer; + var rad = rotation ? rotation * Math.PI / 180 : 0, + cos = Math.cos(rad), + sin = Math.sin(rad); + x -= tX; + y -= tY; + var cx = cos * x / 2 + sin * y / 2, + cy = -sin * x / 2 + cos * y / 2, + rxry = rx * rx * ry * ry, + rycx = ry * ry * cx * cx, + rxcy = rx * rx * cy * cy, + a = rxry - rxcy - rycx; + + if (a < 0) { + a = Math.sqrt(1 - a / rxry); + rx *= a; + ry *= a; + cx = x / 2; + cy = y / 2; + } else { + a = Math.sqrt(a / (rxcy + rycx)); + if (large == clockwise) a = -a; + var cxd = -a * cy * rx / ry, + cyd = a * cx * ry / rx; + cx = cos * cxd - sin * cyd + x / 2; + cy = sin * cxd + cos * cyd + y / 2; + } + + var xx = cos / rx, + yx = sin / rx, + xy = -sin / ry, + yy = cos / ry; + var sa = Math.atan2(xy * -cx + yy * -cy, xx * -cx + yx * -cy), + ea = Math.atan2(xy * (x - cx) + yy * (y - cy), xx * (x - cx) + yx * (y - cy)); + cx += tX; + cy += tY; + x += tX; + y += tY; + + if (this.penDownX == null) { + this.penDownX = this.penX; + this.penDownY = this.penY; + } + + this.onArc(tX, tY, this._pivotX = this.penX = x, this._pivotY = this.penY = y, cx, cy, rx, ry, sa, ea, !clockwise, rotation); + return this; + }, + counterArc: function counterArc(x, y, rx, ry, outer) { + return this.arc(x, y, rx, ry, outer, true); + }, + counterArcTo: function counterArcTo(x, y, rx, ry, outer) { + return this.arcTo(x, y, rx, ry, outer, true); + }, + close: function close() { + if (this.penDownX != null) { + this.onClose(this.penX, this.penY, this.penX = this.penDownX, this.penY = this.penDownY); + this.penDownX = null; + } + + return this; + }, + onReset: function onReset() {}, + onMove: function onMove(sx, sy, ex, ey) {}, + onLine: function onLine(sx, sy, ex, ey) { + this.onBezierCurve(sx, sy, sx, sy, ex, ey, ex, ey); + }, + onBezierCurve: function onBezierCurve(sx, sy, c1x, c1y, c2x, c2y, ex, ey) { + var gx = ex - sx, + gy = ey - sy, + g = gx * gx + gy * gy, + v1, + v2, + cx, + cy, + u; + cx = c1x - sx; + cy = c1y - sy; + u = cx * gx + cy * gy; + + if (u > g) { + cx -= gx; + cy -= gy; + } else if (u > 0 && g != 0) { + cx -= u / g * gx; + cy -= u / g * gy; + } + + v1 = cx * cx + cy * cy; + cx = c2x - sx; + cy = c2y - sy; + u = cx * gx + cy * gy; + + if (u > g) { + cx -= gx; + cy -= gy; + } else if (u > 0 && g != 0) { + cx -= u / g * gx; + cy -= u / g * gy; + } + + v2 = cx * cx + cy * cy; + + if (v1 < 0.01 && v2 < 0.01) { + this.onLine(sx, sy, ex, ey); + return; + } + + if (isNaN(v1) || isNaN(v2)) { + throw new Error('Bad input'); + } + + var s1x = (c1x + c2x) * 0.5, + s1y = (c1y + c2y) * 0.5, + l1x = (c1x + sx) * 0.5, + l1y = (c1y + sy) * 0.5, + l2x = (l1x + s1x) * 0.5, + l2y = (l1y + s1y) * 0.5, + r2x = (ex + c2x) * 0.5, + r2y = (ey + c2y) * 0.5, + r1x = (r2x + s1x) * 0.5, + r1y = (r2y + s1y) * 0.5, + l2r1x = (l2x + r1x) * 0.5, + l2r1y = (l2y + r1y) * 0.5; + this.onBezierCurve(sx, sy, l1x, l1y, l2x, l2y, l2r1x, l2r1y); + this.onBezierCurve(l2r1x, l2r1y, r1x, r1y, r2x, r2y, ex, ey); + }, + onArc: function onArc(sx, sy, ex, ey, cx, cy, rx, ry, sa, ea, ccw, rotation) { + var rad = rotation ? rotation * Math.PI / 180 : 0, + cos = Math.cos(rad), + sin = Math.sin(rad), + xx = cos * rx, + yx = -sin * ry, + xy = sin * rx, + yy = cos * ry; + var arc = ea - sa; + if (arc < 0 && !ccw) arc += Math.PI * 2;else if (arc > 0 && ccw) arc -= Math.PI * 2; + var n = Math.ceil(Math.abs(arc / (Math.PI / 2))), + step = arc / n, + k = 4 / 3 * Math.tan(step / 4); + var x = Math.cos(sa), + y = Math.sin(sa); + + for (var i = 0; i < n; i++) { + var cp1x = x - k * y, + cp1y = y + k * x; + sa += step; + x = Math.cos(sa); + y = Math.sin(sa); + var cp2x = x + k * y, + cp2y = y - k * x; + this.onBezierCurve(sx, sy, cx + xx * cp1x + yx * cp1y, cy + xy * cp1x + yy * cp1y, cx + xx * cp2x + yx * cp2y, cy + xy * cp2x + yy * cp2y, sx = cx + xx * x + yx * y, sy = cy + xy * x + yy * y); + } + }, + onClose: function onClose(sx, sy, ex, ey) { + this.onLine(sx, sy, ex, ey); + } + }); +},219,[218],"art/core/path.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Class = require(_dependencyMap[0], './class'); + + function Transform(xx, yx, xy, yy, x, y) { + if (xx && typeof xx == 'object') { + yx = xx.yx; + yy = xx.yy; + y = xx.y; + xy = xx.xy; + x = xx.x; + xx = xx.xx; + } + + this.xx = xx == null ? 1 : xx; + this.yx = yx || 0; + this.xy = xy || 0; + this.yy = yy == null ? 1 : yy; + this.x = (x == null ? this.x : x) || 0; + this.y = (y == null ? this.y : y) || 0; + + this._transform(); + + return this; + } + + ; + module.exports = Class({ + initialize: Transform, + _transform: function _transform() {}, + xx: 1, + yx: 0, + x: 0, + xy: 0, + yy: 1, + y: 0, + transform: function transform(xx, yx, xy, yy, x, y) { + var m = this; + + if (xx && typeof xx == 'object') { + yx = xx.yx; + yy = xx.yy; + y = xx.y; + xy = xx.xy; + x = xx.x; + xx = xx.xx; + } + + if (!x) x = 0; + if (!y) y = 0; + return this.transformTo(m.xx * xx + m.xy * yx, m.yx * xx + m.yy * yx, m.xx * xy + m.xy * yy, m.yx * xy + m.yy * yy, m.xx * x + m.xy * y + m.x, m.yx * x + m.yy * y + m.y); + }, + transformTo: Transform, + translate: function translate(x, y) { + return this.transform(1, 0, 0, 1, x, y); + }, + move: function move(x, y) { + this.x += x || 0; + this.y += y || 0; + + this._transform(); + + return this; + }, + scale: function scale(x, y) { + if (y == null) y = x; + return this.transform(x, 0, 0, y, 0, 0); + }, + rotate: function rotate(deg, x, y) { + if (x == null || y == null) { + x = (this.left || 0) + (this.width || 0) / 2; + y = (this.top || 0) + (this.height || 0) / 2; + } + + var rad = deg * Math.PI / 180, + sin = Math.sin(rad), + cos = Math.cos(rad); + this.transform(1, 0, 0, 1, x, y); + var m = this; + return this.transformTo(cos * m.xx - sin * m.yx, sin * m.xx + cos * m.yx, cos * m.xy - sin * m.yy, sin * m.xy + cos * m.yy, m.x, m.y).transform(1, 0, 0, 1, -x, -y); + }, + moveTo: function moveTo(x, y) { + var m = this; + return this.transformTo(m.xx, m.yx, m.xy, m.yy, x, y); + }, + rotateTo: function rotateTo(deg, x, y) { + var m = this; + var flip = m.yx / m.xx > m.yy / m.xy ? -1 : 1; + if (m.xx < 0 ? m.xy >= 0 : m.xy < 0) flip = -flip; + return this.rotate(deg - Math.atan2(flip * m.yx, flip * m.xx) * 180 / Math.PI, x, y); + }, + scaleTo: function scaleTo(x, y) { + var m = this; + var h = Math.sqrt(m.xx * m.xx + m.yx * m.yx); + m.xx /= h; + m.yx /= h; + h = Math.sqrt(m.yy * m.yy + m.xy * m.xy); + m.yy /= h; + m.xy /= h; + return this.scale(x, y); + }, + resizeTo: function resizeTo(width, height) { + var w = this.width, + h = this.height; + if (!w || !h) return this; + return this.scaleTo(width / w, height / h); + }, + inversePoint: function inversePoint(x, y) { + var a = this.xx, + b = this.yx, + c = this.xy, + d = this.yy, + e = this.x, + f = this.y; + var det = b * c - a * d; + if (det == 0) return null; + return { + x: (d * (e - x) + c * (y - f)) / det, + y: (a * (f - y) + b * (x - e)) / det + }; + }, + point: function point(x, y) { + var m = this; + return { + x: m.xx * x + m.xy * y + m.x, + y: m.yx * x + m.yy * y + m.y + }; + } + }); +},220,[218],"art/core/transform.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Button.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var React = require(_dependencyMap[2], 'React'); + + var PropTypes = require(_dependencyMap[3], 'prop-types'); + + var StyleSheet = require(_dependencyMap[4], 'StyleSheet'); + + var Text = require(_dependencyMap[5], 'Text'); + + var TouchableNativeFeedback = require(_dependencyMap[6], 'TouchableNativeFeedback'); + + var TouchableOpacity = require(_dependencyMap[7], 'TouchableOpacity'); + + var View = require(_dependencyMap[8], 'View'); + + var invariant = require(_dependencyMap[9], 'fbjs/lib/invariant'); + + var Button = function (_React$Component) { + babelHelpers.inherits(Button, _React$Component); + + function Button() { + babelHelpers.classCallCheck(this, Button); + return babelHelpers.possibleConstructorReturn(this, (Button.__proto__ || Object.getPrototypeOf(Button)).apply(this, arguments)); + } + + babelHelpers.createClass(Button, [{ + key: "render", + value: function render() { + var _props = this.props, + accessibilityLabel = _props.accessibilityLabel, + color = _props.color, + onPress = _props.onPress, + title = _props.title, + hasTVPreferredFocus = _props.hasTVPreferredFocus, + disabled = _props.disabled, + testID = _props.testID; + var buttonStyles = [styles.button]; + var textStyles = [styles.text]; + + if (color) { + if (Platform.OS === 'ios') { + textStyles.push({ + color: color + }); + } else { + buttonStyles.push({ + backgroundColor: color + }); + } + } + + var accessibilityTraits = ['button']; + + if (disabled) { + buttonStyles.push(styles.buttonDisabled); + textStyles.push(styles.textDisabled); + accessibilityTraits.push('disabled'); + } + + invariant(typeof title === 'string', 'The title prop of a Button must be a string'); + var formattedTitle = Platform.OS === 'android' ? title.toUpperCase() : title; + var Touchable = Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity; + return React.createElement( + Touchable, + { + accessibilityComponentType: "button", + accessibilityLabel: accessibilityLabel, + accessibilityTraits: accessibilityTraits, + hasTVPreferredFocus: hasTVPreferredFocus, + testID: testID, + disabled: disabled, + onPress: onPress, + __source: { + fileName: _jsxFileName, + lineNumber: 128 + } + }, + React.createElement( + View, + { + style: buttonStyles, + __source: { + fileName: _jsxFileName, + lineNumber: 136 + } + }, + React.createElement( + Text, + { + style: textStyles, + disabled: disabled, + __source: { + fileName: _jsxFileName, + lineNumber: 137 + } + }, + formattedTitle + ) + ) + ); + } + }]); + return Button; + }(React.Component); + + Button.propTypes = { + title: PropTypes.string.isRequired, + accessibilityLabel: PropTypes.string, + color: ColorPropType, + disabled: PropTypes.bool, + onPress: PropTypes.func.isRequired, + testID: PropTypes.string, + hasTVPreferredFocus: PropTypes.bool + }; + var styles = StyleSheet.create({ + button: Platform.select({ + ios: {}, + android: { + elevation: 4, + backgroundColor: '#2196F3', + borderRadius: 2 + } + }), + text: Platform.select({ + ios: { + color: '#007AFF', + textAlign: 'center', + padding: 8, + fontSize: 18 + }, + android: { + color: 'white', + textAlign: 'center', + padding: 8, + fontWeight: '500' + } + }), + buttonDisabled: Platform.select({ + ios: {}, + android: { + elevation: 0, + backgroundColor: '#dfdfdf' + } + }), + textDisabled: Platform.select({ + ios: { + color: '#cdcdcd' + }, + android: { + color: '#a1a1a1' + } + }) + }); + module.exports = Button; +},221,[167,105,171,24,209,222,230,234,211,18],"Button"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Text/Text.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var EdgeInsetsPropType = require(_dependencyMap[1], 'EdgeInsetsPropType'); + + var NativeMethodsMixin = require(_dependencyMap[2], 'NativeMethodsMixin'); + + var Platform = require(_dependencyMap[3], 'Platform'); + + var React = require(_dependencyMap[4], 'React'); + + var PropTypes = require(_dependencyMap[5], 'prop-types'); + + var ReactNativeViewAttributes = require(_dependencyMap[6], 'ReactNativeViewAttributes'); + + var StyleSheetPropType = require(_dependencyMap[7], 'StyleSheetPropType'); + + var TextStylePropTypes = require(_dependencyMap[8], 'TextStylePropTypes'); + + var Touchable = require(_dependencyMap[9], 'Touchable'); + + var createReactClass = require(_dependencyMap[10], 'create-react-class'); + + var createReactNativeComponentClass = require(_dependencyMap[11], 'createReactNativeComponentClass'); + + var mergeFast = require(_dependencyMap[12], 'mergeFast'); + + var processColor = require(_dependencyMap[13], 'processColor'); + + var stylePropType = StyleSheetPropType(TextStylePropTypes); + var viewConfig = { + validAttributes: mergeFast(ReactNativeViewAttributes.UIView, { + isHighlighted: true, + numberOfLines: true, + ellipsizeMode: true, + allowFontScaling: true, + disabled: true, + selectable: true, + selectionColor: true, + adjustsFontSizeToFit: true, + minimumFontScale: true, + textBreakStrategy: true + }), + uiViewClassName: 'RCTText' + }; + var Text = createReactClass({ + displayName: 'Text', + propTypes: { + ellipsizeMode: PropTypes.oneOf(['head', 'middle', 'tail', 'clip']), + numberOfLines: PropTypes.number, + textBreakStrategy: PropTypes.oneOf(['simple', 'highQuality', 'balanced']), + onLayout: PropTypes.func, + onPress: PropTypes.func, + onLongPress: PropTypes.func, + pressRetentionOffset: EdgeInsetsPropType, + selectable: PropTypes.bool, + selectionColor: ColorPropType, + suppressHighlighting: PropTypes.bool, + style: stylePropType, + testID: PropTypes.string, + nativeID: PropTypes.string, + allowFontScaling: PropTypes.bool, + accessible: PropTypes.bool, + adjustsFontSizeToFit: PropTypes.bool, + minimumFontScale: PropTypes.number, + disabled: PropTypes.bool + }, + getDefaultProps: function getDefaultProps() { + return { + accessible: true, + allowFontScaling: true, + ellipsizeMode: 'tail' + }; + }, + getInitialState: function getInitialState() { + return mergeFast(Touchable.Mixin.touchableGetInitialState(), { + isHighlighted: false + }); + }, + mixins: [NativeMethodsMixin], + viewConfig: viewConfig, + getChildContext: function getChildContext() { + return { + isInAParentText: true + }; + }, + childContextTypes: { + isInAParentText: PropTypes.bool + }, + contextTypes: { + isInAParentText: PropTypes.bool + }, + _handlers: null, + _hasPressHandler: function _hasPressHandler() { + return !!this.props.onPress || !!this.props.onLongPress; + }, + touchableHandleActivePressIn: null, + touchableHandleActivePressOut: null, + touchableHandlePress: null, + touchableHandleLongPress: null, + touchableGetPressRectOffset: null, + render: function render() { + var _this = this; + + var newProps = this.props; + + if (this.props.onStartShouldSetResponder || this._hasPressHandler()) { + if (!this._handlers) { + this._handlers = { + onStartShouldSetResponder: function onStartShouldSetResponder() { + var shouldSetFromProps = _this.props.onStartShouldSetResponder && _this.props.onStartShouldSetResponder(); + + var setResponder = shouldSetFromProps || _this._hasPressHandler(); + + if (setResponder && !_this.touchableHandleActivePressIn) { + for (var key in Touchable.Mixin) { + if (typeof Touchable.Mixin[key] === 'function') { + _this[key] = Touchable.Mixin[key].bind(_this); + } + } + + _this.touchableHandleActivePressIn = function () { + if (_this.props.suppressHighlighting || !_this._hasPressHandler()) { + return; + } + + _this.setState({ + isHighlighted: true + }); + }; + + _this.touchableHandleActivePressOut = function () { + if (_this.props.suppressHighlighting || !_this._hasPressHandler()) { + return; + } + + _this.setState({ + isHighlighted: false + }); + }; + + _this.touchableHandlePress = function (e) { + _this.props.onPress && _this.props.onPress(e); + }; + + _this.touchableHandleLongPress = function (e) { + _this.props.onLongPress && _this.props.onLongPress(e); + }; + + _this.touchableGetPressRectOffset = function () { + return this.props.pressRetentionOffset || PRESS_RECT_OFFSET; + }; + } + + return setResponder; + }, + onResponderGrant: function (e, dispatchID) { + this.touchableHandleResponderGrant(e, dispatchID); + this.props.onResponderGrant && this.props.onResponderGrant.apply(this, arguments); + }.bind(this), + onResponderMove: function (e) { + this.touchableHandleResponderMove(e); + this.props.onResponderMove && this.props.onResponderMove.apply(this, arguments); + }.bind(this), + onResponderRelease: function (e) { + this.touchableHandleResponderRelease(e); + this.props.onResponderRelease && this.props.onResponderRelease.apply(this, arguments); + }.bind(this), + onResponderTerminate: function (e) { + this.touchableHandleResponderTerminate(e); + this.props.onResponderTerminate && this.props.onResponderTerminate.apply(this, arguments); + }.bind(this), + onResponderTerminationRequest: function () { + var allowTermination = this.touchableHandleResponderTerminationRequest(); + + if (allowTermination && this.props.onResponderTerminationRequest) { + allowTermination = this.props.onResponderTerminationRequest.apply(this, arguments); + } + + return allowTermination; + }.bind(this) + }; + } + + newProps = babelHelpers.extends({}, this.props, this._handlers, { + isHighlighted: this.state.isHighlighted + }); + } + + if (newProps.selectionColor != null) { + newProps = babelHelpers.extends({}, newProps, { + selectionColor: processColor(newProps.selectionColor) + }); + } + + if (Touchable.TOUCH_TARGET_DEBUG && newProps.onPress) { + newProps = babelHelpers.extends({}, newProps, { + style: [this.props.style, { + color: 'magenta' + }] + }); + } + + if (this.context.isInAParentText) { + return React.createElement(RCTVirtualText, babelHelpers.extends({}, newProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 546 + } + })); + } else { + return React.createElement(RCTText, babelHelpers.extends({}, newProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 548 + } + })); + } + } + }); + var PRESS_RECT_OFFSET = { + top: 20, + left: 20, + right: 20, + bottom: 30 + }; + var RCTText = createReactNativeComponentClass(viewConfig.uiViewClassName, function () { + return viewConfig; + }); + var RCTVirtualText = RCTText; + + if (Platform.OS === 'android') { + RCTVirtualText = createReactNativeComponentClass('RCTVirtualText', function () { + return { + validAttributes: mergeFast(ReactNativeViewAttributes.UIView, { + isHighlighted: true + }), + uiViewClassName: 'RCTVirtualText' + }; + }); + } + + module.exports = Text; +},222,[167,173,169,105,171,24,212,179,192,223,213,197,229,193],"Text"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Touchable/Touchable.js"; + + var BoundingDimensions = require(_dependencyMap[0], 'BoundingDimensions'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var Position = require(_dependencyMap[2], 'Position'); + + var React = require(_dependencyMap[3], 'React'); + + var ReactNative = require(_dependencyMap[4], 'ReactNative'); + + var TVEventHandler = require(_dependencyMap[5], 'TVEventHandler'); + + var TouchEventUtils = require(_dependencyMap[6], 'fbjs/lib/TouchEventUtils'); + + var UIManager = require(_dependencyMap[7], 'UIManager'); + + var View = require(_dependencyMap[8], 'View'); + + var keyMirror = require(_dependencyMap[9], 'fbjs/lib/keyMirror'); + + var normalizeColor = require(_dependencyMap[10], 'normalizeColor'); + + var States = keyMirror({ + NOT_RESPONDER: null, + RESPONDER_INACTIVE_PRESS_IN: null, + RESPONDER_INACTIVE_PRESS_OUT: null, + RESPONDER_ACTIVE_PRESS_IN: null, + RESPONDER_ACTIVE_PRESS_OUT: null, + RESPONDER_ACTIVE_LONG_PRESS_IN: null, + RESPONDER_ACTIVE_LONG_PRESS_OUT: null, + ERROR: null + }); + var IsActive = { + RESPONDER_ACTIVE_PRESS_OUT: true, + RESPONDER_ACTIVE_PRESS_IN: true + }; + var IsPressingIn = { + RESPONDER_INACTIVE_PRESS_IN: true, + RESPONDER_ACTIVE_PRESS_IN: true, + RESPONDER_ACTIVE_LONG_PRESS_IN: true + }; + var IsLongPressingIn = { + RESPONDER_ACTIVE_LONG_PRESS_IN: true + }; + var Signals = keyMirror({ + DELAY: null, + RESPONDER_GRANT: null, + RESPONDER_RELEASE: null, + RESPONDER_TERMINATED: null, + ENTER_PRESS_RECT: null, + LEAVE_PRESS_RECT: null, + LONG_PRESS_DETECTED: null + }); + var Transitions = { + NOT_RESPONDER: { + DELAY: States.ERROR, + RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN, + RESPONDER_RELEASE: States.ERROR, + RESPONDER_TERMINATED: States.ERROR, + ENTER_PRESS_RECT: States.ERROR, + LEAVE_PRESS_RECT: States.ERROR, + LONG_PRESS_DETECTED: States.ERROR + }, + RESPONDER_INACTIVE_PRESS_IN: { + DELAY: States.RESPONDER_ACTIVE_PRESS_IN, + RESPONDER_GRANT: States.ERROR, + RESPONDER_RELEASE: States.NOT_RESPONDER, + RESPONDER_TERMINATED: States.NOT_RESPONDER, + ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN, + LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT, + LONG_PRESS_DETECTED: States.ERROR + }, + RESPONDER_INACTIVE_PRESS_OUT: { + DELAY: States.RESPONDER_ACTIVE_PRESS_OUT, + RESPONDER_GRANT: States.ERROR, + RESPONDER_RELEASE: States.NOT_RESPONDER, + RESPONDER_TERMINATED: States.NOT_RESPONDER, + ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN, + LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT, + LONG_PRESS_DETECTED: States.ERROR + }, + RESPONDER_ACTIVE_PRESS_IN: { + DELAY: States.ERROR, + RESPONDER_GRANT: States.ERROR, + RESPONDER_RELEASE: States.NOT_RESPONDER, + RESPONDER_TERMINATED: States.NOT_RESPONDER, + ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN, + LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT, + LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN + }, + RESPONDER_ACTIVE_PRESS_OUT: { + DELAY: States.ERROR, + RESPONDER_GRANT: States.ERROR, + RESPONDER_RELEASE: States.NOT_RESPONDER, + RESPONDER_TERMINATED: States.NOT_RESPONDER, + ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN, + LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT, + LONG_PRESS_DETECTED: States.ERROR + }, + RESPONDER_ACTIVE_LONG_PRESS_IN: { + DELAY: States.ERROR, + RESPONDER_GRANT: States.ERROR, + RESPONDER_RELEASE: States.NOT_RESPONDER, + RESPONDER_TERMINATED: States.NOT_RESPONDER, + ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN, + LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT, + LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN + }, + RESPONDER_ACTIVE_LONG_PRESS_OUT: { + DELAY: States.ERROR, + RESPONDER_GRANT: States.ERROR, + RESPONDER_RELEASE: States.NOT_RESPONDER, + RESPONDER_TERMINATED: States.NOT_RESPONDER, + ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN, + LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT, + LONG_PRESS_DETECTED: States.ERROR + }, + error: { + DELAY: States.NOT_RESPONDER, + RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN, + RESPONDER_RELEASE: States.NOT_RESPONDER, + RESPONDER_TERMINATED: States.NOT_RESPONDER, + ENTER_PRESS_RECT: States.NOT_RESPONDER, + LEAVE_PRESS_RECT: States.NOT_RESPONDER, + LONG_PRESS_DETECTED: States.NOT_RESPONDER + } + }; + var HIGHLIGHT_DELAY_MS = 130; + var PRESS_EXPAND_PX = 20; + var LONG_PRESS_THRESHOLD = 500; + var LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS; + var LONG_PRESS_ALLOWED_MOVEMENT = 10; + var TouchableMixin = { + componentDidMount: function componentDidMount() { + if (!Platform.isTVOS) { + return; + } + + this._tvEventHandler = new TVEventHandler(); + + this._tvEventHandler.enable(this, function (cmp, evt) { + var myTag = ReactNative.findNodeHandle(cmp); + evt.dispatchConfig = {}; + + if (myTag === evt.tag) { + if (evt.eventType === 'focus') { + cmp.touchableHandleActivePressIn && cmp.touchableHandleActivePressIn(evt); + } else if (evt.eventType === 'blur') { + cmp.touchableHandleActivePressOut && cmp.touchableHandleActivePressOut(evt); + } else if (evt.eventType === 'select') { + cmp.touchableHandlePress && cmp.touchableHandlePress(evt); + } + } + }); + }, + componentWillUnmount: function componentWillUnmount() { + if (this._tvEventHandler) { + this._tvEventHandler.disable(); + + delete this._tvEventHandler; + } + + this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout); + this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout); + this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout); + }, + touchableGetInitialState: function touchableGetInitialState() { + return { + touchable: { + touchState: undefined, + responderID: null + } + }; + }, + touchableHandleResponderTerminationRequest: function touchableHandleResponderTerminationRequest() { + return !this.props.rejectResponderTermination; + }, + touchableHandleStartShouldSetResponder: function touchableHandleStartShouldSetResponder() { + return !this.props.disabled; + }, + touchableLongPressCancelsPress: function touchableLongPressCancelsPress() { + return true; + }, + touchableHandleResponderGrant: function touchableHandleResponderGrant(e) { + var dispatchID = e.currentTarget; + e.persist(); + this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout); + this.pressOutDelayTimeout = null; + this.state.touchable.touchState = States.NOT_RESPONDER; + this.state.touchable.responderID = dispatchID; + + this._receiveSignal(Signals.RESPONDER_GRANT, e); + + var delayMS = this.touchableGetHighlightDelayMS !== undefined ? Math.max(this.touchableGetHighlightDelayMS(), 0) : HIGHLIGHT_DELAY_MS; + delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS; + + if (delayMS !== 0) { + this.touchableDelayTimeout = setTimeout(this._handleDelay.bind(this, e), delayMS); + } else { + this._handleDelay(e); + } + + var longDelayMS = this.touchableGetLongPressDelayMS !== undefined ? Math.max(this.touchableGetLongPressDelayMS(), 10) : LONG_PRESS_DELAY_MS; + longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS; + this.longPressDelayTimeout = setTimeout(this._handleLongDelay.bind(this, e), longDelayMS + delayMS); + }, + touchableHandleResponderRelease: function touchableHandleResponderRelease(e) { + this._receiveSignal(Signals.RESPONDER_RELEASE, e); + }, + touchableHandleResponderTerminate: function touchableHandleResponderTerminate(e) { + this._receiveSignal(Signals.RESPONDER_TERMINATED, e); + }, + touchableHandleResponderMove: function touchableHandleResponderMove(e) { + if (this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN) { + return; + } + + if (!this.state.touchable.positionOnActivate) { + return; + } + + var positionOnActivate = this.state.touchable.positionOnActivate; + var dimensionsOnActivate = this.state.touchable.dimensionsOnActivate; + var pressRectOffset = this.touchableGetPressRectOffset ? this.touchableGetPressRectOffset() : { + left: PRESS_EXPAND_PX, + right: PRESS_EXPAND_PX, + top: PRESS_EXPAND_PX, + bottom: PRESS_EXPAND_PX + }; + var pressExpandLeft = pressRectOffset.left; + var pressExpandTop = pressRectOffset.top; + var pressExpandRight = pressRectOffset.right; + var pressExpandBottom = pressRectOffset.bottom; + var hitSlop = this.touchableGetHitSlop ? this.touchableGetHitSlop() : null; + + if (hitSlop) { + pressExpandLeft += hitSlop.left; + pressExpandTop += hitSlop.top; + pressExpandRight += hitSlop.right; + pressExpandBottom += hitSlop.bottom; + } + + var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent); + var pageX = touch && touch.pageX; + var pageY = touch && touch.pageY; + + if (this.pressInLocation) { + var movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this.pressInLocation.pageX, this.pressInLocation.pageY); + + if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) { + this._cancelLongPressDelayTimeout(); + } + } + + var isTouchWithinActive = pageX > positionOnActivate.left - pressExpandLeft && pageY > positionOnActivate.top - pressExpandTop && pageX < positionOnActivate.left + dimensionsOnActivate.width + pressExpandRight && pageY < positionOnActivate.top + dimensionsOnActivate.height + pressExpandBottom; + + if (isTouchWithinActive) { + this._receiveSignal(Signals.ENTER_PRESS_RECT, e); + + var curState = this.state.touchable.touchState; + + if (curState === States.RESPONDER_INACTIVE_PRESS_IN) { + this._cancelLongPressDelayTimeout(); + } + } else { + this._cancelLongPressDelayTimeout(); + + this._receiveSignal(Signals.LEAVE_PRESS_RECT, e); + } + }, + _remeasureMetricsOnActivation: function _remeasureMetricsOnActivation() { + var tag = this.state.touchable.responderID; + + if (tag == null) { + return; + } + + UIManager.measure(tag, this._handleQueryLayout); + }, + _handleQueryLayout: function _handleQueryLayout(l, t, w, h, globalX, globalY) { + if (!l && !t && !w && !h && !globalX && !globalY) { + return; + } + + this.state.touchable.positionOnActivate && Position.release(this.state.touchable.positionOnActivate); + this.state.touchable.dimensionsOnActivate && BoundingDimensions.release(this.state.touchable.dimensionsOnActivate); + this.state.touchable.positionOnActivate = Position.getPooled(globalX, globalY); + this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w, h); + }, + _handleDelay: function _handleDelay(e) { + this.touchableDelayTimeout = null; + + this._receiveSignal(Signals.DELAY, e); + }, + _handleLongDelay: function _handleLongDelay(e) { + this.longPressDelayTimeout = null; + var curState = this.state.touchable.touchState; + + if (curState !== States.RESPONDER_ACTIVE_PRESS_IN && curState !== States.RESPONDER_ACTIVE_LONG_PRESS_IN) { + console.error('Attempted to transition from state `' + curState + '` to `' + States.RESPONDER_ACTIVE_LONG_PRESS_IN + '`, which is not supported. This is ' + 'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.'); + } else { + this._receiveSignal(Signals.LONG_PRESS_DETECTED, e); + } + }, + _receiveSignal: function _receiveSignal(signal, e) { + var responderID = this.state.touchable.responderID; + var curState = this.state.touchable.touchState; + var nextState = Transitions[curState] && Transitions[curState][signal]; + + if (!responderID && signal === Signals.RESPONDER_RELEASE) { + return; + } + + if (!nextState) { + throw new Error('Unrecognized signal `' + signal + '` or state `' + curState + '` for Touchable responder `' + responderID + '`'); + } + + if (nextState === States.ERROR) { + throw new Error('Touchable cannot transition from `' + curState + '` to `' + signal + '` for responder `' + responderID + '`'); + } + + if (curState !== nextState) { + this._performSideEffectsForTransition(curState, nextState, signal, e); + + this.state.touchable.touchState = nextState; + } + }, + _cancelLongPressDelayTimeout: function _cancelLongPressDelayTimeout() { + this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout); + this.longPressDelayTimeout = null; + }, + _isHighlight: function _isHighlight(state) { + return state === States.RESPONDER_ACTIVE_PRESS_IN || state === States.RESPONDER_ACTIVE_LONG_PRESS_IN; + }, + _savePressInLocation: function _savePressInLocation(e) { + var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent); + var pageX = touch && touch.pageX; + var pageY = touch && touch.pageY; + var locationX = touch && touch.locationX; + var locationY = touch && touch.locationY; + this.pressInLocation = { + pageX: pageX, + pageY: pageY, + locationX: locationX, + locationY: locationY + }; + }, + _getDistanceBetweenPoints: function _getDistanceBetweenPoints(aX, aY, bX, bY) { + var deltaX = aX - bX; + var deltaY = aY - bY; + return Math.sqrt(deltaX * deltaX + deltaY * deltaY); + }, + _performSideEffectsForTransition: function _performSideEffectsForTransition(curState, nextState, signal, e) { + var curIsHighlight = this._isHighlight(curState); + + var newIsHighlight = this._isHighlight(nextState); + + var isFinalSignal = signal === Signals.RESPONDER_TERMINATED || signal === Signals.RESPONDER_RELEASE; + + if (isFinalSignal) { + this._cancelLongPressDelayTimeout(); + } + + if (!IsActive[curState] && IsActive[nextState]) { + this._remeasureMetricsOnActivation(); + } + + if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) { + this.touchableHandleLongPress && this.touchableHandleLongPress(e); + } + + if (newIsHighlight && !curIsHighlight) { + this._startHighlight(e); + } else if (!newIsHighlight && curIsHighlight) { + this._endHighlight(e); + } + + if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) { + var hasLongPressHandler = !!this.props.onLongPress; + var pressIsLongButStillCallOnPress = IsLongPressingIn[curState] && (!hasLongPressHandler || !this.touchableLongPressCancelsPress()); + var shouldInvokePress = !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress; + + if (shouldInvokePress && this.touchableHandlePress) { + if (!newIsHighlight && !curIsHighlight) { + this._startHighlight(e); + + this._endHighlight(e); + } + + this.touchableHandlePress(e); + } + } + + this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout); + this.touchableDelayTimeout = null; + }, + _startHighlight: function _startHighlight(e) { + this._savePressInLocation(e); + + this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e); + }, + _endHighlight: function _endHighlight(e) { + var _this = this; + + if (this.touchableHandleActivePressOut) { + if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) { + this.pressOutDelayTimeout = setTimeout(function () { + _this.touchableHandleActivePressOut(e); + }, this.touchableGetPressOutDelayMS()); + } else { + this.touchableHandleActivePressOut(e); + } + } + } + }; + var Touchable = { + Mixin: TouchableMixin, + TOUCH_TARGET_DEBUG: false, + renderDebugView: function renderDebugView(_ref) { + var color = _ref.color, + hitSlop = _ref.hitSlop; + + if (!Touchable.TOUCH_TARGET_DEBUG) { + return null; + } + + if (!__DEV__) { + throw Error('Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!'); + } + + var debugHitSlopStyle = {}; + hitSlop = hitSlop || { + top: 0, + bottom: 0, + left: 0, + right: 0 + }; + + for (var key in hitSlop) { + debugHitSlopStyle[key] = -hitSlop[key]; + } + + var hexColor = '#' + ('00000000' + normalizeColor(color).toString(16)).substr(-8); + return React.createElement(View, { + pointerEvents: "none", + style: babelHelpers.extends({ + position: 'absolute', + borderColor: hexColor.slice(0, -2) + '55', + borderWidth: 1, + borderStyle: 'dashed', + backgroundColor: hexColor.slice(0, -2) + '0F' + }, debugHitSlopStyle), + __source: { + fileName: _jsxFileName, + lineNumber: 793 + } + }); + } + }; + module.exports = Touchable; +},223,[224,105,226,171,74,227,228,158,211,191,168],"Touchable"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PooledClass = require(_dependencyMap[0], 'PooledClass'); + + var twoArgumentPooler = PooledClass.twoArgumentPooler; + + function BoundingDimensions(width, height) { + this.width = width; + this.height = height; + } + + BoundingDimensions.prototype.destructor = function () { + this.width = null; + this.height = null; + }; + + BoundingDimensions.getPooledFromElement = function (element) { + return BoundingDimensions.getPooled(element.offsetWidth, element.offsetHeight); + }; + + PooledClass.addPoolingTo(BoundingDimensions, twoArgumentPooler); + module.exports = BoundingDimensions; +},224,[225],"BoundingDimensions"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var oneArgumentPooler = function oneArgumentPooler(copyFieldsFrom) { + var Klass = this; + + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, copyFieldsFrom); + return instance; + } else { + return new Klass(copyFieldsFrom); + } + }; + + var twoArgumentPooler = function twoArgumentPooler(a1, a2) { + var Klass = this; + + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2); + return instance; + } else { + return new Klass(a1, a2); + } + }; + + var threeArgumentPooler = function threeArgumentPooler(a1, a2, a3) { + var Klass = this; + + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2, a3); + return instance; + } else { + return new Klass(a1, a2, a3); + } + }; + + var fourArgumentPooler = function fourArgumentPooler(a1, a2, a3, a4) { + var Klass = this; + + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2, a3, a4); + return instance; + } else { + return new Klass(a1, a2, a3, a4); + } + }; + + var standardReleaser = function standardReleaser(instance) { + var Klass = this; + invariant(instance instanceof Klass, 'Trying to release an instance into a pool of a different type.'); + instance.destructor(); + + if (Klass.instancePool.length < Klass.poolSize) { + Klass.instancePool.push(instance); + } + }; + + var DEFAULT_POOL_SIZE = 10; + var DEFAULT_POOLER = oneArgumentPooler; + + var addPoolingTo = function addPoolingTo(CopyConstructor, pooler) { + var NewKlass = CopyConstructor; + NewKlass.instancePool = []; + NewKlass.getPooled = pooler || DEFAULT_POOLER; + + if (!NewKlass.poolSize) { + NewKlass.poolSize = DEFAULT_POOL_SIZE; + } + + NewKlass.release = standardReleaser; + return NewKlass; + }; + + var PooledClass = { + addPoolingTo: addPoolingTo, + oneArgumentPooler: oneArgumentPooler, + twoArgumentPooler: twoArgumentPooler, + threeArgumentPooler: threeArgumentPooler, + fourArgumentPooler: fourArgumentPooler + }; + module.exports = PooledClass; +},225,[18],"PooledClass"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PooledClass = require(_dependencyMap[0], 'PooledClass'); + + var twoArgumentPooler = PooledClass.twoArgumentPooler; + + function Position(left, top) { + this.left = left; + this.top = top; + } + + Position.prototype.destructor = function () { + this.left = null; + this.top = null; + }; + + PooledClass.addPoolingTo(Position, twoArgumentPooler); + module.exports = Position; +},226,[225],"Position"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function TVEventHandler() {} + + TVEventHandler.prototype.enable = function (component, callback) {}; + + TVEventHandler.prototype.disable = function () {}; + + module.exports = TVEventHandler; +},227,[],"TVEventHandler"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var TouchEventUtils = { + extractSingleTouch: function extractSingleTouch(nativeEvent) { + var touches = nativeEvent.touches; + var changedTouches = nativeEvent.changedTouches; + var hasTouches = touches && touches.length > 0; + var hasChangedTouches = changedTouches && changedTouches.length > 0; + return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent; + } + }; + module.exports = TouchEventUtils; +},228,[],"fbjs/lib/TouchEventUtils.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var mergeFast = function mergeFast(one, two) { + var ret = {}; + + for (var keyOne in one) { + ret[keyOne] = one[keyOne]; + } + + for (var keyTwo in two) { + ret[keyTwo] = two[keyTwo]; + } + + return ret; + }; + + module.exports = mergeFast; +},229,[],"mergeFast"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Platform = require(_dependencyMap[0], 'Platform'); + + var React = require(_dependencyMap[1], 'React'); + + var PropTypes = require(_dependencyMap[2], 'prop-types'); + + var ReactNative = require(_dependencyMap[3], 'ReactNative'); + + var Touchable = require(_dependencyMap[4], 'Touchable'); + + var TouchableWithoutFeedback = require(_dependencyMap[5], 'TouchableWithoutFeedback'); + + var UIManager = require(_dependencyMap[6], 'UIManager'); + + var createReactClass = require(_dependencyMap[7], 'create-react-class'); + + var ensurePositiveDelayProps = require(_dependencyMap[8], 'ensurePositiveDelayProps'); + + var processColor = require(_dependencyMap[9], 'processColor'); + + var rippleBackgroundPropType = PropTypes.shape({ + type: PropTypes.oneOf(['RippleAndroid']), + color: PropTypes.number, + borderless: PropTypes.bool + }); + var themeAttributeBackgroundPropType = PropTypes.shape({ + type: PropTypes.oneOf(['ThemeAttrAndroid']), + attribute: PropTypes.string.isRequired + }); + var backgroundPropType = PropTypes.oneOfType([rippleBackgroundPropType, themeAttributeBackgroundPropType]); + var PRESS_RETENTION_OFFSET = { + top: 20, + left: 20, + right: 20, + bottom: 30 + }; + var TouchableNativeFeedback = createReactClass({ + displayName: 'TouchableNativeFeedback', + propTypes: babelHelpers.extends({}, TouchableWithoutFeedback.propTypes, { + background: backgroundPropType, + useForeground: PropTypes.bool + }), + statics: { + SelectableBackground: function SelectableBackground() { + return { + type: 'ThemeAttrAndroid', + attribute: 'selectableItemBackground' + }; + }, + SelectableBackgroundBorderless: function SelectableBackgroundBorderless() { + return { + type: 'ThemeAttrAndroid', + attribute: 'selectableItemBackgroundBorderless' + }; + }, + Ripple: function Ripple(color, borderless) { + return { + type: 'RippleAndroid', + color: processColor(color), + borderless: borderless + }; + }, + canUseNativeForeground: function canUseNativeForeground() { + return Platform.OS === 'android' && Platform.Version >= 23; + } + }, + mixins: [Touchable.Mixin], + getDefaultProps: function getDefaultProps() { + return { + background: this.SelectableBackground() + }; + }, + getInitialState: function getInitialState() { + return this.touchableGetInitialState(); + }, + componentDidMount: function componentDidMount() { + ensurePositiveDelayProps(this.props); + }, + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + ensurePositiveDelayProps(nextProps); + }, + touchableHandleActivePressIn: function touchableHandleActivePressIn(e) { + this.props.onPressIn && this.props.onPressIn(e); + + this._dispatchPressedStateChange(true); + + this._dispatchHotspotUpdate(this.pressInLocation.locationX, this.pressInLocation.locationY); + }, + touchableHandleActivePressOut: function touchableHandleActivePressOut(e) { + this.props.onPressOut && this.props.onPressOut(e); + + this._dispatchPressedStateChange(false); + }, + touchableHandlePress: function touchableHandlePress(e) { + this.props.onPress && this.props.onPress(e); + }, + touchableHandleLongPress: function touchableHandleLongPress(e) { + this.props.onLongPress && this.props.onLongPress(e); + }, + touchableGetPressRectOffset: function touchableGetPressRectOffset() { + return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET; + }, + touchableGetHitSlop: function touchableGetHitSlop() { + return this.props.hitSlop; + }, + touchableGetHighlightDelayMS: function touchableGetHighlightDelayMS() { + return this.props.delayPressIn; + }, + touchableGetLongPressDelayMS: function touchableGetLongPressDelayMS() { + return this.props.delayLongPress; + }, + touchableGetPressOutDelayMS: function touchableGetPressOutDelayMS() { + return this.props.delayPressOut; + }, + _handleResponderMove: function _handleResponderMove(e) { + this.touchableHandleResponderMove(e); + + this._dispatchHotspotUpdate(e.nativeEvent.locationX, e.nativeEvent.locationY); + }, + _dispatchHotspotUpdate: function _dispatchHotspotUpdate(destX, destY) { + UIManager.dispatchViewManagerCommand(ReactNative.findNodeHandle(this), UIManager.RCTView.Commands.hotspotUpdate, [destX || 0, destY || 0]); + }, + _dispatchPressedStateChange: function _dispatchPressedStateChange(pressed) { + UIManager.dispatchViewManagerCommand(ReactNative.findNodeHandle(this), UIManager.RCTView.Commands.setPressed, [pressed]); + }, + render: function render() { + var _babelHelpers$extends; + + var child = React.Children.only(this.props.children); + var children = child.props.children; + + if (Touchable.TOUCH_TARGET_DEBUG && child.type.displayName === 'View') { + if (!Array.isArray(children)) { + children = [children]; + } + + children.push(Touchable.renderDebugView({ + color: 'brown', + hitSlop: this.props.hitSlop + })); + } + + if (this.props.useForeground && !TouchableNativeFeedback.canUseNativeForeground()) { + console.warn('Requested foreground ripple, but it is not available on this version of Android. ' + 'Consider calling TouchableNativeFeedback.canUseNativeForeground() and using a different ' + 'Touchable if the result is false.'); + } + + var drawableProp = this.props.useForeground && TouchableNativeFeedback.canUseNativeForeground() ? 'nativeForegroundAndroid' : 'nativeBackgroundAndroid'; + var childProps = babelHelpers.extends({}, child.props, (_babelHelpers$extends = {}, babelHelpers.defineProperty(_babelHelpers$extends, drawableProp, this.props.background), babelHelpers.defineProperty(_babelHelpers$extends, "accessible", this.props.accessible !== false), babelHelpers.defineProperty(_babelHelpers$extends, "accessibilityLabel", this.props.accessibilityLabel), babelHelpers.defineProperty(_babelHelpers$extends, "accessibilityComponentType", this.props.accessibilityComponentType), babelHelpers.defineProperty(_babelHelpers$extends, "accessibilityTraits", this.props.accessibilityTraits), babelHelpers.defineProperty(_babelHelpers$extends, "children", children), babelHelpers.defineProperty(_babelHelpers$extends, "testID", this.props.testID), babelHelpers.defineProperty(_babelHelpers$extends, "onLayout", this.props.onLayout), babelHelpers.defineProperty(_babelHelpers$extends, "hitSlop", this.props.hitSlop), babelHelpers.defineProperty(_babelHelpers$extends, "onStartShouldSetResponder", this.touchableHandleStartShouldSetResponder), babelHelpers.defineProperty(_babelHelpers$extends, "onResponderTerminationRequest", this.touchableHandleResponderTerminationRequest), babelHelpers.defineProperty(_babelHelpers$extends, "onResponderGrant", this.touchableHandleResponderGrant), babelHelpers.defineProperty(_babelHelpers$extends, "onResponderMove", this._handleResponderMove), babelHelpers.defineProperty(_babelHelpers$extends, "onResponderRelease", this.touchableHandleResponderRelease), babelHelpers.defineProperty(_babelHelpers$extends, "onResponderTerminate", this.touchableHandleResponderTerminate), _babelHelpers$extends)); + return React.cloneElement(child, childProps); + } + }); + module.exports = TouchableNativeFeedback; +},230,[105,171,24,74,223,231,158,213,233,193],"TouchableNativeFeedback"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EdgeInsetsPropType = require(_dependencyMap[0], 'EdgeInsetsPropType'); + + var React = require(_dependencyMap[1], 'React'); + + var PropTypes = require(_dependencyMap[2], 'prop-types'); + + var TimerMixin = require(_dependencyMap[3], 'react-timer-mixin'); + + var Touchable = require(_dependencyMap[4], 'Touchable'); + + var createReactClass = require(_dependencyMap[5], 'create-react-class'); + + var ensurePositiveDelayProps = require(_dependencyMap[6], 'ensurePositiveDelayProps'); + + var warning = require(_dependencyMap[7], 'fbjs/lib/warning'); + + var _require = require(_dependencyMap[8], 'ViewAccessibility'), + AccessibilityComponentTypes = _require.AccessibilityComponentTypes, + AccessibilityTraits = _require.AccessibilityTraits; + + var PRESS_RETENTION_OFFSET = { + top: 20, + left: 20, + right: 20, + bottom: 30 + }; + var TouchableWithoutFeedback = createReactClass({ + displayName: 'TouchableWithoutFeedback', + mixins: [TimerMixin, Touchable.Mixin], + propTypes: { + accessible: PropTypes.bool, + accessibilityComponentType: PropTypes.oneOf(AccessibilityComponentTypes), + accessibilityTraits: PropTypes.oneOfType([PropTypes.oneOf(AccessibilityTraits), PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits))]), + disabled: PropTypes.bool, + onPress: PropTypes.func, + onPressIn: PropTypes.func, + onPressOut: PropTypes.func, + onLayout: PropTypes.func, + onLongPress: PropTypes.func, + delayPressIn: PropTypes.number, + delayPressOut: PropTypes.number, + delayLongPress: PropTypes.number, + pressRetentionOffset: EdgeInsetsPropType, + hitSlop: EdgeInsetsPropType + }, + getInitialState: function getInitialState() { + return this.touchableGetInitialState(); + }, + componentDidMount: function componentDidMount() { + ensurePositiveDelayProps(this.props); + }, + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + ensurePositiveDelayProps(nextProps); + }, + touchableHandlePress: function touchableHandlePress(e) { + this.props.onPress && this.props.onPress(e); + }, + touchableHandleActivePressIn: function touchableHandleActivePressIn(e) { + this.props.onPressIn && this.props.onPressIn(e); + }, + touchableHandleActivePressOut: function touchableHandleActivePressOut(e) { + this.props.onPressOut && this.props.onPressOut(e); + }, + touchableHandleLongPress: function touchableHandleLongPress(e) { + this.props.onLongPress && this.props.onLongPress(e); + }, + touchableGetPressRectOffset: function touchableGetPressRectOffset() { + return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET; + }, + touchableGetHitSlop: function touchableGetHitSlop() { + return this.props.hitSlop; + }, + touchableGetHighlightDelayMS: function touchableGetHighlightDelayMS() { + return this.props.delayPressIn || 0; + }, + touchableGetLongPressDelayMS: function touchableGetLongPressDelayMS() { + return this.props.delayLongPress === 0 ? 0 : this.props.delayLongPress || 500; + }, + touchableGetPressOutDelayMS: function touchableGetPressOutDelayMS() { + return this.props.delayPressOut || 0; + }, + render: function render() { + var child = React.Children.only(this.props.children); + var children = child.props.children; + warning(!child.type || child.type.displayName !== 'Text', 'TouchableWithoutFeedback does not work well with Text children. Wrap children in a View instead. See ' + (child._owner && child._owner.getName && child._owner.getName() || '')); + + if (Touchable.TOUCH_TARGET_DEBUG && child.type && child.type.displayName === 'View') { + children = React.Children.toArray(children); + children.push(Touchable.renderDebugView({ + color: 'red', + hitSlop: this.props.hitSlop + })); + } + + var style = Touchable.TOUCH_TARGET_DEBUG && child.type && child.type.displayName === 'Text' ? [child.props.style, { + color: 'red' + }] : child.props.style; + return React.cloneElement(child, { + accessible: this.props.accessible !== false, + accessibilityLabel: this.props.accessibilityLabel, + accessibilityComponentType: this.props.accessibilityComponentType, + accessibilityTraits: this.props.accessibilityTraits, + nativeID: this.props.nativeID, + testID: this.props.testID, + onLayout: this.props.onLayout, + hitSlop: this.props.hitSlop, + onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder, + onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest, + onResponderGrant: this.touchableHandleResponderGrant, + onResponderMove: this.touchableHandleResponderMove, + onResponderRelease: this.touchableHandleResponderRelease, + onResponderTerminate: this.touchableHandleResponderTerminate, + style: style, + children: children + }); + } + }); + module.exports = TouchableWithoutFeedback; +},231,[173,171,24,232,223,213,233,19,185],"TouchableWithoutFeedback"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var GLOBAL = typeof window === 'undefined' ? global : window; + + var setter = function setter(_setter, _clearer, array) { + return function (callback, delta) { + var id = _setter(function () { + _clearer.call(this, id); + + callback.apply(this, arguments); + }.bind(this), delta); + + if (!this[array]) { + this[array] = [id]; + } else { + this[array].push(id); + } + + return id; + }; + }; + + var clearer = function clearer(_clearer, array) { + return function (id) { + if (this[array]) { + var index = this[array].indexOf(id); + + if (index !== -1) { + this[array].splice(index, 1); + } + } + + _clearer(id); + }; + }; + + var _timeouts = 'TimerMixin_timeouts'; + + var _clearTimeout = clearer(GLOBAL.clearTimeout, _timeouts); + + var _setTimeout = setter(GLOBAL.setTimeout, _clearTimeout, _timeouts); + + var _intervals = 'TimerMixin_intervals'; + + var _clearInterval = clearer(GLOBAL.clearInterval, _intervals); + + var _setInterval = setter(GLOBAL.setInterval, function () {}, _intervals); + + var _immediates = 'TimerMixin_immediates'; + + var _clearImmediate = clearer(GLOBAL.clearImmediate, _immediates); + + var _setImmediate = setter(GLOBAL.setImmediate, _clearImmediate, _immediates); + + var _rafs = 'TimerMixin_rafs'; + + var _cancelAnimationFrame = clearer(GLOBAL.cancelAnimationFrame, _rafs); + + var _requestAnimationFrame = setter(GLOBAL.requestAnimationFrame, _cancelAnimationFrame, _rafs); + + var TimerMixin = { + componentWillUnmount: function componentWillUnmount() { + this[_timeouts] && this[_timeouts].forEach(function (id) { + GLOBAL.clearTimeout(id); + }); + this[_timeouts] = null; + this[_intervals] && this[_intervals].forEach(function (id) { + GLOBAL.clearInterval(id); + }); + this[_intervals] = null; + this[_immediates] && this[_immediates].forEach(function (id) { + GLOBAL.clearImmediate(id); + }); + this[_immediates] = null; + this[_rafs] && this[_rafs].forEach(function (id) { + GLOBAL.cancelAnimationFrame(id); + }); + this[_rafs] = null; + }, + setTimeout: _setTimeout, + clearTimeout: _clearTimeout, + setInterval: _setInterval, + clearInterval: _clearInterval, + setImmediate: _setImmediate, + clearImmediate: _clearImmediate, + requestAnimationFrame: _requestAnimationFrame, + cancelAnimationFrame: _cancelAnimationFrame + }; + module.exports = TimerMixin; +},232,[],"react-timer-mixin/TimerMixin.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var ensurePositiveDelayProps = function ensurePositiveDelayProps(props) { + invariant(!(props.delayPressIn < 0 || props.delayPressOut < 0 || props.delayLongPress < 0), 'Touchable components cannot have negative delay properties'); + }; + + module.exports = ensurePositiveDelayProps; +},233,[18],"ensurePositiveDelayProps"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js"; + + var Animated = require(_dependencyMap[0], 'Animated'); + + var Easing = require(_dependencyMap[1], 'Easing'); + + var NativeMethodsMixin = require(_dependencyMap[2], 'NativeMethodsMixin'); + + var React = require(_dependencyMap[3], 'React'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var TimerMixin = require(_dependencyMap[5], 'react-timer-mixin'); + + var Touchable = require(_dependencyMap[6], 'Touchable'); + + var TouchableWithoutFeedback = require(_dependencyMap[7], 'TouchableWithoutFeedback'); + + var createReactClass = require(_dependencyMap[8], 'create-react-class'); + + var ensurePositiveDelayProps = require(_dependencyMap[9], 'ensurePositiveDelayProps'); + + var flattenStyle = require(_dependencyMap[10], 'flattenStyle'); + + var PRESS_RETENTION_OFFSET = { + top: 20, + left: 20, + right: 20, + bottom: 30 + }; + var TouchableOpacity = createReactClass({ + displayName: 'TouchableOpacity', + mixins: [TimerMixin, Touchable.Mixin, NativeMethodsMixin], + propTypes: babelHelpers.extends({}, TouchableWithoutFeedback.propTypes, { + activeOpacity: PropTypes.number, + hasTVPreferredFocus: PropTypes.bool, + tvParallaxProperties: PropTypes.object + }), + getDefaultProps: function getDefaultProps() { + return { + activeOpacity: 0.2 + }; + }, + getInitialState: function getInitialState() { + return babelHelpers.extends({}, this.touchableGetInitialState(), { + anim: new Animated.Value(this._getChildStyleOpacityWithDefault()) + }); + }, + componentDidMount: function componentDidMount() { + ensurePositiveDelayProps(this.props); + }, + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + ensurePositiveDelayProps(nextProps); + }, + setOpacityTo: function setOpacityTo(value, duration) { + Animated.timing(this.state.anim, { + toValue: value, + duration: duration, + easing: Easing.inOut(Easing.quad), + useNativeDriver: true + }).start(); + }, + touchableHandleActivePressIn: function touchableHandleActivePressIn(e) { + if (e.dispatchConfig.registrationName === 'onResponderGrant') { + this._opacityActive(0); + } else { + this._opacityActive(150); + } + + this.props.onPressIn && this.props.onPressIn(e); + }, + touchableHandleActivePressOut: function touchableHandleActivePressOut(e) { + this._opacityInactive(250); + + this.props.onPressOut && this.props.onPressOut(e); + }, + touchableHandlePress: function touchableHandlePress(e) { + this.props.onPress && this.props.onPress(e); + }, + touchableHandleLongPress: function touchableHandleLongPress(e) { + this.props.onLongPress && this.props.onLongPress(e); + }, + touchableGetPressRectOffset: function touchableGetPressRectOffset() { + return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET; + }, + touchableGetHitSlop: function touchableGetHitSlop() { + return this.props.hitSlop; + }, + touchableGetHighlightDelayMS: function touchableGetHighlightDelayMS() { + return this.props.delayPressIn || 0; + }, + touchableGetLongPressDelayMS: function touchableGetLongPressDelayMS() { + return this.props.delayLongPress === 0 ? 0 : this.props.delayLongPress || 500; + }, + touchableGetPressOutDelayMS: function touchableGetPressOutDelayMS() { + return this.props.delayPressOut; + }, + _opacityActive: function _opacityActive(duration) { + this.setOpacityTo(this.props.activeOpacity, duration); + }, + _opacityInactive: function _opacityInactive(duration) { + this.setOpacityTo(this._getChildStyleOpacityWithDefault(), duration); + }, + _getChildStyleOpacityWithDefault: function _getChildStyleOpacityWithDefault() { + var childStyle = flattenStyle(this.props.style) || {}; + return childStyle.opacity == undefined ? 1 : childStyle.opacity; + }, + render: function render() { + return React.createElement( + Animated.View, + { + accessible: this.props.accessible !== false, + accessibilityLabel: this.props.accessibilityLabel, + accessibilityComponentType: this.props.accessibilityComponentType, + accessibilityTraits: this.props.accessibilityTraits, + style: [this.props.style, { + opacity: this.state.anim + }], + nativeID: this.props.nativeID, + testID: this.props.testID, + onLayout: this.props.onLayout, + isTVSelectable: true, + hasTVPreferredFocus: this.props.hasTVPreferredFocus, + tvParallaxProperties: this.props.tvParallaxProperties, + hitSlop: this.props.hitSlop, + onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder, + onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest, + onResponderGrant: this.touchableHandleResponderGrant, + onResponderMove: this.touchableHandleResponderMove, + onResponderRelease: this.touchableHandleResponderRelease, + onResponderTerminate: this.touchableHandleResponderTerminate, + __source: { + fileName: _jsxFileName, + lineNumber: 245 + } + }, + this.props.children, + Touchable.renderDebugView({ + color: 'cyan', + hitSlop: this.props.hitSlop + }) + ); + } + }); + module.exports = TouchableOpacity; +},234,[235,260,169,171,24,232,223,231,213,233,152],"TouchableOpacity"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedImplementation = require(_dependencyMap[0], 'AnimatedImplementation'); + + var Image = require(_dependencyMap[1], 'Image'); + + var Text = require(_dependencyMap[2], 'Text'); + + var View = require(_dependencyMap[3], 'View'); + + var AnimatedScrollView = void 0; + var Animated = { + View: AnimatedImplementation.createAnimatedComponent(View), + Text: AnimatedImplementation.createAnimatedComponent(Text), + Image: AnimatedImplementation.createAnimatedComponent(Image), + + get ScrollView() { + if (!AnimatedScrollView) { + AnimatedScrollView = AnimatedImplementation.createAnimatedComponent(require(_dependencyMap[4], 'ScrollView')); + } + + return AnimatedScrollView; + } + + }; + babelHelpers.extends(Animated, AnimatedImplementation); + module.exports = Animated; +},235,[236,263,222,211,265],"Animated"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], './AnimatedEvent'), + AnimatedEvent = _require.AnimatedEvent, + attachNativeEvent = _require.attachNativeEvent; + + var AnimatedAddition = require(_dependencyMap[1], './nodes/AnimatedAddition'); + + var AnimatedDiffClamp = require(_dependencyMap[2], './nodes/AnimatedDiffClamp'); + + var AnimatedDivision = require(_dependencyMap[3], './nodes/AnimatedDivision'); + + var AnimatedInterpolation = require(_dependencyMap[4], './nodes/AnimatedInterpolation'); + + var AnimatedModulo = require(_dependencyMap[5], './nodes/AnimatedModulo'); + + var AnimatedMultiplication = require(_dependencyMap[6], './nodes/AnimatedMultiplication'); + + var AnimatedNode = require(_dependencyMap[7], './nodes/AnimatedNode'); + + var AnimatedProps = require(_dependencyMap[8], './nodes/AnimatedProps'); + + var AnimatedTracking = require(_dependencyMap[9], './nodes/AnimatedTracking'); + + var AnimatedValue = require(_dependencyMap[10], './nodes/AnimatedValue'); + + var AnimatedValueXY = require(_dependencyMap[11], './nodes/AnimatedValueXY'); + + var DecayAnimation = require(_dependencyMap[12], './animations/DecayAnimation'); + + var SpringAnimation = require(_dependencyMap[13], './animations/SpringAnimation'); + + var TimingAnimation = require(_dependencyMap[14], './animations/TimingAnimation'); + + var createAnimatedComponent = require(_dependencyMap[15], './createAnimatedComponent'); + + var add = function add(a, b) { + return new AnimatedAddition(a, b); + }; + + var divide = function divide(a, b) { + return new AnimatedDivision(a, b); + }; + + var multiply = function multiply(a, b) { + return new AnimatedMultiplication(a, b); + }; + + var modulo = function modulo(a, modulus) { + return new AnimatedModulo(a, modulus); + }; + + var diffClamp = function diffClamp(a, min, max) { + return new AnimatedDiffClamp(a, min, max); + }; + + var _combineCallbacks = function _combineCallbacks(callback, config) { + if (callback && config.onComplete) { + return function () { + config.onComplete && config.onComplete.apply(config, arguments); + callback && callback.apply(undefined, arguments); + }; + } else { + return callback || config.onComplete; + } + }; + + var maybeVectorAnim = function maybeVectorAnim(value, config, anim) { + if (value instanceof AnimatedValueXY) { + var configX = babelHelpers.extends({}, config); + var configY = babelHelpers.extends({}, config); + + for (var key in config) { + var _config$key = config[key], + x = _config$key.x, + y = _config$key.y; + + if (x !== undefined && y !== undefined) { + configX[key] = x; + configY[key] = y; + } + } + + var aX = anim(value.x, configX); + var aY = anim(value.y, configY); + return parallel([aX, aY], { + stopTogether: false + }); + } + + return null; + }; + + var spring = function spring(value, config) { + var start = function start(animatedValue, configuration, callback) { + callback = _combineCallbacks(callback, configuration); + var singleValue = animatedValue; + var singleConfig = configuration; + singleValue.stopTracking(); + + if (configuration.toValue instanceof AnimatedNode) { + singleValue.track(new AnimatedTracking(singleValue, configuration.toValue, SpringAnimation, singleConfig, callback)); + } else { + singleValue.animate(new SpringAnimation(singleConfig), callback); + } + }; + + return maybeVectorAnim(value, config, spring) || { + start: function (_start) { + function start(_x) { + return _start.apply(this, arguments); + } + + start.toString = function () { + return _start.toString(); + }; + + return start; + }(function (callback) { + start(value, config, callback); + }), + stop: function stop() { + value.stopAnimation(); + }, + reset: function reset() { + value.resetAnimation(); + }, + _startNativeLoop: function _startNativeLoop(iterations) { + var singleConfig = babelHelpers.extends({}, config, { + iterations: iterations + }); + start(value, singleConfig); + }, + _isUsingNativeDriver: function _isUsingNativeDriver() { + return config.useNativeDriver || false; + } + }; + }; + + var timing = function timing(value, config) { + var start = function start(animatedValue, configuration, callback) { + callback = _combineCallbacks(callback, configuration); + var singleValue = animatedValue; + var singleConfig = configuration; + singleValue.stopTracking(); + + if (configuration.toValue instanceof AnimatedNode) { + singleValue.track(new AnimatedTracking(singleValue, configuration.toValue, TimingAnimation, singleConfig, callback)); + } else { + singleValue.animate(new TimingAnimation(singleConfig), callback); + } + }; + + return maybeVectorAnim(value, config, timing) || { + start: function (_start2) { + function start(_x2) { + return _start2.apply(this, arguments); + } + + start.toString = function () { + return _start2.toString(); + }; + + return start; + }(function (callback) { + start(value, config, callback); + }), + stop: function stop() { + value.stopAnimation(); + }, + reset: function reset() { + value.resetAnimation(); + }, + _startNativeLoop: function _startNativeLoop(iterations) { + var singleConfig = babelHelpers.extends({}, config, { + iterations: iterations + }); + start(value, singleConfig); + }, + _isUsingNativeDriver: function _isUsingNativeDriver() { + return config.useNativeDriver || false; + } + }; + }; + + var decay = function decay(value, config) { + var start = function start(animatedValue, configuration, callback) { + callback = _combineCallbacks(callback, configuration); + var singleValue = animatedValue; + var singleConfig = configuration; + singleValue.stopTracking(); + singleValue.animate(new DecayAnimation(singleConfig), callback); + }; + + return maybeVectorAnim(value, config, decay) || { + start: function (_start3) { + function start(_x3) { + return _start3.apply(this, arguments); + } + + start.toString = function () { + return _start3.toString(); + }; + + return start; + }(function (callback) { + start(value, config, callback); + }), + stop: function stop() { + value.stopAnimation(); + }, + reset: function reset() { + value.resetAnimation(); + }, + _startNativeLoop: function _startNativeLoop(iterations) { + var singleConfig = babelHelpers.extends({}, config, { + iterations: iterations + }); + start(value, singleConfig); + }, + _isUsingNativeDriver: function _isUsingNativeDriver() { + return config.useNativeDriver || false; + } + }; + }; + + var sequence = function sequence(animations) { + var current = 0; + return { + start: function start(callback) { + var onComplete = function onComplete(result) { + if (!result.finished) { + callback && callback(result); + return; + } + + current++; + + if (current === animations.length) { + callback && callback(result); + return; + } + + animations[current].start(onComplete); + }; + + if (animations.length === 0) { + callback && callback({ + finished: true + }); + } else { + animations[current].start(onComplete); + } + }, + stop: function stop() { + if (current < animations.length) { + animations[current].stop(); + } + }, + reset: function reset() { + animations.forEach(function (animation, idx) { + if (idx <= current) { + animation.reset(); + } + }); + current = 0; + }, + _startNativeLoop: function _startNativeLoop() { + throw new Error('Loops run using the native driver cannot contain Animated.sequence animations'); + }, + _isUsingNativeDriver: function _isUsingNativeDriver() { + return false; + } + }; + }; + + var parallel = function parallel(animations, config) { + var doneCount = 0; + var hasEnded = {}; + var stopTogether = !(config && config.stopTogether === false); + var result = { + start: function start(callback) { + if (doneCount === animations.length) { + callback && callback({ + finished: true + }); + return; + } + + animations.forEach(function (animation, idx) { + var cb = function cb(endResult) { + hasEnded[idx] = true; + doneCount++; + + if (doneCount === animations.length) { + doneCount = 0; + callback && callback(endResult); + return; + } + + if (!endResult.finished && stopTogether) { + result.stop(); + } + }; + + if (!animation) { + cb({ + finished: true + }); + } else { + animation.start(cb); + } + }); + }, + stop: function stop() { + animations.forEach(function (animation, idx) { + !hasEnded[idx] && animation.stop(); + hasEnded[idx] = true; + }); + }, + reset: function reset() { + animations.forEach(function (animation, idx) { + animation.reset(); + hasEnded[idx] = false; + doneCount = 0; + }); + }, + _startNativeLoop: function _startNativeLoop() { + throw new Error('Loops run using the native driver cannot contain Animated.parallel animations'); + }, + _isUsingNativeDriver: function _isUsingNativeDriver() { + return false; + } + }; + return result; + }; + + var delay = function delay(time) { + return timing(new AnimatedValue(0), { + toValue: 0, + delay: time, + duration: 0 + }); + }; + + var stagger = function stagger(time, animations) { + return parallel(animations.map(function (animation, i) { + return sequence([delay(time * i), animation]); + })); + }; + + var loop = function loop(animation) { + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$iterations = _ref.iterations, + iterations = _ref$iterations === undefined ? -1 : _ref$iterations; + + var isFinished = false; + var iterationsSoFar = 0; + return { + start: function start(callback) { + var restart = function restart() { + var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + finished: true + }; + + if (isFinished || iterationsSoFar === iterations || result.finished === false) { + callback && callback(result); + } else { + iterationsSoFar++; + animation.reset(); + animation.start(restart); + } + }; + + if (!animation || iterations === 0) { + callback && callback({ + finished: true + }); + } else { + if (animation._isUsingNativeDriver()) { + animation._startNativeLoop(iterations); + } else { + restart(); + } + } + }, + stop: function stop() { + isFinished = true; + animation.stop(); + }, + reset: function reset() { + iterationsSoFar = 0; + isFinished = false; + animation.reset(); + }, + _startNativeLoop: function _startNativeLoop() { + throw new Error('Loops run using the native driver cannot contain Animated.loop animations'); + }, + _isUsingNativeDriver: function _isUsingNativeDriver() { + return animation._isUsingNativeDriver(); + } + }; + }; + + function forkEvent(event, listener) { + if (!event) { + return listener; + } else if (event instanceof AnimatedEvent) { + event.__addListener(listener); + + return event; + } else { + return function () { + typeof event === 'function' && event.apply(undefined, arguments); + listener.apply(undefined, arguments); + }; + } + } + + function unforkEvent(event, listener) { + if (event && event instanceof AnimatedEvent) { + event.__removeListener(listener); + } + } + + var event = function event(argMapping, config) { + var animatedEvent = new AnimatedEvent(argMapping, config); + + if (animatedEvent.__isNative) { + return animatedEvent; + } else { + return animatedEvent.__getHandler(); + } + }; + + module.exports = { + Value: AnimatedValue, + ValueXY: AnimatedValueXY, + Interpolation: AnimatedInterpolation, + Node: AnimatedNode, + decay: decay, + timing: timing, + spring: spring, + add: add, + divide: divide, + multiply: multiply, + modulo: modulo, + diffClamp: diffClamp, + delay: delay, + sequence: sequence, + parallel: parallel, + stagger: stagger, + loop: loop, + event: event, + createAnimatedComponent: createAnimatedComponent, + attachNativeEvent: attachNativeEvent, + forkEvent: forkEvent, + unforkEvent: unforkEvent, + __PropsOnlyForTests: AnimatedProps + }; +},236,[237,245,246,247,239,248,249,240,250,253,238,254,255,257,259,262],"AnimatedImplementation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedValue = require(_dependencyMap[0], './nodes/AnimatedValue'); + + var NativeAnimatedHelper = require(_dependencyMap[1], './NativeAnimatedHelper'); + + var ReactNative = require(_dependencyMap[2], 'ReactNative'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var _require = require(_dependencyMap[1], './NativeAnimatedHelper'), + shouldUseNativeDriver = _require.shouldUseNativeDriver; + + function attachNativeEvent(viewRef, eventName, argMapping) { + var eventMappings = []; + + var traverse = function traverse(value, path) { + if (value instanceof AnimatedValue) { + value.__makeNative(); + + eventMappings.push({ + nativeEventPath: path, + animatedValueTag: value.__getNativeTag() + }); + } else if (typeof value === 'object') { + for (var _key in value) { + traverse(value[_key], path.concat(_key)); + } + } + }; + + invariant(argMapping[0] && argMapping[0].nativeEvent, 'Native driven events only support animated values contained inside `nativeEvent`.'); + traverse(argMapping[0].nativeEvent, []); + var viewTag = ReactNative.findNodeHandle(viewRef); + eventMappings.forEach(function (mapping) { + NativeAnimatedHelper.API.addAnimatedEventToView(viewTag, eventName, mapping); + }); + return { + detach: function detach() { + eventMappings.forEach(function (mapping) { + NativeAnimatedHelper.API.removeAnimatedEventFromView(viewTag, eventName, mapping.animatedValueTag); + }); + } + }; + } + + var AnimatedEvent = function () { + function AnimatedEvent(argMapping) { + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + babelHelpers.classCallCheck(this, AnimatedEvent); + this._listeners = []; + this._argMapping = argMapping; + + if (config.listener) { + this.__addListener(config.listener); + } + + this._callListeners = this._callListeners.bind(this); + this._attachedEvent = null; + this.__isNative = shouldUseNativeDriver(config); + + if (__DEV__) { + this._validateMapping(); + } + } + + babelHelpers.createClass(AnimatedEvent, [{ + key: "__addListener", + value: function __addListener(callback) { + this._listeners.push(callback); + } + }, { + key: "__removeListener", + value: function __removeListener(callback) { + this._listeners = this._listeners.filter(function (listener) { + return listener !== callback; + }); + } + }, { + key: "__attach", + value: function __attach(viewRef, eventName) { + invariant(this.__isNative, 'Only native driven events need to be attached.'); + this._attachedEvent = attachNativeEvent(viewRef, eventName, this._argMapping); + } + }, { + key: "__detach", + value: function __detach(viewTag, eventName) { + invariant(this.__isNative, 'Only native driven events need to be detached.'); + this._attachedEvent && this._attachedEvent.detach(); + } + }, { + key: "__getHandler", + value: function __getHandler() { + var _this = this; + + if (this.__isNative) { + return this._callListeners; + } + + return function () { + for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) { + args[_key2] = arguments[_key2]; + } + + var traverse = function traverse(recMapping, recEvt, key) { + if (typeof recEvt === 'number' && recMapping instanceof AnimatedValue) { + recMapping.setValue(recEvt); + } else if (typeof recMapping === 'object') { + for (var mappingKey in recMapping) { + traverse(recMapping[mappingKey], recEvt[mappingKey], mappingKey); + } + } + }; + + if (!_this.__isNative) { + _this._argMapping.forEach(function (mapping, idx) { + traverse(mapping, args[idx], 'arg' + idx); + }); + } + + _this._callListeners.apply(_this, babelHelpers.toConsumableArray(args)); + }; + } + }, { + key: "_callListeners", + value: function _callListeners() { + for (var _len2 = arguments.length, args = Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { + args[_key3] = arguments[_key3]; + } + + this._listeners.forEach(function (listener) { + return listener.apply(undefined, args); + }); + } + }, { + key: "_validateMapping", + value: function _validateMapping() { + var traverse = function traverse(recMapping, recEvt, key) { + if (typeof recEvt === 'number') { + invariant(recMapping instanceof AnimatedValue, 'Bad mapping of type ' + typeof recMapping + ' for key ' + key + ', event value must map to AnimatedValue'); + return; + } + + invariant(typeof recMapping === 'object', 'Bad mapping of type ' + typeof recMapping + ' for key ' + key); + invariant(typeof recEvt === 'object', 'Bad event of type ' + typeof recEvt + ' for key ' + key); + + for (var mappingKey in recMapping) { + traverse(recMapping[mappingKey], recEvt[mappingKey], mappingKey); + } + }; + } + }]); + return AnimatedEvent; + }(); + + module.exports = { + AnimatedEvent: AnimatedEvent, + attachNativeEvent: attachNativeEvent + }; +},237,[238,241,74,18],"AnimatedEvent"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedInterpolation = require(_dependencyMap[0], './AnimatedInterpolation'); + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedWithChildren = require(_dependencyMap[2], './AnimatedWithChildren'); + + var InteractionManager = require(_dependencyMap[3], 'InteractionManager'); + + var NativeAnimatedHelper = require(_dependencyMap[4], '../NativeAnimatedHelper'); + + var NativeAnimatedAPI = NativeAnimatedHelper.API; + var _uniqueId = 1; + + function _flush(rootNode) { + var animatedStyles = new Set(); + + function findAnimatedStyles(node) { + if (typeof node.update === 'function') { + animatedStyles.add(node); + } else { + node.__getChildren().forEach(findAnimatedStyles); + } + } + + findAnimatedStyles(rootNode); + animatedStyles.forEach(function (animatedStyle) { + return animatedStyle.update(); + }); + } + + var AnimatedValue = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedValue, _AnimatedWithChildren); + + function AnimatedValue(value) { + babelHelpers.classCallCheck(this, AnimatedValue); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedValue.__proto__ || Object.getPrototypeOf(AnimatedValue)).call(this)); + + _this._startingValue = _this._value = value; + _this._offset = 0; + _this._animation = null; + _this._listeners = {}; + return _this; + } + + babelHelpers.createClass(AnimatedValue, [{ + key: "__detach", + value: function __detach() { + this.stopAnimation(); + babelHelpers.get(AnimatedValue.prototype.__proto__ || Object.getPrototypeOf(AnimatedValue.prototype), "__detach", this).call(this); + } + }, { + key: "__getValue", + value: function __getValue() { + return this._value + this._offset; + } + }, { + key: "__makeNative", + value: function __makeNative() { + babelHelpers.get(AnimatedValue.prototype.__proto__ || Object.getPrototypeOf(AnimatedValue.prototype), "__makeNative", this).call(this); + + if (Object.keys(this._listeners).length) { + this._startListeningToNativeValueUpdates(); + } + } + }, { + key: "setValue", + value: function setValue(value) { + if (this._animation) { + this._animation.stop(); + + this._animation = null; + } + + this._updateValue(value, !this.__isNative); + + if (this.__isNative) { + NativeAnimatedAPI.setAnimatedNodeValue(this.__getNativeTag(), value); + } + } + }, { + key: "setOffset", + value: function setOffset(offset) { + this._offset = offset; + + if (this.__isNative) { + NativeAnimatedAPI.setAnimatedNodeOffset(this.__getNativeTag(), offset); + } + } + }, { + key: "flattenOffset", + value: function flattenOffset() { + this._value += this._offset; + this._offset = 0; + + if (this.__isNative) { + NativeAnimatedAPI.flattenAnimatedNodeOffset(this.__getNativeTag()); + } + } + }, { + key: "extractOffset", + value: function extractOffset() { + this._offset += this._value; + this._value = 0; + + if (this.__isNative) { + NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag()); + } + } + }, { + key: "addListener", + value: function addListener(callback) { + var id = String(_uniqueId++); + this._listeners[id] = callback; + + if (this.__isNative) { + this._startListeningToNativeValueUpdates(); + } + + return id; + } + }, { + key: "removeListener", + value: function removeListener(id) { + delete this._listeners[id]; + + if (this.__isNative && Object.keys(this._listeners).length === 0) { + this._stopListeningForNativeValueUpdates(); + } + } + }, { + key: "removeAllListeners", + value: function removeAllListeners() { + this._listeners = {}; + + if (this.__isNative) { + this._stopListeningForNativeValueUpdates(); + } + } + }, { + key: "_startListeningToNativeValueUpdates", + value: function _startListeningToNativeValueUpdates() { + var _this2 = this; + + if (this.__nativeAnimatedValueListener) { + return; + } + + NativeAnimatedAPI.startListeningToAnimatedNodeValue(this.__getNativeTag()); + this.__nativeAnimatedValueListener = NativeAnimatedHelper.nativeEventEmitter.addListener('onAnimatedValueUpdate', function (data) { + if (data.tag !== _this2.__getNativeTag()) { + return; + } + + _this2._updateValue(data.value, false); + }); + } + }, { + key: "_stopListeningForNativeValueUpdates", + value: function _stopListeningForNativeValueUpdates() { + if (!this.__nativeAnimatedValueListener) { + return; + } + + this.__nativeAnimatedValueListener.remove(); + + this.__nativeAnimatedValueListener = null; + NativeAnimatedAPI.stopListeningToAnimatedNodeValue(this.__getNativeTag()); + } + }, { + key: "stopAnimation", + value: function stopAnimation(callback) { + this.stopTracking(); + this._animation && this._animation.stop(); + this._animation = null; + callback && callback(this.__getValue()); + } + }, { + key: "resetAnimation", + value: function resetAnimation(callback) { + this.stopAnimation(callback); + this._value = this._startingValue; + } + }, { + key: "interpolate", + value: function interpolate(config) { + return new AnimatedInterpolation(this, config); + } + }, { + key: "animate", + value: function animate(animation, callback) { + var _this3 = this; + + var handle = null; + + if (animation.__isInteraction) { + handle = InteractionManager.createInteractionHandle(); + } + + var previousAnimation = this._animation; + this._animation && this._animation.stop(); + this._animation = animation; + animation.start(this._value, function (value) { + _this3._updateValue(value, true); + }, function (result) { + _this3._animation = null; + + if (handle !== null) { + InteractionManager.clearInteractionHandle(handle); + } + + callback && callback(result); + }, previousAnimation, this); + } + }, { + key: "stopTracking", + value: function stopTracking() { + this._tracking && this._tracking.__detach(); + this._tracking = null; + } + }, { + key: "track", + value: function track(tracking) { + this.stopTracking(); + this._tracking = tracking; + } + }, { + key: "_updateValue", + value: function _updateValue(value, flush) { + this._value = value; + + if (flush) { + _flush(this); + } + + for (var _key in this._listeners) { + this._listeners[_key]({ + value: this.__getValue() + }); + } + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + return { + type: 'value', + value: this._value, + offset: this._offset + }; + } + }]); + return AnimatedValue; + }(AnimatedWithChildren); + + module.exports = AnimatedValue; +},238,[239,240,242,243,241],"AnimatedValue"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedNode = require(_dependencyMap[0], './AnimatedNode'); + + var AnimatedWithChildren = require(_dependencyMap[1], './AnimatedWithChildren'); + + var NativeAnimatedHelper = require(_dependencyMap[2], '../NativeAnimatedHelper'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var normalizeColor = require(_dependencyMap[4], 'normalizeColor'); + + var linear = function linear(t) { + return t; + }; + + function createInterpolation(config) { + if (config.outputRange && typeof config.outputRange[0] === 'string') { + return createInterpolationFromStringOutputRange(config); + } + + var outputRange = config.outputRange; + checkInfiniteRange('outputRange', outputRange); + var inputRange = config.inputRange; + checkInfiniteRange('inputRange', inputRange); + checkValidInputRange(inputRange); + invariant(inputRange.length === outputRange.length, 'inputRange (' + inputRange.length + ') and outputRange (' + outputRange.length + ') must have the same length'); + var easing = config.easing || linear; + var extrapolateLeft = 'extend'; + + if (config.extrapolateLeft !== undefined) { + extrapolateLeft = config.extrapolateLeft; + } else if (config.extrapolate !== undefined) { + extrapolateLeft = config.extrapolate; + } + + var extrapolateRight = 'extend'; + + if (config.extrapolateRight !== undefined) { + extrapolateRight = config.extrapolateRight; + } else if (config.extrapolate !== undefined) { + extrapolateRight = config.extrapolate; + } + + return function (input) { + invariant(typeof input === 'number', 'Cannot interpolation an input which is not a number'); + var range = findRange(input, inputRange); + return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight); + }; + } + + function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight) { + var result = input; + + if (result < inputMin) { + if (extrapolateLeft === 'identity') { + return result; + } else if (extrapolateLeft === 'clamp') { + result = inputMin; + } else if (extrapolateLeft === 'extend') {} + } + + if (result > inputMax) { + if (extrapolateRight === 'identity') { + return result; + } else if (extrapolateRight === 'clamp') { + result = inputMax; + } else if (extrapolateRight === 'extend') {} + } + + if (outputMin === outputMax) { + return outputMin; + } + + if (inputMin === inputMax) { + if (input <= inputMin) { + return outputMin; + } + + return outputMax; + } + + if (inputMin === -Infinity) { + result = -result; + } else if (inputMax === Infinity) { + result = result - inputMin; + } else { + result = (result - inputMin) / (inputMax - inputMin); + } + + result = easing(result); + + if (outputMin === -Infinity) { + result = -result; + } else if (outputMax === Infinity) { + result = result + outputMin; + } else { + result = result * (outputMax - outputMin) + outputMin; + } + + return result; + } + + function colorToRgba(input) { + var int32Color = normalizeColor(input); + + if (int32Color === null) { + return input; + } + + int32Color = int32Color || 0; + var r = (int32Color & 0xff000000) >>> 24; + var g = (int32Color & 0x00ff0000) >>> 16; + var b = (int32Color & 0x0000ff00) >>> 8; + var a = (int32Color & 0x000000ff) / 255; + return "rgba(" + r + ", " + g + ", " + b + ", " + a + ")"; + } + + var stringShapeRegex = /[0-9\.-]+/g; + + function createInterpolationFromStringOutputRange(config) { + var outputRange = config.outputRange; + invariant(outputRange.length >= 2, 'Bad output range'); + outputRange = outputRange.map(colorToRgba); + checkPattern(outputRange); + var outputRanges = outputRange[0].match(stringShapeRegex).map(function () { + return []; + }); + outputRange.forEach(function (value) { + value.match(stringShapeRegex).forEach(function (number, i) { + outputRanges[i].push(+number); + }); + }); + var interpolations = outputRange[0].match(stringShapeRegex).map(function (value, i) { + return createInterpolation(babelHelpers.extends({}, config, { + outputRange: outputRanges[i] + })); + }); + var shouldRound = isRgbOrRgba(outputRange[0]); + return function (input) { + var i = 0; + return outputRange[0].replace(stringShapeRegex, function () { + var val = +interpolations[i++](input); + var rounded = shouldRound && i < 4 ? Math.round(val) : Math.round(val * 1000) / 1000; + return String(rounded); + }); + }; + } + + function isRgbOrRgba(range) { + return typeof range === 'string' && range.startsWith('rgb'); + } + + function checkPattern(arr) { + var pattern = arr[0].replace(stringShapeRegex, ''); + + for (var i = 1; i < arr.length; ++i) { + invariant(pattern === arr[i].replace(stringShapeRegex, ''), 'invalid pattern ' + arr[0] + ' and ' + arr[i]); + } + } + + function findRange(input, inputRange) { + var i = void 0; + + for (i = 1; i < inputRange.length - 1; ++i) { + if (inputRange[i] >= input) { + break; + } + } + + return i - 1; + } + + function checkValidInputRange(arr) { + invariant(arr.length >= 2, 'inputRange must have at least 2 elements'); + + for (var i = 1; i < arr.length; ++i) { + invariant(arr[i] >= arr[i - 1], 'inputRange must be monotonically increasing ' + arr); + } + } + + function checkInfiniteRange(name, arr) { + invariant(arr.length >= 2, name + ' must have at least 2 elements'); + invariant(arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity, name + 'cannot be ]-infinity;+infinity[ ' + arr); + } + + var AnimatedInterpolation = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedInterpolation, _AnimatedWithChildren); + + function AnimatedInterpolation(parent, config) { + babelHelpers.classCallCheck(this, AnimatedInterpolation); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedInterpolation.__proto__ || Object.getPrototypeOf(AnimatedInterpolation)).call(this)); + + _this._parent = parent; + _this._config = config; + _this._interpolation = createInterpolation(config); + return _this; + } + + babelHelpers.createClass(AnimatedInterpolation, [{ + key: "__makeNative", + value: function __makeNative() { + this._parent.__makeNative(); + + babelHelpers.get(AnimatedInterpolation.prototype.__proto__ || Object.getPrototypeOf(AnimatedInterpolation.prototype), "__makeNative", this).call(this); + } + }, { + key: "__getValue", + value: function __getValue() { + var parentValue = this._parent.__getValue(); + + invariant(typeof parentValue === 'number', 'Cannot interpolate an input which is not a number.'); + return this._interpolation(parentValue); + } + }, { + key: "interpolate", + value: function interpolate(config) { + return new AnimatedInterpolation(this, config); + } + }, { + key: "__attach", + value: function __attach() { + this._parent.__addChild(this); + } + }, { + key: "__detach", + value: function __detach() { + this._parent.__removeChild(this); + + babelHelpers.get(AnimatedInterpolation.prototype.__proto__ || Object.getPrototypeOf(AnimatedInterpolation.prototype), "__detach", this).call(this); + } + }, { + key: "__transformDataType", + value: function __transformDataType(range) { + return range.map(function (value) { + if (typeof value !== 'string') { + return value; + } + + if (/deg$/.test(value)) { + var degrees = parseFloat(value) || 0; + var radians = degrees * Math.PI / 180.0; + return radians; + } else { + return parseFloat(value) || 0; + } + }); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + if (__DEV__) { + NativeAnimatedHelper.validateInterpolation(this._config); + } + + return { + inputRange: this._config.inputRange, + outputRange: this.__transformDataType(this._config.outputRange), + extrapolateLeft: this._config.extrapolateLeft || this._config.extrapolate || 'extend', + extrapolateRight: this._config.extrapolateRight || this._config.extrapolate || 'extend', + type: 'interpolation' + }; + } + }]); + return AnimatedInterpolation; + }(AnimatedWithChildren); + + AnimatedInterpolation.__createInterpolation = createInterpolation; + module.exports = AnimatedInterpolation; +},239,[240,242,241,18,168],"AnimatedInterpolation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeAnimatedHelper = require(_dependencyMap[0], '../NativeAnimatedHelper'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var AnimatedNode = function () { + function AnimatedNode() { + babelHelpers.classCallCheck(this, AnimatedNode); + } + + babelHelpers.createClass(AnimatedNode, [{ + key: "__attach", + value: function __attach() {} + }, { + key: "__detach", + value: function __detach() { + if (this.__isNative && this.__nativeTag != null) { + NativeAnimatedHelper.API.dropAnimatedNode(this.__nativeTag); + this.__nativeTag = undefined; + } + } + }, { + key: "__getValue", + value: function __getValue() {} + }, { + key: "__getAnimatedValue", + value: function __getAnimatedValue() { + return this.__getValue(); + } + }, { + key: "__addChild", + value: function __addChild(child) {} + }, { + key: "__removeChild", + value: function __removeChild(child) {} + }, { + key: "__getChildren", + value: function __getChildren() { + return []; + } + }, { + key: "__makeNative", + value: function __makeNative() { + if (!this.__isNative) { + throw new Error('This node cannot be made a "native" animated node'); + } + } + }, { + key: "__getNativeTag", + value: function __getNativeTag() { + NativeAnimatedHelper.assertNativeAnimatedModule(); + invariant(this.__isNative, 'Attempt to get native tag from node not marked as "native"'); + + if (this.__nativeTag == null) { + var nativeTag = NativeAnimatedHelper.generateNewNodeTag(); + NativeAnimatedHelper.API.createAnimatedNode(nativeTag, this.__getNativeConfig()); + this.__nativeTag = nativeTag; + } + + return this.__nativeTag; + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + throw new Error('This JS animated node type cannot be used as native animated node'); + } + }, { + key: "toJSON", + value: function toJSON() { + return this.__getValue(); + } + }]); + return AnimatedNode; + }(); + + module.exports = AnimatedNode; +},240,[241,18],"AnimatedNode"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeAnimatedModule = require(_dependencyMap[0], 'NativeModules').NativeAnimatedModule; + + var NativeEventEmitter = require(_dependencyMap[1], 'NativeEventEmitter'); + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var __nativeAnimatedNodeTagCount = 1; + var __nativeAnimationIdCount = 1; + var nativeEventEmitter = void 0; + var API = { + createAnimatedNode: function createAnimatedNode(tag, config) { + assertNativeAnimatedModule(); + NativeAnimatedModule.createAnimatedNode(tag, config); + }, + startListeningToAnimatedNodeValue: function startListeningToAnimatedNodeValue(tag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.startListeningToAnimatedNodeValue(tag); + }, + stopListeningToAnimatedNodeValue: function stopListeningToAnimatedNodeValue(tag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.stopListeningToAnimatedNodeValue(tag); + }, + connectAnimatedNodes: function connectAnimatedNodes(parentTag, childTag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.connectAnimatedNodes(parentTag, childTag); + }, + disconnectAnimatedNodes: function disconnectAnimatedNodes(parentTag, childTag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.disconnectAnimatedNodes(parentTag, childTag); + }, + startAnimatingNode: function startAnimatingNode(animationId, nodeTag, config, endCallback) { + assertNativeAnimatedModule(); + NativeAnimatedModule.startAnimatingNode(animationId, nodeTag, config, endCallback); + }, + stopAnimation: function stopAnimation(animationId) { + assertNativeAnimatedModule(); + NativeAnimatedModule.stopAnimation(animationId); + }, + setAnimatedNodeValue: function setAnimatedNodeValue(nodeTag, value) { + assertNativeAnimatedModule(); + NativeAnimatedModule.setAnimatedNodeValue(nodeTag, value); + }, + setAnimatedNodeOffset: function setAnimatedNodeOffset(nodeTag, offset) { + assertNativeAnimatedModule(); + NativeAnimatedModule.setAnimatedNodeOffset(nodeTag, offset); + }, + flattenAnimatedNodeOffset: function flattenAnimatedNodeOffset(nodeTag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.flattenAnimatedNodeOffset(nodeTag); + }, + extractAnimatedNodeOffset: function extractAnimatedNodeOffset(nodeTag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.extractAnimatedNodeOffset(nodeTag); + }, + connectAnimatedNodeToView: function connectAnimatedNodeToView(nodeTag, viewTag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.connectAnimatedNodeToView(nodeTag, viewTag); + }, + disconnectAnimatedNodeFromView: function disconnectAnimatedNodeFromView(nodeTag, viewTag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag, viewTag); + }, + dropAnimatedNode: function dropAnimatedNode(tag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.dropAnimatedNode(tag); + }, + addAnimatedEventToView: function addAnimatedEventToView(viewTag, eventName, eventMapping) { + assertNativeAnimatedModule(); + NativeAnimatedModule.addAnimatedEventToView(viewTag, eventName, eventMapping); + }, + removeAnimatedEventFromView: function removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag) { + assertNativeAnimatedModule(); + NativeAnimatedModule.removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag); + } + }; + var STYLES_WHITELIST = { + opacity: true, + transform: true, + shadowOpacity: true, + shadowRadius: true, + scaleX: true, + scaleY: true, + translateX: true, + translateY: true + }; + var TRANSFORM_WHITELIST = { + translateX: true, + translateY: true, + scale: true, + scaleX: true, + scaleY: true, + rotate: true, + rotateX: true, + rotateY: true, + perspective: true + }; + var SUPPORTED_INTERPOLATION_PARAMS = { + inputRange: true, + outputRange: true, + extrapolate: true, + extrapolateRight: true, + extrapolateLeft: true + }; + + function addWhitelistedStyleProp(prop) { + STYLES_WHITELIST[prop] = true; + } + + function addWhitelistedTransformProp(prop) { + TRANSFORM_WHITELIST[prop] = true; + } + + function addWhitelistedInterpolationParam(param) { + SUPPORTED_INTERPOLATION_PARAMS[param] = true; + } + + function validateTransform(configs) { + configs.forEach(function (config) { + if (!TRANSFORM_WHITELIST.hasOwnProperty(config.property)) { + throw new Error("Property '" + config.property + "' is not supported by native animated module"); + } + }); + } + + function validateStyles(styles) { + for (var key in styles) { + if (!STYLES_WHITELIST.hasOwnProperty(key)) { + throw new Error("Style property '" + key + "' is not supported by native animated module"); + } + } + } + + function validateInterpolation(config) { + for (var key in config) { + if (!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(key)) { + throw new Error("Interpolation property '" + key + "' is not supported by native animated module"); + } + } + } + + function generateNewNodeTag() { + return __nativeAnimatedNodeTagCount++; + } + + function generateNewAnimationId() { + return __nativeAnimationIdCount++; + } + + function assertNativeAnimatedModule() { + invariant(NativeAnimatedModule, 'Native animated module is not available'); + } + + var _warnedMissingNativeAnimated = false; + + function shouldUseNativeDriver(config) { + if (config.useNativeDriver && !NativeAnimatedModule) { + if (!_warnedMissingNativeAnimated) { + console.warn('Animated: `useNativeDriver` is not supported because the native ' + 'animated module is missing. Falling back to JS-based animation. To ' + 'resolve this, add `RCTAnimation` module to this app, or remove ' + '`useNativeDriver`. ' + 'More info: https://github.com/facebook/react-native/issues/11094#issuecomment-263240420'); + _warnedMissingNativeAnimated = true; + } + + return false; + } + + return config.useNativeDriver || false; + } + + module.exports = { + API: API, + addWhitelistedStyleProp: addWhitelistedStyleProp, + addWhitelistedTransformProp: addWhitelistedTransformProp, + addWhitelistedInterpolationParam: addWhitelistedInterpolationParam, + validateStyles: validateStyles, + validateTransform: validateTransform, + validateInterpolation: validateInterpolation, + generateNewNodeTag: generateNewNodeTag, + generateNewAnimationId: generateNewAnimationId, + assertNativeAnimatedModule: assertNativeAnimatedModule, + shouldUseNativeDriver: shouldUseNativeDriver, + + get nativeEventEmitter() { + if (!nativeEventEmitter) { + nativeEventEmitter = new NativeEventEmitter(NativeAnimatedModule); + } + + return nativeEventEmitter; + } + + }; +},241,[68,120,18],"NativeAnimatedHelper"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedNode = require(_dependencyMap[0], './AnimatedNode'); + + var NativeAnimatedHelper = require(_dependencyMap[1], '../NativeAnimatedHelper'); + + var AnimatedWithChildren = function (_AnimatedNode) { + babelHelpers.inherits(AnimatedWithChildren, _AnimatedNode); + + function AnimatedWithChildren() { + babelHelpers.classCallCheck(this, AnimatedWithChildren); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedWithChildren.__proto__ || Object.getPrototypeOf(AnimatedWithChildren)).call(this)); + + _this._children = []; + return _this; + } + + babelHelpers.createClass(AnimatedWithChildren, [{ + key: "__makeNative", + value: function __makeNative() { + if (!this.__isNative) { + this.__isNative = true; + + for (var _iterator = this._children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var child = _ref; + + child.__makeNative(); + + NativeAnimatedHelper.API.connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag()); + } + } + } + }, { + key: "__addChild", + value: function __addChild(child) { + if (this._children.length === 0) { + this.__attach(); + } + + this._children.push(child); + + if (this.__isNative) { + child.__makeNative(); + + NativeAnimatedHelper.API.connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag()); + } + } + }, { + key: "__removeChild", + value: function __removeChild(child) { + var index = this._children.indexOf(child); + + if (index === -1) { + console.warn("Trying to remove a child that doesn't exist"); + return; + } + + if (this.__isNative && child.__isNative) { + NativeAnimatedHelper.API.disconnectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag()); + } + + this._children.splice(index, 1); + + if (this._children.length === 0) { + this.__detach(); + } + } + }, { + key: "__getChildren", + value: function __getChildren() { + return this._children; + } + }]); + return AnimatedWithChildren; + }(AnimatedNode); + + module.exports = AnimatedWithChildren; +},242,[240,241],"AnimatedWithChildren"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var BatchedBridge = require(_dependencyMap[0], 'BatchedBridge'); + + var EventEmitter = require(_dependencyMap[1], 'EventEmitter'); + + var Set = require(_dependencyMap[2], 'Set'); + + var TaskQueue = require(_dependencyMap[3], 'TaskQueue'); + + var infoLog = require(_dependencyMap[4], 'infoLog'); + + var invariant = require(_dependencyMap[5], 'fbjs/lib/invariant'); + + var keyMirror = require(_dependencyMap[6], 'fbjs/lib/keyMirror'); + + var _emitter = new EventEmitter(); + + var DEBUG_DELAY = 0; + var DEBUG = false; + var InteractionManager = { + Events: keyMirror({ + interactionStart: true, + interactionComplete: true + }), + runAfterInteractions: function runAfterInteractions(task) { + var tasks = []; + var promise = new Promise(function (resolve) { + _scheduleUpdate(); + + if (task) { + tasks.push(task); + } + + tasks.push({ + run: resolve, + name: 'resolve ' + (task && task.name || '?') + }); + + _taskQueue.enqueueTasks(tasks); + }); + return { + then: promise.then.bind(promise), + done: function done() { + if (promise.done) { + return promise.done.apply(promise, arguments); + } else { + console.warn('Tried to call done when not supported by current Promise implementation.'); + } + }, + cancel: function cancel() { + _taskQueue.cancelTasks(tasks); + } + }; + }, + createInteractionHandle: function createInteractionHandle() { + DEBUG && infoLog('create interaction handle'); + + _scheduleUpdate(); + + var handle = ++_inc; + + _addInteractionSet.add(handle); + + return handle; + }, + clearInteractionHandle: function clearInteractionHandle(handle) { + DEBUG && infoLog('clear interaction handle'); + invariant(!!handle, 'Must provide a handle to clear.'); + + _scheduleUpdate(); + + _addInteractionSet.delete(handle); + + _deleteInteractionSet.add(handle); + }, + addListener: _emitter.addListener.bind(_emitter), + setDeadline: function setDeadline(deadline) { + _deadline = deadline; + } + }; + + var _interactionSet = new Set(); + + var _addInteractionSet = new Set(); + + var _deleteInteractionSet = new Set(); + + var _taskQueue = new TaskQueue({ + onMoreTasks: _scheduleUpdate + }); + + var _nextUpdateHandle = 0; + var _inc = 0; + + var _deadline = -1; + + function _scheduleUpdate() { + if (!_nextUpdateHandle) { + if (_deadline > 0) { + _nextUpdateHandle = setTimeout(_processUpdate, 0 + DEBUG_DELAY); + } else { + _nextUpdateHandle = setImmediate(_processUpdate); + } + } + } + + function _processUpdate() { + _nextUpdateHandle = 0; + var interactionCount = _interactionSet.size; + + _addInteractionSet.forEach(function (handle) { + return _interactionSet.add(handle); + }); + + _deleteInteractionSet.forEach(function (handle) { + return _interactionSet.delete(handle); + }); + + var nextInteractionCount = _interactionSet.size; + + if (interactionCount !== 0 && nextInteractionCount === 0) { + _emitter.emit(InteractionManager.Events.interactionComplete); + } else if (interactionCount === 0 && nextInteractionCount !== 0) { + _emitter.emit(InteractionManager.Events.interactionStart); + } + + if (nextInteractionCount === 0) { + while (_taskQueue.hasTasksToProcess()) { + _taskQueue.processNext(); + + if (_deadline > 0 && BatchedBridge.getEventLoopRunningTime() >= _deadline) { + _scheduleUpdate(); + + break; + } + } + } + + _addInteractionSet.clear(); + + _deleteInteractionSet.clear(); + } + + module.exports = InteractionManager; +},243,[69,118,83,244,145,18,191],"InteractionManager"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var infoLog = require(_dependencyMap[0], 'infoLog'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var DEBUG = false; + + var TaskQueue = function () { + function TaskQueue(_ref) { + var onMoreTasks = _ref.onMoreTasks; + babelHelpers.classCallCheck(this, TaskQueue); + this._onMoreTasks = onMoreTasks; + this._queueStack = [{ + tasks: [], + popable: false + }]; + } + + babelHelpers.createClass(TaskQueue, [{ + key: "enqueue", + value: function enqueue(task) { + this._getCurrentQueue().push(task); + } + }, { + key: "enqueueTasks", + value: function enqueueTasks(tasks) { + var _this = this; + + tasks.forEach(function (task) { + return _this.enqueue(task); + }); + } + }, { + key: "cancelTasks", + value: function cancelTasks(tasksToCancel) { + this._queueStack = this._queueStack.map(function (queue) { + return babelHelpers.extends({}, queue, { + tasks: queue.tasks.filter(function (task) { + return tasksToCancel.indexOf(task) === -1; + }) + }); + }).filter(function (queue, idx) { + return queue.tasks.length > 0 || idx === 0; + }); + } + }, { + key: "hasTasksToProcess", + value: function hasTasksToProcess() { + return this._getCurrentQueue().length > 0; + } + }, { + key: "processNext", + value: function processNext() { + var queue = this._getCurrentQueue(); + + if (queue.length) { + var task = queue.shift(); + + try { + if (task.gen) { + DEBUG && infoLog('genPromise for task ' + task.name); + + this._genPromise(task); + } else if (task.run) { + DEBUG && infoLog('run task ' + task.name); + task.run(); + } else { + invariant(typeof task === 'function', 'Expected Function, SimpleTask, or PromiseTask, but got:\n' + JSON.stringify(task, null, 2)); + DEBUG && infoLog('run anonymous task'); + task(); + } + } catch (e) { + e.message = 'TaskQueue: Error with task ' + (task.name || '') + ': ' + e.message; + throw e; + } + } + } + }, { + key: "_getCurrentQueue", + value: function _getCurrentQueue() { + var stackIdx = this._queueStack.length - 1; + var queue = this._queueStack[stackIdx]; + + if (queue.popable && queue.tasks.length === 0 && this._queueStack.length > 1) { + this._queueStack.pop(); + + DEBUG && infoLog('popped queue: ', { + stackIdx: stackIdx, + queueStackSize: this._queueStack.length + }); + return this._getCurrentQueue(); + } else { + return queue.tasks; + } + } + }, { + key: "_genPromise", + value: function _genPromise(task) { + var _this2 = this; + + this._queueStack.push({ + tasks: [], + popable: false + }); + + var stackIdx = this._queueStack.length - 1; + DEBUG && infoLog('push new queue: ', { + stackIdx: stackIdx + }); + DEBUG && infoLog('exec gen task ' + task.name); + task.gen().then(function () { + DEBUG && infoLog('onThen for gen task ' + task.name, { + stackIdx: stackIdx, + queueStackSize: _this2._queueStack.length + }); + _this2._queueStack[stackIdx].popable = true; + _this2.hasTasksToProcess() && _this2._onMoreTasks(); + }).catch(function (ex) { + ex.message = "TaskQueue: Error resolving Promise in task " + task.name + ": " + ex.message; + throw ex; + }).done(); + } + }]); + return TaskQueue; + }(); + + module.exports = TaskQueue; +},244,[145,18],"TaskQueue"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedInterpolation = require(_dependencyMap[0], './AnimatedInterpolation'); + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedValue = require(_dependencyMap[2], './AnimatedValue'); + + var AnimatedWithChildren = require(_dependencyMap[3], './AnimatedWithChildren'); + + var AnimatedAddition = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedAddition, _AnimatedWithChildren); + + function AnimatedAddition(a, b) { + babelHelpers.classCallCheck(this, AnimatedAddition); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedAddition.__proto__ || Object.getPrototypeOf(AnimatedAddition)).call(this)); + + _this._a = typeof a === 'number' ? new AnimatedValue(a) : a; + _this._b = typeof b === 'number' ? new AnimatedValue(b) : b; + return _this; + } + + babelHelpers.createClass(AnimatedAddition, [{ + key: "__makeNative", + value: function __makeNative() { + this._a.__makeNative(); + + this._b.__makeNative(); + + babelHelpers.get(AnimatedAddition.prototype.__proto__ || Object.getPrototypeOf(AnimatedAddition.prototype), "__makeNative", this).call(this); + } + }, { + key: "__getValue", + value: function __getValue() { + return this._a.__getValue() + this._b.__getValue(); + } + }, { + key: "interpolate", + value: function interpolate(config) { + return new AnimatedInterpolation(this, config); + } + }, { + key: "__attach", + value: function __attach() { + this._a.__addChild(this); + + this._b.__addChild(this); + } + }, { + key: "__detach", + value: function __detach() { + this._a.__removeChild(this); + + this._b.__removeChild(this); + + babelHelpers.get(AnimatedAddition.prototype.__proto__ || Object.getPrototypeOf(AnimatedAddition.prototype), "__detach", this).call(this); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + return { + type: 'addition', + input: [this._a.__getNativeTag(), this._b.__getNativeTag()] + }; + } + }]); + return AnimatedAddition; + }(AnimatedWithChildren); + + module.exports = AnimatedAddition; +},245,[239,240,238,242],"AnimatedAddition"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedInterpolation = require(_dependencyMap[0], './AnimatedInterpolation'); + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedWithChildren = require(_dependencyMap[2], './AnimatedWithChildren'); + + var AnimatedDiffClamp = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedDiffClamp, _AnimatedWithChildren); + + function AnimatedDiffClamp(a, min, max) { + babelHelpers.classCallCheck(this, AnimatedDiffClamp); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedDiffClamp.__proto__ || Object.getPrototypeOf(AnimatedDiffClamp)).call(this)); + + _this._a = a; + _this._min = min; + _this._max = max; + _this._value = _this._lastValue = _this._a.__getValue(); + return _this; + } + + babelHelpers.createClass(AnimatedDiffClamp, [{ + key: "__makeNative", + value: function __makeNative() { + this._a.__makeNative(); + + babelHelpers.get(AnimatedDiffClamp.prototype.__proto__ || Object.getPrototypeOf(AnimatedDiffClamp.prototype), "__makeNative", this).call(this); + } + }, { + key: "interpolate", + value: function interpolate(config) { + return new AnimatedInterpolation(this, config); + } + }, { + key: "__getValue", + value: function __getValue() { + var value = this._a.__getValue(); + + var diff = value - this._lastValue; + this._lastValue = value; + this._value = Math.min(Math.max(this._value + diff, this._min), this._max); + return this._value; + } + }, { + key: "__attach", + value: function __attach() { + this._a.__addChild(this); + } + }, { + key: "__detach", + value: function __detach() { + this._a.__removeChild(this); + + babelHelpers.get(AnimatedDiffClamp.prototype.__proto__ || Object.getPrototypeOf(AnimatedDiffClamp.prototype), "__detach", this).call(this); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + return { + type: 'diffclamp', + input: this._a.__getNativeTag(), + min: this._min, + max: this._max + }; + } + }]); + return AnimatedDiffClamp; + }(AnimatedWithChildren); + + module.exports = AnimatedDiffClamp; +},246,[239,240,242],"AnimatedDiffClamp"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedInterpolation = require(_dependencyMap[0], './AnimatedInterpolation'); + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedValue = require(_dependencyMap[2], './AnimatedValue'); + + var AnimatedWithChildren = require(_dependencyMap[3], './AnimatedWithChildren'); + + var AnimatedDivision = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedDivision, _AnimatedWithChildren); + + function AnimatedDivision(a, b) { + babelHelpers.classCallCheck(this, AnimatedDivision); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedDivision.__proto__ || Object.getPrototypeOf(AnimatedDivision)).call(this)); + + _this._a = typeof a === 'number' ? new AnimatedValue(a) : a; + _this._b = typeof b === 'number' ? new AnimatedValue(b) : b; + return _this; + } + + babelHelpers.createClass(AnimatedDivision, [{ + key: "__makeNative", + value: function __makeNative() { + this._a.__makeNative(); + + this._b.__makeNative(); + + babelHelpers.get(AnimatedDivision.prototype.__proto__ || Object.getPrototypeOf(AnimatedDivision.prototype), "__makeNative", this).call(this); + } + }, { + key: "__getValue", + value: function __getValue() { + var a = this._a.__getValue(); + + var b = this._b.__getValue(); + + if (b === 0) { + console.error('Detected division by zero in AnimatedDivision'); + } + + return a / b; + } + }, { + key: "interpolate", + value: function interpolate(config) { + return new AnimatedInterpolation(this, config); + } + }, { + key: "__attach", + value: function __attach() { + this._a.__addChild(this); + + this._b.__addChild(this); + } + }, { + key: "__detach", + value: function __detach() { + this._a.__removeChild(this); + + this._b.__removeChild(this); + + babelHelpers.get(AnimatedDivision.prototype.__proto__ || Object.getPrototypeOf(AnimatedDivision.prototype), "__detach", this).call(this); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + return { + type: 'division', + input: [this._a.__getNativeTag(), this._b.__getNativeTag()] + }; + } + }]); + return AnimatedDivision; + }(AnimatedWithChildren); + + module.exports = AnimatedDivision; +},247,[239,240,238,242],"AnimatedDivision"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedInterpolation = require(_dependencyMap[0], './AnimatedInterpolation'); + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedWithChildren = require(_dependencyMap[2], './AnimatedWithChildren'); + + var AnimatedModulo = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedModulo, _AnimatedWithChildren); + + function AnimatedModulo(a, modulus) { + babelHelpers.classCallCheck(this, AnimatedModulo); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedModulo.__proto__ || Object.getPrototypeOf(AnimatedModulo)).call(this)); + + _this._a = a; + _this._modulus = modulus; + return _this; + } + + babelHelpers.createClass(AnimatedModulo, [{ + key: "__makeNative", + value: function __makeNative() { + this._a.__makeNative(); + + babelHelpers.get(AnimatedModulo.prototype.__proto__ || Object.getPrototypeOf(AnimatedModulo.prototype), "__makeNative", this).call(this); + } + }, { + key: "__getValue", + value: function __getValue() { + return (this._a.__getValue() % this._modulus + this._modulus) % this._modulus; + } + }, { + key: "interpolate", + value: function interpolate(config) { + return new AnimatedInterpolation(this, config); + } + }, { + key: "__attach", + value: function __attach() { + this._a.__addChild(this); + } + }, { + key: "__detach", + value: function __detach() { + this._a.__removeChild(this); + + babelHelpers.get(AnimatedModulo.prototype.__proto__ || Object.getPrototypeOf(AnimatedModulo.prototype), "__detach", this).call(this); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + return { + type: 'modulus', + input: this._a.__getNativeTag(), + modulus: this._modulus + }; + } + }]); + return AnimatedModulo; + }(AnimatedWithChildren); + + module.exports = AnimatedModulo; +},248,[239,240,242],"AnimatedModulo"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedInterpolation = require(_dependencyMap[0], './AnimatedInterpolation'); + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedValue = require(_dependencyMap[2], './AnimatedValue'); + + var AnimatedWithChildren = require(_dependencyMap[3], './AnimatedWithChildren'); + + var AnimatedMultiplication = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedMultiplication, _AnimatedWithChildren); + + function AnimatedMultiplication(a, b) { + babelHelpers.classCallCheck(this, AnimatedMultiplication); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedMultiplication.__proto__ || Object.getPrototypeOf(AnimatedMultiplication)).call(this)); + + _this._a = typeof a === 'number' ? new AnimatedValue(a) : a; + _this._b = typeof b === 'number' ? new AnimatedValue(b) : b; + return _this; + } + + babelHelpers.createClass(AnimatedMultiplication, [{ + key: "__makeNative", + value: function __makeNative() { + this._a.__makeNative(); + + this._b.__makeNative(); + + babelHelpers.get(AnimatedMultiplication.prototype.__proto__ || Object.getPrototypeOf(AnimatedMultiplication.prototype), "__makeNative", this).call(this); + } + }, { + key: "__getValue", + value: function __getValue() { + return this._a.__getValue() * this._b.__getValue(); + } + }, { + key: "interpolate", + value: function interpolate(config) { + return new AnimatedInterpolation(this, config); + } + }, { + key: "__attach", + value: function __attach() { + this._a.__addChild(this); + + this._b.__addChild(this); + } + }, { + key: "__detach", + value: function __detach() { + this._a.__removeChild(this); + + this._b.__removeChild(this); + + babelHelpers.get(AnimatedMultiplication.prototype.__proto__ || Object.getPrototypeOf(AnimatedMultiplication.prototype), "__detach", this).call(this); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + return { + type: 'multiplication', + input: [this._a.__getNativeTag(), this._b.__getNativeTag()] + }; + } + }]); + return AnimatedMultiplication; + }(AnimatedWithChildren); + + module.exports = AnimatedMultiplication; +},249,[239,240,238,242],"AnimatedMultiplication"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], '../AnimatedEvent'), + AnimatedEvent = _require.AnimatedEvent; + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedStyle = require(_dependencyMap[2], './AnimatedStyle'); + + var NativeAnimatedHelper = require(_dependencyMap[3], '../NativeAnimatedHelper'); + + var ReactNative = require(_dependencyMap[4], 'ReactNative'); + + var invariant = require(_dependencyMap[5], 'fbjs/lib/invariant'); + + var AnimatedProps = function (_AnimatedNode) { + babelHelpers.inherits(AnimatedProps, _AnimatedNode); + + function AnimatedProps(props, callback) { + babelHelpers.classCallCheck(this, AnimatedProps); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedProps.__proto__ || Object.getPrototypeOf(AnimatedProps)).call(this)); + + if (props.style) { + props = babelHelpers.extends({}, props, { + style: new AnimatedStyle(props.style) + }); + } + + _this._props = props; + _this._callback = callback; + + _this.__attach(); + + return _this; + } + + babelHelpers.createClass(AnimatedProps, [{ + key: "__getValue", + value: function __getValue() { + var props = {}; + + for (var key in this._props) { + var value = this._props[key]; + + if (value instanceof AnimatedNode) { + if (!value.__isNative || value instanceof AnimatedStyle) { + props[key] = value.__getValue(); + } + } else if (value instanceof AnimatedEvent) { + props[key] = value.__getHandler(); + } else { + props[key] = value; + } + } + + return props; + } + }, { + key: "__getAnimatedValue", + value: function __getAnimatedValue() { + var props = {}; + + for (var key in this._props) { + var value = this._props[key]; + + if (value instanceof AnimatedNode) { + props[key] = value.__getAnimatedValue(); + } + } + + return props; + } + }, { + key: "__attach", + value: function __attach() { + for (var key in this._props) { + var value = this._props[key]; + + if (value instanceof AnimatedNode) { + value.__addChild(this); + } + } + } + }, { + key: "__detach", + value: function __detach() { + if (this.__isNative && this._animatedView) { + this.__disconnectAnimatedView(); + } + + for (var key in this._props) { + var value = this._props[key]; + + if (value instanceof AnimatedNode) { + value.__removeChild(this); + } + } + + babelHelpers.get(AnimatedProps.prototype.__proto__ || Object.getPrototypeOf(AnimatedProps.prototype), "__detach", this).call(this); + } + }, { + key: "update", + value: function update() { + this._callback(); + } + }, { + key: "__makeNative", + value: function __makeNative() { + if (!this.__isNative) { + this.__isNative = true; + + for (var key in this._props) { + var value = this._props[key]; + + if (value instanceof AnimatedNode) { + value.__makeNative(); + } + } + + if (this._animatedView) { + this.__connectAnimatedView(); + } + } + } + }, { + key: "setNativeView", + value: function setNativeView(animatedView) { + if (this._animatedView === animatedView) { + return; + } + + this._animatedView = animatedView; + + if (this.__isNative) { + this.__connectAnimatedView(); + } + } + }, { + key: "__connectAnimatedView", + value: function __connectAnimatedView() { + invariant(this.__isNative, 'Expected node to be marked as "native"'); + var nativeViewTag = ReactNative.findNodeHandle(this._animatedView); + invariant(nativeViewTag != null, 'Unable to locate attached view in the native tree'); + NativeAnimatedHelper.API.connectAnimatedNodeToView(this.__getNativeTag(), nativeViewTag); + } + }, { + key: "__disconnectAnimatedView", + value: function __disconnectAnimatedView() { + invariant(this.__isNative, 'Expected node to be marked as "native"'); + var nativeViewTag = ReactNative.findNodeHandle(this._animatedView); + invariant(nativeViewTag != null, 'Unable to locate attached view in the native tree'); + NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(this.__getNativeTag(), nativeViewTag); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + var propsConfig = {}; + + for (var propKey in this._props) { + var value = this._props[propKey]; + + if (value instanceof AnimatedNode) { + propsConfig[propKey] = value.__getNativeTag(); + } + } + + return { + type: 'props', + props: propsConfig + }; + } + }]); + return AnimatedProps; + }(AnimatedNode); + + module.exports = AnimatedProps; +},250,[237,240,251,241,74,18],"AnimatedProps"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedNode = require(_dependencyMap[0], './AnimatedNode'); + + var AnimatedTransform = require(_dependencyMap[1], './AnimatedTransform'); + + var AnimatedWithChildren = require(_dependencyMap[2], './AnimatedWithChildren'); + + var NativeAnimatedHelper = require(_dependencyMap[3], '../NativeAnimatedHelper'); + + var flattenStyle = require(_dependencyMap[4], 'flattenStyle'); + + var AnimatedStyle = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedStyle, _AnimatedWithChildren); + + function AnimatedStyle(style) { + babelHelpers.classCallCheck(this, AnimatedStyle); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedStyle.__proto__ || Object.getPrototypeOf(AnimatedStyle)).call(this)); + + style = flattenStyle(style) || {}; + + if (style.transform) { + style = babelHelpers.extends({}, style, { + transform: new AnimatedTransform(style.transform) + }); + } + + _this._style = style; + return _this; + } + + babelHelpers.createClass(AnimatedStyle, [{ + key: "_walkStyleAndGetValues", + value: function _walkStyleAndGetValues(style) { + var updatedStyle = {}; + + for (var key in style) { + var value = style[key]; + + if (value instanceof AnimatedNode) { + if (!value.__isNative) { + updatedStyle[key] = value.__getValue(); + } + } else if (value && !Array.isArray(value) && typeof value === 'object') { + updatedStyle[key] = this._walkStyleAndGetValues(value); + } else { + updatedStyle[key] = value; + } + } + + return updatedStyle; + } + }, { + key: "__getValue", + value: function __getValue() { + return this._walkStyleAndGetValues(this._style); + } + }, { + key: "_walkStyleAndGetAnimatedValues", + value: function _walkStyleAndGetAnimatedValues(style) { + var updatedStyle = {}; + + for (var key in style) { + var value = style[key]; + + if (value instanceof AnimatedNode) { + updatedStyle[key] = value.__getAnimatedValue(); + } else if (value && !Array.isArray(value) && typeof value === 'object') { + updatedStyle[key] = this._walkStyleAndGetAnimatedValues(value); + } + } + + return updatedStyle; + } + }, { + key: "__getAnimatedValue", + value: function __getAnimatedValue() { + return this._walkStyleAndGetAnimatedValues(this._style); + } + }, { + key: "__attach", + value: function __attach() { + for (var key in this._style) { + var value = this._style[key]; + + if (value instanceof AnimatedNode) { + value.__addChild(this); + } + } + } + }, { + key: "__detach", + value: function __detach() { + for (var key in this._style) { + var value = this._style[key]; + + if (value instanceof AnimatedNode) { + value.__removeChild(this); + } + } + + babelHelpers.get(AnimatedStyle.prototype.__proto__ || Object.getPrototypeOf(AnimatedStyle.prototype), "__detach", this).call(this); + } + }, { + key: "__makeNative", + value: function __makeNative() { + babelHelpers.get(AnimatedStyle.prototype.__proto__ || Object.getPrototypeOf(AnimatedStyle.prototype), "__makeNative", this).call(this); + + for (var key in this._style) { + var value = this._style[key]; + + if (value instanceof AnimatedNode) { + value.__makeNative(); + } + } + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + var styleConfig = {}; + + for (var styleKey in this._style) { + if (this._style[styleKey] instanceof AnimatedNode) { + styleConfig[styleKey] = this._style[styleKey].__getNativeTag(); + } + } + + NativeAnimatedHelper.validateStyles(styleConfig); + return { + type: 'style', + style: styleConfig + }; + } + }]); + return AnimatedStyle; + }(AnimatedWithChildren); + + module.exports = AnimatedStyle; +},251,[240,252,242,241,152],"AnimatedStyle"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedNode = require(_dependencyMap[0], './AnimatedNode'); + + var AnimatedWithChildren = require(_dependencyMap[1], './AnimatedWithChildren'); + + var NativeAnimatedHelper = require(_dependencyMap[2], '../NativeAnimatedHelper'); + + var AnimatedTransform = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedTransform, _AnimatedWithChildren); + + function AnimatedTransform(transforms) { + babelHelpers.classCallCheck(this, AnimatedTransform); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedTransform.__proto__ || Object.getPrototypeOf(AnimatedTransform)).call(this)); + + _this._transforms = transforms; + return _this; + } + + babelHelpers.createClass(AnimatedTransform, [{ + key: "__makeNative", + value: function __makeNative() { + babelHelpers.get(AnimatedTransform.prototype.__proto__ || Object.getPrototypeOf(AnimatedTransform.prototype), "__makeNative", this).call(this); + + this._transforms.forEach(function (transform) { + for (var key in transform) { + var value = transform[key]; + + if (value instanceof AnimatedNode) { + value.__makeNative(); + } + } + }); + } + }, { + key: "__getValue", + value: function __getValue() { + return this._transforms.map(function (transform) { + var result = {}; + + for (var key in transform) { + var value = transform[key]; + + if (value instanceof AnimatedNode) { + result[key] = value.__getValue(); + } else { + result[key] = value; + } + } + + return result; + }); + } + }, { + key: "__getAnimatedValue", + value: function __getAnimatedValue() { + return this._transforms.map(function (transform) { + var result = {}; + + for (var key in transform) { + var value = transform[key]; + + if (value instanceof AnimatedNode) { + result[key] = value.__getAnimatedValue(); + } else { + result[key] = value; + } + } + + return result; + }); + } + }, { + key: "__attach", + value: function __attach() { + var _this2 = this; + + this._transforms.forEach(function (transform) { + for (var key in transform) { + var value = transform[key]; + + if (value instanceof AnimatedNode) { + value.__addChild(_this2); + } + } + }); + } + }, { + key: "__detach", + value: function __detach() { + var _this3 = this; + + this._transforms.forEach(function (transform) { + for (var key in transform) { + var value = transform[key]; + + if (value instanceof AnimatedNode) { + value.__removeChild(_this3); + } + } + }); + + babelHelpers.get(AnimatedTransform.prototype.__proto__ || Object.getPrototypeOf(AnimatedTransform.prototype), "__detach", this).call(this); + } + }, { + key: "__getNativeConfig", + value: function __getNativeConfig() { + var transConfigs = []; + + this._transforms.forEach(function (transform) { + for (var key in transform) { + var value = transform[key]; + + if (value instanceof AnimatedNode) { + transConfigs.push({ + type: 'animated', + property: key, + nodeTag: value.__getNativeTag() + }); + } else { + transConfigs.push({ + type: 'static', + property: key, + value: value + }); + } + } + }); + + NativeAnimatedHelper.validateTransform(transConfigs); + return { + type: 'transform', + transforms: transConfigs + }; + } + }]); + return AnimatedTransform; + }(AnimatedWithChildren); + + module.exports = AnimatedTransform; +},252,[240,242,241],"AnimatedTransform"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedValue = require(_dependencyMap[0], './AnimatedValue'); + + var AnimatedNode = require(_dependencyMap[1], './AnimatedNode'); + + var AnimatedTracking = function (_AnimatedNode) { + babelHelpers.inherits(AnimatedTracking, _AnimatedNode); + + function AnimatedTracking(value, parent, animationClass, animationConfig, callback) { + babelHelpers.classCallCheck(this, AnimatedTracking); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedTracking.__proto__ || Object.getPrototypeOf(AnimatedTracking)).call(this)); + + _this._value = value; + _this._parent = parent; + _this._animationClass = animationClass; + _this._animationConfig = animationConfig; + _this._callback = callback; + + _this.__attach(); + + return _this; + } + + babelHelpers.createClass(AnimatedTracking, [{ + key: "__getValue", + value: function __getValue() { + return this._parent.__getValue(); + } + }, { + key: "__attach", + value: function __attach() { + this._parent.__addChild(this); + } + }, { + key: "__detach", + value: function __detach() { + this._parent.__removeChild(this); + + babelHelpers.get(AnimatedTracking.prototype.__proto__ || Object.getPrototypeOf(AnimatedTracking.prototype), "__detach", this).call(this); + } + }, { + key: "update", + value: function update() { + this._value.animate(new this._animationClass(babelHelpers.extends({}, this._animationConfig, { + toValue: this._animationConfig.toValue.__getValue() + })), this._callback); + } + }]); + return AnimatedTracking; + }(AnimatedNode); + + module.exports = AnimatedTracking; +},253,[238,240],"AnimatedTracking"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedValue = require(_dependencyMap[0], './AnimatedValue'); + + var AnimatedWithChildren = require(_dependencyMap[1], './AnimatedWithChildren'); + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var _uniqueId = 1; + + var AnimatedValueXY = function (_AnimatedWithChildren) { + babelHelpers.inherits(AnimatedValueXY, _AnimatedWithChildren); + + function AnimatedValueXY(valueIn) { + babelHelpers.classCallCheck(this, AnimatedValueXY); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedValueXY.__proto__ || Object.getPrototypeOf(AnimatedValueXY)).call(this)); + + var value = valueIn || { + x: 0, + y: 0 + }; + + if (typeof value.x === 'number' && typeof value.y === 'number') { + _this.x = new AnimatedValue(value.x); + _this.y = new AnimatedValue(value.y); + } else { + invariant(value.x instanceof AnimatedValue && value.y instanceof AnimatedValue, 'AnimatedValueXY must be initalized with an object of numbers or ' + 'AnimatedValues.'); + _this.x = value.x; + _this.y = value.y; + } + + _this._listeners = {}; + return _this; + } + + babelHelpers.createClass(AnimatedValueXY, [{ + key: "setValue", + value: function setValue(value) { + this.x.setValue(value.x); + this.y.setValue(value.y); + } + }, { + key: "setOffset", + value: function setOffset(offset) { + this.x.setOffset(offset.x); + this.y.setOffset(offset.y); + } + }, { + key: "flattenOffset", + value: function flattenOffset() { + this.x.flattenOffset(); + this.y.flattenOffset(); + } + }, { + key: "extractOffset", + value: function extractOffset() { + this.x.extractOffset(); + this.y.extractOffset(); + } + }, { + key: "__getValue", + value: function __getValue() { + return { + x: this.x.__getValue(), + y: this.y.__getValue() + }; + } + }, { + key: "resetAnimation", + value: function resetAnimation(callback) { + this.x.resetAnimation(); + this.y.resetAnimation(); + callback && callback(this.__getValue()); + } + }, { + key: "stopAnimation", + value: function stopAnimation(callback) { + this.x.stopAnimation(); + this.y.stopAnimation(); + callback && callback(this.__getValue()); + } + }, { + key: "addListener", + value: function addListener(callback) { + var _this2 = this; + + var id = String(_uniqueId++); + + var jointCallback = function jointCallback(_ref) { + var number = _ref.value; + callback(_this2.__getValue()); + }; + + this._listeners[id] = { + x: this.x.addListener(jointCallback), + y: this.y.addListener(jointCallback) + }; + return id; + } + }, { + key: "removeListener", + value: function removeListener(id) { + this.x.removeListener(this._listeners[id].x); + this.y.removeListener(this._listeners[id].y); + delete this._listeners[id]; + } + }, { + key: "removeAllListeners", + value: function removeAllListeners() { + this.x.removeAllListeners(); + this.y.removeAllListeners(); + this._listeners = {}; + } + }, { + key: "getLayout", + value: function getLayout() { + return { + left: this.x, + top: this.y + }; + } + }, { + key: "getTranslateTransform", + value: function getTranslateTransform() { + return [{ + translateX: this.x + }, { + translateY: this.y + }]; + } + }]); + return AnimatedValueXY; + }(AnimatedWithChildren); + + module.exports = AnimatedValueXY; +},254,[238,242,18],"AnimatedValueXY"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Animation = require(_dependencyMap[0], './Animation'); + + var _require = require(_dependencyMap[1], '../NativeAnimatedHelper'), + shouldUseNativeDriver = _require.shouldUseNativeDriver; + + var DecayAnimation = function (_Animation) { + babelHelpers.inherits(DecayAnimation, _Animation); + + function DecayAnimation(config) { + babelHelpers.classCallCheck(this, DecayAnimation); + + var _this = babelHelpers.possibleConstructorReturn(this, (DecayAnimation.__proto__ || Object.getPrototypeOf(DecayAnimation)).call(this)); + + _this._deceleration = config.deceleration !== undefined ? config.deceleration : 0.998; + _this._velocity = config.velocity; + _this._useNativeDriver = shouldUseNativeDriver(config); + _this.__isInteraction = config.isInteraction !== undefined ? config.isInteraction : true; + _this.__iterations = config.iterations !== undefined ? config.iterations : 1; + return _this; + } + + babelHelpers.createClass(DecayAnimation, [{ + key: "__getNativeAnimationConfig", + value: function __getNativeAnimationConfig() { + return { + type: 'decay', + deceleration: this._deceleration, + velocity: this._velocity, + iterations: this.__iterations + }; + } + }, { + key: "start", + value: function start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) { + this.__active = true; + this._lastValue = fromValue; + this._fromValue = fromValue; + this._onUpdate = onUpdate; + this.__onEnd = onEnd; + this._startTime = Date.now(); + + if (this._useNativeDriver) { + this.__startNativeAnimation(animatedValue); + } else { + this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this)); + } + } + }, { + key: "onUpdate", + value: function onUpdate() { + var now = Date.now(); + var value = this._fromValue + this._velocity / (1 - this._deceleration) * (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime))); + + this._onUpdate(value); + + if (Math.abs(this._lastValue - value) < 0.1) { + this.__debouncedOnEnd({ + finished: true + }); + + return; + } + + this._lastValue = value; + + if (this.__active) { + this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this)); + } + } + }, { + key: "stop", + value: function stop() { + babelHelpers.get(DecayAnimation.prototype.__proto__ || Object.getPrototypeOf(DecayAnimation.prototype), "stop", this).call(this); + this.__active = false; + global.cancelAnimationFrame(this._animationFrame); + + this.__debouncedOnEnd({ + finished: false + }); + } + }]); + return DecayAnimation; + }(Animation); + + module.exports = DecayAnimation; +},255,[256,241],"DecayAnimation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeAnimatedHelper = require(_dependencyMap[0], 'NativeAnimatedHelper'); + + var Animation = function () { + function Animation() { + babelHelpers.classCallCheck(this, Animation); + } + + babelHelpers.createClass(Animation, [{ + key: "start", + value: function start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) {} + }, { + key: "stop", + value: function stop() { + if (this.__nativeId) { + NativeAnimatedHelper.API.stopAnimation(this.__nativeId); + } + } + }, { + key: "__getNativeAnimationConfig", + value: function __getNativeAnimationConfig() { + throw new Error('This animation type cannot be offloaded to native'); + } + }, { + key: "__debouncedOnEnd", + value: function __debouncedOnEnd(result) { + var onEnd = this.__onEnd; + this.__onEnd = null; + onEnd && onEnd(result); + } + }, { + key: "__startNativeAnimation", + value: function __startNativeAnimation(animatedValue) { + animatedValue.__makeNative(); + + this.__nativeId = NativeAnimatedHelper.generateNewAnimationId(); + NativeAnimatedHelper.API.startAnimatingNode(this.__nativeId, animatedValue.__getNativeTag(), this.__getNativeAnimationConfig(), this.__debouncedOnEnd.bind(this)); + } + }]); + return Animation; + }(); + + module.exports = Animation; +},256,[241],"Animation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedValue = require(_dependencyMap[0], '../nodes/AnimatedValue'); + + var AnimatedValueXY = require(_dependencyMap[1], '../nodes/AnimatedValueXY'); + + var Animation = require(_dependencyMap[2], './Animation'); + + var SpringConfig = require(_dependencyMap[3], '../SpringConfig'); + + var invariant = require(_dependencyMap[4], 'fbjs/lib/invariant'); + + var _require = require(_dependencyMap[5], '../NativeAnimatedHelper'), + shouldUseNativeDriver = _require.shouldUseNativeDriver; + + function withDefault(value, defaultValue) { + if (value === undefined || value === null) { + return defaultValue; + } + + return value; + } + + var SpringAnimation = function (_Animation) { + babelHelpers.inherits(SpringAnimation, _Animation); + + function SpringAnimation(config) { + babelHelpers.classCallCheck(this, SpringAnimation); + + var _this = babelHelpers.possibleConstructorReturn(this, (SpringAnimation.__proto__ || Object.getPrototypeOf(SpringAnimation)).call(this)); + + _this._overshootClamping = withDefault(config.overshootClamping, false); + _this._restDisplacementThreshold = withDefault(config.restDisplacementThreshold, 0.001); + _this._restSpeedThreshold = withDefault(config.restSpeedThreshold, 0.001); + _this._initialVelocity = withDefault(config.velocity, 0); + _this._lastVelocity = withDefault(config.velocity, 0); + _this._toValue = config.toValue; + _this._delay = withDefault(config.delay, 0); + _this._useNativeDriver = shouldUseNativeDriver(config); + _this.__isInteraction = config.isInteraction !== undefined ? config.isInteraction : true; + _this.__iterations = config.iterations !== undefined ? config.iterations : 1; + + if (config.stiffness !== undefined || config.damping !== undefined || config.mass !== undefined) { + invariant(config.bounciness === undefined && config.speed === undefined && config.tension === undefined && config.friction === undefined, 'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one'); + _this._stiffness = withDefault(config.stiffness, 100); + _this._damping = withDefault(config.damping, 10); + _this._mass = withDefault(config.mass, 1); + } else if (config.bounciness !== undefined || config.speed !== undefined) { + invariant(config.tension === undefined && config.friction === undefined && config.stiffness === undefined && config.damping === undefined && config.mass === undefined, 'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one'); + var springConfig = SpringConfig.fromBouncinessAndSpeed(withDefault(config.bounciness, 8), withDefault(config.speed, 12)); + _this._stiffness = springConfig.stiffness; + _this._damping = springConfig.damping; + _this._mass = 1; + } else { + var _springConfig = SpringConfig.fromOrigamiTensionAndFriction(withDefault(config.tension, 40), withDefault(config.friction, 7)); + + _this._stiffness = _springConfig.stiffness; + _this._damping = _springConfig.damping; + _this._mass = 1; + } + + invariant(_this._stiffness > 0, 'Stiffness value must be greater than 0'); + invariant(_this._damping > 0, 'Damping value must be greater than 0'); + invariant(_this._mass > 0, 'Mass value must be greater than 0'); + return _this; + } + + babelHelpers.createClass(SpringAnimation, [{ + key: "__getNativeAnimationConfig", + value: function __getNativeAnimationConfig() { + return { + type: 'spring', + overshootClamping: this._overshootClamping, + restDisplacementThreshold: this._restDisplacementThreshold, + restSpeedThreshold: this._restSpeedThreshold, + stiffness: this._stiffness, + damping: this._damping, + mass: this._mass, + initialVelocity: withDefault(this._initialVelocity, this._lastVelocity), + toValue: this._toValue, + iterations: this.__iterations + }; + } + }, { + key: "start", + value: function start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) { + var _this2 = this; + + this.__active = true; + this._startPosition = fromValue; + this._lastPosition = this._startPosition; + this._onUpdate = onUpdate; + this.__onEnd = onEnd; + this._lastTime = Date.now(); + this._frameTime = 0.0; + + if (previousAnimation instanceof SpringAnimation) { + var internalState = previousAnimation.getInternalState(); + this._lastPosition = internalState.lastPosition; + this._lastVelocity = internalState.lastVelocity; + this._initialVelocity = this._lastVelocity; + this._lastTime = internalState.lastTime; + } + + var start = function start() { + if (_this2._useNativeDriver) { + _this2.__startNativeAnimation(animatedValue); + } else { + _this2.onUpdate(); + } + }; + + if (this._delay) { + this._timeout = setTimeout(start, this._delay); + } else { + start(); + } + } + }, { + key: "getInternalState", + value: function getInternalState() { + return { + lastPosition: this._lastPosition, + lastVelocity: this._lastVelocity, + lastTime: this._lastTime + }; + } + }, { + key: "onUpdate", + value: function onUpdate() { + var MAX_STEPS = 64; + var now = Date.now(); + + if (now > this._lastTime + MAX_STEPS) { + now = this._lastTime + MAX_STEPS; + } + + var deltaTime = (now - this._lastTime) / 1000; + this._frameTime += deltaTime; + var c = this._damping; + var m = this._mass; + var k = this._stiffness; + var v0 = -this._initialVelocity; + var zeta = c / (2 * Math.sqrt(k * m)); + var omega0 = Math.sqrt(k / m); + var omega1 = omega0 * Math.sqrt(1.0 - zeta * zeta); + var x0 = this._toValue - this._startPosition; + var position = 0.0; + var velocity = 0.0; + var t = this._frameTime; + + if (zeta < 1) { + var envelope = Math.exp(-zeta * omega0 * t); + position = this._toValue - envelope * ((v0 + zeta * omega0 * x0) / omega1 * Math.sin(omega1 * t) + x0 * Math.cos(omega1 * t)); + velocity = zeta * omega0 * envelope * (Math.sin(omega1 * t) * (v0 + zeta * omega0 * x0) / omega1 + x0 * Math.cos(omega1 * t)) - envelope * (Math.cos(omega1 * t) * (v0 + zeta * omega0 * x0) - omega1 * x0 * Math.sin(omega1 * t)); + } else { + var _envelope = Math.exp(-omega0 * t); + + position = this._toValue - _envelope * (x0 + (v0 + omega0 * x0) * t); + velocity = _envelope * (v0 * (t * omega0 - 1) + t * x0 * (omega0 * omega0)); + } + + this._lastTime = now; + this._lastPosition = position; + this._lastVelocity = velocity; + + this._onUpdate(position); + + if (!this.__active) { + return; + } + + var isOvershooting = false; + + if (this._overshootClamping && this._stiffness !== 0) { + if (this._startPosition < this._toValue) { + isOvershooting = position > this._toValue; + } else { + isOvershooting = position < this._toValue; + } + } + + var isVelocity = Math.abs(velocity) <= this._restSpeedThreshold; + + var isDisplacement = true; + + if (this._stiffness !== 0) { + isDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold; + } + + if (isOvershooting || isVelocity && isDisplacement) { + if (this._stiffness !== 0) { + this._lastPosition = this._toValue; + this._lastVelocity = 0; + + this._onUpdate(this._toValue); + } + + this.__debouncedOnEnd({ + finished: true + }); + + return; + } + + this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this)); + } + }, { + key: "stop", + value: function stop() { + babelHelpers.get(SpringAnimation.prototype.__proto__ || Object.getPrototypeOf(SpringAnimation.prototype), "stop", this).call(this); + this.__active = false; + clearTimeout(this._timeout); + global.cancelAnimationFrame(this._animationFrame); + + this.__debouncedOnEnd({ + finished: false + }); + } + }]); + return SpringAnimation; + }(Animation); + + module.exports = SpringAnimation; +},257,[238,254,256,258,18,241],"SpringAnimation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function stiffnessFromOrigamiValue(oValue) { + return (oValue - 30) * 3.62 + 194; + } + + function dampingFromOrigamiValue(oValue) { + return (oValue - 8) * 3 + 25; + } + + function fromOrigamiTensionAndFriction(tension, friction) { + return { + stiffness: stiffnessFromOrigamiValue(tension), + damping: dampingFromOrigamiValue(friction) + }; + } + + function fromBouncinessAndSpeed(bounciness, speed) { + function normalize(value, startValue, endValue) { + return (value - startValue) / (endValue - startValue); + } + + function projectNormal(n, start, end) { + return start + n * (end - start); + } + + function linearInterpolation(t, start, end) { + return t * end + (1 - t) * start; + } + + function quadraticOutInterpolation(t, start, end) { + return linearInterpolation(2 * t - t * t, start, end); + } + + function b3Friction1(x) { + return 0.0007 * Math.pow(x, 3) - 0.031 * Math.pow(x, 2) + 0.64 * x + 1.28; + } + + function b3Friction2(x) { + return 0.000044 * Math.pow(x, 3) - 0.006 * Math.pow(x, 2) + 0.36 * x + 2; + } + + function b3Friction3(x) { + return 0.00000045 * Math.pow(x, 3) - 0.000332 * Math.pow(x, 2) + 0.1078 * x + 5.84; + } + + function b3Nobounce(tension) { + if (tension <= 18) { + return b3Friction1(tension); + } else if (tension > 18 && tension <= 44) { + return b3Friction2(tension); + } else { + return b3Friction3(tension); + } + } + + var b = normalize(bounciness / 1.7, 0, 20); + b = projectNormal(b, 0, 0.8); + var s = normalize(speed / 1.7, 0, 20); + var bouncyTension = projectNormal(s, 0.5, 200); + var bouncyFriction = quadraticOutInterpolation(b, b3Nobounce(bouncyTension), 0.01); + return { + stiffness: stiffnessFromOrigamiValue(bouncyTension), + damping: dampingFromOrigamiValue(bouncyFriction) + }; + } + + module.exports = { + fromOrigamiTensionAndFriction: fromOrigamiTensionAndFriction, + fromBouncinessAndSpeed: fromBouncinessAndSpeed + }; +},258,[],"SpringConfig"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var AnimatedValue = require(_dependencyMap[0], '../nodes/AnimatedValue'); + + var AnimatedValueXY = require(_dependencyMap[1], '../nodes/AnimatedValueXY'); + + var Animation = require(_dependencyMap[2], './Animation'); + + var _require = require(_dependencyMap[3], '../NativeAnimatedHelper'), + shouldUseNativeDriver = _require.shouldUseNativeDriver; + + var _easeInOut = void 0; + + function easeInOut() { + if (!_easeInOut) { + var Easing = require(_dependencyMap[4], 'Easing'); + + _easeInOut = Easing.inOut(Easing.ease); + } + + return _easeInOut; + } + + var TimingAnimation = function (_Animation) { + babelHelpers.inherits(TimingAnimation, _Animation); + + function TimingAnimation(config) { + babelHelpers.classCallCheck(this, TimingAnimation); + + var _this = babelHelpers.possibleConstructorReturn(this, (TimingAnimation.__proto__ || Object.getPrototypeOf(TimingAnimation)).call(this)); + + _this._toValue = config.toValue; + _this._easing = config.easing !== undefined ? config.easing : easeInOut(); + _this._duration = config.duration !== undefined ? config.duration : 500; + _this._delay = config.delay !== undefined ? config.delay : 0; + _this.__iterations = config.iterations !== undefined ? config.iterations : 1; + _this.__isInteraction = config.isInteraction !== undefined ? config.isInteraction : true; + _this._useNativeDriver = shouldUseNativeDriver(config); + return _this; + } + + babelHelpers.createClass(TimingAnimation, [{ + key: "__getNativeAnimationConfig", + value: function __getNativeAnimationConfig() { + var frameDuration = 1000.0 / 60.0; + var frames = []; + + for (var dt = 0.0; dt < this._duration; dt += frameDuration) { + frames.push(this._easing(dt / this._duration)); + } + + frames.push(this._easing(1)); + return { + type: 'frames', + frames: frames, + toValue: this._toValue, + iterations: this.__iterations + }; + } + }, { + key: "start", + value: function start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) { + var _this2 = this; + + this.__active = true; + this._fromValue = fromValue; + this._onUpdate = onUpdate; + this.__onEnd = onEnd; + + var start = function start() { + if (_this2._duration === 0 && !_this2._useNativeDriver) { + _this2._onUpdate(_this2._toValue); + + _this2.__debouncedOnEnd({ + finished: true + }); + } else { + _this2._startTime = Date.now(); + + if (_this2._useNativeDriver) { + _this2.__startNativeAnimation(animatedValue); + } else { + _this2._animationFrame = requestAnimationFrame(_this2.onUpdate.bind(_this2)); + } + } + }; + + if (this._delay) { + this._timeout = setTimeout(start, this._delay); + } else { + start(); + } + } + }, { + key: "onUpdate", + value: function onUpdate() { + var now = Date.now(); + + if (now >= this._startTime + this._duration) { + if (this._duration === 0) { + this._onUpdate(this._toValue); + } else { + this._onUpdate(this._fromValue + this._easing(1) * (this._toValue - this._fromValue)); + } + + this.__debouncedOnEnd({ + finished: true + }); + + return; + } + + this._onUpdate(this._fromValue + this._easing((now - this._startTime) / this._duration) * (this._toValue - this._fromValue)); + + if (this.__active) { + this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this)); + } + } + }, { + key: "stop", + value: function stop() { + babelHelpers.get(TimingAnimation.prototype.__proto__ || Object.getPrototypeOf(TimingAnimation.prototype), "stop", this).call(this); + this.__active = false; + clearTimeout(this._timeout); + global.cancelAnimationFrame(this._animationFrame); + + this.__debouncedOnEnd({ + finished: false + }); + } + }]); + return TimingAnimation; + }(Animation); + + module.exports = TimingAnimation; +},259,[238,254,256,241,260],"TimingAnimation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _ease = void 0; + + var Easing = function () { + function Easing() { + babelHelpers.classCallCheck(this, Easing); + } + + babelHelpers.createClass(Easing, null, [{ + key: "step0", + value: function step0(n) { + return n > 0 ? 1 : 0; + } + }, { + key: "step1", + value: function step1(n) { + return n >= 1 ? 1 : 0; + } + }, { + key: "linear", + value: function linear(t) { + return t; + } + }, { + key: "ease", + value: function ease(t) { + if (!_ease) { + _ease = Easing.bezier(0.42, 0, 1, 1); + } + + return _ease(t); + } + }, { + key: "quad", + value: function quad(t) { + return t * t; + } + }, { + key: "cubic", + value: function cubic(t) { + return t * t * t; + } + }, { + key: "poly", + value: function poly(n) { + return function (t) { + return Math.pow(t, n); + }; + } + }, { + key: "sin", + value: function sin(t) { + return 1 - Math.cos(t * Math.PI / 2); + } + }, { + key: "circle", + value: function circle(t) { + return 1 - Math.sqrt(1 - t * t); + } + }, { + key: "exp", + value: function exp(t) { + return Math.pow(2, 10 * (t - 1)); + } + }, { + key: "elastic", + value: function elastic() { + var bounciness = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + var p = bounciness * Math.PI; + return function (t) { + return 1 - Math.pow(Math.cos(t * Math.PI / 2), 3) * Math.cos(t * p); + }; + } + }, { + key: "back", + value: function back(s) { + if (s === undefined) { + s = 1.70158; + } + + return function (t) { + return t * t * ((s + 1) * t - s); + }; + } + }, { + key: "bounce", + value: function bounce(t) { + if (t < 1 / 2.75) { + return 7.5625 * t * t; + } + + if (t < 2 / 2.75) { + t -= 1.5 / 2.75; + return 7.5625 * t * t + 0.75; + } + + if (t < 2.5 / 2.75) { + t -= 2.25 / 2.75; + return 7.5625 * t * t + 0.9375; + } + + t -= 2.625 / 2.75; + return 7.5625 * t * t + 0.984375; + } + }, { + key: "bezier", + value: function bezier(x1, y1, x2, y2) { + var _bezier = require(_dependencyMap[0], 'bezier'); + + return _bezier(x1, y1, x2, y2); + } + }, { + key: "in", + value: function _in(easing) { + return easing; + } + }, { + key: "out", + value: function out(easing) { + return function (t) { + return 1 - easing(1 - t); + }; + } + }, { + key: "inOut", + value: function inOut(easing) { + return function (t) { + if (t < 0.5) { + return easing(t * 2) / 2; + } + + return 1 - easing((1 - t) * 2) / 2; + }; + } + }]); + return Easing; + }(); + + module.exports = Easing; +},260,[261],"Easing"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NEWTON_ITERATIONS = 4; + var NEWTON_MIN_SLOPE = 0.001; + var SUBDIVISION_PRECISION = 0.0000001; + var SUBDIVISION_MAX_ITERATIONS = 10; + var kSplineTableSize = 11; + var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); + var float32ArraySupported = typeof Float32Array === 'function'; + + function A(aA1, aA2) { + return 1.0 - 3.0 * aA2 + 3.0 * aA1; + } + + function B(aA1, aA2) { + return 3.0 * aA2 - 6.0 * aA1; + } + + function C(aA1) { + return 3.0 * aA1; + } + + function calcBezier(aT, aA1, aA2) { + return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; + } + + function getSlope(aT, aA1, aA2) { + return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); + } + + function binarySubdivide(aX, aA, aB, mX1, mX2) { + var currentX, + currentT, + i = 0; + + do { + currentT = aA + (aB - aA) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - aX; + + if (currentX > 0.0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + + return currentT; + } + + function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { + for (var i = 0; i < NEWTON_ITERATIONS; ++i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + + if (currentSlope === 0.0) { + return aGuessT; + } + + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + + return aGuessT; + } + + module.exports = function bezier(mX1, mY1, mX2, mY2) { + if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { + throw new Error('bezier x values must be in [0, 1] range'); + } + + var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + + if (mX1 !== mY1 || mX2 !== mY2) { + for (var i = 0; i < kSplineTableSize; ++i) { + sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); + } + } + + function getTForX(aX) { + var intervalStart = 0.0; + var currentSample = 1; + var lastSample = kSplineTableSize - 1; + + for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + + --currentSample; + var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); + var guessForT = intervalStart + dist * kSampleStepSize; + var initialSlope = getSlope(guessForT, mX1, mX2); + + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT, mX1, mX2); + } else if (initialSlope === 0.0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); + } + } + + return function BezierEasing(x) { + if (mX1 === mY1 && mX2 === mY2) { + return x; + } + + if (x === 0) { + return 0; + } + + if (x === 1) { + return 1; + } + + return calcBezier(getTForX(x), mY1, mY2); + }; + }; +},261,[],"bezier"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Animated/src/createAnimatedComponent.js"; + + var _require = require(_dependencyMap[0], './AnimatedEvent'), + AnimatedEvent = _require.AnimatedEvent; + + var AnimatedProps = require(_dependencyMap[1], './nodes/AnimatedProps'); + + var React = require(_dependencyMap[2], 'React'); + + var ViewStylePropTypes = require(_dependencyMap[3], 'ViewStylePropTypes'); + + function createAnimatedComponent(Component) { + var AnimatedComponent = function (_React$Component) { + babelHelpers.inherits(AnimatedComponent, _React$Component); + + function AnimatedComponent(props) { + babelHelpers.classCallCheck(this, AnimatedComponent); + + var _this = babelHelpers.possibleConstructorReturn(this, (AnimatedComponent.__proto__ || Object.getPrototypeOf(AnimatedComponent)).call(this, props)); + + _this._invokeAnimatedPropsCallbackOnMount = false; + _this._eventDetachers = []; + + _this._animatedPropsCallback = function () { + if (_this._component == null) { + _this._invokeAnimatedPropsCallbackOnMount = true; + } else if (AnimatedComponent.__skipSetNativeProps_FOR_TESTS_ONLY || typeof _this._component.setNativeProps !== 'function') { + _this.forceUpdate(); + } else if (!_this._propsAnimated.__isNative) { + _this._component.setNativeProps(_this._propsAnimated.__getAnimatedValue()); + } else { + throw new Error('Attempting to run JS driven animation on animated ' + 'node that has been moved to "native" earlier by starting an ' + 'animation with `useNativeDriver: true`'); + } + }; + + _this._setComponentRef = _this._setComponentRef.bind(_this); + return _this; + } + + babelHelpers.createClass(AnimatedComponent, [{ + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._propsAnimated && this._propsAnimated.__detach(); + + this._detachNativeEvents(); + } + }, { + key: "setNativeProps", + value: function setNativeProps(props) { + this._component.setNativeProps(props); + } + }, { + key: "componentWillMount", + value: function componentWillMount() { + this._attachProps(this.props); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + if (this._invokeAnimatedPropsCallbackOnMount) { + this._invokeAnimatedPropsCallbackOnMount = false; + + this._animatedPropsCallback(); + } + + this._propsAnimated.setNativeView(this._component); + + this._attachNativeEvents(); + } + }, { + key: "_attachNativeEvents", + value: function _attachNativeEvents() { + var _this2 = this; + + var scrollableNode = this._component.getScrollableNode ? this._component.getScrollableNode() : this._component; + + var _loop = function _loop(key) { + var prop = _this2.props[key]; + + if (prop instanceof AnimatedEvent && prop.__isNative) { + prop.__attach(scrollableNode, key); + + _this2._eventDetachers.push(function () { + return prop.__detach(scrollableNode, key); + }); + } + }; + + for (var key in this.props) { + _loop(key); + } + } + }, { + key: "_detachNativeEvents", + value: function _detachNativeEvents() { + this._eventDetachers.forEach(function (remove) { + return remove(); + }); + + this._eventDetachers = []; + } + }, { + key: "_attachProps", + value: function _attachProps(nextProps) { + var oldPropsAnimated = this._propsAnimated; + this._propsAnimated = new AnimatedProps(nextProps, this._animatedPropsCallback); + oldPropsAnimated && oldPropsAnimated.__detach(); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(newProps) { + this._attachProps(newProps); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (this._component !== this._prevComponent) { + this._propsAnimated.setNativeView(this._component); + } + + if (this._component !== this._prevComponent || prevProps !== this.props) { + this._detachNativeEvents(); + + this._attachNativeEvents(); + } + } + }, { + key: "render", + value: function render() { + var props = this._propsAnimated.__getValue(); + + return React.createElement(Component, babelHelpers.extends({}, props, { + ref: this._setComponentRef, + collapsable: this._propsAnimated.__isNative ? false : props.collapsable, + __source: { + fileName: _jsxFileName, + lineNumber: 147 + } + })); + } + }, { + key: "_setComponentRef", + value: function _setComponentRef(c) { + this._prevComponent = this._component; + this._component = c; + } + }, { + key: "getNode", + value: function getNode() { + return this._component; + } + }]); + return AnimatedComponent; + }(React.Component); + + AnimatedComponent.__skipSetNativeProps_FOR_TESTS_ONLY = false; + var propTypes = Component.propTypes; + AnimatedComponent.propTypes = { + style: function style(props, propName, componentName) { + if (!propTypes) { + return; + } + + for (var key in ViewStylePropTypes) { + if (!propTypes[key] && props[key] !== undefined) { + console.warn('You are setting the style `{ ' + key + ': ... }` as a prop. You ' + 'should nest it in a style object. ' + 'E.g. `{ style: { ' + key + ': ... } }`'); + } + } + } + }; + return AnimatedComponent; + } + + module.exports = createAnimatedComponent; +},262,[237,250,171,180],"createAnimatedComponent"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Image/Image.android.js"; + + var ImageResizeMode = require(_dependencyMap[0], 'ImageResizeMode'); + + var ImageStylePropTypes = require(_dependencyMap[1], 'ImageStylePropTypes'); + + var NativeMethodsMixin = require(_dependencyMap[2], 'NativeMethodsMixin'); + + var NativeModules = require(_dependencyMap[3], 'NativeModules'); + + var React = require(_dependencyMap[4], 'React'); + + var PropTypes = require(_dependencyMap[5], 'prop-types'); + + var ReactNativeViewAttributes = require(_dependencyMap[6], 'ReactNativeViewAttributes'); + + var Set = require(_dependencyMap[7], 'Set'); + + var StyleSheet = require(_dependencyMap[8], 'StyleSheet'); + + var StyleSheetPropType = require(_dependencyMap[9], 'StyleSheetPropType'); + + var View = require(_dependencyMap[10], 'View'); + + var ViewPropTypes = require(_dependencyMap[11], 'ViewPropTypes'); + + var ViewStylePropTypes = require(_dependencyMap[12], 'ViewStylePropTypes'); + + var createReactClass = require(_dependencyMap[13], 'create-react-class'); + + var filterObject = require(_dependencyMap[14], 'fbjs/lib/filterObject'); + + var flattenStyle = require(_dependencyMap[15], 'flattenStyle'); + + var merge = require(_dependencyMap[16], 'merge'); + + var requireNativeComponent = require(_dependencyMap[17], 'requireNativeComponent'); + + var resolveAssetSource = require(_dependencyMap[18], 'resolveAssetSource'); + + var ImageLoader = NativeModules.ImageLoader; + var _requestId = 1; + + function generateRequestId() { + return _requestId++; + } + + var ImageViewAttributes = merge(ReactNativeViewAttributes.UIView, { + src: true, + loadingIndicatorSrc: true, + resizeMethod: true, + resizeMode: true, + progressiveRenderingEnabled: true, + fadeDuration: true, + shouldNotifyLoadEvents: true + }); + var ViewStyleKeys = new Set(Object.keys(ViewStylePropTypes)); + var ImageSpecificStyleKeys = new Set(Object.keys(ImageStylePropTypes).filter(function (x) { + return !ViewStyleKeys.has(x); + })); + var Image = createReactClass({ + displayName: 'Image', + propTypes: babelHelpers.extends({}, ViewPropTypes, { + style: StyleSheetPropType(ImageStylePropTypes), + source: PropTypes.oneOfType([PropTypes.shape({ + uri: PropTypes.string, + headers: PropTypes.objectOf(PropTypes.string) + }), PropTypes.number, PropTypes.arrayOf(PropTypes.shape({ + uri: PropTypes.string, + width: PropTypes.number, + height: PropTypes.number, + headers: PropTypes.objectOf(PropTypes.string) + }))]), + blurRadius: PropTypes.number, + loadingIndicatorSource: PropTypes.oneOfType([PropTypes.shape({ + uri: PropTypes.string + }), PropTypes.number]), + progressiveRenderingEnabled: PropTypes.bool, + fadeDuration: PropTypes.number, + onLoadStart: PropTypes.func, + onError: PropTypes.func, + onLoad: PropTypes.func, + onLoadEnd: PropTypes.func, + testID: PropTypes.string, + resizeMethod: PropTypes.oneOf(['auto', 'resize', 'scale']), + resizeMode: PropTypes.oneOf(['cover', 'contain', 'stretch', 'center']) + }), + statics: { + resizeMode: ImageResizeMode, + getSize: function getSize(url, success, failure) { + return ImageLoader.getSize(url).then(function (sizes) { + success(sizes.width, sizes.height); + }).catch(failure || function () { + console.warn('Failed to get size for image: ' + url); + }); + }, + prefetch: function prefetch(url, callback) { + var requestId = generateRequestId(); + callback && callback(requestId); + return ImageLoader.prefetchImage(url, requestId); + }, + abortPrefetch: function abortPrefetch(requestId) { + ImageLoader.abortRequest(requestId); + }, + queryCache: function queryCache(urls) { + return regeneratorRuntime.async(function queryCache$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return regeneratorRuntime.awrap(ImageLoader.queryCache(urls)); + + case 2: + return _context.abrupt("return", _context.sent); + + case 3: + case "end": + return _context.stop(); + } + } + }, null, this); + }, + resolveAssetSource: resolveAssetSource + }, + mixins: [NativeMethodsMixin], + viewConfig: { + uiViewClassName: 'RCTView', + validAttributes: ReactNativeViewAttributes.RCTView + }, + contextTypes: { + isInAParentText: PropTypes.bool + }, + render: function render() { + var source = resolveAssetSource(this.props.source); + var loadingIndicatorSource = resolveAssetSource(this.props.loadingIndicatorSource); + + if (source && source.uri === '') { + console.warn('source.uri should not be an empty string'); + } + + if (this.props.src) { + console.warn('The component requires a `source` property rather than `src`.'); + } + + if (this.props.children) { + throw new Error('The component cannot contain children. If you want to render content on top of the image, consider using the component or absolute positioning.'); + } + + if (source && (source.uri || Array.isArray(source))) { + var style = void 0; + var sources = void 0; + + if (source.uri) { + var _width = source.width, + _height = source.height; + style = flattenStyle([{ + width: _width, + height: _height + }, styles.base, this.props.style]); + sources = [{ + uri: source.uri + }]; + } else { + style = flattenStyle([styles.base, this.props.style]); + sources = source; + } + + var _props = this.props, + onLoadStart = _props.onLoadStart, + onLoad = _props.onLoad, + onLoadEnd = _props.onLoadEnd, + onError = _props.onError; + var nativeProps = merge(this.props, { + style: style, + shouldNotifyLoadEvents: !!(onLoadStart || onLoad || onLoadEnd || onError), + src: sources, + headers: source.headers, + loadingIndicatorSrc: loadingIndicatorSource ? loadingIndicatorSource.uri : null + }); + + if (this.context.isInAParentText) { + return React.createElement(RCTTextInlineImage, babelHelpers.extends({}, nativeProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 302 + } + })); + } else { + return React.createElement(RKImage, babelHelpers.extends({}, nativeProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 304 + } + })); + } + } + + return null; + } + }); + var styles = StyleSheet.create({ + base: { + overflow: 'hidden' + } + }); + var cfg = { + nativeOnly: { + src: true, + headers: true, + loadingIndicatorSrc: true, + shouldNotifyLoadEvents: true + } + }; + var RKImage = requireNativeComponent('RCTImageView', Image, cfg); + var RCTTextInlineImage = requireNativeComponent('RCTTextInlineImage', Image, cfg); + module.exports = Image; +},263,[190,189,169,68,171,24,212,83,209,179,211,172,180,213,264,152,175,186,201],"Image"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + function filterObject(object, callback, context) { + if (!object) { + return null; + } + + var result = {}; + + for (var name in object) { + if (hasOwnProperty.call(object, name) && callback.call(context, object[name], name, object)) { + result[name] = object[name]; + } + } + + return result; + } + + module.exports = filterObject; +},264,[],"fbjs/lib/filterObject.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js"; + + var Animated = require(_dependencyMap[0], 'Animated'); + + var ColorPropType = require(_dependencyMap[1], 'ColorPropType'); + + var EdgeInsetsPropType = require(_dependencyMap[2], 'EdgeInsetsPropType'); + + var Platform = require(_dependencyMap[3], 'Platform'); + + var PointPropType = require(_dependencyMap[4], 'PointPropType'); + + var PropTypes = require(_dependencyMap[5], 'prop-types'); + + var React = require(_dependencyMap[6], 'React'); + + var ReactNative = require(_dependencyMap[7], 'ReactNative'); + + var ScrollResponder = require(_dependencyMap[8], 'ScrollResponder'); + + var ScrollViewStickyHeader = require(_dependencyMap[9], 'ScrollViewStickyHeader'); + + var StyleSheet = require(_dependencyMap[10], 'StyleSheet'); + + var StyleSheetPropType = require(_dependencyMap[11], 'StyleSheetPropType'); + + var View = require(_dependencyMap[12], 'View'); + + var ViewPropTypes = require(_dependencyMap[13], 'ViewPropTypes'); + + var ViewStylePropTypes = require(_dependencyMap[14], 'ViewStylePropTypes'); + + var createReactClass = require(_dependencyMap[15], 'create-react-class'); + + var dismissKeyboard = require(_dependencyMap[16], 'dismissKeyboard'); + + var flattenStyle = require(_dependencyMap[17], 'flattenStyle'); + + var invariant = require(_dependencyMap[18], 'fbjs/lib/invariant'); + + var processDecelerationRate = require(_dependencyMap[19], 'processDecelerationRate'); + + var requireNativeComponent = require(_dependencyMap[20], 'requireNativeComponent'); + + var warning = require(_dependencyMap[21], 'fbjs/lib/warning'); + + var ScrollView = createReactClass({ + displayName: 'ScrollView', + propTypes: babelHelpers.extends({}, ViewPropTypes, { + automaticallyAdjustContentInsets: PropTypes.bool, + contentInset: EdgeInsetsPropType, + contentOffset: PointPropType, + bounces: PropTypes.bool, + bouncesZoom: PropTypes.bool, + alwaysBounceHorizontal: PropTypes.bool, + alwaysBounceVertical: PropTypes.bool, + centerContent: PropTypes.bool, + contentContainerStyle: StyleSheetPropType(ViewStylePropTypes), + decelerationRate: PropTypes.oneOfType([PropTypes.oneOf(['fast', 'normal']), PropTypes.number]), + horizontal: PropTypes.bool, + indicatorStyle: PropTypes.oneOf(['default', 'black', 'white']), + directionalLockEnabled: PropTypes.bool, + canCancelContentTouches: PropTypes.bool, + keyboardDismissMode: PropTypes.oneOf(['none', 'on-drag', 'interactive']), + keyboardShouldPersistTaps: PropTypes.oneOf(['always', 'never', 'handled', false, true]), + maximumZoomScale: PropTypes.number, + minimumZoomScale: PropTypes.number, + onMomentumScrollBegin: PropTypes.func, + onMomentumScrollEnd: PropTypes.func, + onScroll: PropTypes.func, + onContentSizeChange: PropTypes.func, + pagingEnabled: PropTypes.bool, + pinchGestureEnabled: PropTypes.bool, + scrollEnabled: PropTypes.bool, + scrollEventThrottle: PropTypes.number, + scrollIndicatorInsets: EdgeInsetsPropType, + scrollsToTop: PropTypes.bool, + showsHorizontalScrollIndicator: PropTypes.bool, + showsVerticalScrollIndicator: PropTypes.bool, + stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number), + snapToInterval: PropTypes.number, + snapToAlignment: PropTypes.oneOf(['start', 'center', 'end']), + removeClippedSubviews: PropTypes.bool, + zoomScale: PropTypes.number, + contentInsetAdjustmentBehavior: PropTypes.oneOf(['automatic', 'scrollableAxes', 'never', 'always']), + refreshControl: PropTypes.element, + endFillColor: ColorPropType, + scrollPerfTag: PropTypes.string, + overScrollMode: PropTypes.oneOf(['auto', 'always', 'never']), + DEPRECATED_sendUpdatedChildFrames: PropTypes.bool + }), + mixins: [ScrollResponder.Mixin], + _scrollAnimatedValue: new Animated.Value(0), + _scrollAnimatedValueAttachment: null, + _stickyHeaderRefs: new Map(), + _headerLayoutYs: new Map(), + getInitialState: function getInitialState() { + return this.scrollResponderMixinGetInitialState(); + }, + componentWillMount: function componentWillMount() { + this._scrollAnimatedValue = new Animated.Value(this.props.contentOffset ? this.props.contentOffset.y : 0); + + this._scrollAnimatedValue.setOffset(this.props.contentInset ? this.props.contentInset.top : 0); + + this._stickyHeaderRefs = new Map(); + this._headerLayoutYs = new Map(); + }, + componentDidMount: function componentDidMount() { + this._updateAnimatedNodeAttachment(); + }, + componentDidUpdate: function componentDidUpdate() { + this._updateAnimatedNodeAttachment(); + }, + componentWillUnmount: function componentWillUnmount() { + if (this._scrollAnimatedValueAttachment) { + this._scrollAnimatedValueAttachment.detach(); + } + }, + setNativeProps: function setNativeProps(props) { + this._scrollViewRef && this._scrollViewRef.setNativeProps(props); + }, + getScrollResponder: function getScrollResponder() { + return this; + }, + getScrollableNode: function getScrollableNode() { + return ReactNative.findNodeHandle(this._scrollViewRef); + }, + getInnerViewNode: function getInnerViewNode() { + return ReactNative.findNodeHandle(this._innerViewRef); + }, + scrollTo: function scrollTo(y, x, animated) { + if (typeof y === 'number') { + console.warn('`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, ' + 'animated: true})` instead.'); + } else { + var _ref = y || {}; + + x = _ref.x; + y = _ref.y; + animated = _ref.animated; + } + + this.getScrollResponder().scrollResponderScrollTo({ + x: x || 0, + y: y || 0, + animated: animated !== false + }); + }, + scrollToEnd: function scrollToEnd(options) { + var animated = (options && options.animated) !== false; + this.getScrollResponder().scrollResponderScrollToEnd({ + animated: animated + }); + }, + scrollWithoutAnimationTo: function scrollWithoutAnimationTo() { + var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + console.warn('`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead'); + this.scrollTo({ + x: x, + y: y, + animated: false + }); + }, + flashScrollIndicators: function flashScrollIndicators() { + this.getScrollResponder().scrollResponderFlashScrollIndicators(); + }, + _getKeyForIndex: function _getKeyForIndex(index, childArray) { + var child = childArray[index]; + return child && child.key; + }, + _updateAnimatedNodeAttachment: function _updateAnimatedNodeAttachment() { + if (this._scrollAnimatedValueAttachment) { + this._scrollAnimatedValueAttachment.detach(); + } + + if (this.props.stickyHeaderIndices && this.props.stickyHeaderIndices.length > 0) { + this._scrollAnimatedValueAttachment = Animated.attachNativeEvent(this._scrollViewRef, 'onScroll', [{ + nativeEvent: { + contentOffset: { + y: this._scrollAnimatedValue + } + } + }]); + } + }, + _setStickyHeaderRef: function _setStickyHeaderRef(key, ref) { + if (ref) { + this._stickyHeaderRefs.set(key, ref); + } else { + this._stickyHeaderRefs.delete(key); + } + }, + _onStickyHeaderLayout: function _onStickyHeaderLayout(index, event, key) { + if (!this.props.stickyHeaderIndices) { + return; + } + + var childArray = React.Children.toArray(this.props.children); + + if (key !== this._getKeyForIndex(index, childArray)) { + return; + } + + var layoutY = event.nativeEvent.layout.y; + + this._headerLayoutYs.set(key, layoutY); + + var indexOfIndex = this.props.stickyHeaderIndices.indexOf(index); + var previousHeaderIndex = this.props.stickyHeaderIndices[indexOfIndex - 1]; + + if (previousHeaderIndex != null) { + var previousHeader = this._stickyHeaderRefs.get(this._getKeyForIndex(previousHeaderIndex, childArray)); + + previousHeader && previousHeader.setNextHeaderY(layoutY); + } + }, + _handleScroll: function _handleScroll(e) { + if (__DEV__) { + if (this.props.onScroll && this.props.scrollEventThrottle == null && Platform.OS === 'ios') { + console.log('You specified `onScroll` on a but not ' + '`scrollEventThrottle`. You will only receive one event. ' + 'Using `16` you get all the events but be aware that it may ' + 'cause frame drops, use a bigger number if you don\'t need as ' + 'much precision.'); + } + } + + if (Platform.OS === 'android') { + if (this.props.keyboardDismissMode === 'on-drag') { + dismissKeyboard(); + } + } + + this.scrollResponderHandleScroll(e); + }, + _handleContentOnLayout: function _handleContentOnLayout(e) { + var _e$nativeEvent$layout = e.nativeEvent.layout, + width = _e$nativeEvent$layout.width, + height = _e$nativeEvent$layout.height; + this.props.onContentSizeChange && this.props.onContentSizeChange(width, height); + }, + _scrollViewRef: null, + _setScrollViewRef: function _setScrollViewRef(ref) { + this._scrollViewRef = ref; + }, + _innerViewRef: null, + _setInnerViewRef: function _setInnerViewRef(ref) { + this._innerViewRef = ref; + }, + render: function render() { + var _this = this; + + var ScrollViewClass = void 0; + var ScrollContentContainerViewClass = void 0; + + if (Platform.OS === 'ios') { + ScrollViewClass = RCTScrollView; + ScrollContentContainerViewClass = RCTScrollContentView; + warning(!this.props.snapToInterval || !this.props.pagingEnabled, 'snapToInterval is currently ignored when pagingEnabled is true.'); + } else if (Platform.OS === 'android') { + if (this.props.horizontal) { + ScrollViewClass = AndroidHorizontalScrollView; + ScrollContentContainerViewClass = AndroidHorizontalScrollContentView; + } else { + ScrollViewClass = AndroidScrollView; + ScrollContentContainerViewClass = View; + } + } + + invariant(ScrollViewClass !== undefined, 'ScrollViewClass must not be undefined'); + invariant(ScrollContentContainerViewClass !== undefined, 'ScrollContentContainerViewClass must not be undefined'); + var contentContainerStyle = [this.props.horizontal && styles.contentContainerHorizontal, this.props.contentContainerStyle]; + var style = void 0, + childLayoutProps = void 0; + + if (__DEV__ && this.props.style) { + style = flattenStyle(this.props.style); + childLayoutProps = ['alignItems', 'justifyContent'].filter(function (prop) { + return style && style[prop] !== undefined; + }); + invariant(childLayoutProps.length === 0, 'ScrollView child layout (' + JSON.stringify(childLayoutProps) + ') must be applied through the contentContainerStyle prop.'); + } + + var contentSizeChangeProps = {}; + + if (this.props.onContentSizeChange) { + contentSizeChangeProps = { + onLayout: this._handleContentOnLayout + }; + } + + var stickyHeaderIndices = this.props.stickyHeaderIndices; + var hasStickyHeaders = stickyHeaderIndices && stickyHeaderIndices.length > 0; + var childArray = hasStickyHeaders && React.Children.toArray(this.props.children); + var children = hasStickyHeaders ? childArray.map(function (child, index) { + var indexOfIndex = child ? stickyHeaderIndices.indexOf(index) : -1; + + if (indexOfIndex > -1) { + var key = child.key; + var nextIndex = stickyHeaderIndices[indexOfIndex + 1]; + return React.createElement( + ScrollViewStickyHeader, + { + key: key, + ref: function ref(_ref2) { + return _this._setStickyHeaderRef(key, _ref2); + }, + nextHeaderLayoutY: _this._headerLayoutYs.get(_this._getKeyForIndex(nextIndex, childArray)), + onLayout: function onLayout(event) { + return _this._onStickyHeaderLayout(index, event, key); + }, + scrollAnimatedValue: _this._scrollAnimatedValue, + __source: { + fileName: _jsxFileName, + lineNumber: 700 + } + }, + child + ); + } else { + return child; + } + }) : this.props.children; + var contentContainer = React.createElement( + ScrollContentContainerViewClass, + babelHelpers.extends({}, contentSizeChangeProps, { + ref: this._setInnerViewRef, + style: contentContainerStyle, + removeClippedSubviews: Platform.OS === 'android' && hasStickyHeaders ? false : this.props.removeClippedSubviews, + collapsable: false, + __source: { + fileName: _jsxFileName, + lineNumber: 717 + } + }), + children + ); + var alwaysBounceHorizontal = this.props.alwaysBounceHorizontal !== undefined ? this.props.alwaysBounceHorizontal : this.props.horizontal; + var alwaysBounceVertical = this.props.alwaysBounceVertical !== undefined ? this.props.alwaysBounceVertical : !this.props.horizontal; + var DEPRECATED_sendUpdatedChildFrames = !!this.props.DEPRECATED_sendUpdatedChildFrames; + var baseStyle = this.props.horizontal ? styles.baseHorizontal : styles.baseVertical; + var props = babelHelpers.extends({}, this.props, { + alwaysBounceHorizontal: alwaysBounceHorizontal, + alwaysBounceVertical: alwaysBounceVertical, + style: [baseStyle, this.props.style], + onContentSizeChange: null, + onMomentumScrollBegin: this.scrollResponderHandleMomentumScrollBegin, + onMomentumScrollEnd: this.scrollResponderHandleMomentumScrollEnd, + onResponderGrant: this.scrollResponderHandleResponderGrant, + onResponderReject: this.scrollResponderHandleResponderReject, + onResponderRelease: this.scrollResponderHandleResponderRelease, + onResponderTerminate: this.scrollResponderHandleTerminate, + onResponderTerminationRequest: this.scrollResponderHandleTerminationRequest, + onScroll: this._handleScroll, + onScrollBeginDrag: this.scrollResponderHandleScrollBeginDrag, + onScrollEndDrag: this.scrollResponderHandleScrollEndDrag, + onScrollShouldSetResponder: this.scrollResponderHandleScrollShouldSetResponder, + onStartShouldSetResponder: this.scrollResponderHandleStartShouldSetResponder, + onStartShouldSetResponderCapture: this.scrollResponderHandleStartShouldSetResponderCapture, + onTouchEnd: this.scrollResponderHandleTouchEnd, + onTouchMove: this.scrollResponderHandleTouchMove, + onTouchStart: this.scrollResponderHandleTouchStart, + onTouchCancel: this.scrollResponderHandleTouchCancel, + scrollEventThrottle: hasStickyHeaders ? 1 : this.props.scrollEventThrottle, + sendMomentumEvents: this.props.onMomentumScrollBegin || this.props.onMomentumScrollEnd ? true : false, + DEPRECATED_sendUpdatedChildFrames: DEPRECATED_sendUpdatedChildFrames + }); + var decelerationRate = this.props.decelerationRate; + + if (decelerationRate) { + props.decelerationRate = processDecelerationRate(decelerationRate); + } + + var refreshControl = this.props.refreshControl; + + if (refreshControl) { + if (Platform.OS === 'ios') { + return React.createElement( + ScrollViewClass, + babelHelpers.extends({}, props, { + ref: this._setScrollViewRef, + __source: { + fileName: _jsxFileName, + lineNumber: 789 + } + }), + Platform.isTVOS ? null : refreshControl, + contentContainer + ); + } else if (Platform.OS === 'android') { + return React.cloneElement(refreshControl, { + style: props.style + }, React.createElement( + ScrollViewClass, + babelHelpers.extends({}, props, { + style: baseStyle, + ref: this._setScrollViewRef, + __source: { + fileName: _jsxFileName, + lineNumber: 804 + } + }), + contentContainer + )); + } + } + + return React.createElement( + ScrollViewClass, + babelHelpers.extends({}, props, { + ref: this._setScrollViewRef, + __source: { + fileName: _jsxFileName, + lineNumber: 811 + } + }), + contentContainer + ); + } + }); + var styles = StyleSheet.create({ + baseVertical: { + flexGrow: 1, + flexShrink: 1, + flexDirection: 'column', + overflow: 'scroll' + }, + baseHorizontal: { + flexGrow: 1, + flexShrink: 1, + flexDirection: 'row', + overflow: 'scroll' + }, + contentContainerHorizontal: { + flexDirection: 'row' + } + }); + var nativeOnlyProps = void 0, + AndroidScrollView = void 0, + AndroidHorizontalScrollContentView = void 0, + AndroidHorizontalScrollView = void 0, + RCTScrollView = void 0, + RCTScrollContentView = void 0; + + if (Platform.OS === 'android') { + nativeOnlyProps = { + nativeOnly: { + sendMomentumEvents: true + } + }; + AndroidScrollView = requireNativeComponent('RCTScrollView', ScrollView, nativeOnlyProps); + AndroidHorizontalScrollView = requireNativeComponent('AndroidHorizontalScrollView', ScrollView, nativeOnlyProps); + AndroidHorizontalScrollContentView = requireNativeComponent('AndroidHorizontalScrollContentView'); + } else if (Platform.OS === 'ios') { + nativeOnlyProps = { + nativeOnly: { + onMomentumScrollBegin: true, + onMomentumScrollEnd: true, + onScrollBeginDrag: true, + onScrollEndDrag: true + } + }; + RCTScrollView = requireNativeComponent('RCTScrollView', ScrollView, nativeOnlyProps); + RCTScrollContentView = requireNativeComponent('RCTScrollContentView', View); + } + + module.exports = ScrollView; +},265,[235,167,173,105,266,24,171,74,267,274,209,179,211,172,180,213,270,152,18,275,186,19],"ScrollView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PropTypes = require(_dependencyMap[0], 'prop-types'); + + var createStrictShapeTypeChecker = require(_dependencyMap[1], 'createStrictShapeTypeChecker'); + + var PointPropType = createStrictShapeTypeChecker({ + x: PropTypes.number, + y: PropTypes.number + }); + module.exports = PointPropType; +},266,[24,174],"PointPropType"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Dimensions = require(_dependencyMap[0], 'Dimensions'); + + var FrameRateLogger = require(_dependencyMap[1], 'FrameRateLogger'); + + var Keyboard = require(_dependencyMap[2], 'Keyboard'); + + var ReactNative = require(_dependencyMap[3], 'ReactNative'); + + var Subscribable = require(_dependencyMap[4], 'Subscribable'); + + var TextInputState = require(_dependencyMap[5], 'TextInputState'); + + var UIManager = require(_dependencyMap[6], 'UIManager'); + + var invariant = require(_dependencyMap[7], 'fbjs/lib/invariant'); + + var nullthrows = require(_dependencyMap[8], 'fbjs/lib/nullthrows'); + + var performanceNow = require(_dependencyMap[9], 'fbjs/lib/performanceNow'); + + var warning = require(_dependencyMap[10], 'fbjs/lib/warning'); + + var _require = require(_dependencyMap[11], 'NativeModules'), + ScrollViewManager = _require.ScrollViewManager; + + var _require2 = require(_dependencyMap[12], 'ReactNativeComponentTree'), + getInstanceFromNode = _require2.getInstanceFromNode; + + var IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16; + + function isTagInstanceOfTextInput(tag) { + var instance = getInstanceFromNode(tag); + return instance && instance.viewConfig && (instance.viewConfig.uiViewClassName === 'AndroidTextInput' || instance.viewConfig.uiViewClassName === 'RCTTextView' || instance.viewConfig.uiViewClassName === 'RCTTextField'); + } + + var ScrollResponderMixin = { + mixins: [Subscribable.Mixin], + scrollResponderMixinGetInitialState: function scrollResponderMixinGetInitialState() { + return { + isTouching: false, + lastMomentumScrollBeginTime: 0, + lastMomentumScrollEndTime: 0, + observedScrollSinceBecomingResponder: false, + becameResponderWhileAnimating: false + }; + }, + scrollResponderHandleScrollShouldSetResponder: function scrollResponderHandleScrollShouldSetResponder() { + return this.state.isTouching; + }, + scrollResponderHandleStartShouldSetResponder: function scrollResponderHandleStartShouldSetResponder(e) { + var currentlyFocusedTextInput = TextInputState.currentlyFocusedField(); + + if (this.props.keyboardShouldPersistTaps === 'handled' && currentlyFocusedTextInput != null && e.target !== currentlyFocusedTextInput) { + return true; + } + + return false; + }, + scrollResponderHandleStartShouldSetResponderCapture: function scrollResponderHandleStartShouldSetResponderCapture(e) { + var currentlyFocusedTextInput = TextInputState.currentlyFocusedField(); + var keyboardShouldPersistTaps = this.props.keyboardShouldPersistTaps; + var keyboardNeverPersistTaps = !keyboardShouldPersistTaps || keyboardShouldPersistTaps === 'never'; + + if (keyboardNeverPersistTaps && currentlyFocusedTextInput != null && !isTagInstanceOfTextInput(e.target)) { + return true; + } + + return this.scrollResponderIsAnimating(); + }, + scrollResponderHandleResponderReject: function scrollResponderHandleResponderReject() {}, + scrollResponderHandleTerminationRequest: function scrollResponderHandleTerminationRequest() { + return !this.state.observedScrollSinceBecomingResponder; + }, + scrollResponderHandleTouchEnd: function scrollResponderHandleTouchEnd(e) { + var nativeEvent = e.nativeEvent; + this.state.isTouching = nativeEvent.touches.length !== 0; + this.props.onTouchEnd && this.props.onTouchEnd(e); + }, + scrollResponderHandleTouchCancel: function scrollResponderHandleTouchCancel(e) { + this.state.isTouching = false; + this.props.onTouchCancel && this.props.onTouchCancel(e); + }, + scrollResponderHandleResponderRelease: function scrollResponderHandleResponderRelease(e) { + this.props.onResponderRelease && this.props.onResponderRelease(e); + var currentlyFocusedTextInput = TextInputState.currentlyFocusedField(); + + if (this.props.keyboardShouldPersistTaps !== true && this.props.keyboardShouldPersistTaps !== 'always' && currentlyFocusedTextInput != null && e.target !== currentlyFocusedTextInput && !this.state.observedScrollSinceBecomingResponder && !this.state.becameResponderWhileAnimating) { + this.props.onScrollResponderKeyboardDismissed && this.props.onScrollResponderKeyboardDismissed(e); + TextInputState.blurTextInput(currentlyFocusedTextInput); + } + }, + scrollResponderHandleScroll: function scrollResponderHandleScroll(e) { + this.state.observedScrollSinceBecomingResponder = true; + this.props.onScroll && this.props.onScroll(e); + }, + scrollResponderHandleResponderGrant: function scrollResponderHandleResponderGrant(e) { + this.state.observedScrollSinceBecomingResponder = false; + this.props.onResponderGrant && this.props.onResponderGrant(e); + this.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating(); + }, + scrollResponderHandleScrollBeginDrag: function scrollResponderHandleScrollBeginDrag(e) { + FrameRateLogger.beginScroll(); + this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e); + }, + scrollResponderHandleScrollEndDrag: function scrollResponderHandleScrollEndDrag(e) { + var velocity = e.nativeEvent.velocity; + + if (!this.scrollResponderIsAnimating() && (!velocity || velocity.x === 0 && velocity.y === 0)) { + FrameRateLogger.endScroll(); + } + + this.props.onScrollEndDrag && this.props.onScrollEndDrag(e); + }, + scrollResponderHandleMomentumScrollBegin: function scrollResponderHandleMomentumScrollBegin(e) { + this.state.lastMomentumScrollBeginTime = performanceNow(); + this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e); + }, + scrollResponderHandleMomentumScrollEnd: function scrollResponderHandleMomentumScrollEnd(e) { + FrameRateLogger.endScroll(); + this.state.lastMomentumScrollEndTime = performanceNow(); + this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e); + }, + scrollResponderHandleTouchStart: function scrollResponderHandleTouchStart(e) { + this.state.isTouching = true; + this.props.onTouchStart && this.props.onTouchStart(e); + }, + scrollResponderHandleTouchMove: function scrollResponderHandleTouchMove(e) { + this.props.onTouchMove && this.props.onTouchMove(e); + }, + scrollResponderIsAnimating: function scrollResponderIsAnimating() { + var now = performanceNow(); + var timeSinceLastMomentumScrollEnd = now - this.state.lastMomentumScrollEndTime; + var isAnimating = timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS || this.state.lastMomentumScrollEndTime < this.state.lastMomentumScrollBeginTime; + return isAnimating; + }, + scrollResponderGetScrollableNode: function scrollResponderGetScrollableNode() { + return this.getScrollableNode ? this.getScrollableNode() : ReactNative.findNodeHandle(this); + }, + scrollResponderScrollTo: function scrollResponderScrollTo(x, y, animated) { + if (typeof x === 'number') { + console.warn('`scrollResponderScrollTo(x, y, animated)` is deprecated. Use `scrollResponderScrollTo({x: 5, y: 5, animated: true})` instead.'); + } else { + var _ref = x || {}; + + x = _ref.x; + y = _ref.y; + animated = _ref.animated; + } + + UIManager.dispatchViewManagerCommand(nullthrows(this.scrollResponderGetScrollableNode()), UIManager.RCTScrollView.Commands.scrollTo, [x || 0, y || 0, animated !== false]); + }, + scrollResponderScrollToEnd: function scrollResponderScrollToEnd(options) { + var animated = (options && options.animated) !== false; + UIManager.dispatchViewManagerCommand(this.scrollResponderGetScrollableNode(), UIManager.RCTScrollView.Commands.scrollToEnd, [animated]); + }, + scrollResponderScrollWithoutAnimationTo: function scrollResponderScrollWithoutAnimationTo(offsetX, offsetY) { + console.warn('`scrollResponderScrollWithoutAnimationTo` is deprecated. Use `scrollResponderScrollTo` instead'); + this.scrollResponderScrollTo({ + x: offsetX, + y: offsetY, + animated: false + }); + }, + scrollResponderZoomTo: function scrollResponderZoomTo(rect, animated) { + invariant(ScrollViewManager && ScrollViewManager.zoomToRect, 'zoomToRect is not implemented'); + + if ('animated' in rect) { + var animated = rect.animated, + rect = babelHelpers.objectWithoutProperties(rect, ["animated"]); + } else if (typeof animated !== 'undefined') { + console.warn('`scrollResponderZoomTo` `animated` argument is deprecated. Use `options.animated` instead'); + } + + ScrollViewManager.zoomToRect(this.scrollResponderGetScrollableNode(), rect, animated !== false); + }, + scrollResponderFlashScrollIndicators: function scrollResponderFlashScrollIndicators() { + UIManager.dispatchViewManagerCommand(this.scrollResponderGetScrollableNode(), UIManager.RCTScrollView.Commands.flashScrollIndicators, []); + }, + scrollResponderScrollNativeHandleToKeyboard: function scrollResponderScrollNativeHandleToKeyboard(nodeHandle, additionalOffset, preventNegativeScrollOffset) { + this.additionalScrollOffset = additionalOffset || 0; + this.preventNegativeScrollOffset = !!preventNegativeScrollOffset; + UIManager.measureLayout(nodeHandle, ReactNative.findNodeHandle(this.getInnerViewNode()), this.scrollResponderTextInputFocusError, this.scrollResponderInputMeasureAndScrollToKeyboard); + }, + scrollResponderInputMeasureAndScrollToKeyboard: function scrollResponderInputMeasureAndScrollToKeyboard(left, top, width, height) { + var keyboardScreenY = Dimensions.get('window').height; + + if (this.keyboardWillOpenTo) { + keyboardScreenY = this.keyboardWillOpenTo.endCoordinates.screenY; + } + + var scrollOffsetY = top - keyboardScreenY + height + this.additionalScrollOffset; + + if (this.preventNegativeScrollOffset) { + scrollOffsetY = Math.max(0, scrollOffsetY); + } + + this.scrollResponderScrollTo({ + x: 0, + y: scrollOffsetY, + animated: true + }); + this.additionalOffset = 0; + this.preventNegativeScrollOffset = false; + }, + scrollResponderTextInputFocusError: function scrollResponderTextInputFocusError(e) { + console.error('Error measuring text field: ', e); + }, + componentWillMount: function componentWillMount() { + var keyboardShouldPersistTaps = this.props.keyboardShouldPersistTaps; + warning(typeof keyboardShouldPersistTaps !== 'boolean', "'keyboardShouldPersistTaps={" + keyboardShouldPersistTaps + "}' is deprecated. " + ("Use 'keyboardShouldPersistTaps=\"" + (keyboardShouldPersistTaps ? 'always' : 'never') + "\"' instead")); + this.keyboardWillOpenTo = null; + this.additionalScrollOffset = 0; + this.addListenerOn(Keyboard, 'keyboardWillShow', this.scrollResponderKeyboardWillShow); + this.addListenerOn(Keyboard, 'keyboardWillHide', this.scrollResponderKeyboardWillHide); + this.addListenerOn(Keyboard, 'keyboardDidShow', this.scrollResponderKeyboardDidShow); + this.addListenerOn(Keyboard, 'keyboardDidHide', this.scrollResponderKeyboardDidHide); + }, + scrollResponderKeyboardWillShow: function scrollResponderKeyboardWillShow(e) { + this.keyboardWillOpenTo = e; + this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e); + }, + scrollResponderKeyboardWillHide: function scrollResponderKeyboardWillHide(e) { + this.keyboardWillOpenTo = null; + this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e); + }, + scrollResponderKeyboardDidShow: function scrollResponderKeyboardDidShow(e) { + if (e) { + this.keyboardWillOpenTo = e; + } + + this.props.onKeyboardDidShow && this.props.onKeyboardDidShow(e); + }, + scrollResponderKeyboardDidHide: function scrollResponderKeyboardDidHide(e) { + this.keyboardWillOpenTo = null; + this.props.onKeyboardDidHide && this.props.onKeyboardDidHide(e); + } + }; + var ScrollResponder = { + Mixin: ScrollResponderMixin + }; + module.exports = ScrollResponder; +},267,[205,268,269,74,271,159,158,18,272,106,19,68,273],"ScrollResponder"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeModules = require(_dependencyMap[0], 'NativeModules'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var FrameRateLogger = { + setGlobalOptions: function setGlobalOptions(options) { + if (options.debug !== undefined) { + invariant(NativeModules.FrameRateLogger, 'Trying to debug FrameRateLogger without the native module!'); + } + + NativeModules.FrameRateLogger && NativeModules.FrameRateLogger.setGlobalOptions(options); + }, + setContext: function setContext(context) { + NativeModules.FrameRateLogger && NativeModules.FrameRateLogger.setContext(context); + }, + beginScroll: function beginScroll() { + NativeModules.FrameRateLogger && NativeModules.FrameRateLogger.beginScroll(); + }, + endScroll: function endScroll() { + NativeModules.FrameRateLogger && NativeModules.FrameRateLogger.endScroll(); + } + }; + module.exports = FrameRateLogger; +},268,[68,18],"FrameRateLogger"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var NativeEventEmitter = require(_dependencyMap[1], 'NativeEventEmitter'); + + var KeyboardObserver = require(_dependencyMap[2], 'NativeModules').KeyboardObserver; + + var dismissKeyboard = require(_dependencyMap[3], 'dismissKeyboard'); + + var KeyboardEventEmitter = new NativeEventEmitter(KeyboardObserver); + var Keyboard = { + addListener: function addListener(eventName, callback) { + invariant(false, 'Dummy method used for documentation'); + }, + removeListener: function removeListener(eventName, callback) { + invariant(false, 'Dummy method used for documentation'); + }, + removeAllListeners: function removeAllListeners(eventName) { + invariant(false, 'Dummy method used for documentation'); + }, + dismiss: function dismiss() { + invariant(false, 'Dummy method used for documentation'); + } + }; + Keyboard = KeyboardEventEmitter; + Keyboard.dismiss = dismissKeyboard; + module.exports = Keyboard; +},269,[18,120,68,270],"Keyboard"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var TextInputState = require(_dependencyMap[0], 'TextInputState'); + + function dismissKeyboard() { + TextInputState.blurTextInput(TextInputState.currentlyFocusedField()); + } + + module.exports = dismissKeyboard; +},270,[159],"dismissKeyboard"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Subscribable = {}; + Subscribable.Mixin = { + componentWillMount: function componentWillMount() { + this._subscribableSubscriptions = []; + }, + componentWillUnmount: function componentWillUnmount() { + this._subscribableSubscriptions.forEach(function (subscription) { + return subscription.remove(); + }); + + this._subscribableSubscriptions = null; + }, + addListenerOn: function addListenerOn(eventEmitter, eventType, listener, context) { + this._subscribableSubscriptions.push(eventEmitter.addListener(eventType, listener, context)); + } + }; + module.exports = Subscribable; +},271,[],"Subscribable"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var nullthrows = function nullthrows(x) { + if (x != null) { + return x; + } + + throw new Error("Got unexpected null or undefined"); + }; + + module.exports = nullthrows; +},272,[],"fbjs/lib/nullthrows.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactNativeComponentTree; +},273,[74],"ReactNativeComponentTree"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js"; + + var Animated = require(_dependencyMap[0], 'Animated'); + + var React = require(_dependencyMap[1], 'React'); + + var StyleSheet = require(_dependencyMap[2], 'StyleSheet'); + + var ScrollViewStickyHeader = function (_React$Component) { + babelHelpers.inherits(ScrollViewStickyHeader, _React$Component); + + function ScrollViewStickyHeader(props, context) { + babelHelpers.classCallCheck(this, ScrollViewStickyHeader); + + var _this = babelHelpers.possibleConstructorReturn(this, (ScrollViewStickyHeader.__proto__ || Object.getPrototypeOf(ScrollViewStickyHeader)).call(this, props, context)); + + _this._onLayout = function (event) { + _this.setState({ + measured: true, + layoutY: event.nativeEvent.layout.y, + layoutHeight: event.nativeEvent.layout.height + }); + + _this.props.onLayout(event); + + var child = React.Children.only(_this.props.children); + + if (child.props.onLayout) { + child.props.onLayout(event); + } + }; + + _this.state = { + measured: false, + layoutY: 0, + layoutHeight: 0, + nextHeaderLayoutY: props.nextHeaderLayoutY + }; + return _this; + } + + babelHelpers.createClass(ScrollViewStickyHeader, [{ + key: "setNextHeaderY", + value: function setNextHeaderY(y) { + this.setState({ + nextHeaderLayoutY: y + }); + } + }, { + key: "render", + value: function render() { + var _state = this.state, + measured = _state.measured, + layoutHeight = _state.layoutHeight, + layoutY = _state.layoutY, + nextHeaderLayoutY = _state.nextHeaderLayoutY; + var inputRange = [-1, 0]; + var outputRange = [0, 0]; + + if (measured) { + inputRange.push(layoutY); + outputRange.push(0); + var collisionPoint = (nextHeaderLayoutY || 0) - layoutHeight; + + if (collisionPoint >= layoutY) { + inputRange.push(collisionPoint, collisionPoint + 1); + outputRange.push(collisionPoint - layoutY, collisionPoint - layoutY); + } else { + inputRange.push(layoutY + 1); + outputRange.push(1); + } + } + + var translateY = this.props.scrollAnimatedValue.interpolate({ + inputRange: inputRange, + outputRange: outputRange + }); + var child = React.Children.only(this.props.children); + return React.createElement( + Animated.View, + { + collapsable: false, + onLayout: this._onLayout, + style: [child.props.style, styles.header, { + transform: [{ + translateY: translateY + }] + }], + __source: { + fileName: _jsxFileName, + lineNumber: 96 + } + }, + React.cloneElement(child, { + style: styles.fill, + onLayout: undefined + }) + ); + } + }]); + return ScrollViewStickyHeader; + }(React.Component); + + var styles = StyleSheet.create({ + header: { + zIndex: 10 + }, + fill: { + flex: 1 + } + }); + module.exports = ScrollViewStickyHeader; +},274,[235,171,209],"ScrollViewStickyHeader"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function processDecelerationRate(decelerationRate) { + if (decelerationRate === 'normal') { + decelerationRate = 0.998; + } else if (decelerationRate === 'fast') { + decelerationRate = 0.99; + } + + return decelerationRate; + } + + module.exports = processDecelerationRate; +},275,[],"processDecelerationRate"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/CheckBox/CheckBox.android.js"; + + var NativeMethodsMixin = require(_dependencyMap[0], 'NativeMethodsMixin'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var React = require(_dependencyMap[2], 'React'); + + var StyleSheet = require(_dependencyMap[3], 'StyleSheet'); + + var ViewPropTypes = require(_dependencyMap[4], 'ViewPropTypes'); + + var createReactClass = require(_dependencyMap[5], 'create-react-class'); + + var requireNativeComponent = require(_dependencyMap[6], 'requireNativeComponent'); + + var CheckBox = createReactClass({ + displayName: 'CheckBox', + propTypes: babelHelpers.extends({}, ViewPropTypes, { + value: PropTypes.bool, + disabled: PropTypes.bool, + onChange: PropTypes.func, + onValueChange: PropTypes.func, + testID: PropTypes.string + }), + getDefaultProps: function getDefaultProps() { + return { + value: false, + disabled: false + }; + }, + mixins: [NativeMethodsMixin], + _rctCheckBox: {}, + _onChange: function _onChange(event) { + this._rctCheckBox.setNativeProps({ + value: this.props.value + }); + + this.props.onChange && this.props.onChange(event); + this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value); + }, + render: function render() { + var _this = this; + + var props = babelHelpers.extends({}, this.props); + + props.onStartShouldSetResponder = function () { + return true; + }; + + props.onResponderTerminationRequest = function () { + return false; + }; + + props.enabled = !this.props.disabled; + props.on = this.props.value; + props.style = [styles.rctCheckBox, this.props.style]; + return React.createElement(RCTCheckBox, babelHelpers.extends({}, props, { + ref: function ref(_ref) { + _this._rctCheckBox = _ref; + }, + onChange: this._onChange, + __source: { + fileName: _jsxFileName, + lineNumber: 140 + } + })); + } + }); + var styles = StyleSheet.create({ + rctCheckBox: { + height: 32, + width: 32 + } + }); + var RCTCheckBox = requireNativeComponent('AndroidCheckBox', CheckBox, { + nativeOnly: { + onChange: true, + on: true, + enabled: true + } + }); + module.exports = CheckBox; +},276,[169,24,171,209,172,213,186],"CheckBox"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.android.js"; + + var React = require(_dependencyMap[0], 'React'); + + var StyleSheet = require(_dependencyMap[1], 'StyleSheet'); + + var Text = require(_dependencyMap[2], 'Text'); + + var View = require(_dependencyMap[3], 'View'); + + var DummyDatePickerIOS = function (_React$Component) { + babelHelpers.inherits(DummyDatePickerIOS, _React$Component); + + function DummyDatePickerIOS() { + babelHelpers.classCallCheck(this, DummyDatePickerIOS); + return babelHelpers.possibleConstructorReturn(this, (DummyDatePickerIOS.__proto__ || Object.getPrototypeOf(DummyDatePickerIOS)).apply(this, arguments)); + } + + babelHelpers.createClass(DummyDatePickerIOS, [{ + key: "render", + value: function render() { + return React.createElement( + View, + { + style: [styles.dummyDatePickerIOS, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 22 + } + }, + React.createElement( + Text, + { + style: styles.datePickerText, + __source: { + fileName: _jsxFileName, + lineNumber: 23 + } + }, + "DatePickerIOS is not supported on this platform!" + ) + ); + } + }]); + return DummyDatePickerIOS; + }(React.Component); + + var styles = StyleSheet.create({ + dummyDatePickerIOS: { + height: 100, + width: 300, + backgroundColor: '#ffbcbc', + borderWidth: 1, + borderColor: 'red', + alignItems: 'center', + justifyContent: 'center', + margin: 10 + }, + datePickerText: { + color: '#333333', + margin: 20 + } + }); + module.exports = DummyDatePickerIOS; +},277,[171,209,222,211],"DatePickerIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var NativeMethodsMixin = require(_dependencyMap[1], 'NativeMethodsMixin'); + + var Platform = require(_dependencyMap[2], 'Platform'); + + var React = require(_dependencyMap[3], 'React'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var ReactNative = require(_dependencyMap[5], 'ReactNative'); + + var StatusBar = require(_dependencyMap[6], 'StatusBar'); + + var StyleSheet = require(_dependencyMap[7], 'StyleSheet'); + + var UIManager = require(_dependencyMap[8], 'UIManager'); + + var View = require(_dependencyMap[9], 'View'); + + var ViewPropTypes = require(_dependencyMap[10], 'ViewPropTypes'); + + var DrawerConsts = UIManager.AndroidDrawerLayout.Constants; + + var createReactClass = require(_dependencyMap[11], 'create-react-class'); + + var dismissKeyboard = require(_dependencyMap[12], 'dismissKeyboard'); + + var requireNativeComponent = require(_dependencyMap[13], 'requireNativeComponent'); + + var RK_DRAWER_REF = 'drawerlayout'; + var INNERVIEW_REF = 'innerView'; + var DRAWER_STATES = ['Idle', 'Dragging', 'Settling']; + var DrawerLayoutAndroid = createReactClass({ + displayName: 'DrawerLayoutAndroid', + statics: { + positions: DrawerConsts.DrawerPosition + }, + propTypes: babelHelpers.extends({}, ViewPropTypes, { + keyboardDismissMode: PropTypes.oneOf(['none', 'on-drag']), + drawerBackgroundColor: ColorPropType, + drawerPosition: PropTypes.oneOf([DrawerConsts.DrawerPosition.Left, DrawerConsts.DrawerPosition.Right]), + drawerWidth: PropTypes.number, + drawerLockMode: PropTypes.oneOf(['unlocked', 'locked-closed', 'locked-open']), + onDrawerSlide: PropTypes.func, + onDrawerStateChanged: PropTypes.func, + onDrawerOpen: PropTypes.func, + onDrawerClose: PropTypes.func, + renderNavigationView: PropTypes.func.isRequired, + statusBarBackgroundColor: ColorPropType + }), + mixins: [NativeMethodsMixin], + getDefaultProps: function getDefaultProps() { + return { + drawerBackgroundColor: 'white' + }; + }, + getInitialState: function getInitialState() { + return { + statusBarBackgroundColor: undefined + }; + }, + getInnerViewNode: function getInnerViewNode() { + return this.refs[INNERVIEW_REF].getInnerViewNode(); + }, + render: function render() { + var drawStatusBar = Platform.Version >= 21 && this.props.statusBarBackgroundColor; + var drawerViewWrapper = React.createElement( + View, + { + style: [styles.drawerSubview, { + width: this.props.drawerWidth, + backgroundColor: this.props.drawerBackgroundColor + }], + collapsable: false, + __source: { + fileName: _jsxFileName, + lineNumber: 176 + } + }, + this.props.renderNavigationView(), + drawStatusBar && React.createElement(View, { + style: styles.drawerStatusBar, + __source: { + fileName: _jsxFileName, + lineNumber: 183 + } + }) + ); + var childrenWrapper = React.createElement( + View, + { + ref: INNERVIEW_REF, + style: styles.mainSubview, + collapsable: false, + __source: { + fileName: _jsxFileName, + lineNumber: 186 + } + }, + drawStatusBar && React.createElement(StatusBar, { + translucent: true, + backgroundColor: this.props.statusBarBackgroundColor, + __source: { + fileName: _jsxFileName, + lineNumber: 188 + } + }), + drawStatusBar && React.createElement(View, { + style: [styles.statusBar, { + backgroundColor: this.props.statusBarBackgroundColor + }], + __source: { + fileName: _jsxFileName, + lineNumber: 193 + } + }), + this.props.children + ); + return React.createElement( + AndroidDrawerLayout, + babelHelpers.extends({}, this.props, { + ref: RK_DRAWER_REF, + drawerWidth: this.props.drawerWidth, + drawerPosition: this.props.drawerPosition, + drawerLockMode: this.props.drawerLockMode, + style: [styles.base, this.props.style], + onDrawerSlide: this._onDrawerSlide, + onDrawerOpen: this._onDrawerOpen, + onDrawerClose: this._onDrawerClose, + onDrawerStateChanged: this._onDrawerStateChanged, + __source: { + fileName: _jsxFileName, + lineNumber: 200 + } + }), + childrenWrapper, + drawerViewWrapper + ); + }, + _onDrawerSlide: function _onDrawerSlide(event) { + if (this.props.onDrawerSlide) { + this.props.onDrawerSlide(event); + } + + if (this.props.keyboardDismissMode === 'on-drag') { + dismissKeyboard(); + } + }, + _onDrawerOpen: function _onDrawerOpen() { + if (this.props.onDrawerOpen) { + this.props.onDrawerOpen(); + } + }, + _onDrawerClose: function _onDrawerClose() { + if (this.props.onDrawerClose) { + this.props.onDrawerClose(); + } + }, + _onDrawerStateChanged: function _onDrawerStateChanged(event) { + if (this.props.onDrawerStateChanged) { + this.props.onDrawerStateChanged(DRAWER_STATES[event.nativeEvent.drawerState]); + } + }, + openDrawer: function openDrawer() { + UIManager.dispatchViewManagerCommand(this._getDrawerLayoutHandle(), UIManager.AndroidDrawerLayout.Commands.openDrawer, null); + }, + closeDrawer: function closeDrawer() { + UIManager.dispatchViewManagerCommand(this._getDrawerLayoutHandle(), UIManager.AndroidDrawerLayout.Commands.closeDrawer, null); + }, + _getDrawerLayoutHandle: function _getDrawerLayoutHandle() { + return ReactNative.findNodeHandle(this.refs[RK_DRAWER_REF]); + } + }); + var styles = StyleSheet.create({ + base: { + flex: 1, + elevation: 16 + }, + mainSubview: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0 + }, + drawerSubview: { + position: 'absolute', + top: 0, + bottom: 0 + }, + statusBar: { + height: StatusBar.currentHeight + }, + drawerStatusBar: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + height: StatusBar.currentHeight, + backgroundColor: 'rgba(0, 0, 0, 0.251)' + } + }); + var AndroidDrawerLayout = requireNativeComponent('AndroidDrawerLayout', DrawerLayoutAndroid); + module.exports = DrawerLayoutAndroid; +},278,[167,169,105,171,24,74,279,209,158,211,172,213,270,186],"DrawerLayoutAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var React = require(_dependencyMap[0], 'React'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var ColorPropType = require(_dependencyMap[2], 'ColorPropType'); + + var Platform = require(_dependencyMap[3], 'Platform'); + + var processColor = require(_dependencyMap[4], 'processColor'); + + var StatusBarManager = require(_dependencyMap[5], 'NativeModules').StatusBarManager; + + function mergePropsStack(propsStack, defaultValues) { + return propsStack.reduce(function (prev, cur) { + for (var prop in cur) { + if (cur[prop] != null) { + prev[prop] = cur[prop]; + } + } + + return prev; + }, babelHelpers.extends({}, defaultValues)); + } + + function createStackEntry(props) { + return { + backgroundColor: props.backgroundColor != null ? { + value: props.backgroundColor, + animated: props.animated + } : null, + barStyle: props.barStyle != null ? { + value: props.barStyle, + animated: props.animated + } : null, + translucent: props.translucent, + hidden: props.hidden != null ? { + value: props.hidden, + animated: props.animated, + transition: props.showHideTransition + } : null, + networkActivityIndicatorVisible: props.networkActivityIndicatorVisible + }; + } + + var StatusBar = function (_React$Component) { + babelHelpers.inherits(StatusBar, _React$Component); + + function StatusBar() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, StatusBar); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = StatusBar.__proto__ || Object.getPrototypeOf(StatusBar)).call.apply(_ref, [this].concat(args))), _this), _this._stackEntry = null, _this._updatePropsStack = function () { + clearImmediate(StatusBar._updateImmediate); + StatusBar._updateImmediate = setImmediate(function () { + var oldProps = StatusBar._currentValues; + var mergedProps = mergePropsStack(StatusBar._propsStack, StatusBar._defaultProps); + + if (Platform.OS === 'ios') { + if (!oldProps || oldProps.barStyle.value !== mergedProps.barStyle.value) { + StatusBarManager.setStyle(mergedProps.barStyle.value, mergedProps.barStyle.animated); + } + + if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) { + StatusBarManager.setHidden(mergedProps.hidden.value, mergedProps.hidden.animated ? mergedProps.hidden.transition : 'none'); + } + + if (!oldProps || oldProps.networkActivityIndicatorVisible !== mergedProps.networkActivityIndicatorVisible) { + StatusBarManager.setNetworkActivityIndicatorVisible(mergedProps.networkActivityIndicatorVisible); + } + } else if (Platform.OS === 'android') { + if (!oldProps || oldProps.barStyle.value !== mergedProps.barStyle.value) { + StatusBarManager.setStyle(mergedProps.barStyle.value); + } + + if (!oldProps || oldProps.backgroundColor.value !== mergedProps.backgroundColor.value) { + StatusBarManager.setColor(processColor(mergedProps.backgroundColor.value), mergedProps.backgroundColor.animated); + } + + if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) { + StatusBarManager.setHidden(mergedProps.hidden.value); + } + + if (!oldProps || oldProps.translucent !== mergedProps.translucent) { + StatusBarManager.setTranslucent(mergedProps.translucent); + } + } + + StatusBar._currentValues = mergedProps; + }); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(StatusBar, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._stackEntry = createStackEntry(this.props); + + StatusBar._propsStack.push(this._stackEntry); + + this._updatePropsStack(); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + var index = StatusBar._propsStack.indexOf(this._stackEntry); + + StatusBar._propsStack.splice(index, 1); + + this._updatePropsStack(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + var index = StatusBar._propsStack.indexOf(this._stackEntry); + + this._stackEntry = createStackEntry(this.props); + StatusBar._propsStack[index] = this._stackEntry; + + this._updatePropsStack(); + } + }, { + key: "render", + value: function render() { + return null; + } + }], [{ + key: "setHidden", + value: function setHidden(hidden, animation) { + animation = animation || 'none'; + StatusBar._defaultProps.hidden.value = hidden; + + if (Platform.OS === 'ios') { + StatusBarManager.setHidden(hidden, animation); + } else if (Platform.OS === 'android') { + StatusBarManager.setHidden(hidden); + } + } + }, { + key: "setBarStyle", + value: function setBarStyle(style, animated) { + animated = animated || false; + StatusBar._defaultProps.barStyle.value = style; + + if (Platform.OS === 'ios') { + StatusBarManager.setStyle(style, animated); + } else if (Platform.OS === 'android') { + StatusBarManager.setStyle(style); + } + } + }, { + key: "setNetworkActivityIndicatorVisible", + value: function setNetworkActivityIndicatorVisible(visible) { + if (Platform.OS !== 'ios') { + console.warn('`setNetworkActivityIndicatorVisible` is only available on iOS'); + return; + } + + StatusBar._defaultProps.networkActivityIndicatorVisible = visible; + StatusBarManager.setNetworkActivityIndicatorVisible(visible); + } + }, { + key: "setBackgroundColor", + value: function setBackgroundColor(color, animated) { + if (Platform.OS !== 'android') { + console.warn('`setBackgroundColor` is only available on Android'); + return; + } + + animated = animated || false; + StatusBar._defaultProps.backgroundColor.value = color; + StatusBarManager.setColor(processColor(color), animated); + } + }, { + key: "setTranslucent", + value: function setTranslucent(translucent) { + if (Platform.OS !== 'android') { + console.warn('`setTranslucent` is only available on Android'); + return; + } + + StatusBar._defaultProps.translucent = translucent; + StatusBarManager.setTranslucent(translucent); + } + }]); + return StatusBar; + }(React.Component); + + StatusBar._propsStack = []; + StatusBar._defaultProps = createStackEntry({ + animated: false, + showHideTransition: 'fade', + backgroundColor: 'black', + barStyle: 'default', + translucent: false, + hidden: false, + networkActivityIndicatorVisible: false + }); + StatusBar._updateImmediate = null; + StatusBar._currentValues = null; + StatusBar.currentHeight = StatusBarManager.HEIGHT; + StatusBar.propTypes = { + hidden: PropTypes.bool, + animated: PropTypes.bool, + backgroundColor: ColorPropType, + translucent: PropTypes.bool, + barStyle: PropTypes.oneOf(['default', 'light-content', 'dark-content']), + networkActivityIndicatorVisible: PropTypes.bool, + showHideTransition: PropTypes.oneOf(['fade', 'slide']) + }; + StatusBar.defaultProps = { + animated: false, + showHideTransition: 'fade' + }; + module.exports = StatusBar; +},279,[171,24,167,105,193,68],"StatusBar"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Lists/FlatList.js"; + + var MetroListView = require(_dependencyMap[0], 'MetroListView'); + + var React = require(_dependencyMap[1], 'React'); + + var View = require(_dependencyMap[2], 'View'); + + var VirtualizedList = require(_dependencyMap[3], 'VirtualizedList'); + + var ListView = require(_dependencyMap[4], 'ListView'); + + var invariant = require(_dependencyMap[5], 'fbjs/lib/invariant'); + + var defaultProps = babelHelpers.extends({}, VirtualizedList.defaultProps, { + numColumns: 1 + }); + + var FlatList = function (_React$PureComponent) { + babelHelpers.inherits(FlatList, _React$PureComponent); + babelHelpers.createClass(FlatList, [{ + key: "scrollToEnd", + value: function scrollToEnd(params) { + if (this._listRef) { + this._listRef.scrollToEnd(params); + } + } + }, { + key: "scrollToIndex", + value: function scrollToIndex(params) { + if (this._listRef) { + this._listRef.scrollToIndex(params); + } + } + }, { + key: "scrollToItem", + value: function scrollToItem(params) { + if (this._listRef) { + this._listRef.scrollToItem(params); + } + } + }, { + key: "scrollToOffset", + value: function scrollToOffset(params) { + if (this._listRef) { + this._listRef.scrollToOffset(params); + } + } + }, { + key: "recordInteraction", + value: function recordInteraction() { + if (this._listRef) { + this._listRef.recordInteraction(); + } + } + }, { + key: "flashScrollIndicators", + value: function flashScrollIndicators() { + if (this._listRef) { + this._listRef.flashScrollIndicators(); + } + } + }, { + key: "getScrollResponder", + value: function getScrollResponder() { + if (this._listRef) { + return this._listRef.getScrollResponder(); + } + } + }, { + key: "getScrollableNode", + value: function getScrollableNode() { + if (this._listRef) { + return this._listRef.getScrollableNode(); + } + } + }, { + key: "setNativeProps", + value: function setNativeProps(props) { + if (this._listRef) { + this._listRef.setNativeProps(props); + } + } + }, { + key: "componentWillMount", + value: function componentWillMount() { + this._checkProps(this.props); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + invariant(nextProps.numColumns === this.props.numColumns, 'Changing numColumns on the fly is not supported. Change the key prop on FlatList when ' + 'changing the number of columns to force a fresh render of the component.'); + invariant(nextProps.onViewableItemsChanged === this.props.onViewableItemsChanged, 'Changing onViewableItemsChanged on the fly is not supported'); + invariant(nextProps.viewabilityConfig === this.props.viewabilityConfig, 'Changing viewabilityConfig on the fly is not supported'); + invariant(nextProps.viewabilityConfigCallbackPairs === this.props.viewabilityConfigCallbackPairs, 'Changing viewabilityConfigCallbackPairs on the fly is not supported'); + + this._checkProps(nextProps); + } + }]); + + function FlatList(props) { + babelHelpers.classCallCheck(this, FlatList); + + var _this = babelHelpers.possibleConstructorReturn(this, (FlatList.__proto__ || Object.getPrototypeOf(FlatList)).call(this, props)); + + _this._hasWarnedLegacy = false; + _this._virtualizedListPairs = []; + + _this._captureRef = function (ref) { + _this._listRef = ref; + }; + + _this._getItem = function (data, index) { + var numColumns = _this.props.numColumns; + + if (numColumns > 1) { + var ret = []; + + for (var kk = 0; kk < numColumns; kk++) { + var _item = data[index * numColumns + kk]; + _item && ret.push(_item); + } + + return ret; + } else { + return data[index]; + } + }; + + _this._getItemCount = function (data) { + return data ? Math.ceil(data.length / _this.props.numColumns) : 0; + }; + + _this._keyExtractor = function (items, index) { + var _this$props = _this.props, + keyExtractor = _this$props.keyExtractor, + numColumns = _this$props.numColumns; + + if (numColumns > 1) { + invariant(Array.isArray(items), 'FlatList: Encountered internal consistency error, expected each item to consist of an ' + 'array with 1-%s columns; instead, received a single item.', numColumns); + return items.map(function (it, kk) { + return keyExtractor(it, index * numColumns + kk); + }).join(':'); + } else { + return keyExtractor(items, index); + } + }; + + _this._renderItem = function (info) { + var _this$props2 = _this.props, + renderItem = _this$props2.renderItem, + numColumns = _this$props2.numColumns, + columnWrapperStyle = _this$props2.columnWrapperStyle; + + if (numColumns > 1) { + var _item2 = info.item, + _index = info.index; + invariant(Array.isArray(_item2), 'Expected array of items with numColumns > 1'); + return React.createElement( + View, + { + style: [{ + flexDirection: 'row' + }, columnWrapperStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 607 + } + }, + _item2.map(function (it, kk) { + var element = renderItem({ + item: it, + index: _index * numColumns + kk, + separators: info.separators + }); + return element && React.cloneElement(element, { + key: kk + }); + }) + ); + } else { + return renderItem(info); + } + }; + + if (_this.props.viewabilityConfigCallbackPairs) { + _this._virtualizedListPairs = _this.props.viewabilityConfigCallbackPairs.map(function (pair) { + return { + viewabilityConfig: pair.viewabilityConfig, + onViewableItemsChanged: _this._createOnViewableItemsChanged(pair.onViewableItemsChanged) + }; + }); + } else if (_this.props.onViewableItemsChanged) { + _this._virtualizedListPairs.push({ + viewabilityConfig: _this.props.viewabilityConfig, + onViewableItemsChanged: _this._createOnViewableItemsChanged(_this.props.onViewableItemsChanged) + }); + } + + return _this; + } + + babelHelpers.createClass(FlatList, [{ + key: "_checkProps", + value: function _checkProps(props) { + var getItem = props.getItem, + getItemCount = props.getItemCount, + horizontal = props.horizontal, + legacyImplementation = props.legacyImplementation, + numColumns = props.numColumns, + columnWrapperStyle = props.columnWrapperStyle, + onViewableItemsChanged = props.onViewableItemsChanged, + viewabilityConfigCallbackPairs = props.viewabilityConfigCallbackPairs; + invariant(!getItem && !getItemCount, 'FlatList does not support custom data formats.'); + + if (numColumns > 1) { + invariant(!horizontal, 'numColumns does not support horizontal.'); + } else { + invariant(!columnWrapperStyle, 'columnWrapperStyle not supported for single column lists'); + } + + if (legacyImplementation) { + invariant(numColumns === 1, 'Legacy list does not support multiple columns.'); + + if (!this._hasWarnedLegacy) { + console.warn('FlatList: Using legacyImplementation - some features not supported and performance ' + 'may suffer'); + this._hasWarnedLegacy = true; + } + } + + invariant(!(onViewableItemsChanged && viewabilityConfigCallbackPairs), 'FlatList does not support setting both onViewableItemsChanged and ' + 'viewabilityConfigCallbackPairs.'); + } + }, { + key: "_pushMultiColumnViewable", + value: function _pushMultiColumnViewable(arr, v) { + var _props = this.props, + numColumns = _props.numColumns, + keyExtractor = _props.keyExtractor; + v.item.forEach(function (item, ii) { + invariant(v.index != null, 'Missing index!'); + var index = v.index * numColumns + ii; + arr.push(babelHelpers.extends({}, v, { + item: item, + key: keyExtractor(item, index), + index: index + })); + }); + } + }, { + key: "_createOnViewableItemsChanged", + value: function _createOnViewableItemsChanged(onViewableItemsChanged) { + var _this2 = this; + + return function (info) { + var numColumns = _this2.props.numColumns; + + if (onViewableItemsChanged) { + if (numColumns > 1) { + var _changed = []; + var _viewableItems = []; + info.viewableItems.forEach(function (v) { + return _this2._pushMultiColumnViewable(_viewableItems, v); + }); + info.changed.forEach(function (v) { + return _this2._pushMultiColumnViewable(_changed, v); + }); + onViewableItemsChanged({ + viewableItems: _viewableItems, + changed: _changed + }); + } else { + onViewableItemsChanged(info); + } + } + }; + } + }, { + key: "render", + value: function render() { + if (this.props.legacyImplementation) { + return React.createElement(MetroListView, babelHelpers.extends({}, this.props, { + items: this.props.data, + ref: this._captureRef, + __source: { + fileName: _jsxFileName, + lineNumber: 626 + } + })); + } else { + return React.createElement(VirtualizedList, babelHelpers.extends({}, this.props, { + renderItem: this._renderItem, + getItem: this._getItem, + getItemCount: this._getItemCount, + keyExtractor: this._keyExtractor, + ref: this._captureRef, + viewabilityConfigCallbackPairs: this._virtualizedListPairs, + __source: { + fileName: _jsxFileName, + lineNumber: 634 + } + })); + } + } + }]); + return FlatList; + }(React.PureComponent); + + FlatList.defaultProps = defaultProps; + module.exports = FlatList; +},280,[281,171,211,288,282,18],"FlatList"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Lists/MetroListView.js"; + + var ListView = require(_dependencyMap[0], 'ListView'); + + var React = require(_dependencyMap[1], 'React'); + + var RefreshControl = require(_dependencyMap[2], 'RefreshControl'); + + var ScrollView = require(_dependencyMap[3], 'ScrollView'); + + var invariant = require(_dependencyMap[4], 'fbjs/lib/invariant'); + + var MetroListView = function (_React$Component) { + babelHelpers.inherits(MetroListView, _React$Component); + + function MetroListView() { + var _ref, + _this2 = this; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, MetroListView); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = MetroListView.__proto__ || Object.getPrototypeOf(MetroListView)).call.apply(_ref, [this].concat(args))), _this), _this.state = _this._computeState(_this.props, { + ds: new ListView.DataSource({ + rowHasChanged: function rowHasChanged(itemA, itemB) { + return true; + }, + sectionHeaderHasChanged: function sectionHeaderHasChanged() { + return true; + }, + getSectionHeaderData: function getSectionHeaderData(dataBlob, sectionID) { + return _this.state.sectionHeaderData[sectionID]; + } + }), + sectionHeaderData: {} + }), _this._captureRef = function (ref) { + _this._listRef = ref; + }, _this._renderFooter = function () { + return React.createElement(_this2.props.FooterComponent, { + key: "$footer", + __source: { + fileName: _jsxFileName, + lineNumber: 183 + } + }); + }, _this._renderRow = function (item, sectionID, rowID, highlightRow) { + return _this.props.renderItem({ + item: item, + index: rowID + }); + }, _this._renderSectionHeader = function (section, sectionID) { + var renderSectionHeader = _this.props.renderSectionHeader; + invariant(renderSectionHeader, 'Must provide renderSectionHeader with sections prop'); + return renderSectionHeader({ + section: section + }); + }, _this._renderSeparator = function (sID, rID) { + return React.createElement(_this2.props.SeparatorComponent, { + key: sID + rID, + __source: { + fileName: _jsxFileName, + lineNumber: 199 + } + }); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(MetroListView, [{ + key: "scrollToEnd", + value: function scrollToEnd(params) { + throw new Error('scrollToEnd not supported in legacy ListView.'); + } + }, { + key: "scrollToIndex", + value: function scrollToIndex(params) { + throw new Error('scrollToIndex not supported in legacy ListView.'); + } + }, { + key: "scrollToItem", + value: function scrollToItem(params) { + throw new Error('scrollToItem not supported in legacy ListView.'); + } + }, { + key: "scrollToLocation", + value: function scrollToLocation(params) { + throw new Error('scrollToLocation not supported in legacy ListView.'); + } + }, { + key: "scrollToOffset", + value: function scrollToOffset(params) { + var animated = params.animated, + offset = params.offset; + + this._listRef.scrollTo(this.props.horizontal ? { + x: offset, + animated: animated + } : { + y: offset, + animated: animated + }); + } + }, { + key: "getListRef", + value: function getListRef() { + return this._listRef; + } + }, { + key: "setNativeProps", + value: function setNativeProps(props) { + if (this._listRef) { + this._listRef.setNativeProps(props); + } + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(newProps) { + var _this3 = this; + + this.setState(function (state) { + return _this3._computeState(newProps, state); + }); + } + }, { + key: "render", + value: function render() { + return React.createElement(ListView, babelHelpers.extends({}, this.props, { + dataSource: this.state.ds, + ref: this._captureRef, + renderRow: this._renderRow, + renderFooter: this.props.FooterComponent && this._renderFooter, + renderSectionHeader: this.props.sections && this._renderSectionHeader, + renderSeparator: this.props.SeparatorComponent && this._renderSeparator, + __source: { + fileName: _jsxFileName, + lineNumber: 143 + } + })); + } + }, { + key: "_computeState", + value: function _computeState(props, state) { + var sectionHeaderData = {}; + + if (props.sections) { + invariant(!props.items, 'Cannot have both sections and items props.'); + var _sections = {}; + props.sections.forEach(function (sectionIn, ii) { + var sectionID = 's' + ii; + _sections[sectionID] = sectionIn.data; + sectionHeaderData[sectionID] = sectionIn; + }); + return { + ds: state.ds.cloneWithRowsAndSections(_sections), + sectionHeaderData: sectionHeaderData + }; + } else { + invariant(!props.sections, 'Cannot have both sections and items props.'); + return { + ds: state.ds.cloneWithRows(props.items), + sectionHeaderData: sectionHeaderData + }; + } + } + }]); + return MetroListView; + }(React.Component); + + MetroListView.defaultProps = { + keyExtractor: function keyExtractor(item, index) { + return item.key || String(index); + }, + renderScrollComponent: function renderScrollComponent(props) { + if (props.onRefresh) { + return React.createElement(ScrollView, babelHelpers.extends({}, props, { + refreshControl: React.createElement(RefreshControl, { + refreshing: props.refreshing, + onRefresh: props.onRefresh, + __source: { + fileName: _jsxFileName, + lineNumber: 117 + } + }), + __source: { + fileName: _jsxFileName, + lineNumber: 110 + } + })); + } else { + return React.createElement(ScrollView, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 125 + } + })); + } + } + }; + module.exports = MetroListView; +},281,[282,171,287,265,18],"MetroListView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Lists/ListView/ListView.js"; + + var ListViewDataSource = require(_dependencyMap[0], 'ListViewDataSource'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var React = require(_dependencyMap[2], 'React'); + + var PropTypes = require(_dependencyMap[3], 'prop-types'); + + var ReactNative = require(_dependencyMap[4], 'ReactNative'); + + var RCTScrollViewManager = require(_dependencyMap[5], 'NativeModules').ScrollViewManager; + + var ScrollView = require(_dependencyMap[6], 'ScrollView'); + + var ScrollResponder = require(_dependencyMap[7], 'ScrollResponder'); + + var StaticRenderer = require(_dependencyMap[8], 'StaticRenderer'); + + var TimerMixin = require(_dependencyMap[9], 'react-timer-mixin'); + + var View = require(_dependencyMap[10], 'View'); + + var cloneReferencedElement = require(_dependencyMap[11], 'react-clone-referenced-element'); + + var createReactClass = require(_dependencyMap[12], 'create-react-class'); + + var isEmpty = require(_dependencyMap[13], 'isEmpty'); + + var merge = require(_dependencyMap[14], 'merge'); + + var DEFAULT_PAGE_SIZE = 1; + var DEFAULT_INITIAL_ROWS = 10; + var DEFAULT_SCROLL_RENDER_AHEAD = 1000; + var DEFAULT_END_REACHED_THRESHOLD = 1000; + var DEFAULT_SCROLL_CALLBACK_THROTTLE = 50; + var ListView = createReactClass({ + displayName: 'ListView', + _childFrames: [], + _sentEndForContentLength: null, + _scrollComponent: null, + _prevRenderedRowsCount: 0, + _visibleRows: {}, + scrollProperties: {}, + mixins: [ScrollResponder.Mixin, TimerMixin], + statics: { + DataSource: ListViewDataSource + }, + propTypes: babelHelpers.extends({}, ScrollView.propTypes, { + dataSource: PropTypes.instanceOf(ListViewDataSource).isRequired, + renderSeparator: PropTypes.func, + renderRow: PropTypes.func.isRequired, + initialListSize: PropTypes.number.isRequired, + onEndReached: PropTypes.func, + onEndReachedThreshold: PropTypes.number.isRequired, + pageSize: PropTypes.number.isRequired, + renderFooter: PropTypes.func, + renderHeader: PropTypes.func, + renderSectionHeader: PropTypes.func, + renderScrollComponent: PropTypes.func.isRequired, + scrollRenderAheadDistance: PropTypes.number.isRequired, + onChangeVisibleRows: PropTypes.func, + removeClippedSubviews: PropTypes.bool, + stickySectionHeadersEnabled: PropTypes.bool, + stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number).isRequired, + enableEmptySections: PropTypes.bool + }), + getMetrics: function getMetrics() { + return { + contentLength: this.scrollProperties.contentLength, + totalRows: this.props.enableEmptySections ? this.props.dataSource.getRowAndSectionCount() : this.props.dataSource.getRowCount(), + renderedRows: this.state.curRenderedRowsCount, + visibleRows: Object.keys(this._visibleRows).length + }; + }, + getScrollResponder: function getScrollResponder() { + if (this._scrollComponent && this._scrollComponent.getScrollResponder) { + return this._scrollComponent.getScrollResponder(); + } + }, + getScrollableNode: function getScrollableNode() { + if (this._scrollComponent && this._scrollComponent.getScrollableNode) { + return this._scrollComponent.getScrollableNode(); + } else { + return ReactNative.findNodeHandle(this._scrollComponent); + } + }, + scrollTo: function scrollTo() { + if (this._scrollComponent && this._scrollComponent.scrollTo) { + var _scrollComponent; + + (_scrollComponent = this._scrollComponent).scrollTo.apply(_scrollComponent, arguments); + } + }, + scrollToEnd: function scrollToEnd(options) { + if (this._scrollComponent) { + if (this._scrollComponent.scrollToEnd) { + this._scrollComponent.scrollToEnd(options); + } else { + console.warn('The scroll component used by the ListView does not support ' + 'scrollToEnd. Check the renderScrollComponent prop of your ListView.'); + } + } + }, + flashScrollIndicators: function flashScrollIndicators() { + if (this._scrollComponent && this._scrollComponent.flashScrollIndicators) { + this._scrollComponent.flashScrollIndicators(); + } + }, + setNativeProps: function setNativeProps(props) { + if (this._scrollComponent) { + this._scrollComponent.setNativeProps(props); + } + }, + getDefaultProps: function getDefaultProps() { + return { + initialListSize: DEFAULT_INITIAL_ROWS, + pageSize: DEFAULT_PAGE_SIZE, + renderScrollComponent: function renderScrollComponent(props) { + return React.createElement(ScrollView, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 338 + } + })); + }, + scrollRenderAheadDistance: DEFAULT_SCROLL_RENDER_AHEAD, + onEndReachedThreshold: DEFAULT_END_REACHED_THRESHOLD, + stickySectionHeadersEnabled: Platform.OS === 'ios', + stickyHeaderIndices: [] + }; + }, + getInitialState: function getInitialState() { + return { + curRenderedRowsCount: this.props.initialListSize, + highlightedRow: {} + }; + }, + getInnerViewNode: function getInnerViewNode() { + return this._scrollComponent.getInnerViewNode(); + }, + componentWillMount: function componentWillMount() { + this.scrollProperties = { + visibleLength: null, + contentLength: null, + offset: 0 + }; + this._childFrames = []; + this._visibleRows = {}; + this._prevRenderedRowsCount = 0; + this._sentEndForContentLength = null; + }, + componentDidMount: function componentDidMount() { + var _this = this; + + this.requestAnimationFrame(function () { + _this._measureAndUpdateScrollProps(); + }); + }, + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + var _this2 = this; + + if (this.props.dataSource !== nextProps.dataSource || this.props.initialListSize !== nextProps.initialListSize) { + this.setState(function (state, props) { + _this2._prevRenderedRowsCount = 0; + return { + curRenderedRowsCount: Math.min(Math.max(state.curRenderedRowsCount, props.initialListSize), props.enableEmptySections ? props.dataSource.getRowAndSectionCount() : props.dataSource.getRowCount()) + }; + }, function () { + return _this2._renderMoreRowsIfNeeded(); + }); + } + }, + componentDidUpdate: function componentDidUpdate() { + var _this3 = this; + + this.requestAnimationFrame(function () { + _this3._measureAndUpdateScrollProps(); + }); + }, + _onRowHighlighted: function _onRowHighlighted(sectionID, rowID) { + this.setState({ + highlightedRow: { + sectionID: sectionID, + rowID: rowID + } + }); + }, + render: function render() { + var bodyComponents = []; + var dataSource = this.props.dataSource; + var allRowIDs = dataSource.rowIdentities; + var rowCount = 0; + var stickySectionHeaderIndices = []; + var renderSectionHeader = this.props.renderSectionHeader; + var header = this.props.renderHeader && this.props.renderHeader(); + var footer = this.props.renderFooter && this.props.renderFooter(); + var totalIndex = header ? 1 : 0; + + for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) { + var sectionID = dataSource.sectionIdentities[sectionIdx]; + var rowIDs = allRowIDs[sectionIdx]; + + if (rowIDs.length === 0) { + if (this.props.enableEmptySections === undefined) { + var warning = require(_dependencyMap[15], 'fbjs/lib/warning'); + + warning(false, 'In next release empty section headers will be rendered.' + " In this release you can use 'enableEmptySections' flag to render empty section headers."); + continue; + } else { + var invariant = require(_dependencyMap[16], 'fbjs/lib/invariant'); + + invariant(this.props.enableEmptySections, "In next release 'enableEmptySections' flag will be deprecated, empty section headers will always be rendered." + ' If empty section headers are not desirable their indices should be excluded from sectionIDs object.' + " In this release 'enableEmptySections' may only have value 'true' to allow empty section headers rendering."); + } + } + + if (renderSectionHeader) { + var element = renderSectionHeader(dataSource.getSectionHeaderData(sectionIdx), sectionID); + + if (element) { + bodyComponents.push(React.cloneElement(element, { + key: 's_' + sectionID + })); + + if (this.props.stickySectionHeadersEnabled) { + stickySectionHeaderIndices.push(totalIndex); + } + + totalIndex++; + } + } + + for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) { + var rowID = rowIDs[rowIdx]; + var comboID = sectionID + '_' + rowID; + var shouldUpdateRow = rowCount >= this._prevRenderedRowsCount && dataSource.rowShouldUpdate(sectionIdx, rowIdx); + var row = React.createElement(StaticRenderer, { + key: 'r_' + comboID, + shouldUpdate: !!shouldUpdateRow, + render: this.props.renderRow.bind(null, dataSource.getRowData(sectionIdx, rowIdx), sectionID, rowID, this._onRowHighlighted), + __source: { + fileName: _jsxFileName, + lineNumber: 473 + } + }); + bodyComponents.push(row); + totalIndex++; + + if (this.props.renderSeparator && (rowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)) { + var adjacentRowHighlighted = this.state.highlightedRow.sectionID === sectionID && (this.state.highlightedRow.rowID === rowID || this.state.highlightedRow.rowID === rowIDs[rowIdx + 1]); + var separator = this.props.renderSeparator(sectionID, rowID, adjacentRowHighlighted); + + if (separator) { + bodyComponents.push(React.createElement( + View, + { + key: 's_' + comboID, + __source: { + fileName: _jsxFileName, + lineNumber: 502 + } + }, + separator + )); + totalIndex++; + } + } + + if (++rowCount === this.state.curRenderedRowsCount) { + break; + } + } + + if (rowCount >= this.state.curRenderedRowsCount) { + break; + } + } + + var _props = this.props, + renderScrollComponent = _props.renderScrollComponent, + props = babelHelpers.objectWithoutProperties(_props, ["renderScrollComponent"]); + + if (!props.scrollEventThrottle) { + props.scrollEventThrottle = DEFAULT_SCROLL_CALLBACK_THROTTLE; + } + + if (props.removeClippedSubviews === undefined) { + props.removeClippedSubviews = true; + } + + babelHelpers.extends(props, { + onScroll: this._onScroll, + stickyHeaderIndices: this.props.stickyHeaderIndices.concat(stickySectionHeaderIndices), + onKeyboardWillShow: undefined, + onKeyboardWillHide: undefined, + onKeyboardDidShow: undefined, + onKeyboardDidHide: undefined + }); + return cloneReferencedElement(renderScrollComponent(props), { + ref: this._setScrollComponentRef, + onContentSizeChange: this._onContentSizeChange, + onLayout: this._onLayout, + DEPRECATED_sendUpdatedChildFrames: typeof props.onChangeVisibleRows !== undefined + }, header, bodyComponents, footer); + }, + _measureAndUpdateScrollProps: function _measureAndUpdateScrollProps() { + var scrollComponent = this.getScrollResponder(); + + if (!scrollComponent || !scrollComponent.getInnerViewNode) { + return; + } + + RCTScrollViewManager && RCTScrollViewManager.calculateChildFrames && RCTScrollViewManager.calculateChildFrames(ReactNative.findNodeHandle(scrollComponent), this._updateVisibleRows); + }, + _setScrollComponentRef: function _setScrollComponentRef(scrollComponent) { + this._scrollComponent = scrollComponent; + }, + _onContentSizeChange: function _onContentSizeChange(width, height) { + var contentLength = !this.props.horizontal ? height : width; + + if (contentLength !== this.scrollProperties.contentLength) { + this.scrollProperties.contentLength = contentLength; + + this._updateVisibleRows(); + + this._renderMoreRowsIfNeeded(); + } + + this.props.onContentSizeChange && this.props.onContentSizeChange(width, height); + }, + _onLayout: function _onLayout(event) { + var _event$nativeEvent$la = event.nativeEvent.layout, + width = _event$nativeEvent$la.width, + height = _event$nativeEvent$la.height; + var visibleLength = !this.props.horizontal ? height : width; + + if (visibleLength !== this.scrollProperties.visibleLength) { + this.scrollProperties.visibleLength = visibleLength; + + this._updateVisibleRows(); + + this._renderMoreRowsIfNeeded(); + } + + this.props.onLayout && this.props.onLayout(event); + }, + _maybeCallOnEndReached: function _maybeCallOnEndReached(event) { + if (this.props.onEndReached && this.scrollProperties.contentLength !== this._sentEndForContentLength && this._getDistanceFromEnd(this.scrollProperties) < this.props.onEndReachedThreshold && this.state.curRenderedRowsCount === (this.props.enableEmptySections ? this.props.dataSource.getRowAndSectionCount() : this.props.dataSource.getRowCount())) { + this._sentEndForContentLength = this.scrollProperties.contentLength; + this.props.onEndReached(event); + return true; + } + + return false; + }, + _renderMoreRowsIfNeeded: function _renderMoreRowsIfNeeded() { + if (this.scrollProperties.contentLength === null || this.scrollProperties.visibleLength === null || this.state.curRenderedRowsCount === (this.props.enableEmptySections ? this.props.dataSource.getRowAndSectionCount() : this.props.dataSource.getRowCount())) { + this._maybeCallOnEndReached(); + + return; + } + + var distanceFromEnd = this._getDistanceFromEnd(this.scrollProperties); + + if (distanceFromEnd < this.props.scrollRenderAheadDistance) { + this._pageInNewRows(); + } + }, + _pageInNewRows: function _pageInNewRows() { + var _this4 = this; + + this.setState(function (state, props) { + var rowsToRender = Math.min(state.curRenderedRowsCount + props.pageSize, props.enableEmptySections ? props.dataSource.getRowAndSectionCount() : props.dataSource.getRowCount()); + _this4._prevRenderedRowsCount = state.curRenderedRowsCount; + return { + curRenderedRowsCount: rowsToRender + }; + }, function () { + _this4._measureAndUpdateScrollProps(); + + _this4._prevRenderedRowsCount = _this4.state.curRenderedRowsCount; + }); + }, + _getDistanceFromEnd: function _getDistanceFromEnd(scrollProperties) { + return scrollProperties.contentLength - scrollProperties.visibleLength - scrollProperties.offset; + }, + _updateVisibleRows: function _updateVisibleRows(updatedFrames) { + var _this5 = this; + + if (!this.props.onChangeVisibleRows) { + return; + } + + if (updatedFrames) { + updatedFrames.forEach(function (newFrame) { + _this5._childFrames[newFrame.index] = merge(newFrame); + }); + } + + var isVertical = !this.props.horizontal; + var dataSource = this.props.dataSource; + var visibleMin = this.scrollProperties.offset; + var visibleMax = visibleMin + this.scrollProperties.visibleLength; + var allRowIDs = dataSource.rowIdentities; + var header = this.props.renderHeader && this.props.renderHeader(); + var totalIndex = header ? 1 : 0; + var visibilityChanged = false; + var changedRows = {}; + + for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) { + var rowIDs = allRowIDs[sectionIdx]; + + if (rowIDs.length === 0) { + continue; + } + + var sectionID = dataSource.sectionIdentities[sectionIdx]; + + if (this.props.renderSectionHeader) { + totalIndex++; + } + + var visibleSection = this._visibleRows[sectionID]; + + if (!visibleSection) { + visibleSection = {}; + } + + for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) { + var rowID = rowIDs[rowIdx]; + var frame = this._childFrames[totalIndex]; + totalIndex++; + + if (this.props.renderSeparator && (rowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)) { + totalIndex++; + } + + if (!frame) { + break; + } + + var rowVisible = visibleSection[rowID]; + var min = isVertical ? frame.y : frame.x; + var max = min + (isVertical ? frame.height : frame.width); + + if (!min && !max || min === max) { + break; + } + + if (min > visibleMax || max < visibleMin) { + if (rowVisible) { + visibilityChanged = true; + delete visibleSection[rowID]; + + if (!changedRows[sectionID]) { + changedRows[sectionID] = {}; + } + + changedRows[sectionID][rowID] = false; + } + } else if (!rowVisible) { + visibilityChanged = true; + visibleSection[rowID] = true; + + if (!changedRows[sectionID]) { + changedRows[sectionID] = {}; + } + + changedRows[sectionID][rowID] = true; + } + } + + if (!isEmpty(visibleSection)) { + this._visibleRows[sectionID] = visibleSection; + } else if (this._visibleRows[sectionID]) { + delete this._visibleRows[sectionID]; + } + } + + visibilityChanged && this.props.onChangeVisibleRows(this._visibleRows, changedRows); + }, + _onScroll: function _onScroll(e) { + var isVertical = !this.props.horizontal; + this.scrollProperties.visibleLength = e.nativeEvent.layoutMeasurement[isVertical ? 'height' : 'width']; + this.scrollProperties.contentLength = e.nativeEvent.contentSize[isVertical ? 'height' : 'width']; + this.scrollProperties.offset = e.nativeEvent.contentOffset[isVertical ? 'y' : 'x']; + + this._updateVisibleRows(e.nativeEvent.updatedChildFrames); + + if (!this._maybeCallOnEndReached(e)) { + this._renderMoreRowsIfNeeded(); + } + + if (this.props.onEndReached && this._getDistanceFromEnd(this.scrollProperties) > this.props.onEndReachedThreshold) { + this._sentEndForContentLength = null; + } + + this.props.onScroll && this.props.onScroll(e); + } + }); + module.exports = ListView; +},282,[283,105,171,24,74,68,265,267,285,232,211,286,213,284,175,19,18],"ListView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var isEmpty = require(_dependencyMap[1], 'isEmpty'); + + var warning = require(_dependencyMap[2], 'fbjs/lib/warning'); + + function defaultGetRowData(dataBlob, sectionID, rowID) { + return dataBlob[sectionID][rowID]; + } + + function defaultGetSectionHeaderData(dataBlob, sectionID) { + return dataBlob[sectionID]; + } + + var ListViewDataSource = function () { + function ListViewDataSource(params) { + babelHelpers.classCallCheck(this, ListViewDataSource); + invariant(params && typeof params.rowHasChanged === 'function', 'Must provide a rowHasChanged function.'); + this._rowHasChanged = params.rowHasChanged; + this._getRowData = params.getRowData || defaultGetRowData; + this._sectionHeaderHasChanged = params.sectionHeaderHasChanged; + this._getSectionHeaderData = params.getSectionHeaderData || defaultGetSectionHeaderData; + this._dataBlob = null; + this._dirtyRows = []; + this._dirtySections = []; + this._cachedRowCount = 0; + this.rowIdentities = []; + this.sectionIdentities = []; + } + + babelHelpers.createClass(ListViewDataSource, [{ + key: "cloneWithRows", + value: function cloneWithRows(dataBlob, rowIdentities) { + var rowIds = rowIdentities ? [[].concat(babelHelpers.toConsumableArray(rowIdentities))] : null; + + if (!this._sectionHeaderHasChanged) { + this._sectionHeaderHasChanged = function () { + return false; + }; + } + + return this.cloneWithRowsAndSections({ + s1: dataBlob + }, ['s1'], rowIds); + } + }, { + key: "cloneWithRowsAndSections", + value: function cloneWithRowsAndSections(dataBlob, sectionIdentities, rowIdentities) { + invariant(typeof this._sectionHeaderHasChanged === 'function', 'Must provide a sectionHeaderHasChanged function with section data.'); + invariant(!sectionIdentities || !rowIdentities || sectionIdentities.length === rowIdentities.length, 'row and section ids lengths must be the same'); + var newSource = new ListViewDataSource({ + getRowData: this._getRowData, + getSectionHeaderData: this._getSectionHeaderData, + rowHasChanged: this._rowHasChanged, + sectionHeaderHasChanged: this._sectionHeaderHasChanged + }); + newSource._dataBlob = dataBlob; + + if (sectionIdentities) { + newSource.sectionIdentities = sectionIdentities; + } else { + newSource.sectionIdentities = Object.keys(dataBlob); + } + + if (rowIdentities) { + newSource.rowIdentities = rowIdentities; + } else { + newSource.rowIdentities = []; + newSource.sectionIdentities.forEach(function (sectionID) { + newSource.rowIdentities.push(Object.keys(dataBlob[sectionID])); + }); + } + + newSource._cachedRowCount = countRows(newSource.rowIdentities); + + newSource._calculateDirtyArrays(this._dataBlob, this.sectionIdentities, this.rowIdentities); + + return newSource; + } + }, { + key: "getRowCount", + value: function getRowCount() { + return this._cachedRowCount; + } + }, { + key: "getRowAndSectionCount", + value: function getRowAndSectionCount() { + return this._cachedRowCount + this.sectionIdentities.length; + } + }, { + key: "rowShouldUpdate", + value: function rowShouldUpdate(sectionIndex, rowIndex) { + var needsUpdate = this._dirtyRows[sectionIndex][rowIndex]; + warning(needsUpdate !== undefined, 'missing dirtyBit for section, row: ' + sectionIndex + ', ' + rowIndex); + return needsUpdate; + } + }, { + key: "getRowData", + value: function getRowData(sectionIndex, rowIndex) { + var sectionID = this.sectionIdentities[sectionIndex]; + var rowID = this.rowIdentities[sectionIndex][rowIndex]; + warning(sectionID !== undefined && rowID !== undefined, 'rendering invalid section, row: ' + sectionIndex + ', ' + rowIndex); + return this._getRowData(this._dataBlob, sectionID, rowID); + } + }, { + key: "getRowIDForFlatIndex", + value: function getRowIDForFlatIndex(index) { + var accessIndex = index; + + for (var ii = 0; ii < this.sectionIdentities.length; ii++) { + if (accessIndex >= this.rowIdentities[ii].length) { + accessIndex -= this.rowIdentities[ii].length; + } else { + return this.rowIdentities[ii][accessIndex]; + } + } + + return null; + } + }, { + key: "getSectionIDForFlatIndex", + value: function getSectionIDForFlatIndex(index) { + var accessIndex = index; + + for (var ii = 0; ii < this.sectionIdentities.length; ii++) { + if (accessIndex >= this.rowIdentities[ii].length) { + accessIndex -= this.rowIdentities[ii].length; + } else { + return this.sectionIdentities[ii]; + } + } + + return null; + } + }, { + key: "getSectionLengths", + value: function getSectionLengths() { + var results = []; + + for (var ii = 0; ii < this.sectionIdentities.length; ii++) { + results.push(this.rowIdentities[ii].length); + } + + return results; + } + }, { + key: "sectionHeaderShouldUpdate", + value: function sectionHeaderShouldUpdate(sectionIndex) { + var needsUpdate = this._dirtySections[sectionIndex]; + warning(needsUpdate !== undefined, 'missing dirtyBit for section: ' + sectionIndex); + return needsUpdate; + } + }, { + key: "getSectionHeaderData", + value: function getSectionHeaderData(sectionIndex) { + if (!this._getSectionHeaderData) { + return null; + } + + var sectionID = this.sectionIdentities[sectionIndex]; + warning(sectionID !== undefined, 'renderSection called on invalid section: ' + sectionIndex); + return this._getSectionHeaderData(this._dataBlob, sectionID); + } + }, { + key: "_calculateDirtyArrays", + value: function _calculateDirtyArrays(prevDataBlob, prevSectionIDs, prevRowIDs) { + var prevSectionsHash = keyedDictionaryFromArray(prevSectionIDs); + var prevRowsHash = {}; + + for (var ii = 0; ii < prevRowIDs.length; ii++) { + var sectionID = prevSectionIDs[ii]; + warning(!prevRowsHash[sectionID], 'SectionID appears more than once: ' + sectionID); + prevRowsHash[sectionID] = keyedDictionaryFromArray(prevRowIDs[ii]); + } + + this._dirtySections = []; + this._dirtyRows = []; + var dirty; + + for (var sIndex = 0; sIndex < this.sectionIdentities.length; sIndex++) { + var sectionID = this.sectionIdentities[sIndex]; + dirty = !prevSectionsHash[sectionID]; + var sectionHeaderHasChanged = this._sectionHeaderHasChanged; + + if (!dirty && sectionHeaderHasChanged) { + dirty = sectionHeaderHasChanged(this._getSectionHeaderData(prevDataBlob, sectionID), this._getSectionHeaderData(this._dataBlob, sectionID)); + } + + this._dirtySections.push(!!dirty); + + this._dirtyRows[sIndex] = []; + + for (var rIndex = 0; rIndex < this.rowIdentities[sIndex].length; rIndex++) { + var rowID = this.rowIdentities[sIndex][rIndex]; + dirty = !prevSectionsHash[sectionID] || !prevRowsHash[sectionID][rowID] || this._rowHasChanged(this._getRowData(prevDataBlob, sectionID, rowID), this._getRowData(this._dataBlob, sectionID, rowID)); + + this._dirtyRows[sIndex].push(!!dirty); + } + } + } + }]); + return ListViewDataSource; + }(); + + function countRows(allRowIDs) { + var totalRows = 0; + + for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) { + var rowIDs = allRowIDs[sectionIdx]; + totalRows += rowIDs.length; + } + + return totalRows; + } + + function keyedDictionaryFromArray(arr) { + if (isEmpty(arr)) { + return {}; + } + + var result = {}; + + for (var ii = 0; ii < arr.length; ii++) { + var key = arr[ii]; + warning(!result[key], 'Value appears more than once in array: ' + key); + result[key] = true; + } + + return result; + } + + module.exports = ListViewDataSource; +},283,[18,284,19],"ListViewDataSource"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function isEmpty(obj) { + if (Array.isArray(obj)) { + return obj.length === 0; + } else if (typeof obj === 'object') { + for (var i in obj) { + return false; + } + + return true; + } else { + return !obj; + } + } + + module.exports = isEmpty; +},284,[],"isEmpty"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var React = require(_dependencyMap[0], 'React'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var StaticRenderer = function (_React$Component) { + babelHelpers.inherits(StaticRenderer, _React$Component); + + function StaticRenderer() { + babelHelpers.classCallCheck(this, StaticRenderer); + return babelHelpers.possibleConstructorReturn(this, (StaticRenderer.__proto__ || Object.getPrototypeOf(StaticRenderer)).apply(this, arguments)); + } + + babelHelpers.createClass(StaticRenderer, [{ + key: "shouldComponentUpdate", + value: function shouldComponentUpdate(nextProps) { + return nextProps.shouldUpdate; + } + }, { + key: "render", + value: function render() { + return this.props.render(); + } + }]); + return StaticRenderer; + }(React.Component); + + StaticRenderer.propTypes = { + shouldUpdate: PropTypes.bool.isRequired, + render: PropTypes.func.isRequired + }; + module.exports = StaticRenderer; +},285,[171,24],"StaticRenderer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var React = require(_dependencyMap[0], 'react'); + + function cloneReferencedElement(element, config) { + var cloneRef = config.ref; + var originalRef = element.ref; + + for (var _len = arguments.length, children = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + children[_key - 2] = arguments[_key]; + } + + if (originalRef == null || cloneRef == null) { + return React.cloneElement.apply(React, [element, config].concat(children)); + } + + if (typeof originalRef !== 'function') { + if (__DEV__) { + console.warn('Cloning an element with a ref that will be overwritten because it ' + 'is not a function. Use a composable callback-style ref instead. ' + 'Ignoring ref: ' + originalRef); + } + + return React.cloneElement.apply(React, [element, config].concat(children)); + } + + return React.cloneElement.apply(React, [element, babelHelpers.extends({}, config, { + ref: function ref(component) { + cloneRef(component); + originalRef(component); + } + })].concat(children)); + } + + module.exports = cloneReferencedElement; +},286,[12],"react-clone-referenced-element/cloneReferencedElement.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var NativeMethodsMixin = require(_dependencyMap[1], 'NativeMethodsMixin'); + + var Platform = require(_dependencyMap[2], 'Platform'); + + var React = require(_dependencyMap[3], 'React'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var ViewPropTypes = require(_dependencyMap[5], 'ViewPropTypes'); + + var createReactClass = require(_dependencyMap[6], 'create-react-class'); + + var requireNativeComponent = require(_dependencyMap[7], 'requireNativeComponent'); + + if (Platform.OS === 'android') { + var RefreshLayoutConsts = require(_dependencyMap[8], 'UIManager').AndroidSwipeRefreshLayout.Constants; + } else { + var RefreshLayoutConsts = { + SIZE: {} + }; + } + + var RefreshControl = createReactClass({ + displayName: 'RefreshControl', + statics: { + SIZE: RefreshLayoutConsts.SIZE + }, + mixins: [NativeMethodsMixin], + propTypes: babelHelpers.extends({}, ViewPropTypes, { + onRefresh: PropTypes.func, + refreshing: PropTypes.bool.isRequired, + tintColor: ColorPropType, + titleColor: ColorPropType, + title: PropTypes.string, + enabled: PropTypes.bool, + colors: PropTypes.arrayOf(ColorPropType), + progressBackgroundColor: ColorPropType, + size: PropTypes.oneOf([RefreshLayoutConsts.SIZE.DEFAULT, RefreshLayoutConsts.SIZE.LARGE]), + progressViewOffset: PropTypes.number + }), + _nativeRef: null, + _lastNativeRefreshing: false, + componentDidMount: function componentDidMount() { + this._lastNativeRefreshing = this.props.refreshing; + }, + componentDidUpdate: function componentDidUpdate(prevProps) { + if (this.props.refreshing !== prevProps.refreshing) { + this._lastNativeRefreshing = this.props.refreshing; + } else if (this.props.refreshing !== this._lastNativeRefreshing) { + this._nativeRef.setNativeProps({ + refreshing: this.props.refreshing + }); + + this._lastNativeRefreshing = this.props.refreshing; + } + }, + render: function render() { + var _this = this; + + return React.createElement(NativeRefreshControl, babelHelpers.extends({}, this.props, { + ref: function ref(_ref) { + _this._nativeRef = _ref; + }, + onRefresh: this._onRefresh, + __source: { + fileName: _jsxFileName, + lineNumber: 156 + } + })); + }, + _onRefresh: function _onRefresh() { + this._lastNativeRefreshing = true; + this.props.onRefresh && this.props.onRefresh(); + this.forceUpdate(); + } + }); + + if (Platform.OS === 'ios') { + var NativeRefreshControl = requireNativeComponent('RCTRefreshControl', RefreshControl); + } else if (Platform.OS === 'android') { + var NativeRefreshControl = requireNativeComponent('AndroidSwipeRefreshLayout', RefreshControl); + } + + module.exports = RefreshControl; +},287,[167,169,105,171,24,172,213,186,158],"RefreshControl"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Lists/VirtualizedList.js"; + + var Batchinator = require(_dependencyMap[0], 'Batchinator'); + + var FillRateHelper = require(_dependencyMap[1], 'FillRateHelper'); + + var PropTypes = require(_dependencyMap[2], 'prop-types'); + + var React = require(_dependencyMap[3], 'React'); + + var ReactNative = require(_dependencyMap[4], 'ReactNative'); + + var RefreshControl = require(_dependencyMap[5], 'RefreshControl'); + + var ScrollView = require(_dependencyMap[6], 'ScrollView'); + + var StyleSheet = require(_dependencyMap[7], 'StyleSheet'); + + var View = require(_dependencyMap[8], 'View'); + + var ViewabilityHelper = require(_dependencyMap[9], 'ViewabilityHelper'); + + var flattenStyle = require(_dependencyMap[10], 'flattenStyle'); + + var infoLog = require(_dependencyMap[11], 'infoLog'); + + var invariant = require(_dependencyMap[12], 'fbjs/lib/invariant'); + + var warning = require(_dependencyMap[13], 'fbjs/lib/warning'); + + var _require = require(_dependencyMap[14], 'VirtualizeUtils'), + computeWindowedRenderLimits = _require.computeWindowedRenderLimits; + + var _usedIndexForKey = false; + + var VirtualizedList = function (_React$PureComponent) { + babelHelpers.inherits(VirtualizedList, _React$PureComponent); + babelHelpers.createClass(VirtualizedList, [{ + key: "scrollToEnd", + value: function scrollToEnd(params) { + var animated = params ? params.animated : true; + var veryLast = this.props.getItemCount(this.props.data) - 1; + + var frame = this._getFrameMetricsApprox(veryLast); + + var offset = Math.max(0, frame.offset + frame.length + this._footerLength - this._scrollMetrics.visibleLength); + + this._scrollRef.scrollTo(this.props.horizontal ? { + x: offset, + animated: animated + } : { + y: offset, + animated: animated + }); + } + }, { + key: "scrollToIndex", + value: function scrollToIndex(params) { + var _props = this.props, + data = _props.data, + horizontal = _props.horizontal, + getItemCount = _props.getItemCount, + getItemLayout = _props.getItemLayout, + onScrollToIndexFailed = _props.onScrollToIndexFailed; + var animated = params.animated, + index = params.index, + viewOffset = params.viewOffset, + viewPosition = params.viewPosition; + invariant(index >= 0 && index < getItemCount(data), "scrollToIndex out of range: " + index + " vs " + (getItemCount(data) - 1)); + + if (!getItemLayout && index > this._highestMeasuredFrameIndex) { + invariant(!!onScrollToIndexFailed, 'scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, ' + 'otherwise there is no way to know the location of offscreen indices or handle failures.'); + onScrollToIndexFailed({ + averageItemLength: this._averageCellLength, + highestMeasuredFrameIndex: this._highestMeasuredFrameIndex, + index: index + }); + return; + } + + var frame = this._getFrameMetricsApprox(index); + + var offset = Math.max(0, frame.offset - (viewPosition || 0) * (this._scrollMetrics.visibleLength - frame.length)) - (viewOffset || 0); + + this._scrollRef.scrollTo(horizontal ? { + x: offset, + animated: animated + } : { + y: offset, + animated: animated + }); + } + }, { + key: "scrollToItem", + value: function scrollToItem(params) { + var item = params.item; + var _props2 = this.props, + data = _props2.data, + getItem = _props2.getItem, + getItemCount = _props2.getItemCount; + var itemCount = getItemCount(data); + + for (var _index = 0; _index < itemCount; _index++) { + if (getItem(data, _index) === item) { + this.scrollToIndex(babelHelpers.extends({}, params, { + index: _index + })); + break; + } + } + } + }, { + key: "scrollToOffset", + value: function scrollToOffset(params) { + var animated = params.animated, + offset = params.offset; + + this._scrollRef.scrollTo(this.props.horizontal ? { + x: offset, + animated: animated + } : { + y: offset, + animated: animated + }); + } + }, { + key: "recordInteraction", + value: function recordInteraction() { + this._viewabilityTuples.forEach(function (t) { + t.viewabilityHelper.recordInteraction(); + }); + + this._updateViewableItems(this.props.data); + } + }, { + key: "flashScrollIndicators", + value: function flashScrollIndicators() { + this._scrollRef.flashScrollIndicators(); + } + }, { + key: "getScrollResponder", + value: function getScrollResponder() { + if (this._scrollRef && this._scrollRef.getScrollResponder) { + return this._scrollRef.getScrollResponder(); + } + } + }, { + key: "getScrollableNode", + value: function getScrollableNode() { + if (this._scrollRef && this._scrollRef.getScrollableNode) { + return this._scrollRef.getScrollableNode(); + } else { + return ReactNative.findNodeHandle(this._scrollRef); + } + } + }, { + key: "setNativeProps", + value: function setNativeProps(props) { + if (this._scrollRef) { + this._scrollRef.setNativeProps(props); + } + } + }, { + key: "getChildContext", + value: function getChildContext() { + return { + virtualizedList: { + horizontal: this.props.horizontal + } + }; + } + }]); + + function VirtualizedList(props, context) { + babelHelpers.classCallCheck(this, VirtualizedList); + + var _this = babelHelpers.possibleConstructorReturn(this, (VirtualizedList.__proto__ || Object.getPrototypeOf(VirtualizedList)).call(this, props, context)); + + _initialiseProps.call(_this); + + invariant(!props.onScroll || !props.onScroll.__isNative, 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' + 'to support native onScroll events with useNativeDriver'); + invariant(!(_this._isNestedWithSameOrientation() && props.onViewableItemsChanged), 'Nesting lists that scroll in the same direction does not support onViewableItemsChanged' + 'on the inner list.'); + _this._fillRateHelper = new FillRateHelper(_this._getFrameMetrics); + _this._updateCellsToRenderBatcher = new Batchinator(_this._updateCellsToRender, _this.props.updateCellsBatchingPeriod); + + if (_this.props.viewabilityConfigCallbackPairs) { + _this._viewabilityTuples = _this.props.viewabilityConfigCallbackPairs.map(function (pair) { + return { + viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig), + onViewableItemsChanged: pair.onViewableItemsChanged + }; + }); + } else if (_this.props.onViewableItemsChanged) { + _this._viewabilityTuples.push({ + viewabilityHelper: new ViewabilityHelper(_this.props.viewabilityConfig), + onViewableItemsChanged: _this.props.onViewableItemsChanged + }); + } + + _this.state = { + first: _this.props.initialScrollIndex || 0, + last: Math.min(_this.props.getItemCount(_this.props.data), (_this.props.initialScrollIndex || 0) + _this.props.initialNumToRender) - 1 + }; + return _this; + } + + babelHelpers.createClass(VirtualizedList, [{ + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + if (this.props.initialScrollIndex) { + this._initialScrollIndexTimeout = setTimeout(function () { + return _this2.scrollToIndex({ + animated: false, + index: _this2.props.initialScrollIndex + }); + }, 0); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._updateViewableItems(null); + + this._updateCellsToRenderBatcher.dispose(); + + this._viewabilityTuples.forEach(function (tuple) { + tuple.viewabilityHelper.dispose(); + }); + + this._fillRateHelper.deactivateAndFlush(); + + clearTimeout(this._initialScrollIndexTimeout); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(newProps) { + var data = newProps.data, + extraData = newProps.extraData, + getItemCount = newProps.getItemCount, + maxToRenderPerBatch = newProps.maxToRenderPerBatch; + this.setState({ + first: Math.max(0, Math.min(this.state.first, getItemCount(data) - 1 - maxToRenderPerBatch)), + last: Math.max(0, Math.min(this.state.last, getItemCount(data) - 1)) + }); + + if (data !== this.props.data || extraData !== this.props.extraData) { + this._hasDataChangedSinceEndReached = true; + + this._viewabilityTuples.forEach(function (tuple) { + tuple.viewabilityHelper.resetViewableIndices(); + }); + } + } + }, { + key: "_pushCells", + value: function _pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, first, last, inversionStyle) { + var _this3 = this; + + var _props3 = this.props, + CellRendererComponent = _props3.CellRendererComponent, + ItemSeparatorComponent = _props3.ItemSeparatorComponent, + data = _props3.data, + getItem = _props3.getItem, + getItemCount = _props3.getItemCount, + horizontal = _props3.horizontal, + keyExtractor = _props3.keyExtractor; + var stickyOffset = this.props.ListHeaderComponent ? 1 : 0; + var end = getItemCount(data) - 1; + var prevCellKey = void 0; + last = Math.min(end, last); + + var _loop = function _loop(ii) { + var item = getItem(data, ii); + var key = keyExtractor(item, ii); + + if (stickyIndicesFromProps.has(ii + stickyOffset)) { + stickyHeaderIndices.push(cells.length); + } + + cells.push(React.createElement(CellRenderer, { + CellRendererComponent: CellRendererComponent, + ItemSeparatorComponent: ii < end ? ItemSeparatorComponent : undefined, + cellKey: key, + fillRateHelper: _this3._fillRateHelper, + horizontal: horizontal, + index: ii, + inversionStyle: inversionStyle, + item: item, + key: key, + prevCellKey: prevCellKey, + onUpdateSeparators: _this3._onUpdateSeparators, + onLayout: function onLayout(e) { + return _this3._onCellLayout(e, key, ii); + }, + onUnmount: _this3._onCellUnmount, + parentProps: _this3.props, + ref: function ref(_ref) { + _this3._cellRefs[key] = _ref; + }, + __source: { + fileName: _jsxFileName, + lineNumber: 556 + } + })); + prevCellKey = key; + }; + + for (var ii = first; ii <= last; ii++) { + _loop(ii); + } + } + }, { + key: "_isVirtualizationDisabled", + value: function _isVirtualizationDisabled() { + return this.props.disableVirtualization || this._isNestedWithSameOrientation(); + } + }, { + key: "_isNestedWithSameOrientation", + value: function _isNestedWithSameOrientation() { + var nestedContext = this.context.virtualizedList; + return !!(nestedContext && !!nestedContext.horizontal === !!this.props.horizontal); + } + }, { + key: "render", + value: function render() { + if (__DEV__) { + var flatStyles = flattenStyle(this.props.contentContainerStyle); + warning(flatStyles == null || flatStyles.flexWrap !== 'wrap', '`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' + 'Consider using `numColumns` with `FlatList` instead.'); + } + + var _props4 = this.props, + ListEmptyComponent = _props4.ListEmptyComponent, + ListFooterComponent = _props4.ListFooterComponent, + ListHeaderComponent = _props4.ListHeaderComponent; + var _props5 = this.props, + data = _props5.data, + horizontal = _props5.horizontal; + + var isVirtualizationDisabled = this._isVirtualizationDisabled(); + + var inversionStyle = this.props.inverted ? this.props.horizontal ? styles.horizontallyInverted : styles.verticallyInverted : null; + var cells = []; + var stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices); + var stickyHeaderIndices = []; + + if (ListHeaderComponent) { + if (stickyIndicesFromProps.has(0)) { + stickyHeaderIndices.push(0); + } + + var element = React.isValidElement(ListHeaderComponent) ? ListHeaderComponent : React.createElement(ListHeaderComponent, { + __source: { + fileName: _jsxFileName, + lineNumber: 633 + } + }); + cells.push(React.createElement( + View, + { + key: "$header", + onLayout: this._onLayoutHeader, + style: inversionStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 636 + } + }, + element + )); + } + + var itemCount = this.props.getItemCount(data); + + if (itemCount > 0) { + _usedIndexForKey = false; + var spacerKey = !horizontal ? 'height' : 'width'; + var lastInitialIndex = this.props.initialScrollIndex ? -1 : this.props.initialNumToRender - 1; + var _state = this.state, + _first = _state.first, + _last = _state.last; + + this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, 0, lastInitialIndex, inversionStyle); + + var firstAfterInitial = Math.max(lastInitialIndex + 1, _first); + + if (!isVirtualizationDisabled && _first > lastInitialIndex + 1) { + var insertedStickySpacer = false; + + if (stickyIndicesFromProps.size > 0) { + var stickyOffset = ListHeaderComponent ? 1 : 0; + + for (var ii = firstAfterInitial - 1; ii > lastInitialIndex; ii--) { + if (stickyIndicesFromProps.has(ii + stickyOffset)) { + var initBlock = this._getFrameMetricsApprox(lastInitialIndex); + + var stickyBlock = this._getFrameMetricsApprox(ii); + + var leadSpace = stickyBlock.offset - (initBlock.offset + initBlock.length); + cells.push(React.createElement(View, { + key: "$sticky_lead", + style: babelHelpers.defineProperty({}, spacerKey, leadSpace), + __source: { + fileName: _jsxFileName, + lineNumber: 673 + } + })); + + this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, ii, ii, inversionStyle); + + var trailSpace = this._getFrameMetricsApprox(_first).offset - (stickyBlock.offset + stickyBlock.length); + cells.push(React.createElement(View, { + key: "$sticky_trail", + style: babelHelpers.defineProperty({}, spacerKey, trailSpace), + __source: { + fileName: _jsxFileName, + lineNumber: 687 + } + })); + insertedStickySpacer = true; + break; + } + } + } + + if (!insertedStickySpacer) { + var _initBlock = this._getFrameMetricsApprox(lastInitialIndex); + + var firstSpace = this._getFrameMetricsApprox(_first).offset - (_initBlock.offset + _initBlock.length); + + cells.push(React.createElement(View, { + key: "$lead_spacer", + style: babelHelpers.defineProperty({}, spacerKey, firstSpace), + __source: { + fileName: _jsxFileName, + lineNumber: 700 + } + })); + } + } + + this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, firstAfterInitial, _last, inversionStyle); + + if (!this._hasWarned.keys && _usedIndexForKey) { + console.warn('VirtualizedList: missing keys for items, make sure to specify a key property on each ' + 'item or provide a custom keyExtractor.'); + this._hasWarned.keys = true; + } + + if (!isVirtualizationDisabled && _last < itemCount - 1) { + var lastFrame = this._getFrameMetricsApprox(_last); + + var end = this.props.getItemLayout ? itemCount - 1 : Math.min(itemCount - 1, this._highestMeasuredFrameIndex); + + var endFrame = this._getFrameMetricsApprox(end); + + var tailSpacerLength = endFrame.offset + endFrame.length - (lastFrame.offset + lastFrame.length); + cells.push(React.createElement(View, { + key: "$tail_spacer", + style: babelHelpers.defineProperty({}, spacerKey, tailSpacerLength), + __source: { + fileName: _jsxFileName, + lineNumber: 733 + } + })); + } + } else if (ListEmptyComponent) { + var _element = React.isValidElement(ListEmptyComponent) ? ListEmptyComponent : React.createElement(ListEmptyComponent, { + __source: { + fileName: _jsxFileName, + lineNumber: 741 + } + }); + + cells.push(React.createElement( + View, + { + key: "$empty", + onLayout: this._onLayoutEmpty, + style: inversionStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 744 + } + }, + _element + )); + } + + if (ListFooterComponent) { + var _element2 = React.isValidElement(ListFooterComponent) ? ListFooterComponent : React.createElement(ListFooterComponent, { + __source: { + fileName: _jsxFileName, + lineNumber: 757 + } + }); + + cells.push(React.createElement( + View, + { + key: "$footer", + onLayout: this._onLayoutFooter, + style: inversionStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 760 + } + }, + _element2 + )); + } + + var scrollProps = babelHelpers.extends({}, this.props, { + onContentSizeChange: this._onContentSizeChange, + onLayout: this._onLayout, + onScroll: this._onScroll, + onScrollBeginDrag: this._onScrollBeginDrag, + onScrollEndDrag: this._onScrollEndDrag, + onMomentumScrollEnd: this._onMomentumScrollEnd, + scrollEventThrottle: this.props.scrollEventThrottle, + stickyHeaderIndices: stickyHeaderIndices + }); + + if (inversionStyle) { + scrollProps.style = [inversionStyle, this.props.style]; + } + + var ret = React.cloneElement((this.props.renderScrollComponent || this._defaultRenderScrollComponent)(scrollProps), { + ref: this._captureScrollRef + }, cells); + + if (this.props.debug) { + return React.createElement( + View, + { + style: { + flex: 1 + }, + __source: { + fileName: _jsxFileName, + lineNumber: 793 + } + }, + ret, + this._renderDebugOverlay() + ); + } else { + return ret; + } + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + this._scheduleCellsToRenderUpdate(); + } + }, { + key: "_computeBlankness", + value: function _computeBlankness() { + this._fillRateHelper.computeBlankness(this.props, this.state, this._scrollMetrics); + } + }, { + key: "_onCellLayout", + value: function _onCellLayout(e, cellKey, index) { + var layout = e.nativeEvent.layout; + var next = { + offset: this._selectOffset(layout), + length: this._selectLength(layout), + index: index, + inLayout: true + }; + var curr = this._frames[cellKey]; + + if (!curr || next.offset !== curr.offset || next.length !== curr.length || index !== curr.index) { + this._totalCellLength += next.length - (curr ? curr.length : 0); + this._totalCellsMeasured += curr ? 0 : 1; + this._averageCellLength = this._totalCellLength / this._totalCellsMeasured; + this._frames[cellKey] = next; + this._highestMeasuredFrameIndex = Math.max(this._highestMeasuredFrameIndex, index); + + this._scheduleCellsToRenderUpdate(); + } else { + this._frames[cellKey].inLayout = true; + } + + this._computeBlankness(); + } + }, { + key: "_renderDebugOverlay", + value: function _renderDebugOverlay() { + var normalize = this._scrollMetrics.visibleLength / this._scrollMetrics.contentLength; + var framesInLayout = []; + var itemCount = this.props.getItemCount(this.props.data); + + for (var ii = 0; ii < itemCount; ii++) { + var frame = this._getFrameMetricsApprox(ii); + + if (frame.inLayout) { + framesInLayout.push(frame); + } + } + + var windowTop = this._getFrameMetricsApprox(this.state.first).offset; + + var frameLast = this._getFrameMetricsApprox(this.state.last); + + var windowLen = frameLast.offset + frameLast.length - windowTop; + var visTop = this._scrollMetrics.offset; + var visLen = this._scrollMetrics.visibleLength; + var baseStyle = { + position: 'absolute', + top: 0, + right: 0 + }; + return React.createElement( + View, + { + style: babelHelpers.extends({}, baseStyle, { + bottom: 0, + width: 20, + borderColor: 'blue', + borderWidth: 1 + }), + __source: { + fileName: _jsxFileName, + lineNumber: 952 + } + }, + framesInLayout.map(function (f, ii) { + return React.createElement(View, { + key: 'f' + ii, + style: babelHelpers.extends({}, baseStyle, { + left: 0, + top: f.offset * normalize, + height: f.length * normalize, + backgroundColor: 'orange' + }), + __source: { + fileName: _jsxFileName, + lineNumber: 961 + } + }); + }), + React.createElement(View, { + style: babelHelpers.extends({}, baseStyle, { + left: 0, + top: windowTop * normalize, + height: windowLen * normalize, + borderColor: 'green', + borderWidth: 2 + }), + __source: { + fileName: _jsxFileName, + lineNumber: 972 + } + }), + React.createElement(View, { + style: babelHelpers.extends({}, baseStyle, { + left: 0, + top: visTop * normalize, + height: visLen * normalize, + borderColor: 'red', + borderWidth: 2 + }), + __source: { + fileName: _jsxFileName, + lineNumber: 982 + } + }) + ); + } + }, { + key: "_selectLength", + value: function _selectLength(metrics) { + return !this.props.horizontal ? metrics.height : metrics.width; + } + }, { + key: "_selectOffset", + value: function _selectOffset(metrics) { + return !this.props.horizontal ? metrics.y : metrics.x; + } + }, { + key: "_maybeCallOnEndReached", + value: function _maybeCallOnEndReached() { + var _props6 = this.props, + data = _props6.data, + getItemCount = _props6.getItemCount, + onEndReached = _props6.onEndReached, + onEndReachedThreshold = _props6.onEndReachedThreshold; + var _scrollMetrics = this._scrollMetrics, + contentLength = _scrollMetrics.contentLength, + visibleLength = _scrollMetrics.visibleLength, + offset = _scrollMetrics.offset; + var distanceFromEnd = contentLength - visibleLength - offset; + + if (onEndReached && this.state.last === getItemCount(data) - 1 && distanceFromEnd < onEndReachedThreshold * visibleLength && (this._hasDataChangedSinceEndReached || this._scrollMetrics.contentLength !== this._sentEndForContentLength)) { + this._hasDataChangedSinceEndReached = false; + this._sentEndForContentLength = this._scrollMetrics.contentLength; + onEndReached({ + distanceFromEnd: distanceFromEnd + }); + } + } + }, { + key: "_scheduleCellsToRenderUpdate", + value: function _scheduleCellsToRenderUpdate() { + var _state2 = this.state, + first = _state2.first, + last = _state2.last; + var _scrollMetrics2 = this._scrollMetrics, + offset = _scrollMetrics2.offset, + visibleLength = _scrollMetrics2.visibleLength, + velocity = _scrollMetrics2.velocity; + var itemCount = this.props.getItemCount(this.props.data); + var hiPri = false; + + if (first > 0 || last < itemCount - 1) { + var distTop = offset - this._getFrameMetricsApprox(first).offset; + + var distBottom = this._getFrameMetricsApprox(last).offset - (offset + visibleLength); + var scrollingThreshold = this.props.onEndReachedThreshold * visibleLength / 2; + hiPri = Math.min(distTop, distBottom) < 0 || velocity < -2 && distTop < scrollingThreshold || velocity > 2 && distBottom < scrollingThreshold; + } + + if (hiPri && this._averageCellLength) { + this._updateCellsToRenderBatcher.dispose({ + abort: true + }); + + this._updateCellsToRender(); + + return; + } else { + this._updateCellsToRenderBatcher.schedule(); + } + } + }, { + key: "_updateViewableItems", + value: function _updateViewableItems(data) { + var _this4 = this; + + var getItemCount = this.props.getItemCount; + + this._viewabilityTuples.forEach(function (tuple) { + tuple.viewabilityHelper.onUpdate(getItemCount(data), _this4._scrollMetrics.offset, _this4._scrollMetrics.visibleLength, _this4._getFrameMetrics, _this4._createViewToken, tuple.onViewableItemsChanged, _this4.state); + }); + } + }]); + return VirtualizedList; + }(React.PureComponent); + + VirtualizedList.defaultProps = { + disableVirtualization: false, + horizontal: false, + initialNumToRender: 10, + keyExtractor: function keyExtractor(item, index) { + if (item.key != null) { + return item.key; + } + + _usedIndexForKey = true; + return String(index); + }, + maxToRenderPerBatch: 10, + onEndReachedThreshold: 2, + scrollEventThrottle: 50, + updateCellsBatchingPeriod: 50, + windowSize: 21 + }; + VirtualizedList.contextTypes = { + virtualizedList: PropTypes.shape({ + horizontal: PropTypes.bool + }) + }; + VirtualizedList.childContextTypes = { + virtualizedList: PropTypes.shape({ + horizontal: PropTypes.bool + }) + }; + + var _initialiseProps = function _initialiseProps() { + var _this6 = this; + + this._onUpdateSeparators = function (keys, newProps) { + keys.forEach(function (key) { + var ref = key != null && _this6._cellRefs[key]; + ref && ref.updateSeparatorProps(newProps); + }); + }; + + this._averageCellLength = 0; + this._cellRefs = {}; + this._hasDataChangedSinceEndReached = true; + this._hasWarned = {}; + this._highestMeasuredFrameIndex = 0; + this._headerLength = 0; + this._initialScrollIndexTimeout = 0; + this._frames = {}; + this._footerLength = 0; + this._scrollMetrics = { + contentLength: 0, + dOffset: 0, + dt: 10, + offset: 0, + timestamp: 0, + velocity: 0, + visibleLength: 0 + }; + this._scrollRef = null; + this._sentEndForContentLength = 0; + this._totalCellLength = 0; + this._totalCellsMeasured = 0; + this._viewabilityTuples = []; + + this._captureScrollRef = function (ref) { + _this6._scrollRef = ref; + }; + + this._defaultRenderScrollComponent = function (props) { + if (_this6._isNestedWithSameOrientation()) { + return React.createElement(View, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 847 + } + })); + } else if (props.onRefresh) { + invariant(typeof props.refreshing === 'boolean', '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' + JSON.stringify(props.refreshing) + '`'); + return React.createElement(ScrollView, babelHelpers.extends({}, props, { + refreshControl: React.createElement(RefreshControl, { + refreshing: props.refreshing, + onRefresh: props.onRefresh, + progressViewOffset: props.progressViewOffset, + __source: { + fileName: _jsxFileName, + lineNumber: 862 + } + }), + __source: { + fileName: _jsxFileName, + lineNumber: 856 + } + })); + } else { + return React.createElement(ScrollView, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 871 + } + })); + } + }; + + this._onCellUnmount = function (cellKey) { + var curr = _this6._frames[cellKey]; + + if (curr) { + _this6._frames[cellKey] = babelHelpers.extends({}, curr, { + inLayout: false + }); + } + }; + + this._onLayout = function (e) { + _this6._scrollMetrics.visibleLength = _this6._selectLength(e.nativeEvent.layout); + _this6.props.onLayout && _this6.props.onLayout(e); + + _this6._scheduleCellsToRenderUpdate(); + + _this6._maybeCallOnEndReached(); + }; + + this._onLayoutEmpty = function (e) { + _this6.props.onLayout && _this6.props.onLayout(e); + }; + + this._onLayoutFooter = function (e) { + _this6._footerLength = _this6._selectLength(e.nativeEvent.layout); + }; + + this._onLayoutHeader = function (e) { + _this6._headerLength = _this6._selectLength(e.nativeEvent.layout); + }; + + this._onContentSizeChange = function (width, height) { + if (_this6.props.onContentSizeChange) { + _this6.props.onContentSizeChange(width, height); + } + + _this6._scrollMetrics.contentLength = _this6._selectLength({ + height: height, + width: width + }); + + _this6._scheduleCellsToRenderUpdate(); + + _this6._maybeCallOnEndReached(); + }; + + this._onScroll = function (e) { + if (_this6.props.onScroll) { + _this6.props.onScroll(e); + } + + var timestamp = e.timeStamp; + + var visibleLength = _this6._selectLength(e.nativeEvent.layoutMeasurement); + + var contentLength = _this6._selectLength(e.nativeEvent.contentSize); + + var offset = _this6._selectOffset(e.nativeEvent.contentOffset); + + var dt = _this6._scrollMetrics.timestamp ? Math.max(1, timestamp - _this6._scrollMetrics.timestamp) : 1; + + if (dt > 500 && _this6._scrollMetrics.dt > 500 && contentLength > 5 * visibleLength && !_this6._hasWarned.perf) { + infoLog('VirtualizedList: You have a large list that is slow to update - make sure your ' + 'renderItem function renders components that follow React performance best practices ' + 'like PureComponent, shouldComponentUpdate, etc.', { + dt: dt, + prevDt: _this6._scrollMetrics.dt, + contentLength: contentLength + }); + _this6._hasWarned.perf = true; + } + + var dOffset = offset - _this6._scrollMetrics.offset; + var velocity = dOffset / dt; + _this6._scrollMetrics = { + contentLength: contentLength, + dt: dt, + dOffset: dOffset, + offset: offset, + timestamp: timestamp, + velocity: velocity, + visibleLength: visibleLength + }; + + _this6._updateViewableItems(_this6.props.data); + + if (!_this6.props) { + return; + } + + _this6._maybeCallOnEndReached(); + + if (velocity !== 0) { + _this6._fillRateHelper.activate(); + } + + _this6._computeBlankness(); + + _this6._scheduleCellsToRenderUpdate(); + }; + + this._onScrollBeginDrag = function (e) { + _this6._viewabilityTuples.forEach(function (tuple) { + tuple.viewabilityHelper.recordInteraction(); + }); + + _this6.props.onScrollBeginDrag && _this6.props.onScrollBeginDrag(e); + }; + + this._onScrollEndDrag = function (e) { + var velocity = e.nativeEvent.velocity; + + if (velocity) { + _this6._scrollMetrics.velocity = _this6._selectOffset(velocity); + } + + _this6._computeBlankness(); + + _this6.props.onScrollEndDrag && _this6.props.onScrollEndDrag(e); + }; + + this._onMomentumScrollEnd = function (e) { + _this6._scrollMetrics.velocity = 0; + + _this6._computeBlankness(); + + _this6.props.onMomentumScrollEnd && _this6.props.onMomentumScrollEnd(e); + }; + + this._updateCellsToRender = function () { + var _props8 = _this6.props, + data = _props8.data, + getItemCount = _props8.getItemCount, + onEndReachedThreshold = _props8.onEndReachedThreshold; + + var isVirtualizationDisabled = _this6._isVirtualizationDisabled(); + + _this6._updateViewableItems(data); + + if (!data) { + return; + } + + _this6.setState(function (state) { + var newState = void 0; + + if (!isVirtualizationDisabled) { + if (_this6._scrollMetrics.visibleLength) { + if (!_this6.props.initialScrollIndex || _this6._scrollMetrics.offset) { + newState = computeWindowedRenderLimits(_this6.props, state, _this6._getFrameMetricsApprox, _this6._scrollMetrics); + } + } + } else { + var _scrollMetrics3 = _this6._scrollMetrics, + contentLength = _scrollMetrics3.contentLength, + _offset = _scrollMetrics3.offset, + visibleLength = _scrollMetrics3.visibleLength; + + var _distanceFromEnd = contentLength - visibleLength - _offset; + + var renderAhead = _distanceFromEnd < onEndReachedThreshold * visibleLength ? _this6.props.maxToRenderPerBatch : 0; + newState = { + first: 0, + last: Math.min(state.last + renderAhead, getItemCount(data) - 1) + }; + } + + return newState; + }); + }; + + this._createViewToken = function (index, isViewable) { + var _props9 = _this6.props, + data = _props9.data, + getItem = _props9.getItem, + keyExtractor = _props9.keyExtractor; + var item = getItem(data, index); + return { + index: index, + item: item, + key: keyExtractor(item, index), + isViewable: isViewable + }; + }; + + this._getFrameMetricsApprox = function (index) { + var frame = _this6._getFrameMetrics(index); + + if (frame && frame.index === index) { + return frame; + } else { + var _getItemLayout = _this6.props.getItemLayout; + invariant(!_getItemLayout, 'Should not have to estimate frames when a measurement metrics function is provided'); + return { + length: _this6._averageCellLength, + offset: _this6._averageCellLength * index + }; + } + }; + + this._getFrameMetrics = function (index) { + var _props10 = _this6.props, + data = _props10.data, + getItem = _props10.getItem, + getItemCount = _props10.getItemCount, + getItemLayout = _props10.getItemLayout, + keyExtractor = _props10.keyExtractor; + invariant(getItemCount(data) > index, 'Tried to get frame for out of range index ' + index); + var item = getItem(data, index); + + var frame = item && _this6._frames[keyExtractor(item, index)]; + + if (!frame || frame.index !== index) { + if (getItemLayout) { + frame = getItemLayout(data, index); + + if (__DEV__) { + var frameType = PropTypes.shape({ + length: PropTypes.number.isRequired, + offset: PropTypes.number.isRequired, + index: PropTypes.number.isRequired + }).isRequired; + PropTypes.checkPropTypes({ + frame: frameType + }, { + frame: frame + }, 'frame', 'VirtualizedList.getItemLayout'); + } + } + } + + return frame; + }; + }; + + var CellRenderer = function (_React$Component) { + babelHelpers.inherits(CellRenderer, _React$Component); + + function CellRenderer() { + var _ref6; + + var _temp, _this5, _ret2; + + babelHelpers.classCallCheck(this, CellRenderer); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret2 = (_temp = (_this5 = babelHelpers.possibleConstructorReturn(this, (_ref6 = CellRenderer.__proto__ || Object.getPrototypeOf(CellRenderer)).call.apply(_ref6, [this].concat(args))), _this5), _this5.state = { + separatorProps: { + highlighted: false, + leadingItem: _this5.props.item + } + }, _this5._separators = { + highlight: function highlight() { + var _this5$props = _this5.props, + cellKey = _this5$props.cellKey, + prevCellKey = _this5$props.prevCellKey; + + _this5.props.onUpdateSeparators([cellKey, prevCellKey], { + highlighted: true + }); + }, + unhighlight: function unhighlight() { + var _this5$props2 = _this5.props, + cellKey = _this5$props2.cellKey, + prevCellKey = _this5$props2.prevCellKey; + + _this5.props.onUpdateSeparators([cellKey, prevCellKey], { + highlighted: false + }); + }, + updateProps: function updateProps(select, newProps) { + var _this5$props3 = _this5.props, + cellKey = _this5$props3.cellKey, + prevCellKey = _this5$props3.prevCellKey; + + _this5.props.onUpdateSeparators([select === 'leading' ? prevCellKey : cellKey], newProps); + } + }, _temp), babelHelpers.possibleConstructorReturn(_this5, _ret2); + } + + babelHelpers.createClass(CellRenderer, [{ + key: "updateSeparatorProps", + value: function updateSeparatorProps(newProps) { + this.setState(function (state) { + return { + separatorProps: babelHelpers.extends({}, state.separatorProps, newProps) + }; + }); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.props.onUnmount(this.props.cellKey); + } + }, { + key: "render", + value: function render() { + var _props7 = this.props, + CellRendererComponent = _props7.CellRendererComponent, + ItemSeparatorComponent = _props7.ItemSeparatorComponent, + fillRateHelper = _props7.fillRateHelper, + horizontal = _props7.horizontal, + item = _props7.item, + index = _props7.index, + inversionStyle = _props7.inversionStyle, + parentProps = _props7.parentProps; + var renderItem = parentProps.renderItem, + getItemLayout = parentProps.getItemLayout; + invariant(renderItem, 'no renderItem!'); + var element = renderItem({ + item: item, + index: index, + separators: this._separators + }); + var onLayout = getItemLayout && !parentProps.debug && !fillRateHelper.enabled() ? undefined : this.props.onLayout; + var itemSeparator = ItemSeparatorComponent && React.createElement(ItemSeparatorComponent, babelHelpers.extends({}, this.state.separatorProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 1354 + } + })); + var cellStyle = inversionStyle ? horizontal ? [{ + flexDirection: 'row-reverse' + }, inversionStyle] : [{ + flexDirection: 'column-reverse' + }, inversionStyle] : horizontal ? [{ + flexDirection: 'row' + }, inversionStyle] : inversionStyle; + + if (!CellRendererComponent) { + return React.createElement( + View, + { + style: cellStyle, + onLayout: onLayout, + __source: { + fileName: _jsxFileName, + lineNumber: 1363 + } + }, + element, + itemSeparator + ); + } + + return React.createElement( + CellRendererComponent, + babelHelpers.extends({}, this.props, { + style: cellStyle, + onLayout: onLayout, + __source: { + fileName: _jsxFileName, + lineNumber: 1370 + } + }), + element, + itemSeparator + ); + } + }]); + return CellRenderer; + }(React.Component); + + var styles = StyleSheet.create({ + verticallyInverted: { + transform: [{ + scaleY: -1 + }] + }, + horizontallyInverted: { + transform: [{ + scaleX: -1 + }] + } + }); + module.exports = VirtualizedList; +},288,[289,290,24,171,74,287,265,209,211,291,152,145,18,19,292],"VirtualizedList"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var InteractionManager = require(_dependencyMap[0], 'InteractionManager'); + + var Batchinator = function () { + function Batchinator(callback, delayMS) { + babelHelpers.classCallCheck(this, Batchinator); + this._delay = delayMS; + this._callback = callback; + } + + babelHelpers.createClass(Batchinator, [{ + key: "dispose", + value: function dispose() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + abort: false + }; + + if (this._taskHandle) { + this._taskHandle.cancel(); + + if (!options.abort) { + this._callback(); + } + + this._taskHandle = null; + } + } + }, { + key: "schedule", + value: function schedule() { + var _this = this; + + if (this._taskHandle) { + return; + } + + var timeoutHandle = setTimeout(function () { + _this._taskHandle = InteractionManager.runAfterInteractions(function () { + _this._taskHandle = null; + + _this._callback(); + }); + }, this._delay); + this._taskHandle = { + cancel: function cancel() { + return clearTimeout(timeoutHandle); + } + }; + } + }]); + return Batchinator; + }(); + + module.exports = Batchinator; +},289,[243],"Batchinator"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var performanceNow = require(_dependencyMap[0], 'fbjs/lib/performanceNow'); + + var warning = require(_dependencyMap[1], 'fbjs/lib/warning'); + + var Info = function Info() { + babelHelpers.classCallCheck(this, Info); + this.any_blank_count = 0; + this.any_blank_ms = 0; + this.any_blank_speed_sum = 0; + this.mostly_blank_count = 0; + this.mostly_blank_ms = 0; + this.pixels_blank = 0; + this.pixels_sampled = 0; + this.pixels_scrolled = 0; + this.total_time_spent = 0; + this.sample_count = 0; + }; + + var DEBUG = false; + var _listeners = []; + var _minSampleCount = 10; + + var _sampleRate = DEBUG ? 1 : null; + + var FillRateHelper = function () { + babelHelpers.createClass(FillRateHelper, null, [{ + key: "addListener", + value: function addListener(callback) { + warning(_sampleRate !== null, 'Call `FillRateHelper.setSampleRate` before `addListener`.'); + + _listeners.push(callback); + + return { + remove: function remove() { + _listeners = _listeners.filter(function (listener) { + return callback !== listener; + }); + } + }; + } + }, { + key: "setSampleRate", + value: function setSampleRate(sampleRate) { + _sampleRate = sampleRate; + } + }, { + key: "setMinSampleCount", + value: function setMinSampleCount(minSampleCount) { + _minSampleCount = minSampleCount; + } + }]); + + function FillRateHelper(getFrameMetrics) { + babelHelpers.classCallCheck(this, FillRateHelper); + this._anyBlankStartTime = null; + this._enabled = false; + this._info = new Info(); + this._mostlyBlankStartTime = null; + this._samplesStartTime = null; + this._getFrameMetrics = getFrameMetrics; + this._enabled = (_sampleRate || 0) > Math.random(); + + this._resetData(); + } + + babelHelpers.createClass(FillRateHelper, [{ + key: "activate", + value: function activate() { + if (this._enabled && this._samplesStartTime == null) { + DEBUG && console.debug('FillRateHelper: activate'); + this._samplesStartTime = performanceNow(); + } + } + }, { + key: "deactivateAndFlush", + value: function deactivateAndFlush() { + if (!this._enabled) { + return; + } + + var start = this._samplesStartTime; + + if (start == null) { + DEBUG && console.debug('FillRateHelper: bail on deactivate with no start time'); + return; + } + + if (this._info.sample_count < _minSampleCount) { + this._resetData(); + + return; + } + + var total_time_spent = performanceNow() - start; + var info = babelHelpers.extends({}, this._info, { + total_time_spent: total_time_spent + }); + + if (DEBUG) { + var derived = { + avg_blankness: this._info.pixels_blank / this._info.pixels_sampled, + avg_speed: this._info.pixels_scrolled / (total_time_spent / 1000), + avg_speed_when_any_blank: this._info.any_blank_speed_sum / this._info.any_blank_count, + any_blank_per_min: this._info.any_blank_count / (total_time_spent / 1000 / 60), + any_blank_time_frac: this._info.any_blank_ms / total_time_spent, + mostly_blank_per_min: this._info.mostly_blank_count / (total_time_spent / 1000 / 60), + mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent + }; + + for (var key in derived) { + derived[key] = Math.round(1000 * derived[key]) / 1000; + } + + console.debug('FillRateHelper deactivateAndFlush: ', { + derived: derived, + info: info + }); + } + + _listeners.forEach(function (listener) { + return listener(info); + }); + + this._resetData(); + } + }, { + key: "computeBlankness", + value: function computeBlankness(props, state, scrollMetrics) { + if (!this._enabled || props.getItemCount(props.data) === 0 || this._samplesStartTime == null) { + return 0; + } + + var dOffset = scrollMetrics.dOffset, + offset = scrollMetrics.offset, + velocity = scrollMetrics.velocity, + visibleLength = scrollMetrics.visibleLength; + this._info.sample_count++; + this._info.pixels_sampled += Math.round(visibleLength); + this._info.pixels_scrolled += Math.round(Math.abs(dOffset)); + var scrollSpeed = Math.round(Math.abs(velocity) * 1000); + var now = performanceNow(); + + if (this._anyBlankStartTime != null) { + this._info.any_blank_ms += now - this._anyBlankStartTime; + } + + this._anyBlankStartTime = null; + + if (this._mostlyBlankStartTime != null) { + this._info.mostly_blank_ms += now - this._mostlyBlankStartTime; + } + + this._mostlyBlankStartTime = null; + var blankTop = 0; + var first = state.first; + + var firstFrame = this._getFrameMetrics(first); + + while (first <= state.last && (!firstFrame || !firstFrame.inLayout)) { + firstFrame = this._getFrameMetrics(first); + first++; + } + + if (firstFrame && first > 0) { + blankTop = Math.min(visibleLength, Math.max(0, firstFrame.offset - offset)); + } + + var blankBottom = 0; + var last = state.last; + + var lastFrame = this._getFrameMetrics(last); + + while (last >= state.first && (!lastFrame || !lastFrame.inLayout)) { + lastFrame = this._getFrameMetrics(last); + last--; + } + + if (lastFrame && last < props.getItemCount(props.data) - 1) { + var bottomEdge = lastFrame.offset + lastFrame.length; + blankBottom = Math.min(visibleLength, Math.max(0, offset + visibleLength - bottomEdge)); + } + + var pixels_blank = Math.round(blankTop + blankBottom); + var blankness = pixels_blank / visibleLength; + + if (blankness > 0) { + this._anyBlankStartTime = now; + this._info.any_blank_speed_sum += scrollSpeed; + this._info.any_blank_count++; + this._info.pixels_blank += pixels_blank; + + if (blankness > 0.5) { + this._mostlyBlankStartTime = now; + this._info.mostly_blank_count++; + } + } else if (scrollSpeed < 0.01 || Math.abs(dOffset) < 1) { + this.deactivateAndFlush(); + } + + return blankness; + } + }, { + key: "enabled", + value: function enabled() { + return this._enabled; + } + }, { + key: "_resetData", + value: function _resetData() { + this._anyBlankStartTime = null; + this._info = new Info(); + this._mostlyBlankStartTime = null; + this._samplesStartTime = null; + } + }]); + return FillRateHelper; + }(); + + module.exports = FillRateHelper; +},290,[106,19],"FillRateHelper"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var ViewabilityHelper = function () { + function ViewabilityHelper() { + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + viewAreaCoveragePercentThreshold: 0 + }; + babelHelpers.classCallCheck(this, ViewabilityHelper); + this._hasInteracted = false; + this._timers = new Set(); + this._viewableIndices = []; + this._viewableItems = new Map(); + this._config = config; + } + + babelHelpers.createClass(ViewabilityHelper, [{ + key: "dispose", + value: function dispose() { + this._timers.forEach(clearTimeout); + } + }, { + key: "computeViewableItems", + value: function computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange) { + var _config = this._config, + itemVisiblePercentThreshold = _config.itemVisiblePercentThreshold, + viewAreaCoveragePercentThreshold = _config.viewAreaCoveragePercentThreshold; + var viewAreaMode = viewAreaCoveragePercentThreshold != null; + var viewablePercentThreshold = viewAreaMode ? viewAreaCoveragePercentThreshold : itemVisiblePercentThreshold; + invariant(viewablePercentThreshold != null && itemVisiblePercentThreshold != null !== (viewAreaCoveragePercentThreshold != null), 'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold'); + var viewableIndices = []; + + if (itemCount === 0) { + return viewableIndices; + } + + var firstVisible = -1; + + var _ref = renderRange || { + first: 0, + last: itemCount - 1 + }, + first = _ref.first, + last = _ref.last; + + invariant(last < itemCount, 'Invalid render range ' + JSON.stringify({ + renderRange: renderRange, + itemCount: itemCount + })); + + for (var idx = first; idx <= last; idx++) { + var metrics = getFrameMetrics(idx); + + if (!metrics) { + continue; + } + + var top = metrics.offset - scrollOffset; + var bottom = top + metrics.length; + + if (top < viewportHeight && bottom > 0) { + firstVisible = idx; + + if (_isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, metrics.length)) { + viewableIndices.push(idx); + } + } else if (firstVisible >= 0) { + break; + } + } + + return viewableIndices; + } + }, { + key: "onUpdate", + value: function onUpdate(itemCount, scrollOffset, viewportHeight, getFrameMetrics, createViewToken, onViewableItemsChanged, renderRange) { + var _this = this; + + if (this._config.waitForInteraction && !this._hasInteracted || itemCount === 0 || !getFrameMetrics(0)) { + return; + } + + var viewableIndices = []; + + if (itemCount) { + viewableIndices = this.computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange); + } + + if (this._viewableIndices.length === viewableIndices.length && this._viewableIndices.every(function (v, ii) { + return v === viewableIndices[ii]; + })) { + return; + } + + this._viewableIndices = viewableIndices; + + if (this._config.minimumViewTime) { + var handle = setTimeout(function () { + _this._timers.delete(handle); + + _this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken); + }, this._config.minimumViewTime); + + this._timers.add(handle); + } else { + this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken); + } + } + }, { + key: "resetViewableIndices", + value: function resetViewableIndices() { + this._viewableIndices = []; + } + }, { + key: "recordInteraction", + value: function recordInteraction() { + this._hasInteracted = true; + } + }, { + key: "_onUpdateSync", + value: function _onUpdateSync(viewableIndicesToCheck, onViewableItemsChanged, createViewToken) { + var _this2 = this; + + viewableIndicesToCheck = viewableIndicesToCheck.filter(function (ii) { + return _this2._viewableIndices.includes(ii); + }); + var prevItems = this._viewableItems; + var nextItems = new Map(viewableIndicesToCheck.map(function (ii) { + var viewable = createViewToken(ii, true); + return [viewable.key, viewable]; + })); + var changed = []; + + for (var _iterator = nextItems, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]();;) { + var _ref4; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref4 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref4 = _i.value; + } + + var _ref2 = _ref4; + + var _ref3 = babelHelpers.slicedToArray(_ref2, 2); + + var _key = _ref3[0]; + var viewable = _ref3[1]; + + if (!prevItems.has(_key)) { + changed.push(viewable); + } + } + + for (var _iterator2 = prevItems, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]();;) { + var _ref7; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref7 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref7 = _i2.value; + } + + var _ref5 = _ref7; + + var _ref6 = babelHelpers.slicedToArray(_ref5, 2); + + var _key2 = _ref6[0]; + var _viewable = _ref6[1]; + + if (!nextItems.has(_key2)) { + changed.push(babelHelpers.extends({}, _viewable, { + isViewable: false + })); + } + } + + if (changed.length > 0) { + this._viewableItems = nextItems; + onViewableItemsChanged({ + viewableItems: Array.from(nextItems.values()), + changed: changed, + viewabilityConfig: this._config + }); + } + } + }]); + return ViewabilityHelper; + }(); + + function _isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, itemLength) { + if (_isEntirelyVisible(top, bottom, viewportHeight)) { + return true; + } else { + var pixels = _getPixelsVisible(top, bottom, viewportHeight); + + var percent = 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength); + return percent >= viewablePercentThreshold; + } + } + + function _getPixelsVisible(top, bottom, viewportHeight) { + var visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0); + return Math.max(0, visibleHeight); + } + + function _isEntirelyVisible(top, bottom, viewportHeight) { + return top >= 0 && bottom <= viewportHeight && bottom > top; + } + + module.exports = ViewabilityHelper; +},291,[18],"ViewabilityHelper"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + function elementsThatOverlapOffsets(offsets, itemCount, getFrameMetrics) { + var out = []; + + for (var ii = 0; ii < itemCount; ii++) { + var frame = getFrameMetrics(ii); + var trailingOffset = frame.offset + frame.length; + + for (var kk = 0; kk < offsets.length; kk++) { + if (out[kk] == null && trailingOffset >= offsets[kk]) { + out[kk] = ii; + + if (kk === offsets.length - 1) { + invariant(out.length === offsets.length, 'bad offsets input, should be in increasing order ' + JSON.stringify(offsets)); + return out; + } + } + } + } + + return out; + } + + function newRangeCount(prev, next) { + return next.last - next.first + 1 - Math.max(0, 1 + Math.min(next.last, prev.last) - Math.max(next.first, prev.first)); + } + + function computeWindowedRenderLimits(props, prev, getFrameMetricsApprox, scrollMetrics) { + var data = props.data, + getItemCount = props.getItemCount, + maxToRenderPerBatch = props.maxToRenderPerBatch, + windowSize = props.windowSize; + var itemCount = getItemCount(data); + + if (itemCount === 0) { + return prev; + } + + var offset = scrollMetrics.offset, + velocity = scrollMetrics.velocity, + visibleLength = scrollMetrics.visibleLength; + var visibleBegin = Math.max(0, offset); + var visibleEnd = visibleBegin + visibleLength; + var overscanLength = (windowSize - 1) * visibleLength; + var leadFactor = 0.5; + var fillPreference = velocity > 1 ? 'after' : velocity < -1 ? 'before' : 'none'; + var overscanBegin = Math.max(0, visibleBegin - (1 - leadFactor) * overscanLength); + var overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength); + + var _elementsThatOverlapO = elementsThatOverlapOffsets([overscanBegin, visibleBegin, visibleEnd, overscanEnd], props.getItemCount(props.data), getFrameMetricsApprox), + _elementsThatOverlapO2 = babelHelpers.slicedToArray(_elementsThatOverlapO, 4), + overscanFirst = _elementsThatOverlapO2[0], + first = _elementsThatOverlapO2[1], + last = _elementsThatOverlapO2[2], + overscanLast = _elementsThatOverlapO2[3]; + + overscanFirst = overscanFirst == null ? 0 : overscanFirst; + first = first == null ? Math.max(0, overscanFirst) : first; + overscanLast = overscanLast == null ? itemCount - 1 : overscanLast; + last = last == null ? Math.min(overscanLast, first + maxToRenderPerBatch - 1) : last; + var visible = { + first: first, + last: last + }; + var newCellCount = newRangeCount(prev, visible); + + while (true) { + if (first <= overscanFirst && last >= overscanLast) { + break; + } + + var maxNewCells = newCellCount >= maxToRenderPerBatch; + var firstWillAddMore = first <= prev.first || first > prev.last; + var firstShouldIncrement = first > overscanFirst && (!maxNewCells || !firstWillAddMore); + var lastWillAddMore = last >= prev.last || last < prev.first; + var lastShouldIncrement = last < overscanLast && (!maxNewCells || !lastWillAddMore); + + if (maxNewCells && !firstShouldIncrement && !lastShouldIncrement) { + break; + } + + if (firstShouldIncrement && !(fillPreference === 'after' && lastShouldIncrement && lastWillAddMore)) { + if (firstWillAddMore) { + newCellCount++; + } + + first--; + } + + if (lastShouldIncrement && !(fillPreference === 'before' && firstShouldIncrement && firstWillAddMore)) { + if (lastWillAddMore) { + newCellCount++; + } + + last++; + } + } + + if (!(last >= first && first >= 0 && last < itemCount && first >= overscanFirst && last <= overscanLast && first <= visible.first && last >= visible.last)) { + throw new Error('Bad window calculation ' + JSON.stringify({ + first: first, + last: last, + itemCount: itemCount, + overscanFirst: overscanFirst, + overscanLast: overscanLast, + visible: visible + })); + } + + return { + first: first, + last: last + }; + } + + var VirtualizeUtils = { + computeWindowedRenderLimits: computeWindowedRenderLimits, + elementsThatOverlapOffsets: elementsThatOverlapOffsets, + newRangeCount: newRangeCount + }; + module.exports = VirtualizeUtils; +},292,[18],"VirtualizeUtils"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Image/ImageBackground.js"; + + var Image = require(_dependencyMap[0], 'Image'); + + var React = require(_dependencyMap[1], 'React'); + + var StyleSheet = require(_dependencyMap[2], 'StyleSheet'); + + var View = require(_dependencyMap[3], 'View'); + + var ensureComponentIsNative = require(_dependencyMap[4], 'ensureComponentIsNative'); + + var ImageBackground = function (_React$Component) { + babelHelpers.inherits(ImageBackground, _React$Component); + + function ImageBackground() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, ImageBackground); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = ImageBackground.__proto__ || Object.getPrototypeOf(ImageBackground)).call.apply(_ref, [this].concat(args))), _this), _this._viewRef = null, _this._captureRef = function (ref) { + _this._viewRef = ref; + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(ImageBackground, [{ + key: "setNativeProps", + value: function setNativeProps(props) { + var viewRef = this._viewRef; + + if (viewRef) { + ensureComponentIsNative(viewRef); + viewRef.setNativeProps(props); + } + } + }, { + key: "render", + value: function render() { + var _props = this.props, + children = _props.children, + style = _props.style, + imageStyle = _props.imageStyle, + imageRef = _props.imageRef, + props = babelHelpers.objectWithoutProperties(_props, ["children", "style", "imageStyle", "imageRef"]); + return React.createElement( + View, + { + style: style, + ref: this._captureRef, + __source: { + fileName: _jsxFileName, + lineNumber: 68 + } + }, + React.createElement(Image, babelHelpers.extends({}, props, { + style: [StyleSheet.absoluteFill, { + width: style.width, + height: style.height + }, imageStyle], + ref: imageRef, + __source: { + fileName: _jsxFileName, + lineNumber: 69 + } + })), + children + ); + } + }]); + return ImageBackground; + }(React.Component); + + module.exports = ImageBackground; +},293,[263,171,209,211,294],"ImageBackground"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var ensureComponentIsNative = function ensureComponentIsNative(component) { + invariant(component && typeof component.setNativeProps === 'function', 'Touchable child must either be native or forward setNativeProps to a ' + 'native component'); + }; + + module.exports = ensureComponentIsNative; +},294,[18],"ensureComponentIsNative"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTImageEditingManager = require(_dependencyMap[0], 'NativeModules').ImageEditingManager; + + var ImageEditor = function () { + function ImageEditor() { + babelHelpers.classCallCheck(this, ImageEditor); + } + + babelHelpers.createClass(ImageEditor, null, [{ + key: "cropImage", + value: function cropImage(uri, cropData, success, failure) { + RCTImageEditingManager.cropImage(uri, cropData, success, failure); + } + }]); + return ImageEditor; + }(); + + module.exports = ImageEditor; +},295,[68],"ImageEditor"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTImageStoreManager = require(_dependencyMap[0], 'NativeModules').ImageStoreManager; + + var ImageStore = function () { + function ImageStore() { + babelHelpers.classCallCheck(this, ImageStore); + } + + babelHelpers.createClass(ImageStore, null, [{ + key: "hasImageForTag", + value: function hasImageForTag(uri, callback) { + if (RCTImageStoreManager.hasImageForTag) { + RCTImageStoreManager.hasImageForTag(uri, callback); + } else { + console.warn('hasImageForTag() not implemented'); + } + } + }, { + key: "removeImageForTag", + value: function removeImageForTag(uri) { + if (RCTImageStoreManager.removeImageForTag) { + RCTImageStoreManager.removeImageForTag(uri); + } else { + console.warn('removeImageForTag() not implemented'); + } + } + }, { + key: "addImageFromBase64", + value: function addImageFromBase64(base64ImageData, success, failure) { + RCTImageStoreManager.addImageFromBase64(base64ImageData, success, failure); + } + }, { + key: "getBase64ForTag", + value: function getBase64ForTag(uri, success, failure) { + RCTImageStoreManager.getBase64ForTag(uri, success, failure); + } + }]); + return ImageStore; + }(); + + module.exports = ImageStore; +},296,[68],"ImageStore"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js"; + + var createReactClass = require(_dependencyMap[0], 'create-react-class'); + + var Keyboard = require(_dependencyMap[1], 'Keyboard'); + + var LayoutAnimation = require(_dependencyMap[2], 'LayoutAnimation'); + + var Platform = require(_dependencyMap[3], 'Platform'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var React = require(_dependencyMap[5], 'React'); + + var TimerMixin = require(_dependencyMap[6], 'react-timer-mixin'); + + var View = require(_dependencyMap[7], 'View'); + + var ViewPropTypes = require(_dependencyMap[8], 'ViewPropTypes'); + + var viewRef = 'VIEW'; + var KeyboardAvoidingView = createReactClass({ + displayName: 'KeyboardAvoidingView', + mixins: [TimerMixin], + propTypes: babelHelpers.extends({}, ViewPropTypes, { + behavior: PropTypes.oneOf(['height', 'position', 'padding']), + contentContainerStyle: ViewPropTypes.style, + keyboardVerticalOffset: PropTypes.number.isRequired + }), + getDefaultProps: function getDefaultProps() { + return { + keyboardVerticalOffset: 0 + }; + }, + getInitialState: function getInitialState() { + return { + bottom: 0 + }; + }, + subscriptions: [], + frame: null, + _relativeKeyboardHeight: function _relativeKeyboardHeight(keyboardFrame) { + var frame = this.frame; + + if (!frame || !keyboardFrame) { + return 0; + } + + var keyboardY = keyboardFrame.screenY - this.props.keyboardVerticalOffset; + return Math.max(frame.y + frame.height - keyboardY, 0); + }, + _onKeyboardChange: function _onKeyboardChange(event) { + if (!event) { + this.setState({ + bottom: 0 + }); + return; + } + + var duration = event.duration, + easing = event.easing, + endCoordinates = event.endCoordinates; + + var height = this._relativeKeyboardHeight(endCoordinates); + + if (this.state.bottom === height) { + return; + } + + if (duration && easing) { + LayoutAnimation.configureNext({ + duration: duration, + update: { + duration: duration, + type: LayoutAnimation.Types[easing] || 'keyboard' + } + }); + } + + this.setState({ + bottom: height + }); + }, + _onLayout: function _onLayout(event) { + this.frame = event.nativeEvent.layout; + }, + componentWillUpdate: function componentWillUpdate(nextProps, nextState, nextContext) { + if (nextState.bottom === this.state.bottom && this.props.behavior === 'height' && nextProps.behavior === 'height') { + nextState.bottom = 0; + } + }, + componentWillMount: function componentWillMount() { + if (Platform.OS === 'ios') { + this.subscriptions = [Keyboard.addListener('keyboardWillChangeFrame', this._onKeyboardChange)]; + } else { + this.subscriptions = [Keyboard.addListener('keyboardDidHide', this._onKeyboardChange), Keyboard.addListener('keyboardDidShow', this._onKeyboardChange)]; + } + }, + componentWillUnmount: function componentWillUnmount() { + this.subscriptions.forEach(function (sub) { + return sub.remove(); + }); + }, + render: function render() { + var _props = this.props, + behavior = _props.behavior, + children = _props.children, + style = _props.style, + props = babelHelpers.objectWithoutProperties(_props, ["behavior", "children", "style"]); + + switch (behavior) { + case 'height': + var heightStyle = void 0; + + if (this.frame) { + heightStyle = { + height: this.frame.height - this.state.bottom, + flex: 0 + }; + } + + return React.createElement( + View, + babelHelpers.extends({ + ref: viewRef, + style: [style, heightStyle], + onLayout: this._onLayout + }, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 172 + } + }), + children + ); + + case 'position': + var positionStyle = { + bottom: this.state.bottom + }; + var contentContainerStyle = this.props.contentContainerStyle; + return React.createElement( + View, + babelHelpers.extends({ + ref: viewRef, + style: style, + onLayout: this._onLayout + }, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 182 + } + }), + React.createElement( + View, + { + style: [contentContainerStyle, positionStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 183 + } + }, + children + ) + ); + + case 'padding': + var paddingStyle = { + paddingBottom: this.state.bottom + }; + return React.createElement( + View, + babelHelpers.extends({ + ref: viewRef, + style: [style, paddingStyle], + onLayout: this._onLayout + }, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 192 + } + }), + children + ); + + default: + return React.createElement( + View, + babelHelpers.extends({ + ref: viewRef, + onLayout: this._onLayout, + style: style + }, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 199 + } + }), + children + ); + } + } + }); + module.exports = KeyboardAvoidingView; +},297,[213,269,298,105,24,171,232,211,172],"KeyboardAvoidingView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PropTypes = require(_dependencyMap[0], 'prop-types'); + + var UIManager = require(_dependencyMap[1], 'UIManager'); + + var keyMirror = require(_dependencyMap[2], 'fbjs/lib/keyMirror'); + + var checkPropTypes = PropTypes.checkPropTypes; + var TypesEnum = { + spring: true, + linear: true, + easeInEaseOut: true, + easeIn: true, + easeOut: true, + keyboard: true + }; + var Types = keyMirror(TypesEnum); + var PropertiesEnum = { + opacity: true, + scaleXY: true + }; + var Properties = keyMirror(PropertiesEnum); + var animType = PropTypes.shape({ + duration: PropTypes.number, + delay: PropTypes.number, + springDamping: PropTypes.number, + initialVelocity: PropTypes.number, + type: PropTypes.oneOf(Object.keys(Types)).isRequired, + property: PropTypes.oneOf(Object.keys(Properties)) + }); + var configType = PropTypes.shape({ + duration: PropTypes.number.isRequired, + create: animType, + update: animType, + delete: animType + }); + + function checkConfig(config, location, name) { + checkPropTypes({ + config: configType + }, { + config: config + }, location, name); + } + + function configureNext(config, onAnimationDidEnd) { + if (__DEV__) { + checkConfig(config, 'config', 'LayoutAnimation.configureNext'); + } + + UIManager.configureNextLayoutAnimation(config, onAnimationDidEnd || function () {}, function () {}); + } + + function create(duration, type, creationProp) { + return { + duration: duration, + create: { + type: type, + property: creationProp + }, + update: { + type: type + }, + delete: { + type: type, + property: creationProp + } + }; + } + + var Presets = { + easeInEaseOut: create(300, Types.easeInEaseOut, Properties.opacity), + linear: create(500, Types.linear, Properties.opacity), + spring: { + duration: 700, + create: { + type: Types.linear, + property: Properties.opacity + }, + update: { + type: Types.spring, + springDamping: 0.4 + }, + delete: { + type: Types.linear, + property: Properties.opacity + } + } + }; + var LayoutAnimation = { + configureNext: configureNext, + create: create, + Types: Types, + Properties: Properties, + checkConfig: checkConfig, + Presets: Presets, + easeInEaseOut: configureNext.bind(null, Presets.easeInEaseOut), + linear: configureNext.bind(null, Presets.linear), + spring: configureNext.bind(null, Presets.spring) + }; + module.exports = LayoutAnimation; +},298,[24,158,191],"LayoutAnimation"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + module.exports = require(_dependencyMap[0], 'UnimplementedView'); +},299,[300],"MaskedViewIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js"; + + var React = require(_dependencyMap[0], 'React'); + + var StyleSheet = require(_dependencyMap[1], 'StyleSheet'); + + var UnimplementedView = function (_React$Component) { + babelHelpers.inherits(UnimplementedView, _React$Component); + + function UnimplementedView() { + babelHelpers.classCallCheck(this, UnimplementedView); + return babelHelpers.possibleConstructorReturn(this, (UnimplementedView.__proto__ || Object.getPrototypeOf(UnimplementedView)).apply(this, arguments)); + } + + babelHelpers.createClass(UnimplementedView, [{ + key: "setNativeProps", + value: function setNativeProps() {} + }, { + key: "render", + value: function render() { + var View = require(_dependencyMap[2], 'View'); + + return React.createElement( + View, + { + style: [styles.unimplementedView, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 33 + } + }, + this.props.children + ); + } + }]); + return UnimplementedView; + }(React.Component); + + var styles = StyleSheet.create({ + unimplementedView: __DEV__ ? { + alignSelf: 'flex-start', + borderColor: 'red', + borderWidth: 1 + } : {} + }); + module.exports = UnimplementedView; +},300,[171,209,211],"UnimplementedView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Modal/Modal.js", + _container; + + var AppContainer = require(_dependencyMap[0], 'AppContainer'); + + var I18nManager = require(_dependencyMap[1], 'I18nManager'); + + var NativeEventEmitter = require(_dependencyMap[2], 'NativeEventEmitter'); + + var NativeModules = require(_dependencyMap[3], 'NativeModules'); + + var Platform = require(_dependencyMap[4], 'Platform'); + + var React = require(_dependencyMap[5], 'React'); + + var PropTypes = require(_dependencyMap[6], 'prop-types'); + + var StyleSheet = require(_dependencyMap[7], 'StyleSheet'); + + var View = require(_dependencyMap[8], 'View'); + + var deprecatedPropType = require(_dependencyMap[9], 'deprecatedPropType'); + + var requireNativeComponent = require(_dependencyMap[10], 'requireNativeComponent'); + + var RCTModalHostView = requireNativeComponent('RCTModalHostView', null); + var ModalEventEmitter = Platform.OS === 'ios' && NativeModules.ModalManager ? new NativeEventEmitter(NativeModules.ModalManager) : null; + var uniqueModalIdentifier = 0; + + var Modal = function (_React$Component) { + babelHelpers.inherits(Modal, _React$Component); + + function Modal(props) { + babelHelpers.classCallCheck(this, Modal); + + var _this = babelHelpers.possibleConstructorReturn(this, (Modal.__proto__ || Object.getPrototypeOf(Modal)).call(this, props)); + + Modal._confirmProps(props); + + _this._identifier = uniqueModalIdentifier++; + return _this; + } + + babelHelpers.createClass(Modal, [{ + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + if (ModalEventEmitter) { + this._eventSubscription = ModalEventEmitter.addListener('modalDismissed', function (event) { + if (event.modalID === _this2._identifier && _this2.props.onDismiss) { + _this2.props.onDismiss(); + } + }); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + if (this._eventSubscription) { + this._eventSubscription.remove(); + } + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + Modal._confirmProps(nextProps); + } + }, { + key: "render", + value: function render() { + if (this.props.visible === false) { + return null; + } + + var containerStyles = { + backgroundColor: this.props.transparent ? 'transparent' : 'white' + }; + var animationType = this.props.animationType; + + if (!animationType) { + animationType = 'none'; + + if (this.props.animated) { + animationType = 'slide'; + } + } + + var presentationStyle = this.props.presentationStyle; + + if (!presentationStyle) { + presentationStyle = 'fullScreen'; + + if (this.props.transparent) { + presentationStyle = 'overFullScreen'; + } + } + + var innerChildren = __DEV__ ? React.createElement( + AppContainer, + { + rootTag: this.context.rootTag, + __source: { + fileName: _jsxFileName, + lineNumber: 238 + } + }, + this.props.children + ) : this.props.children; + return React.createElement( + RCTModalHostView, + { + animationType: animationType, + presentationStyle: presentationStyle, + transparent: this.props.transparent, + hardwareAccelerated: this.props.hardwareAccelerated, + onRequestClose: this.props.onRequestClose, + onShow: this.props.onShow, + identifier: this._identifier, + style: styles.modal, + onStartShouldSetResponder: this._shouldSetResponder, + supportedOrientations: this.props.supportedOrientations, + onOrientationChange: this.props.onOrientationChange, + __source: { + fileName: _jsxFileName, + lineNumber: 244 + } + }, + React.createElement( + View, + { + style: [styles.container, containerStyles], + __source: { + fileName: _jsxFileName, + lineNumber: 257 + } + }, + innerChildren + ) + ); + } + }, { + key: "_shouldSetResponder", + value: function _shouldSetResponder() { + return true; + } + }], [{ + key: "_confirmProps", + value: function _confirmProps(props) { + if (props.presentationStyle && props.presentationStyle !== 'overFullScreen' && props.transparent) { + console.warn("Modal with '" + props.presentationStyle + "' presentation style and 'transparent' value is not supported."); + } + } + }]); + return Modal; + }(React.Component); + + Modal.propTypes = { + animationType: PropTypes.oneOf(['none', 'slide', 'fade']), + presentationStyle: PropTypes.oneOf(['fullScreen', 'pageSheet', 'formSheet', 'overFullScreen']), + transparent: PropTypes.bool, + hardwareAccelerated: PropTypes.bool, + visible: PropTypes.bool, + onRequestClose: Platform.isTVOS || Platform.OS === 'android' ? PropTypes.func.isRequired : PropTypes.func, + onShow: PropTypes.func, + onDismiss: PropTypes.func, + animated: deprecatedPropType(PropTypes.bool, 'Use the `animationType` prop instead.'), + supportedOrientations: PropTypes.arrayOf(PropTypes.oneOf(['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right'])), + onOrientationChange: PropTypes.func + }; + Modal.defaultProps = { + visible: true, + hardwareAccelerated: false + }; + Modal.contextTypes = { + rootTag: PropTypes.number + }; + var side = I18nManager.isRTL ? 'right' : 'left'; + var styles = StyleSheet.create({ + modal: { + position: 'absolute' + }, + container: (_container = { + position: 'absolute' + }, babelHelpers.defineProperty(_container, side, 0), babelHelpers.defineProperty(_container, "top", 0), _container) + }); + module.exports = Modal; +},301,[302,321,120,68,105,171,24,209,211,184,186],"Modal"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/ReactNative/AppContainer.js"; + + var EmitterSubscription = require(_dependencyMap[0], 'EmitterSubscription'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var RCTDeviceEventEmitter = require(_dependencyMap[2], 'RCTDeviceEventEmitter'); + + var React = require(_dependencyMap[3], 'React'); + + var ReactNative = require(_dependencyMap[4], 'ReactNative'); + + var StyleSheet = require(_dependencyMap[5], 'StyleSheet'); + + var View = require(_dependencyMap[6], 'View'); + + var AppContainer = function (_React$Component) { + babelHelpers.inherits(AppContainer, _React$Component); + + function AppContainer() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, AppContainer); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = AppContainer.__proto__ || Object.getPrototypeOf(AppContainer)).call.apply(_ref, [this].concat(args))), _this), _this.state = { + inspector: null, + mainKey: 1 + }, _this._subscription = null, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(AppContainer, [{ + key: "getChildContext", + value: function getChildContext() { + return { + rootTag: this.props.rootTag + }; + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + if (__DEV__) { + if (!global.__RCTProfileIsProfiling) { + this._subscription = RCTDeviceEventEmitter.addListener('toggleElementInspector', function () { + var Inspector = require(_dependencyMap[7], 'Inspector'); + + var inspector = _this2.state.inspector ? null : React.createElement(Inspector, { + inspectedViewTag: ReactNative.findNodeHandle(_this2._mainRef), + onRequestRerenderApp: function onRequestRerenderApp(updateInspectedViewTag) { + _this2.setState(function (s) { + return { + mainKey: s.mainKey + 1 + }; + }, function () { + return updateInspectedViewTag(ReactNative.findNodeHandle(_this2._mainRef)); + }); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 66 + } + }); + + _this2.setState({ + inspector: inspector + }); + }); + } + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + if (this._subscription) { + this._subscription.remove(); + } + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var yellowBox = null; + + if (__DEV__) { + if (!global.__RCTProfileIsProfiling) { + var YellowBox = require(_dependencyMap[8], 'YellowBox'); + + yellowBox = React.createElement(YellowBox, { + __source: { + fileName: _jsxFileName, + lineNumber: 97 + } + }); + } + } + + var innerView = React.createElement( + View, + { + collapsable: !this.state.inspector, + key: this.state.mainKey, + pointerEvents: "box-none", + style: styles.appContainer, + ref: function ref(_ref2) { + _this3._mainRef = _ref2; + }, + __source: { + fileName: _jsxFileName, + lineNumber: 102 + } + }, + this.props.children + ); + var Wrapper = this.props.WrapperComponent; + + if (Wrapper) { + innerView = React.createElement( + Wrapper, + { + __source: { + fileName: _jsxFileName, + lineNumber: 119 + } + }, + innerView + ); + } + + return React.createElement( + View, + { + style: styles.appContainer, + pointerEvents: "box-none", + __source: { + fileName: _jsxFileName, + lineNumber: 122 + } + }, + innerView, + yellowBox, + this.state.inspector + ); + } + }]); + return AppContainer; + }(React.Component); + + AppContainer.childContextTypes = { + rootTag: PropTypes.number + }; + var styles = StyleSheet.create({ + appContainer: { + flex: 1 + } + }); + module.exports = AppContainer; +},302,[116,24,121,171,74,209,211,303,319],"AppContainer"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/Inspector.js"; + + var Dimensions = require(_dependencyMap[0], 'Dimensions'); + + var InspectorOverlay = require(_dependencyMap[1], 'InspectorOverlay'); + + var InspectorPanel = require(_dependencyMap[2], 'InspectorPanel'); + + var Platform = require(_dependencyMap[3], 'Platform'); + + var React = require(_dependencyMap[4], 'React'); + + var ReactNative = require(_dependencyMap[5], 'ReactNative'); + + var StyleSheet = require(_dependencyMap[6], 'StyleSheet'); + + var Touchable = require(_dependencyMap[7], 'Touchable'); + + var UIManager = require(_dependencyMap[8], 'UIManager'); + + var View = require(_dependencyMap[9], 'View'); + + var emptyObject = require(_dependencyMap[10], 'fbjs/lib/emptyObject'); + + var invariant = require(_dependencyMap[11], 'fbjs/lib/invariant'); + + var hook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__; + var renderer = findRenderer(); + hook.resolveRNStyle = require(_dependencyMap[12], 'flattenStyle'); + + function findRenderer() { + var renderers = hook._renderers; + var keys = Object.keys(renderers); + invariant(keys.length === 1, 'Expected to find exactly one React Native renderer on DevTools hook.'); + return renderers[keys[0]]; + } + + var Inspector = function (_React$Component) { + babelHelpers.inherits(Inspector, _React$Component); + + function Inspector(props) { + babelHelpers.classCallCheck(this, Inspector); + + var _this = babelHelpers.possibleConstructorReturn(this, (Inspector.__proto__ || Object.getPrototypeOf(Inspector)).call(this, props)); + + _initialiseProps.call(_this); + + _this.state = { + devtoolsAgent: null, + hierarchy: null, + panelPos: 'bottom', + inspecting: true, + perfing: false, + inspected: null, + selection: null, + inspectedViewTag: _this.props.inspectedViewTag, + networking: false + }; + return _this; + } + + babelHelpers.createClass(Inspector, [{ + key: "componentDidMount", + value: function componentDidMount() { + hook.on('react-devtools', this.attachToDevtools); + + if (hook.reactDevtoolsAgent) { + this.attachToDevtools(hook.reactDevtoolsAgent); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + if (this._subs) { + this._subs.map(function (fn) { + return fn(); + }); + } + + hook.off('react-devtools', this.attachToDevtools); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(newProps) { + this.setState({ + inspectedViewTag: newProps.inspectedViewTag + }); + } + }, { + key: "setSelection", + value: function setSelection(i) { + var _this2 = this; + + var hierarchyItem = this.state.hierarchy[i]; + + var _hierarchyItem$getIns = hierarchyItem.getInspectorData(ReactNative.findNodeHandle), + measure = _hierarchyItem$getIns.measure, + props = _hierarchyItem$getIns.props, + source = _hierarchyItem$getIns.source; + + measure(function (x, y, width, height, left, top) { + _this2.setState({ + inspected: { + frame: { + left: left, + top: top, + width: width, + height: height + }, + style: props.style, + source: source + }, + selection: i + }); + }); + } + }, { + key: "onTouchViewTag", + value: function onTouchViewTag(touchedViewTag, frame, pointerY) { + var _renderer$getInspecto = renderer.getInspectorDataForViewTag(touchedViewTag), + hierarchy = _renderer$getInspecto.hierarchy, + props = _renderer$getInspecto.props, + selection = _renderer$getInspecto.selection, + source = _renderer$getInspecto.source; + + if (this.state.devtoolsAgent) { + var offsetFromLeaf = hierarchy.length - 1 - selection; + this.state.devtoolsAgent.selectFromDOMNode(touchedViewTag, true, offsetFromLeaf); + } + + this.setState({ + panelPos: pointerY > Dimensions.get('window').height / 2 ? 'top' : 'bottom', + selection: selection, + hierarchy: hierarchy, + inspected: { + style: props.style, + frame: frame, + source: source + } + }); + } + }, { + key: "setPerfing", + value: function setPerfing(val) { + this.setState({ + perfing: val, + inspecting: false, + inspected: null, + networking: false + }); + } + }, { + key: "setInspecting", + value: function setInspecting(val) { + this.setState({ + inspecting: val, + inspected: null + }); + } + }, { + key: "setTouchTargetting", + value: function setTouchTargetting(val) { + var _this3 = this; + + Touchable.TOUCH_TARGET_DEBUG = val; + this.props.onRequestRerenderApp(function (inspectedViewTag) { + _this3.setState({ + inspectedViewTag: inspectedViewTag + }); + }); + } + }, { + key: "setNetworking", + value: function setNetworking(val) { + this.setState({ + networking: val, + perfing: false, + inspecting: false, + inspected: null + }); + } + }, { + key: "render", + value: function render() { + var panelContainerStyle = this.state.panelPos === 'bottom' ? { + bottom: 0 + } : { + top: Platform.OS === 'ios' ? 20 : 0 + }; + return React.createElement( + View, + { + style: styles.container, + pointerEvents: "box-none", + __source: { + fileName: _jsxFileName, + lineNumber: 231 + } + }, + this.state.inspecting && React.createElement(InspectorOverlay, { + inspected: this.state.inspected, + inspectedViewTag: this.state.inspectedViewTag, + onTouchViewTag: this.onTouchViewTag.bind(this), + __source: { + fileName: _jsxFileName, + lineNumber: 233 + } + }), + React.createElement( + View, + { + style: [styles.panelContainer, panelContainerStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 238 + } + }, + React.createElement(InspectorPanel, { + devtoolsIsOpen: !!this.state.devtoolsAgent, + inspecting: this.state.inspecting, + perfing: this.state.perfing, + setPerfing: this.setPerfing.bind(this), + setInspecting: this.setInspecting.bind(this), + inspected: this.state.inspected, + hierarchy: this.state.hierarchy, + selection: this.state.selection, + setSelection: this.setSelection.bind(this), + touchTargetting: Touchable.TOUCH_TARGET_DEBUG, + setTouchTargetting: this.setTouchTargetting.bind(this), + networking: this.state.networking, + setNetworking: this.setNetworking.bind(this), + __source: { + fileName: _jsxFileName, + lineNumber: 239 + } + }) + ) + ); + } + }]); + return Inspector; + }(React.Component); + + var _initialiseProps = function _initialiseProps() { + var _this4 = this; + + this.attachToDevtools = function (agent) { + var _hideWait = null; + var hlSub = agent.sub('highlight', function (_ref) { + var node = _ref.node, + name = _ref.name, + props = _ref.props; + clearTimeout(_hideWait); + + if (typeof node !== 'number') { + node = ReactNative.findNodeHandle(node); + } + + UIManager.measure(node, function (x, y, width, height, left, top) { + _this4.setState({ + hierarchy: [], + inspected: { + frame: { + left: left, + top: top, + width: width, + height: height + }, + style: props ? props.style : emptyObject + } + }); + }); + }); + var hideSub = agent.sub('hideHighlight', function () { + if (_this4.state.inspected === null) { + return; + } + + _hideWait = setTimeout(function () { + _this4.setState({ + inspected: null + }); + }, 100); + }); + _this4._subs = [hlSub, hideSub]; + agent.on('shutdown', function () { + _this4.setState({ + devtoolsAgent: null + }); + + _this4._subs = null; + }); + + _this4.setState({ + devtoolsAgent: agent + }); + }; + }; + + var styles = StyleSheet.create({ + container: { + position: 'absolute', + backgroundColor: 'transparent', + top: 0, + left: 0, + right: 0, + bottom: 0 + }, + panelContainer: { + position: 'absolute', + left: 0, + right: 0 + } + }); + module.exports = Inspector; +},303,[205,304,308,105,171,74,209,223,158,211,15,18,152],"Inspector"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js"; + + var Dimensions = require(_dependencyMap[0], 'Dimensions'); + + var ElementBox = require(_dependencyMap[1], 'ElementBox'); + + var PropTypes = require(_dependencyMap[2], 'prop-types'); + + var React = require(_dependencyMap[3], 'React'); + + var StyleSheet = require(_dependencyMap[4], 'StyleSheet'); + + var UIManager = require(_dependencyMap[5], 'UIManager'); + + var View = require(_dependencyMap[6], 'View'); + + var InspectorOverlay = function (_React$Component) { + babelHelpers.inherits(InspectorOverlay, _React$Component); + + function InspectorOverlay() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, InspectorOverlay); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = InspectorOverlay.__proto__ || Object.getPrototypeOf(InspectorOverlay)).call.apply(_ref, [this].concat(args))), _this), _this.findViewForTouchEvent = function (e) { + var _e$nativeEvent$touche = e.nativeEvent.touches[0], + locationX = _e$nativeEvent$touche.locationX, + locationY = _e$nativeEvent$touche.locationY; + UIManager.findSubviewIn(_this.props.inspectedViewTag, [locationX, locationY], function (nativeViewTag, left, top, width, height) { + _this.props.onTouchViewTag(nativeViewTag, { + left: left, + top: top, + width: width, + height: height + }, locationY); + }); + }, _this.shouldSetResponser = function (e) { + _this.findViewForTouchEvent(e); + + return true; + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(InspectorOverlay, [{ + key: "render", + value: function render() { + var content = null; + + if (this.props.inspected) { + content = React.createElement(ElementBox, { + frame: this.props.inspected.frame, + style: this.props.inspected.style, + __source: { + fileName: _jsxFileName, + lineNumber: 62 + } + }); + } + + return React.createElement( + View, + { + onStartShouldSetResponder: this.shouldSetResponser, + onResponderMove: this.findViewForTouchEvent, + style: [styles.inspector, { + height: Dimensions.get('window').height + }], + __source: { + fileName: _jsxFileName, + lineNumber: 66 + } + }, + content + ); + } + }]); + return InspectorOverlay; + }(React.Component); + + InspectorOverlay.propTypes = { + inspected: PropTypes.shape({ + frame: PropTypes.object, + style: PropTypes.any + }), + inspectedViewTag: PropTypes.number, + onTouchViewTag: PropTypes.func.isRequired + }; + var styles = StyleSheet.create({ + inspector: { + backgroundColor: 'transparent', + position: 'absolute', + left: 0, + top: 0, + right: 0 + } + }); + module.exports = InspectorOverlay; +},304,[205,305,24,171,209,158,211],"InspectorOverlay"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/ElementBox.js"; + + var React = require(_dependencyMap[0], 'React'); + + var View = require(_dependencyMap[1], 'View'); + + var StyleSheet = require(_dependencyMap[2], 'StyleSheet'); + + var BorderBox = require(_dependencyMap[3], 'BorderBox'); + + var resolveBoxStyle = require(_dependencyMap[4], 'resolveBoxStyle'); + + var flattenStyle = require(_dependencyMap[5], 'flattenStyle'); + + var ElementBox = function (_React$Component) { + babelHelpers.inherits(ElementBox, _React$Component); + + function ElementBox() { + babelHelpers.classCallCheck(this, ElementBox); + return babelHelpers.possibleConstructorReturn(this, (ElementBox.__proto__ || Object.getPrototypeOf(ElementBox)).apply(this, arguments)); + } + + babelHelpers.createClass(ElementBox, [{ + key: "render", + value: function render() { + var style = flattenStyle(this.props.style) || {}; + var margin = resolveBoxStyle('margin', style); + var padding = resolveBoxStyle('padding', style); + var frameStyle = this.props.frame; + + if (margin) { + frameStyle = { + top: frameStyle.top - margin.top, + left: frameStyle.left - margin.left, + height: frameStyle.height + margin.top + margin.bottom, + width: frameStyle.width + margin.left + margin.right + }; + } + + var contentStyle = { + width: this.props.frame.width, + height: this.props.frame.height + }; + + if (padding) { + contentStyle = { + width: contentStyle.width - padding.left - padding.right, + height: contentStyle.height - padding.top - padding.bottom + }; + } + + return React.createElement( + View, + { + style: [styles.frame, frameStyle], + pointerEvents: "none", + __source: { + fileName: _jsxFileName, + lineNumber: 47 + } + }, + React.createElement( + BorderBox, + { + box: margin, + style: styles.margin, + __source: { + fileName: _jsxFileName, + lineNumber: 48 + } + }, + React.createElement( + BorderBox, + { + box: padding, + style: styles.padding, + __source: { + fileName: _jsxFileName, + lineNumber: 49 + } + }, + React.createElement(View, { + style: [styles.content, contentStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 50 + } + }) + ) + ) + ); + } + }]); + return ElementBox; + }(React.Component); + + var styles = StyleSheet.create({ + frame: { + position: 'absolute' + }, + content: { + backgroundColor: 'rgba(200, 230, 255, 0.8)' + }, + padding: { + borderColor: 'rgba(77, 255, 0, 0.3)' + }, + margin: { + borderColor: 'rgba(255, 132, 0, 0.3)' + } + }); + module.exports = ElementBox; +},305,[171,211,209,306,307,152],"ElementBox"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/BorderBox.js"; + + var React = require(_dependencyMap[0], 'React'); + + var View = require(_dependencyMap[1], 'View'); + + var BorderBox = function (_React$Component) { + babelHelpers.inherits(BorderBox, _React$Component); + + function BorderBox() { + babelHelpers.classCallCheck(this, BorderBox); + return babelHelpers.possibleConstructorReturn(this, (BorderBox.__proto__ || Object.getPrototypeOf(BorderBox)).apply(this, arguments)); + } + + babelHelpers.createClass(BorderBox, [{ + key: "render", + value: function render() { + var box = this.props.box; + + if (!box) { + return this.props.children; + } + + var style = { + borderTopWidth: box.top, + borderBottomWidth: box.bottom, + borderLeftWidth: box.left, + borderRightWidth: box.right + }; + return React.createElement( + View, + { + style: [style, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 30 + } + }, + this.props.children + ); + } + }]); + return BorderBox; + }(React.Component); + + module.exports = BorderBox; +},306,[171,211],"BorderBox"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function resolveBoxStyle(prefix, style) { + var res = {}; + var subs = ['top', 'left', 'bottom', 'right']; + var set = false; + subs.forEach(function (sub) { + res[sub] = style[prefix] || 0; + }); + + if (style[prefix]) { + set = true; + } + + if (style[prefix + 'Vertical']) { + res.top = res.bottom = style[prefix + 'Vertical']; + set = true; + } + + if (style[prefix + 'Horizontal']) { + res.left = res.right = style[prefix + 'Horizontal']; + set = true; + } + + subs.forEach(function (sub) { + var val = style[prefix + capFirst(sub)]; + + if (val) { + res[sub] = val; + set = true; + } + }); + + if (!set) { + return; + } + + return res; + } + + function capFirst(text) { + return text[0].toUpperCase() + text.slice(1); + } + + module.exports = resolveBoxStyle; +},307,[],"resolveBoxStyle"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/InspectorPanel.js"; + + var ElementProperties = require(_dependencyMap[0], 'ElementProperties'); + + var NetworkOverlay = require(_dependencyMap[1], 'NetworkOverlay'); + + var PerformanceOverlay = require(_dependencyMap[2], 'PerformanceOverlay'); + + var React = require(_dependencyMap[3], 'React'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var ScrollView = require(_dependencyMap[5], 'ScrollView'); + + var StyleSheet = require(_dependencyMap[6], 'StyleSheet'); + + var Text = require(_dependencyMap[7], 'Text'); + + var TouchableHighlight = require(_dependencyMap[8], 'TouchableHighlight'); + + var View = require(_dependencyMap[9], 'View'); + + var InspectorPanel = function (_React$Component) { + babelHelpers.inherits(InspectorPanel, _React$Component); + + function InspectorPanel() { + babelHelpers.classCallCheck(this, InspectorPanel); + return babelHelpers.possibleConstructorReturn(this, (InspectorPanel.__proto__ || Object.getPrototypeOf(InspectorPanel)).apply(this, arguments)); + } + + babelHelpers.createClass(InspectorPanel, [{ + key: "renderWaiting", + value: function renderWaiting() { + if (this.props.inspecting) { + return React.createElement( + Text, + { + style: styles.waitingText, + __source: { + fileName: _jsxFileName, + lineNumber: 29 + } + }, + "Tap something to inspect it" + ); + } + + return React.createElement( + Text, + { + style: styles.waitingText, + __source: { + fileName: _jsxFileName, + lineNumber: 34 + } + }, + "Nothing is inspected" + ); + } + }, { + key: "render", + value: function render() { + var contents = void 0; + + if (this.props.inspected) { + contents = React.createElement( + ScrollView, + { + style: styles.properties, + __source: { + fileName: _jsxFileName, + lineNumber: 41 + } + }, + React.createElement(ElementProperties, { + style: this.props.inspected.style, + frame: this.props.inspected.frame, + source: this.props.inspected.source, + hierarchy: this.props.hierarchy, + selection: this.props.selection, + setSelection: this.props.setSelection, + __source: { + fileName: _jsxFileName, + lineNumber: 42 + } + }) + ); + } else if (this.props.perfing) { + contents = React.createElement(PerformanceOverlay, { + __source: { + fileName: _jsxFileName, + lineNumber: 54 + } + }); + } else if (this.props.networking) { + contents = React.createElement(NetworkOverlay, { + __source: { + fileName: _jsxFileName, + lineNumber: 58 + } + }); + } else { + contents = React.createElement( + View, + { + style: styles.waiting, + __source: { + fileName: _jsxFileName, + lineNumber: 62 + } + }, + this.renderWaiting() + ); + } + + return React.createElement( + View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 68 + } + }, + !this.props.devtoolsIsOpen && contents, + React.createElement( + View, + { + style: styles.buttonRow, + __source: { + fileName: _jsxFileName, + lineNumber: 70 + } + }, + React.createElement(Button, { + title: 'Inspect', + pressed: this.props.inspecting, + onClick: this.props.setInspecting, + __source: { + fileName: _jsxFileName, + lineNumber: 71 + } + }), + React.createElement(Button, { + title: 'Perf', + pressed: this.props.perfing, + onClick: this.props.setPerfing, + __source: { + fileName: _jsxFileName, + lineNumber: 76 + } + }), + React.createElement(Button, { + title: 'Network', + pressed: this.props.networking, + onClick: this.props.setNetworking, + __source: { + fileName: _jsxFileName, + lineNumber: 80 + } + }), + React.createElement(Button, { + title: 'Touchables', + pressed: this.props.touchTargetting, + onClick: this.props.setTouchTargetting, + __source: { + fileName: _jsxFileName, + lineNumber: 84 + } + }) + ) + ); + } + }]); + return InspectorPanel; + }(React.Component); + + InspectorPanel.propTypes = { + devtoolsIsOpen: PropTypes.bool, + inspecting: PropTypes.bool, + setInspecting: PropTypes.func, + inspected: PropTypes.object, + perfing: PropTypes.bool, + setPerfing: PropTypes.func, + touchTargetting: PropTypes.bool, + setTouchTargetting: PropTypes.func, + networking: PropTypes.bool, + setNetworking: PropTypes.func + }; + + var Button = function (_React$Component2) { + babelHelpers.inherits(Button, _React$Component2); + + function Button() { + babelHelpers.classCallCheck(this, Button); + return babelHelpers.possibleConstructorReturn(this, (Button.__proto__ || Object.getPrototypeOf(Button)).apply(this, arguments)); + } + + babelHelpers.createClass(Button, [{ + key: "render", + value: function render() { + var _this3 = this; + + return React.createElement( + TouchableHighlight, + { + onPress: function onPress() { + return _this3.props.onClick(!_this3.props.pressed); + }, + style: [styles.button, this.props.pressed && styles.buttonPressed], + __source: { + fileName: _jsxFileName, + lineNumber: 110 + } + }, + React.createElement( + Text, + { + style: styles.buttonText, + __source: { + fileName: _jsxFileName, + lineNumber: 114 + } + }, + this.props.title + ) + ); + } + }]); + return Button; + }(React.Component); + + var styles = StyleSheet.create({ + buttonRow: { + flexDirection: 'row' + }, + button: { + backgroundColor: 'rgba(0, 0, 0, 0.3)', + margin: 2, + height: 30, + justifyContent: 'center', + alignItems: 'center' + }, + buttonPressed: { + backgroundColor: 'rgba(255, 255, 255, 0.3)' + }, + buttonText: { + textAlign: 'center', + color: 'white', + margin: 5 + }, + container: { + backgroundColor: 'rgba(0, 0, 0, 0.7)' + }, + properties: { + height: 200 + }, + waiting: { + height: 100 + }, + waitingText: { + fontSize: 20, + textAlign: 'center', + marginVertical: 20, + color: 'white' + } + }); + module.exports = InspectorPanel; +},308,[309,315,318,171,24,265,209,222,312,211],"InspectorPanel"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/ElementProperties.js"; + + var BoxInspector = require(_dependencyMap[0], 'BoxInspector'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var React = require(_dependencyMap[2], 'React'); + + var StyleInspector = require(_dependencyMap[3], 'StyleInspector'); + + var StyleSheet = require(_dependencyMap[4], 'StyleSheet'); + + var Text = require(_dependencyMap[5], 'Text'); + + var TouchableHighlight = require(_dependencyMap[6], 'TouchableHighlight'); + + var TouchableWithoutFeedback = require(_dependencyMap[7], 'TouchableWithoutFeedback'); + + var View = require(_dependencyMap[8], 'View'); + + var flattenStyle = require(_dependencyMap[9], 'flattenStyle'); + + var mapWithSeparator = require(_dependencyMap[10], 'mapWithSeparator'); + + var openFileInEditor = require(_dependencyMap[11], 'openFileInEditor'); + + var ElementProperties = function (_React$Component) { + babelHelpers.inherits(ElementProperties, _React$Component); + + function ElementProperties() { + babelHelpers.classCallCheck(this, ElementProperties); + return babelHelpers.possibleConstructorReturn(this, (ElementProperties.__proto__ || Object.getPrototypeOf(ElementProperties)).apply(this, arguments)); + } + + babelHelpers.createClass(ElementProperties, [{ + key: "render", + value: function render() { + var _this2 = this; + + var style = flattenStyle(this.props.style); + var selection = this.props.selection; + var openFileButton = void 0; + var source = this.props.source; + + var _ref = source || {}, + fileName = _ref.fileName, + lineNumber = _ref.lineNumber; + + if (fileName && lineNumber) { + var parts = fileName.split('/'); + var fileNameShort = parts[parts.length - 1]; + openFileButton = React.createElement( + TouchableHighlight, + { + style: styles.openButton, + onPress: openFileInEditor.bind(null, fileName, lineNumber), + __source: { + fileName: _jsxFileName, + lineNumber: 62 + } + }, + React.createElement( + Text, + { + style: styles.openButtonTitle, + numberOfLines: 1, + __source: { + fileName: _jsxFileName, + lineNumber: 65 + } + }, + fileNameShort, + ":", + lineNumber + ) + ); + } + + return React.createElement( + TouchableWithoutFeedback, + { + __source: { + fileName: _jsxFileName, + lineNumber: 74 + } + }, + React.createElement( + View, + { + style: styles.info, + __source: { + fileName: _jsxFileName, + lineNumber: 75 + } + }, + React.createElement( + View, + { + style: styles.breadcrumb, + __source: { + fileName: _jsxFileName, + lineNumber: 76 + } + }, + mapWithSeparator(this.props.hierarchy, function (hierarchyItem, i) { + return React.createElement( + TouchableHighlight, + { + key: 'item-' + i, + style: [styles.breadItem, i === selection && styles.selected], + onPress: function onPress() { + return _this2.props.setSelection(i); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 80 + } + }, + React.createElement( + Text, + { + style: styles.breadItemText, + __source: { + fileName: _jsxFileName, + lineNumber: 85 + } + }, + hierarchyItem.name + ) + ); + }, function (i) { + return React.createElement( + Text, + { + key: 'sep-' + i, + style: styles.breadSep, + __source: { + fileName: _jsxFileName, + lineNumber: 91 + } + }, + "\u25B8" + ); + }) + ), + React.createElement( + View, + { + style: styles.row, + __source: { + fileName: _jsxFileName, + lineNumber: 97 + } + }, + React.createElement( + View, + { + style: styles.col, + __source: { + fileName: _jsxFileName, + lineNumber: 98 + } + }, + React.createElement(StyleInspector, { + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 99 + } + }), + openFileButton + ), + React.createElement(BoxInspector, { + style: style, + frame: this.props.frame, + __source: { + fileName: _jsxFileName, + lineNumber: 104 + } + }) + ) + ) + ); + } + }]); + return ElementProperties; + }(React.Component); + + ElementProperties.propTypes = { + hierarchy: PropTypes.array.isRequired, + style: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.number]), + source: PropTypes.shape({ + fileName: PropTypes.string, + lineNumber: PropTypes.number + }) + }; + var styles = StyleSheet.create({ + breadSep: { + fontSize: 8, + color: 'white' + }, + breadcrumb: { + flexDirection: 'row', + flexWrap: 'wrap', + alignItems: 'flex-start', + marginBottom: 5 + }, + selected: { + borderColor: 'white', + borderRadius: 5 + }, + breadItem: { + borderWidth: 1, + borderColor: 'transparent', + marginHorizontal: 2 + }, + breadItemText: { + fontSize: 10, + color: 'white', + marginHorizontal: 5 + }, + row: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between' + }, + col: { + flex: 1 + }, + info: { + padding: 10 + }, + openButton: { + padding: 10, + backgroundColor: '#000', + marginVertical: 5, + marginRight: 5, + borderRadius: 2 + }, + openButtonTitle: { + color: 'white', + fontSize: 8 + } + }); + module.exports = ElementProperties; +},309,[310,24,171,311,209,222,312,231,211,152,313,314],"ElementProperties"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/BoxInspector.js"; + + var React = require(_dependencyMap[0], 'React'); + + var StyleSheet = require(_dependencyMap[1], 'StyleSheet'); + + var Text = require(_dependencyMap[2], 'Text'); + + var View = require(_dependencyMap[3], 'View'); + + var resolveBoxStyle = require(_dependencyMap[4], 'resolveBoxStyle'); + + var blank = { + top: 0, + left: 0, + right: 0, + bottom: 0 + }; + + var BoxInspector = function (_React$Component) { + babelHelpers.inherits(BoxInspector, _React$Component); + + function BoxInspector() { + babelHelpers.classCallCheck(this, BoxInspector); + return babelHelpers.possibleConstructorReturn(this, (BoxInspector.__proto__ || Object.getPrototypeOf(BoxInspector)).apply(this, arguments)); + } + + babelHelpers.createClass(BoxInspector, [{ + key: "render", + value: function render() { + var frame = this.props.frame; + var style = this.props.style; + var margin = style && resolveBoxStyle('margin', style) || blank; + var padding = style && resolveBoxStyle('padding', style) || blank; + return React.createElement( + BoxContainer, + { + title: "margin", + titleStyle: styles.marginLabel, + box: margin, + __source: { + fileName: _jsxFileName, + lineNumber: 34 + } + }, + React.createElement( + BoxContainer, + { + title: "padding", + box: padding, + __source: { + fileName: _jsxFileName, + lineNumber: 35 + } + }, + React.createElement( + View, + { + __source: { + fileName: _jsxFileName, + lineNumber: 36 + } + }, + React.createElement( + Text, + { + style: styles.innerText, + __source: { + fileName: _jsxFileName, + lineNumber: 37 + } + }, + "(", + (frame.left || 0).toFixed(1), + ", ", + (frame.top || 0).toFixed(1), + ")" + ), + React.createElement( + Text, + { + style: styles.innerText, + __source: { + fileName: _jsxFileName, + lineNumber: 40 + } + }, + (frame.width || 0).toFixed(1), + " \xD7 ", + (frame.height || 0).toFixed(1) + ) + ) + ) + ); + } + }]); + return BoxInspector; + }(React.Component); + + var BoxContainer = function (_React$Component2) { + babelHelpers.inherits(BoxContainer, _React$Component2); + + function BoxContainer() { + babelHelpers.classCallCheck(this, BoxContainer); + return babelHelpers.possibleConstructorReturn(this, (BoxContainer.__proto__ || Object.getPrototypeOf(BoxContainer)).apply(this, arguments)); + } + + babelHelpers.createClass(BoxContainer, [{ + key: "render", + value: function render() { + var box = this.props.box; + return React.createElement( + View, + { + style: styles.box, + __source: { + fileName: _jsxFileName, + lineNumber: 54 + } + }, + React.createElement( + View, + { + style: styles.row, + __source: { + fileName: _jsxFileName, + lineNumber: 55 + } + }, + React.createElement( + Text, + { + style: [this.props.titleStyle, styles.label], + __source: { + fileName: _jsxFileName, + lineNumber: 58 + } + }, + this.props.title + ), + React.createElement( + Text, + { + style: styles.boxText, + __source: { + fileName: _jsxFileName, + lineNumber: 59 + } + }, + box.top + ) + ), + React.createElement( + View, + { + style: styles.row, + __source: { + fileName: _jsxFileName, + lineNumber: 61 + } + }, + React.createElement( + Text, + { + style: styles.boxText, + __source: { + fileName: _jsxFileName, + lineNumber: 62 + } + }, + box.left + ), + this.props.children, + React.createElement( + Text, + { + style: styles.boxText, + __source: { + fileName: _jsxFileName, + lineNumber: 64 + } + }, + box.right + ) + ), + React.createElement( + Text, + { + style: styles.boxText, + __source: { + fileName: _jsxFileName, + lineNumber: 66 + } + }, + box.bottom + ) + ); + } + }]); + return BoxContainer; + }(React.Component); + + var styles = StyleSheet.create({ + row: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-around' + }, + marginLabel: { + width: 60 + }, + label: { + fontSize: 10, + color: 'rgb(255,100,0)', + marginLeft: 5, + flex: 1, + textAlign: 'left', + top: -3 + }, + buffer: { + fontSize: 10, + color: 'yellow', + flex: 1, + textAlign: 'center' + }, + innerText: { + color: 'yellow', + fontSize: 12, + textAlign: 'center', + width: 70 + }, + box: { + borderWidth: 1, + borderColor: 'grey' + }, + boxText: { + color: 'white', + fontSize: 12, + marginHorizontal: 3, + marginVertical: 2, + textAlign: 'center' + } + }); + module.exports = BoxInspector; +},310,[171,209,222,211,307],"BoxInspector"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/StyleInspector.js"; + + var React = require(_dependencyMap[0], 'React'); + + var StyleSheet = require(_dependencyMap[1], 'StyleSheet'); + + var Text = require(_dependencyMap[2], 'Text'); + + var View = require(_dependencyMap[3], 'View'); + + var StyleInspector = function (_React$Component) { + babelHelpers.inherits(StyleInspector, _React$Component); + + function StyleInspector() { + babelHelpers.classCallCheck(this, StyleInspector); + return babelHelpers.possibleConstructorReturn(this, (StyleInspector.__proto__ || Object.getPrototypeOf(StyleInspector)).apply(this, arguments)); + } + + babelHelpers.createClass(StyleInspector, [{ + key: "render", + value: function render() { + var _this2 = this; + + if (!this.props.style) { + return React.createElement( + Text, + { + style: styles.noStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 22 + } + }, + "No style" + ); + } + + var names = Object.keys(this.props.style); + return React.createElement( + View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 26 + } + }, + React.createElement( + View, + { + __source: { + fileName: _jsxFileName, + lineNumber: 27 + } + }, + names.map(function (name) { + return React.createElement( + Text, + { + key: name, + style: styles.attr, + __source: { + fileName: _jsxFileName, + lineNumber: 28 + } + }, + name, + ":" + ); + }) + ), + React.createElement( + View, + { + __source: { + fileName: _jsxFileName, + lineNumber: 31 + } + }, + names.map(function (name) { + var value = typeof _this2.props.style[name] === 'object' ? JSON.stringify(_this2.props.style[name]) : _this2.props.style[name]; + return React.createElement( + Text, + { + key: name, + style: styles.value, + __source: { + fileName: _jsxFileName, + lineNumber: 34 + } + }, + value + ); + }) + ) + ); + } + }]); + return StyleInspector; + }(React.Component); + + var styles = StyleSheet.create({ + container: { + flexDirection: 'row' + }, + row: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-around' + }, + attr: { + fontSize: 10, + color: '#ccc' + }, + value: { + fontSize: 10, + color: 'white', + marginLeft: 10 + }, + noStyle: { + color: 'white', + fontSize: 10 + } + }); + module.exports = StyleInspector; +},311,[171,209,222,211],"StyleInspector"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var NativeMethodsMixin = require(_dependencyMap[1], 'NativeMethodsMixin'); + + var PropTypes = require(_dependencyMap[2], 'prop-types'); + + var React = require(_dependencyMap[3], 'React'); + + var ReactNativeViewAttributes = require(_dependencyMap[4], 'ReactNativeViewAttributes'); + + var StyleSheet = require(_dependencyMap[5], 'StyleSheet'); + + var Touchable = require(_dependencyMap[6], 'Touchable'); + + var TouchableWithoutFeedback = require(_dependencyMap[7], 'TouchableWithoutFeedback'); + + var View = require(_dependencyMap[8], 'View'); + + var ViewPropTypes = require(_dependencyMap[9], 'ViewPropTypes'); + + var createReactClass = require(_dependencyMap[10], 'create-react-class'); + + var ensurePositiveDelayProps = require(_dependencyMap[11], 'ensurePositiveDelayProps'); + + var DEFAULT_PROPS = { + activeOpacity: 0.85, + delayPressOut: 100, + underlayColor: 'black' + }; + var PRESS_RETENTION_OFFSET = { + top: 20, + left: 20, + right: 20, + bottom: 30 + }; + var TouchableHighlight = createReactClass({ + displayName: 'TouchableHighlight', + propTypes: babelHelpers.extends({}, TouchableWithoutFeedback.propTypes, { + activeOpacity: PropTypes.number, + underlayColor: ColorPropType, + style: ViewPropTypes.style, + onShowUnderlay: PropTypes.func, + onHideUnderlay: PropTypes.func, + hasTVPreferredFocus: PropTypes.bool, + tvParallaxProperties: PropTypes.object + }), + mixins: [NativeMethodsMixin, Touchable.Mixin], + getDefaultProps: function getDefaultProps() { + return DEFAULT_PROPS; + }, + getInitialState: function getInitialState() { + this._isMounted = false; + return babelHelpers.extends({}, this.touchableGetInitialState(), { + extraChildStyle: null, + extraUnderlayStyle: null + }); + }, + componentDidMount: function componentDidMount() { + this._isMounted = true; + ensurePositiveDelayProps(this.props); + }, + componentWillUnmount: function componentWillUnmount() { + this._isMounted = false; + clearTimeout(this._hideTimeout); + }, + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + ensurePositiveDelayProps(nextProps); + }, + viewConfig: { + uiViewClassName: 'RCTView', + validAttributes: ReactNativeViewAttributes.RCTView + }, + touchableHandleActivePressIn: function touchableHandleActivePressIn(e) { + clearTimeout(this._hideTimeout); + this._hideTimeout = null; + + this._showUnderlay(); + + this.props.onPressIn && this.props.onPressIn(e); + }, + touchableHandleActivePressOut: function touchableHandleActivePressOut(e) { + if (!this._hideTimeout) { + this._hideUnderlay(); + } + + this.props.onPressOut && this.props.onPressOut(e); + }, + touchableHandlePress: function touchableHandlePress(e) { + clearTimeout(this._hideTimeout); + + this._showUnderlay(); + + this._hideTimeout = setTimeout(this._hideUnderlay, this.props.delayPressOut); + this.props.onPress && this.props.onPress(e); + }, + touchableHandleLongPress: function touchableHandleLongPress(e) { + this.props.onLongPress && this.props.onLongPress(e); + }, + touchableGetPressRectOffset: function touchableGetPressRectOffset() { + return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET; + }, + touchableGetHitSlop: function touchableGetHitSlop() { + return this.props.hitSlop; + }, + touchableGetHighlightDelayMS: function touchableGetHighlightDelayMS() { + return this.props.delayPressIn; + }, + touchableGetLongPressDelayMS: function touchableGetLongPressDelayMS() { + return this.props.delayLongPress; + }, + touchableGetPressOutDelayMS: function touchableGetPressOutDelayMS() { + return this.props.delayPressOut; + }, + _showUnderlay: function _showUnderlay() { + if (!this._isMounted || !this._hasPressHandler()) { + return; + } + + this.setState({ + extraChildStyle: { + opacity: this.props.activeOpacity + }, + extraUnderlayStyle: { + backgroundColor: this.props.underlayColor + } + }); + this.props.onShowUnderlay && this.props.onShowUnderlay(); + }, + _hideUnderlay: function _hideUnderlay() { + clearTimeout(this._hideTimeout); + this._hideTimeout = null; + + if (this._hasPressHandler()) { + this.setState({ + extraChildStyle: null, + extraUnderlayStyle: null + }); + this.props.onHideUnderlay && this.props.onHideUnderlay(); + } + }, + _hasPressHandler: function _hasPressHandler() { + return !!(this.props.onPress || this.props.onPressIn || this.props.onPressOut || this.props.onLongPress); + }, + render: function render() { + var child = React.Children.only(this.props.children); + return React.createElement( + View, + { + accessible: this.props.accessible !== false, + accessibilityLabel: this.props.accessibilityLabel, + accessibilityComponentType: this.props.accessibilityComponentType, + accessibilityTraits: this.props.accessibilityTraits, + style: StyleSheet.compose(this.props.style, this.state.extraUnderlayStyle), + onLayout: this.props.onLayout, + hitSlop: this.props.hitSlop, + isTVSelectable: true, + tvParallaxProperties: this.props.tvParallaxProperties, + hasTVPreferredFocus: this.props.hasTVPreferredFocus, + onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder, + onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest, + onResponderGrant: this.touchableHandleResponderGrant, + onResponderMove: this.touchableHandleResponderMove, + onResponderRelease: this.touchableHandleResponderRelease, + onResponderTerminate: this.touchableHandleResponderTerminate, + nativeID: this.props.nativeID, + testID: this.props.testID, + __source: { + fileName: _jsxFileName, + lineNumber: 306 + } + }, + React.cloneElement(child, { + style: StyleSheet.compose(child.props.style, this.state.extraChildStyle) + }), + Touchable.renderDebugView({ + color: 'green', + hitSlop: this.props.hitSlop + }) + ); + } + }); + module.exports = TouchableHighlight; +},312,[167,169,24,171,212,209,223,231,211,172,213,233],"TouchableHighlight"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function mapWithSeparator(items, itemRenderer, spacerRenderer) { + var mapped = []; + + if (items.length > 0) { + mapped.push(itemRenderer(items[0], 0, items)); + + for (var ii = 1; ii < items.length; ii++) { + mapped.push(spacerRenderer(ii - 1), itemRenderer(items[ii], ii, items)); + } + } + + return mapped; + } + + module.exports = mapWithSeparator; +},313,[],"mapWithSeparator"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var getDevServer = require(_dependencyMap[0], 'getDevServer'); + + function openFileInEditor(file, lineNumber) { + fetch(getDevServer().url + 'open-stack-frame', { + method: 'POST', + body: JSON.stringify({ + file: file, + lineNumber: lineNumber + }) + }); + } + + module.exports = openFileInEditor; +},314,[89],"openFileInEditor"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/NetworkOverlay.js"; + + var ListView = require(_dependencyMap[0], 'ListView'); + + var React = require(_dependencyMap[1], 'React'); + + var ScrollView = require(_dependencyMap[2], 'ScrollView'); + + var StyleSheet = require(_dependencyMap[3], 'StyleSheet'); + + var Text = require(_dependencyMap[4], 'Text'); + + var TouchableHighlight = require(_dependencyMap[5], 'TouchableHighlight'); + + var View = require(_dependencyMap[6], 'View'); + + var WebSocketInterceptor = require(_dependencyMap[7], 'WebSocketInterceptor'); + + var XHRInterceptor = require(_dependencyMap[8], 'XHRInterceptor'); + + var LISTVIEW_CELL_HEIGHT = 15; + var SEPARATOR_THICKNESS = 2; + var nextXHRId = 0; + + var NetworkOverlay = function (_React$Component) { + babelHelpers.inherits(NetworkOverlay, _React$Component); + + function NetworkOverlay(props) { + babelHelpers.classCallCheck(this, NetworkOverlay); + + var _this = babelHelpers.possibleConstructorReturn(this, (NetworkOverlay.__proto__ || Object.getPrototypeOf(NetworkOverlay)).call(this, props)); + + _this._requests = []; + _this._detailViewItems = []; + _this._listViewDataSource = new ListView.DataSource({ + rowHasChanged: function rowHasChanged(r1, r2) { + return r1 !== r2; + } + }); + _this.state = { + dataSource: _this._listViewDataSource.cloneWithRows([]), + newDetailInfo: false, + detailRowID: null + }; + _this._listViewHighlighted = false; + _this._listViewHeight = 0; + _this._captureRequestListView = _this._captureRequestListView.bind(_this); + _this._captureDetailScrollView = _this._captureDetailScrollView.bind(_this); + _this._listViewOnLayout = _this._listViewOnLayout.bind(_this); + _this._renderRow = _this._renderRow.bind(_this); + _this._closeButtonClicked = _this._closeButtonClicked.bind(_this); + _this._socketIdMap = {}; + _this._xhrIdMap = {}; + return _this; + } + + babelHelpers.createClass(NetworkOverlay, [{ + key: "_enableXHRInterception", + value: function _enableXHRInterception() { + var _this2 = this; + + if (XHRInterceptor.isInterceptorEnabled()) { + return; + } + + XHRInterceptor.setOpenCallback(function (method, url, xhr) { + xhr._index = nextXHRId++; + var xhrIndex = _this2._requests.length; + _this2._xhrIdMap[xhr._index] = xhrIndex; + var _xhr = { + 'type': 'XMLHttpRequest', + 'method': method, + 'url': url + }; + + _this2._requests.push(_xhr); + + _this2._detailViewItems.push([]); + + _this2._genDetailViewItem(xhrIndex); + + _this2.setState({ + dataSource: _this2._listViewDataSource.cloneWithRows(_this2._requests) + }, _this2._scrollToBottom()); + }); + XHRInterceptor.setRequestHeaderCallback(function (header, value, xhr) { + var xhrIndex = _this2._getRequestIndexByXHRID(xhr._index); + + if (xhrIndex === -1) { + return; + } + + var networkInfo = _this2._requests[xhrIndex]; + + if (!networkInfo.requestHeaders) { + networkInfo.requestHeaders = {}; + } + + networkInfo.requestHeaders[header] = value; + + _this2._genDetailViewItem(xhrIndex); + }); + XHRInterceptor.setSendCallback(function (data, xhr) { + var xhrIndex = _this2._getRequestIndexByXHRID(xhr._index); + + if (xhrIndex === -1) { + return; + } + + _this2._requests[xhrIndex].dataSent = data; + + _this2._genDetailViewItem(xhrIndex); + }); + XHRInterceptor.setHeaderReceivedCallback(function (type, size, responseHeaders, xhr) { + var xhrIndex = _this2._getRequestIndexByXHRID(xhr._index); + + if (xhrIndex === -1) { + return; + } + + var networkInfo = _this2._requests[xhrIndex]; + networkInfo.responseContentType = type; + networkInfo.responseSize = size; + networkInfo.responseHeaders = responseHeaders; + + _this2._genDetailViewItem(xhrIndex); + }); + XHRInterceptor.setResponseCallback(function (status, timeout, response, responseURL, responseType, xhr) { + var xhrIndex = _this2._getRequestIndexByXHRID(xhr._index); + + if (xhrIndex === -1) { + return; + } + + var networkInfo = _this2._requests[xhrIndex]; + networkInfo.status = status; + networkInfo.timeout = timeout; + networkInfo.response = response; + networkInfo.responseURL = responseURL; + networkInfo.responseType = responseType; + + _this2._genDetailViewItem(xhrIndex); + }); + XHRInterceptor.enableInterception(); + } + }, { + key: "_enableWebSocketInterception", + value: function _enableWebSocketInterception() { + var _this3 = this; + + if (WebSocketInterceptor.isInterceptorEnabled()) { + return; + } + + WebSocketInterceptor.setConnectCallback(function (url, protocols, options, socketId) { + var socketIndex = _this3._requests.length; + _this3._socketIdMap[socketId] = socketIndex; + var _webSocket = { + 'type': 'WebSocket', + 'url': url, + 'protocols': protocols + }; + + _this3._requests.push(_webSocket); + + _this3._detailViewItems.push([]); + + _this3._genDetailViewItem(socketIndex); + + _this3.setState({ + dataSource: _this3._listViewDataSource.cloneWithRows(_this3._requests) + }, _this3._scrollToBottom()); + }); + WebSocketInterceptor.setCloseCallback(function (statusCode, closeReason, socketId) { + var socketIndex = _this3._socketIdMap[socketId]; + + if (socketIndex === undefined) { + return; + } + + if (statusCode !== null && closeReason !== null) { + _this3._requests[socketIndex].status = statusCode; + _this3._requests[socketIndex].closeReason = closeReason; + } + + _this3._genDetailViewItem(socketIndex); + }); + WebSocketInterceptor.setSendCallback(function (data, socketId) { + var socketIndex = _this3._socketIdMap[socketId]; + + if (socketIndex === undefined) { + return; + } + + if (!_this3._requests[socketIndex].messages) { + _this3._requests[socketIndex].messages = ''; + } + + _this3._requests[socketIndex].messages += 'Sent: ' + JSON.stringify(data) + '\n'; + + _this3._genDetailViewItem(socketIndex); + }); + WebSocketInterceptor.setOnMessageCallback(function (socketId, message) { + var socketIndex = _this3._socketIdMap[socketId]; + + if (socketIndex === undefined) { + return; + } + + if (!_this3._requests[socketIndex].messages) { + _this3._requests[socketIndex].messages = ''; + } + + _this3._requests[socketIndex].messages += 'Received: ' + JSON.stringify(message) + '\n'; + + _this3._genDetailViewItem(socketIndex); + }); + WebSocketInterceptor.setOnCloseCallback(function (socketId, message) { + var socketIndex = _this3._socketIdMap[socketId]; + + if (socketIndex === undefined) { + return; + } + + _this3._requests[socketIndex].serverClose = message; + + _this3._genDetailViewItem(socketIndex); + }); + WebSocketInterceptor.setOnErrorCallback(function (socketId, message) { + var socketIndex = _this3._socketIdMap[socketId]; + + if (socketIndex === undefined) { + return; + } + + _this3._requests[socketIndex].serverError = message; + + _this3._genDetailViewItem(socketIndex); + }); + WebSocketInterceptor.enableInterception(); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this._enableXHRInterception(); + + this._enableWebSocketInterception(); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + XHRInterceptor.disableInterception(); + WebSocketInterceptor.disableInterception(); + } + }, { + key: "_renderRow", + value: function _renderRow(rowData, sectionID, rowID, highlightRow) { + var _this4 = this; + + var urlCellViewStyle = styles.urlEvenCellView; + var methodCellViewStyle = styles.methodEvenCellView; + + if (rowID % 2 === 1) { + urlCellViewStyle = styles.urlOddCellView; + methodCellViewStyle = styles.methodOddCellView; + } + + return React.createElement( + TouchableHighlight, + { + onPress: function onPress() { + _this4._pressRow(rowID); + + highlightRow(sectionID, rowID); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 300 + } + }, + React.createElement( + View, + { + __source: { + fileName: _jsxFileName, + lineNumber: 304 + } + }, + React.createElement( + View, + { + style: styles.tableRow, + __source: { + fileName: _jsxFileName, + lineNumber: 305 + } + }, + React.createElement( + View, + { + style: urlCellViewStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 306 + } + }, + React.createElement( + Text, + { + style: styles.cellText, + numberOfLines: 1, + __source: { + fileName: _jsxFileName, + lineNumber: 307 + } + }, + rowData.url + ) + ), + React.createElement( + View, + { + style: methodCellViewStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 311 + } + }, + React.createElement( + Text, + { + style: styles.cellText, + numberOfLines: 1, + __source: { + fileName: _jsxFileName, + lineNumber: 312 + } + }, + this._getTypeShortName(rowData.type) + ) + ) + ) + ) + ); + } + }, { + key: "_renderSeperator", + value: function _renderSeperator(sectionID, rowID, adjacentRowHighlighted) { + return React.createElement(View, { + key: sectionID + "-" + rowID, + style: { + height: adjacentRowHighlighted ? SEPARATOR_THICKNESS : 0, + backgroundColor: adjacentRowHighlighted ? '#3B5998' : '#CCCCCC' + }, + __source: { + fileName: _jsxFileName, + lineNumber: 327 + } + }); + } + }, { + key: "_scrollToBottom", + value: function _scrollToBottom() { + if (this._listView) { + var scrollResponder = this._listView.getScrollResponder(); + + if (scrollResponder) { + var scrollY = Math.max(this._requests.length * LISTVIEW_CELL_HEIGHT + (this._listViewHighlighted ? 2 * SEPARATOR_THICKNESS : 0) - this._listViewHeight, 0); + scrollResponder.scrollResponderScrollTo({ + x: 0, + y: scrollY, + animated: true + }); + } + } + } + }, { + key: "_captureRequestListView", + value: function _captureRequestListView(listRef) { + this._listView = listRef; + } + }, { + key: "_listViewOnLayout", + value: function _listViewOnLayout(event) { + var height = event.nativeEvent.layout.height; + this._listViewHeight = height; + } + }, { + key: "_pressRow", + value: function _pressRow(rowID) { + this._listViewHighlighted = true; + this.setState({ + detailRowID: rowID + }, this._scrollToTop()); + } + }, { + key: "_scrollToTop", + value: function _scrollToTop() { + if (this._scrollView) { + this._scrollView.scrollTo({ + y: 0, + animated: false + }); + } + } + }, { + key: "_captureDetailScrollView", + value: function _captureDetailScrollView(scrollRef) { + this._scrollView = scrollRef; + } + }, { + key: "_closeButtonClicked", + value: function _closeButtonClicked() { + this.setState({ + detailRowID: null + }); + } + }, { + key: "_getStringByValue", + value: function _getStringByValue(value) { + if (value === undefined) { + return 'undefined'; + } + + if (typeof value === 'object') { + return JSON.stringify(value); + } + + if (typeof value === 'string' && value.length > 500) { + return String(value).substr(0, 500).concat('\n***TRUNCATED TO 500 CHARACTERS***'); + } + + return value; + } + }, { + key: "_getRequestIndexByXHRID", + value: function _getRequestIndexByXHRID(index) { + if (index === undefined) { + return -1; + } + + var xhrIndex = this._xhrIdMap[index]; + + if (xhrIndex === undefined) { + return -1; + } else { + return xhrIndex; + } + } + }, { + key: "_getTypeShortName", + value: function _getTypeShortName(type) { + if (type === 'XMLHttpRequest') { + return 'XHR'; + } else if (type === 'WebSocket') { + return 'WS'; + } + + return ''; + } + }, { + key: "_genDetailViewItem", + value: function _genDetailViewItem(index) { + this._detailViewItems[index] = []; + var detailViewItem = this._detailViewItems[index]; + var requestItem = this._requests[index]; + + for (var _key in requestItem) { + detailViewItem.push(React.createElement( + View, + { + style: styles.detailViewRow, + key: _key, + __source: { + fileName: _jsxFileName, + lineNumber: 442 + } + }, + React.createElement( + Text, + { + style: [styles.detailViewText, styles.detailKeyCellView], + __source: { + fileName: _jsxFileName, + lineNumber: 443 + } + }, + _key + ), + React.createElement( + Text, + { + style: [styles.detailViewText, styles.detailValueCellView], + __source: { + fileName: _jsxFileName, + lineNumber: 446 + } + }, + this._getStringByValue(requestItem[_key]) + ) + )); + } + + if (this.state.detailRowID != null && Number(this.state.detailRowID) === index) { + this.setState({ + newDetailInfo: true + }); + } + } + }, { + key: "render", + value: function render() { + return React.createElement( + View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 461 + } + }, + this.state.detailRowID != null && React.createElement( + TouchableHighlight, + { + style: styles.closeButton, + onPress: this._closeButtonClicked, + __source: { + fileName: _jsxFileName, + lineNumber: 463 + } + }, + React.createElement( + View, + { + __source: { + fileName: _jsxFileName, + lineNumber: 466 + } + }, + React.createElement( + Text, + { + style: styles.clostButtonText, + __source: { + fileName: _jsxFileName, + lineNumber: 467 + } + }, + "v" + ) + ) + ), + this.state.detailRowID != null && React.createElement( + ScrollView, + { + style: styles.detailScrollView, + ref: this._captureDetailScrollView, + __source: { + fileName: _jsxFileName, + lineNumber: 471 + } + }, + this._detailViewItems[this.state.detailRowID] + ), + React.createElement( + View, + { + style: styles.listViewTitle, + __source: { + fileName: _jsxFileName, + lineNumber: 476 + } + }, + this._requests.length > 0 && React.createElement( + View, + { + style: styles.tableRow, + __source: { + fileName: _jsxFileName, + lineNumber: 478 + } + }, + React.createElement( + View, + { + style: styles.urlTitleCellView, + __source: { + fileName: _jsxFileName, + lineNumber: 479 + } + }, + React.createElement( + Text, + { + style: styles.cellText, + numberOfLines: 1, + __source: { + fileName: _jsxFileName, + lineNumber: 480 + } + }, + "URL" + ) + ), + React.createElement( + View, + { + style: styles.methodTitleCellView, + __source: { + fileName: _jsxFileName, + lineNumber: 482 + } + }, + React.createElement( + Text, + { + style: styles.cellText, + numberOfLines: 1, + __source: { + fileName: _jsxFileName, + lineNumber: 483 + } + }, + "Type" + ) + ) + ) + ), + React.createElement(ListView, { + style: styles.listView, + ref: this._captureRequestListView, + dataSource: this.state.dataSource, + renderRow: this._renderRow, + enableEmptySections: true, + renderSeparator: this._renderSeperator, + onLayout: this._listViewOnLayout, + __source: { + fileName: _jsxFileName, + lineNumber: 487 + } + }) + ); + } + }]); + return NetworkOverlay; + }(React.Component); + + var styles = StyleSheet.create({ + container: { + paddingTop: 10, + paddingBottom: 10, + paddingLeft: 5, + paddingRight: 5 + }, + listViewTitle: { + height: 20 + }, + listView: { + flex: 1, + height: 60 + }, + tableRow: { + flexDirection: 'row', + flex: 1 + }, + cellText: { + color: 'white', + fontSize: 12 + }, + methodTitleCellView: { + height: 18, + borderColor: '#DCD7CD', + borderTopWidth: 1, + borderBottomWidth: 1, + borderRightWidth: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#444', + flex: 1 + }, + urlTitleCellView: { + height: 18, + borderColor: '#DCD7CD', + borderTopWidth: 1, + borderBottomWidth: 1, + borderLeftWidth: 1, + borderRightWidth: 1, + justifyContent: 'center', + backgroundColor: '#444', + flex: 5, + paddingLeft: 3 + }, + methodOddCellView: { + height: 15, + borderColor: '#DCD7CD', + borderRightWidth: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#000', + flex: 1 + }, + urlOddCellView: { + height: 15, + borderColor: '#DCD7CD', + borderLeftWidth: 1, + borderRightWidth: 1, + justifyContent: 'center', + backgroundColor: '#000', + flex: 5, + paddingLeft: 3 + }, + methodEvenCellView: { + height: 15, + borderColor: '#DCD7CD', + borderRightWidth: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#888', + flex: 1 + }, + urlEvenCellView: { + height: 15, + borderColor: '#DCD7CD', + borderLeftWidth: 1, + borderRightWidth: 1, + justifyContent: 'center', + backgroundColor: '#888', + flex: 5, + paddingLeft: 3 + }, + detailScrollView: { + flex: 1, + height: 180, + marginTop: 5, + marginBottom: 5 + }, + detailKeyCellView: { + flex: 1.3 + }, + detailValueCellView: { + flex: 2 + }, + detailViewRow: { + flexDirection: 'row', + paddingHorizontal: 3 + }, + detailViewText: { + color: 'white', + fontSize: 11 + }, + clostButtonText: { + color: 'white', + fontSize: 10 + }, + closeButton: { + marginTop: 5, + backgroundColor: '#888', + justifyContent: 'center', + alignItems: 'center' + } + }); + module.exports = NetworkOverlay; +},315,[282,171,265,209,222,312,211,316,317],"NetworkOverlay"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTWebSocketModule = require(_dependencyMap[0], 'NativeModules').WebSocketModule; + + var NativeEventEmitter = require(_dependencyMap[1], 'NativeEventEmitter'); + + var base64 = require(_dependencyMap[2], 'base64-js'); + + var originalRCTWebSocketConnect = RCTWebSocketModule.connect; + var originalRCTWebSocketSend = RCTWebSocketModule.send; + var originalRCTWebSocketSendBinary = RCTWebSocketModule.sendBinary; + var originalRCTWebSocketClose = RCTWebSocketModule.close; + var eventEmitter = void 0; + var subscriptions = void 0; + var closeCallback = void 0; + var sendCallback = void 0; + var connectCallback = void 0; + var onOpenCallback = void 0; + var onMessageCallback = void 0; + var onErrorCallback = void 0; + var onCloseCallback = void 0; + var _isInterceptorEnabled = false; + var WebSocketInterceptor = { + setCloseCallback: function setCloseCallback(callback) { + closeCallback = callback; + }, + setSendCallback: function setSendCallback(callback) { + sendCallback = callback; + }, + setConnectCallback: function setConnectCallback(callback) { + connectCallback = callback; + }, + setOnOpenCallback: function setOnOpenCallback(callback) { + onOpenCallback = callback; + }, + setOnMessageCallback: function setOnMessageCallback(callback) { + onMessageCallback = callback; + }, + setOnErrorCallback: function setOnErrorCallback(callback) { + onErrorCallback = callback; + }, + setOnCloseCallback: function setOnCloseCallback(callback) { + onCloseCallback = callback; + }, + isInterceptorEnabled: function isInterceptorEnabled() { + return _isInterceptorEnabled; + }, + _unregisterEvents: function _unregisterEvents() { + subscriptions.forEach(function (e) { + return e.remove(); + }); + subscriptions = []; + }, + _registerEvents: function _registerEvents() { + subscriptions = [eventEmitter.addListener('websocketMessage', function (ev) { + if (onMessageCallback) { + onMessageCallback(ev.id, ev.type === 'binary' ? WebSocketInterceptor._arrayBufferToString(ev.data) : ev.data); + } + }), eventEmitter.addListener('websocketOpen', function (ev) { + if (onOpenCallback) { + onOpenCallback(ev.id); + } + }), eventEmitter.addListener('websocketClosed', function (ev) { + if (onCloseCallback) { + onCloseCallback(ev.id, { + code: ev.code, + reason: ev.reason + }); + } + }), eventEmitter.addListener('websocketFailed', function (ev) { + if (onErrorCallback) { + onErrorCallback(ev.id, { + message: ev.message + }); + } + })]; + }, + enableInterception: function enableInterception() { + if (_isInterceptorEnabled) { + return; + } + + eventEmitter = new NativeEventEmitter(RCTWebSocketModule); + + WebSocketInterceptor._registerEvents(); + + RCTWebSocketModule.connect = function (url, protocols, options, socketId) { + if (connectCallback) { + connectCallback(url, protocols, options, socketId); + } + + originalRCTWebSocketConnect.apply(this, arguments); + }; + + RCTWebSocketModule.send = function (data, socketId) { + if (sendCallback) { + sendCallback(data, socketId); + } + + originalRCTWebSocketSend.apply(this, arguments); + }; + + RCTWebSocketModule.sendBinary = function (data, socketId) { + if (sendCallback) { + sendCallback(WebSocketInterceptor._arrayBufferToString(data), socketId); + } + + originalRCTWebSocketSendBinary.apply(this, arguments); + }; + + RCTWebSocketModule.close = function () { + if (closeCallback) { + if (arguments.length === 3) { + closeCallback(arguments[0], arguments[1], arguments[2]); + } else { + closeCallback(null, null, arguments[0]); + } + } + + originalRCTWebSocketClose.apply(this, arguments); + }; + + _isInterceptorEnabled = true; + }, + _arrayBufferToString: function _arrayBufferToString(data) { + var value = base64.toByteArray(data).buffer; + + if (value === undefined || value === null) { + return '(no value)'; + } + + if (typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && value instanceof ArrayBuffer) { + return "ArrayBuffer {" + String(Array.from(new Uint8Array(value))) + "}"; + } + + return value; + }, + disableInterception: function disableInterception() { + if (!_isInterceptorEnabled) { + return; + } + + _isInterceptorEnabled = false; + RCTWebSocketModule.send = originalRCTWebSocketSend; + RCTWebSocketModule.sendBinary = originalRCTWebSocketSendBinary; + RCTWebSocketModule.close = originalRCTWebSocketClose; + RCTWebSocketModule.connect = originalRCTWebSocketConnect; + connectCallback = null; + closeCallback = null; + sendCallback = null; + onOpenCallback = null; + onMessageCallback = null; + onCloseCallback = null; + onErrorCallback = null; + + WebSocketInterceptor._unregisterEvents(); + } + }; + module.exports = WebSocketInterceptor; +},316,[68,120,124],"WebSocketInterceptor"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var XMLHttpRequest = require(_dependencyMap[0], 'XMLHttpRequest'); + + var originalXHROpen = XMLHttpRequest.prototype.open; + var originalXHRSend = XMLHttpRequest.prototype.send; + var originalXHRSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader; + var openCallback; + var sendCallback; + var requestHeaderCallback; + var headerReceivedCallback; + var responseCallback; + var _isInterceptorEnabled = false; + var XHRInterceptor = { + setOpenCallback: function setOpenCallback(callback) { + openCallback = callback; + }, + setSendCallback: function setSendCallback(callback) { + sendCallback = callback; + }, + setHeaderReceivedCallback: function setHeaderReceivedCallback(callback) { + headerReceivedCallback = callback; + }, + setResponseCallback: function setResponseCallback(callback) { + responseCallback = callback; + }, + setRequestHeaderCallback: function setRequestHeaderCallback(callback) { + requestHeaderCallback = callback; + }, + isInterceptorEnabled: function isInterceptorEnabled() { + return _isInterceptorEnabled; + }, + enableInterception: function enableInterception() { + if (_isInterceptorEnabled) { + return; + } + + XMLHttpRequest.prototype.open = function (method, url) { + if (openCallback) { + openCallback(method, url, this); + } + + originalXHROpen.apply(this, arguments); + }; + + XMLHttpRequest.prototype.setRequestHeader = function (header, value) { + if (requestHeaderCallback) { + requestHeaderCallback(header, value, this); + } + + originalXHRSetRequestHeader.apply(this, arguments); + }; + + XMLHttpRequest.prototype.send = function (data) { + var _this = this; + + if (sendCallback) { + sendCallback(data, this); + } + + if (this.addEventListener) { + this.addEventListener('readystatechange', function () { + if (!_isInterceptorEnabled) { + return; + } + + if (_this.readyState === _this.HEADERS_RECEIVED) { + var contentTypeString = _this.getResponseHeader('Content-Type'); + + var contentLengthString = _this.getResponseHeader('Content-Length'); + + var responseContentType = void 0, + responseSize = void 0; + + if (contentTypeString) { + responseContentType = contentTypeString.split(';')[0]; + } + + if (contentLengthString) { + responseSize = parseInt(contentLengthString, 10); + } + + if (headerReceivedCallback) { + headerReceivedCallback(responseContentType, responseSize, _this.getAllResponseHeaders(), _this); + } + } + + if (_this.readyState === _this.DONE) { + if (responseCallback) { + responseCallback(_this.status, _this.timeout, _this.response, _this.responseURL, _this.responseType, _this); + } + } + }, false); + } + + originalXHRSend.apply(this, arguments); + }; + + _isInterceptorEnabled = true; + }, + disableInterception: function disableInterception() { + if (!_isInterceptorEnabled) { + return; + } + + _isInterceptorEnabled = false; + XMLHttpRequest.prototype.send = originalXHRSend; + XMLHttpRequest.prototype.open = originalXHROpen; + XMLHttpRequest.prototype.setRequestHeader = originalXHRSetRequestHeader; + responseCallback = null; + openCallback = null; + sendCallback = null; + headerReceivedCallback = null; + requestHeaderCallback = null; + } + }; + module.exports = XHRInterceptor; +},317,[109],"XHRInterceptor"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Inspector/PerformanceOverlay.js"; + + var PerformanceLogger = require(_dependencyMap[0], 'PerformanceLogger'); + + var React = require(_dependencyMap[1], 'React'); + + var StyleSheet = require(_dependencyMap[2], 'StyleSheet'); + + var Text = require(_dependencyMap[3], 'Text'); + + var View = require(_dependencyMap[4], 'View'); + + var PerformanceOverlay = function (_React$Component) { + babelHelpers.inherits(PerformanceOverlay, _React$Component); + + function PerformanceOverlay() { + babelHelpers.classCallCheck(this, PerformanceOverlay); + return babelHelpers.possibleConstructorReturn(this, (PerformanceOverlay.__proto__ || Object.getPrototypeOf(PerformanceOverlay)).apply(this, arguments)); + } + + babelHelpers.createClass(PerformanceOverlay, [{ + key: "render", + value: function render() { + var perfLogs = PerformanceLogger.getTimespans(); + var items = []; + + for (var key in perfLogs) { + if (perfLogs[key].totalTime) { + var unit = key === 'BundleSize' ? 'b' : 'ms'; + items.push(React.createElement( + View, + { + style: styles.row, + key: key, + __source: { + fileName: _jsxFileName, + lineNumber: 29 + } + }, + React.createElement( + Text, + { + style: [styles.text, styles.label], + __source: { + fileName: _jsxFileName, + lineNumber: 30 + } + }, + key + ), + React.createElement( + Text, + { + style: [styles.text, styles.totalTime], + __source: { + fileName: _jsxFileName, + lineNumber: 31 + } + }, + perfLogs[key].totalTime + unit + ) + )); + } + } + + return React.createElement( + View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 40 + } + }, + items + ); + } + }]); + return PerformanceOverlay; + }(React.Component); + + var styles = StyleSheet.create({ + container: { + height: 100, + paddingTop: 10 + }, + label: { + flex: 1 + }, + row: { + flexDirection: 'row', + paddingHorizontal: 10 + }, + text: { + color: 'white', + fontSize: 12 + }, + totalTime: { + paddingRight: 100 + } + }); + module.exports = PerformanceOverlay; +},318,[144,171,209,222,211],"PerformanceOverlay"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/ReactNative/YellowBox.js"; + + var EventEmitter = require(_dependencyMap[0], 'EventEmitter'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var React = require(_dependencyMap[2], 'React'); + + var SafeAreaView = require(_dependencyMap[3], 'SafeAreaView'); + + var StyleSheet = require(_dependencyMap[4], 'StyleSheet'); + + var RCTLog = require(_dependencyMap[5], 'RCTLog'); + + var infoLog = require(_dependencyMap[6], 'infoLog'); + + var openFileInEditor = require(_dependencyMap[7], 'openFileInEditor'); + + var parseErrorStack = require(_dependencyMap[8], 'parseErrorStack'); + + var stringifySafe = require(_dependencyMap[9], 'stringifySafe'); + + var symbolicateStackTrace = require(_dependencyMap[10], 'symbolicateStackTrace'); + + var _warningEmitter = new EventEmitter(); + + var _warningMap = new Map(); + + var IGNORED_WARNINGS = []; + + if (__DEV__) { + var _console = console, + error = _console.error, + warn = _console.warn; + + console.error = function () { + error.apply(console, arguments); + + if (typeof arguments[0] === 'string' && arguments[0].startsWith('Warning: ')) { + updateWarningMap.apply(null, arguments); + } + }; + + console.warn = function () { + warn.apply(console, arguments); + updateWarningMap.apply(null, arguments); + }; + + if (Platform.isTesting) { + console.disableYellowBox = true; + } + + RCTLog.setWarningHandler(function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + updateWarningMap.apply(null, args); + }); + } + + function sprintf(format) { + for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + var index = 0; + return format.replace(/%s/g, function (match) { + return args[index++]; + }); + } + + function updateWarningMap() { + if (console.disableYellowBox) { + return; + } + + var warning = void 0; + + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + if (typeof args[0] === 'string') { + var format = args[0], + formatArgs = args.slice(1); + var argCount = (format.match(/%s/g) || []).length; + warning = [sprintf.apply(undefined, [format].concat(babelHelpers.toConsumableArray(formatArgs.slice(0, argCount).map(stringifySafe))))].concat(babelHelpers.toConsumableArray(formatArgs.slice(argCount).map(stringifySafe))).join(' '); + } else { + warning = args.map(stringifySafe).join(' '); + } + + if (warning.startsWith('(ADVICE)')) { + return; + } + + var warningInfo = _warningMap.get(warning); + + if (warningInfo) { + warningInfo.count += 1; + } else { + var _error = new Error(); + + _error.framesToPop = 2; + + _warningMap.set(warning, { + count: 1, + stacktrace: parseErrorStack(_error), + symbolicated: false + }); + } + + _warningEmitter.emit('warning', _warningMap); + } + + function ensureSymbolicatedWarning(warning) { + var prevWarningInfo = _warningMap.get(warning); + + if (!prevWarningInfo || prevWarningInfo.symbolicated) { + return; + } + + prevWarningInfo.symbolicated = true; + symbolicateStackTrace(prevWarningInfo.stacktrace).then(function (stack) { + var nextWarningInfo = _warningMap.get(warning); + + if (nextWarningInfo) { + nextWarningInfo.stacktrace = stack; + + _warningEmitter.emit('warning', _warningMap); + } + }, function (error) { + var nextWarningInfo = _warningMap.get(warning); + + if (nextWarningInfo) { + infoLog('Failed to symbolicate warning, "%s":', warning, error); + + _warningEmitter.emit('warning', _warningMap); + } + }); + } + + function isWarningIgnored(warning) { + var isIgnored = IGNORED_WARNINGS.some(function (ignoredWarning) { + return warning.startsWith(ignoredWarning); + }); + + if (isIgnored) { + return true; + } + + return Array.isArray(console.ignoredYellowBox) && console.ignoredYellowBox.some(function (ignorePrefix) { + return warning.startsWith(String(ignorePrefix)); + }); + } + + var WarningRow = function WarningRow(_ref) { + var count = _ref.count, + warning = _ref.warning, + onPress = _ref.onPress; + + var Text = require(_dependencyMap[11], 'Text'); + + var TouchableHighlight = require(_dependencyMap[12], 'TouchableHighlight'); + + var View = require(_dependencyMap[13], 'View'); + + var countText = count > 1 ? React.createElement( + Text, + { + style: styles.listRowCount, + __source: { + fileName: _jsxFileName, + lineNumber: 197 + } + }, + '(' + count + ') ' + ) : null; + return React.createElement( + View, + { + style: styles.listRow, + __source: { + fileName: _jsxFileName, + lineNumber: 201 + } + }, + React.createElement( + TouchableHighlight, + { + activeOpacity: 0.5, + onPress: onPress, + style: styles.listRowContent, + underlayColor: "transparent", + __source: { + fileName: _jsxFileName, + lineNumber: 202 + } + }, + React.createElement( + Text, + { + style: styles.listRowText, + numberOfLines: 2, + __source: { + fileName: _jsxFileName, + lineNumber: 207 + } + }, + countText, + warning + ) + ) + ); + }; + + var StackRow = function StackRow(_ref2) { + var frame = _ref2.frame; + + var Text = require(_dependencyMap[11], 'Text'); + + var TouchableHighlight = require(_dependencyMap[12], 'TouchableHighlight'); + + var file = frame.file, + lineNumber = frame.lineNumber; + var fileName = void 0; + + if (file) { + var fileParts = file.split('/'); + fileName = fileParts[fileParts.length - 1]; + } else { + fileName = ''; + } + + return React.createElement( + TouchableHighlight, + { + activeOpacity: 0.5, + style: styles.openInEditorButton, + underlayColor: "transparent", + onPress: openFileInEditor.bind(null, file, lineNumber), + __source: { + fileName: _jsxFileName, + lineNumber: 230 + } + }, + React.createElement( + Text, + { + style: styles.inspectorCountText, + __source: { + fileName: _jsxFileName, + lineNumber: 235 + } + }, + fileName, + ":", + lineNumber + ) + ); + }; + + var WarningInspector = function WarningInspector(_ref3) { + var warningInfo = _ref3.warningInfo, + warning = _ref3.warning, + stacktraceVisible = _ref3.stacktraceVisible, + onDismiss = _ref3.onDismiss, + onDismissAll = _ref3.onDismissAll, + onMinimize = _ref3.onMinimize, + toggleStacktrace = _ref3.toggleStacktrace; + + var ScrollView = require(_dependencyMap[14], 'ScrollView'); + + var Text = require(_dependencyMap[11], 'Text'); + + var TouchableHighlight = require(_dependencyMap[12], 'TouchableHighlight'); + + var View = require(_dependencyMap[13], 'View'); + + var _ref4 = warningInfo || {}, + count = _ref4.count, + stacktrace = _ref4.stacktrace; + + var countSentence = 'Warning encountered ' + count + ' time' + (count - 1 ? 's' : '') + '.'; + var stacktraceList = void 0; + + if (stacktraceVisible && stacktrace) { + stacktraceList = React.createElement( + View, + { + style: styles.stacktraceList, + __source: { + fileName: _jsxFileName, + lineNumber: 263 + } + }, + stacktrace.map(function (frame, ii) { + return React.createElement(StackRow, { + frame: frame, + key: ii, + __source: { + fileName: _jsxFileName, + lineNumber: 264 + } + }); + }) + ); + } + + return React.createElement( + View, + { + style: styles.inspector, + __source: { + fileName: _jsxFileName, + lineNumber: 270 + } + }, + React.createElement( + SafeAreaView, + { + style: styles.safeArea, + __source: { + fileName: _jsxFileName, + lineNumber: 271 + } + }, + React.createElement( + View, + { + style: styles.inspectorCount, + __source: { + fileName: _jsxFileName, + lineNumber: 272 + } + }, + React.createElement( + Text, + { + style: styles.inspectorCountText, + __source: { + fileName: _jsxFileName, + lineNumber: 273 + } + }, + countSentence + ), + React.createElement( + TouchableHighlight, + { + onPress: toggleStacktrace, + underlayColor: "transparent", + __source: { + fileName: _jsxFileName, + lineNumber: 274 + } + }, + React.createElement( + Text, + { + style: styles.inspectorButtonText, + __source: { + fileName: _jsxFileName, + lineNumber: 277 + } + }, + stacktraceVisible ? "\u25BC" : "\u25B6", + " Stacktrace" + ) + ) + ), + React.createElement( + ScrollView, + { + style: styles.inspectorWarning, + __source: { + fileName: _jsxFileName, + lineNumber: 282 + } + }, + stacktraceList, + React.createElement( + Text, + { + style: styles.inspectorWarningText, + __source: { + fileName: _jsxFileName, + lineNumber: 284 + } + }, + warning + ) + ), + React.createElement( + View, + { + style: styles.inspectorButtons, + __source: { + fileName: _jsxFileName, + lineNumber: 286 + } + }, + React.createElement( + TouchableHighlight, + { + activeOpacity: 0.5, + onPress: onMinimize, + style: styles.inspectorButton, + underlayColor: "transparent", + __source: { + fileName: _jsxFileName, + lineNumber: 287 + } + }, + React.createElement( + Text, + { + style: styles.inspectorButtonText, + __source: { + fileName: _jsxFileName, + lineNumber: 292 + } + }, + "Minimize" + ) + ), + React.createElement( + TouchableHighlight, + { + activeOpacity: 0.5, + onPress: onDismiss, + style: styles.inspectorButton, + underlayColor: "transparent", + __source: { + fileName: _jsxFileName, + lineNumber: 294 + } + }, + React.createElement( + Text, + { + style: styles.inspectorButtonText, + __source: { + fileName: _jsxFileName, + lineNumber: 299 + } + }, + "Dismiss" + ) + ), + React.createElement( + TouchableHighlight, + { + activeOpacity: 0.5, + onPress: onDismissAll, + style: styles.inspectorButton, + underlayColor: "transparent", + __source: { + fileName: _jsxFileName, + lineNumber: 301 + } + }, + React.createElement( + Text, + { + style: styles.inspectorButtonText, + __source: { + fileName: _jsxFileName, + lineNumber: 306 + } + }, + "Dismiss All" + ) + ) + ) + ) + ); + }; + + var YellowBox = function (_React$Component) { + babelHelpers.inherits(YellowBox, _React$Component); + + function YellowBox(props, context) { + babelHelpers.classCallCheck(this, YellowBox); + + var _this = babelHelpers.possibleConstructorReturn(this, (YellowBox.__proto__ || Object.getPrototypeOf(YellowBox)).call(this, props, context)); + + _this.state = { + inspecting: null, + stacktraceVisible: false, + warningMap: _warningMap + }; + + _this.dismissWarning = function (warning) { + var _this$state = _this.state, + inspecting = _this$state.inspecting, + warningMap = _this$state.warningMap; + + if (warning) { + warningMap.delete(warning); + } else { + warningMap.clear(); + } + + _this.setState({ + inspecting: warning && inspecting !== warning ? inspecting : null, + warningMap: warningMap + }); + }; + + return _this; + } + + babelHelpers.createClass(YellowBox, [{ + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + var scheduled = null; + this._listener = _warningEmitter.addListener('warning', function (warningMap) { + scheduled = scheduled || setImmediate(function () { + scheduled = null; + + _this2.setState({ + warningMap: warningMap + }); + }); + }); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + var inspecting = this.state.inspecting; + + if (inspecting != null) { + ensureSymbolicatedWarning(inspecting); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + if (this._listener) { + this._listener.remove(); + } + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + if (console.disableYellowBox || this.state.warningMap.size === 0) { + return null; + } + + var ScrollView = require(_dependencyMap[14], 'ScrollView'); + + var View = require(_dependencyMap[13], 'View'); + + var _state = this.state, + inspecting = _state.inspecting, + stacktraceVisible = _state.stacktraceVisible; + var inspector = inspecting !== null ? React.createElement(WarningInspector, { + warningInfo: this.state.warningMap.get(inspecting), + warning: inspecting, + stacktraceVisible: stacktraceVisible, + onDismiss: function onDismiss() { + return _this3.dismissWarning(inspecting); + }, + onDismissAll: function onDismissAll() { + return _this3.dismissWarning(null); + }, + onMinimize: function onMinimize() { + return _this3.setState({ + inspecting: null + }); + }, + toggleStacktrace: function toggleStacktrace() { + return _this3.setState({ + stacktraceVisible: !stacktraceVisible + }); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 393 + } + }) : null; + var rows = []; + this.state.warningMap.forEach(function (warningInfo, warning) { + if (!isWarningIgnored(warning)) { + rows.push(React.createElement(WarningRow, { + key: warning, + count: warningInfo.count, + warning: warning, + onPress: function onPress() { + return _this3.setState({ + inspecting: warning + }); + }, + onDismiss: function onDismiss() { + return _this3.dismissWarning(warning); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 409 + } + })); + } + }); + var listStyle = [styles.list, { + height: Math.min(rows.length, 4.4) * (rowGutter + rowHeight) + }]; + return React.createElement( + View, + { + style: inspector ? styles.fullScreen : listStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 426 + } + }, + React.createElement( + ScrollView, + { + style: listStyle, + scrollsToTop: false, + __source: { + fileName: _jsxFileName, + lineNumber: 427 + } + }, + rows + ), + inspector + ); + } + }], [{ + key: "ignoreWarnings", + value: function ignoreWarnings(warnings) { + warnings.forEach(function (warning) { + if (IGNORED_WARNINGS.indexOf(warning) === -1) { + IGNORED_WARNINGS.push(warning); + } + }); + } + }]); + return YellowBox; + }(React.Component); + + var backgroundColor = function backgroundColor(opacity) { + return 'rgba(250, 186, 48, ' + opacity + ')'; + }; + + var textColor = 'white'; + var rowGutter = 1; + var rowHeight = 46; + var elevation = Platform.OS === 'android' ? Number.MAX_SAFE_INTEGER : undefined; + var styles = StyleSheet.create({ + fullScreen: { + height: '100%', + width: '100%', + elevation: elevation, + position: 'absolute' + }, + inspector: { + backgroundColor: backgroundColor(0.95), + height: '100%', + paddingTop: 5, + elevation: elevation + }, + inspectorButtons: { + flexDirection: 'row' + }, + inspectorButton: { + flex: 1, + paddingVertical: 22, + backgroundColor: backgroundColor(1) + }, + safeArea: { + flex: 1 + }, + stacktraceList: { + paddingBottom: 5 + }, + inspectorButtonText: { + color: textColor, + fontSize: 14, + opacity: 0.8, + textAlign: 'center' + }, + openInEditorButton: { + paddingTop: 5, + paddingBottom: 5 + }, + inspectorCount: { + padding: 15, + paddingBottom: 0, + flexDirection: 'row', + justifyContent: 'space-between' + }, + inspectorCountText: { + color: textColor, + fontSize: 14 + }, + inspectorWarning: { + flex: 1, + paddingHorizontal: 15 + }, + inspectorWarningText: { + color: textColor, + fontSize: 16, + fontWeight: '600' + }, + list: { + backgroundColor: 'transparent', + position: 'absolute', + left: 0, + right: 0, + bottom: 0, + elevation: elevation + }, + listRow: { + backgroundColor: backgroundColor(0.95), + height: rowHeight, + marginTop: rowGutter + }, + listRowContent: { + flex: 1 + }, + listRowCount: { + color: 'rgba(255, 255, 255, 0.5)' + }, + listRowText: { + color: textColor, + position: 'absolute', + left: 0, + top: Platform.OS === 'android' ? 5 : 7, + marginLeft: 15, + marginRight: 15 + } + }); + module.exports = YellowBox; +},319,[118,105,171,320,209,142,145,314,85,92,88,222,312,211,265],"YellowBox"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + module.exports = require(_dependencyMap[0], 'View'); +},320,[211],"SafeAreaView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var I18nManager = require(_dependencyMap[0], 'NativeModules').I18nManager || { + isRTL: false, + doLeftAndRightSwapInRTL: true, + allowRTL: function allowRTL() {}, + forceRTL: function forceRTL() {}, + swapLeftAndRightInRTL: function swapLeftAndRightInRTL() {} + }; + module.exports = I18nManager; +},321,[68],"I18nManager"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + module.exports = require(_dependencyMap[0], 'UnimplementedView'); +},322,[300],"NavigatorIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Picker/Picker.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var PickerIOS = require(_dependencyMap[1], 'PickerIOS'); + + var PickerAndroid = require(_dependencyMap[2], 'PickerAndroid'); + + var Platform = require(_dependencyMap[3], 'Platform'); + + var React = require(_dependencyMap[4], 'React'); + + var PropTypes = require(_dependencyMap[5], 'prop-types'); + + var StyleSheetPropType = require(_dependencyMap[6], 'StyleSheetPropType'); + + var TextStylePropTypes = require(_dependencyMap[7], 'TextStylePropTypes'); + + var UnimplementedView = require(_dependencyMap[8], 'UnimplementedView'); + + var ViewPropTypes = require(_dependencyMap[9], 'ViewPropTypes'); + + var ViewStylePropTypes = require(_dependencyMap[10], 'ViewStylePropTypes'); + + var itemStylePropType = StyleSheetPropType(TextStylePropTypes); + var pickerStyleType = StyleSheetPropType(babelHelpers.extends({}, ViewStylePropTypes, { + color: ColorPropType + })); + var MODE_DIALOG = 'dialog'; + var MODE_DROPDOWN = 'dropdown'; + + var PickerItem = function (_React$Component) { + babelHelpers.inherits(PickerItem, _React$Component); + + function PickerItem() { + babelHelpers.classCallCheck(this, PickerItem); + return babelHelpers.possibleConstructorReturn(this, (PickerItem.__proto__ || Object.getPrototypeOf(PickerItem)).apply(this, arguments)); + } + + babelHelpers.createClass(PickerItem, [{ + key: "render", + value: function render() { + throw null; + } + }]); + return PickerItem; + }(React.Component); + + PickerItem.propTypes = { + label: PropTypes.string.isRequired, + value: PropTypes.any, + color: ColorPropType, + testID: PropTypes.string + }; + + var Picker = function (_React$Component2) { + babelHelpers.inherits(Picker, _React$Component2); + + function Picker() { + babelHelpers.classCallCheck(this, Picker); + return babelHelpers.possibleConstructorReturn(this, (Picker.__proto__ || Object.getPrototypeOf(Picker)).apply(this, arguments)); + } + + babelHelpers.createClass(Picker, [{ + key: "render", + value: function render() { + if (Platform.OS === 'ios') { + return React.createElement( + PickerIOS, + babelHelpers.extends({}, this.props, { + __source: { + fileName: _jsxFileName, + lineNumber: 157 + } + }), + this.props.children + ); + } else if (Platform.OS === 'android') { + return React.createElement( + PickerAndroid, + babelHelpers.extends({}, this.props, { + __source: { + fileName: _jsxFileName, + lineNumber: 160 + } + }), + this.props.children + ); + } else { + return React.createElement(UnimplementedView, { + __source: { + fileName: _jsxFileName, + lineNumber: 162 + } + }); + } + } + }]); + return Picker; + }(React.Component); + + Picker.MODE_DIALOG = MODE_DIALOG; + Picker.MODE_DROPDOWN = MODE_DROPDOWN; + Picker.Item = PickerItem; + Picker.defaultProps = { + mode: MODE_DIALOG + }; + Picker.propTypes = babelHelpers.extends({}, ViewPropTypes, { + style: pickerStyleType, + selectedValue: PropTypes.any, + onValueChange: PropTypes.func, + enabled: PropTypes.bool, + mode: PropTypes.oneOf(['dialog', 'dropdown']), + itemStyle: itemStylePropType, + prompt: PropTypes.string, + testID: PropTypes.string + }); + module.exports = Picker; +},323,[167,324,325,105,171,24,179,192,300,172,180],"Picker"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + module.exports = require(_dependencyMap[0], 'UnimplementedView'); +},324,[300],"PickerIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Picker/PickerAndroid.android.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var React = require(_dependencyMap[1], 'React'); + + var ReactPropTypes = require(_dependencyMap[2], 'prop-types'); + + var StyleSheet = require(_dependencyMap[3], 'StyleSheet'); + + var StyleSheetPropType = require(_dependencyMap[4], 'StyleSheetPropType'); + + var ViewPropTypes = require(_dependencyMap[5], 'ViewPropTypes'); + + var ViewStylePropTypes = require(_dependencyMap[6], 'ViewStylePropTypes'); + + var processColor = require(_dependencyMap[7], 'processColor'); + + var requireNativeComponent = require(_dependencyMap[8], 'requireNativeComponent'); + + var REF_PICKER = 'picker'; + var MODE_DROPDOWN = 'dropdown'; + var pickerStyleType = StyleSheetPropType(babelHelpers.extends({}, ViewStylePropTypes, { + color: ColorPropType + })); + + var PickerAndroid = function (_React$Component) { + babelHelpers.inherits(PickerAndroid, _React$Component); + + function PickerAndroid(props, context) { + babelHelpers.classCallCheck(this, PickerAndroid); + + var _this = babelHelpers.possibleConstructorReturn(this, (PickerAndroid.__proto__ || Object.getPrototypeOf(PickerAndroid)).call(this, props, context)); + + _initialiseProps.call(_this); + + var state = _this._stateFromProps(props); + + _this.state = babelHelpers.extends({}, state, { + initialSelectedIndex: state.selectedIndex + }); + return _this; + } + + babelHelpers.createClass(PickerAndroid, [{ + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this.setState(this._stateFromProps(nextProps)); + } + }, { + key: "render", + value: function render() { + var Picker = this.props.mode === MODE_DROPDOWN ? DropdownPicker : DialogPicker; + var nativeProps = { + enabled: this.props.enabled, + items: this.state.items, + mode: this.props.mode, + onSelect: this._onChange, + prompt: this.props.prompt, + selected: this.state.initialSelectedIndex, + testID: this.props.testID, + style: [styles.pickerAndroid, this.props.style], + accessibilityLabel: this.props.accessibilityLabel + }; + return React.createElement(Picker, babelHelpers.extends({ + ref: REF_PICKER + }, nativeProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 107 + } + })); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this._lastNativePosition = this.state.initialSelectedIndex; + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + if (this.refs[REF_PICKER] && this.state.selectedIndex !== this._lastNativePosition) { + this.refs[REF_PICKER].setNativeProps({ + selected: this.state.selectedIndex + }); + this._lastNativePosition = this.state.selectedIndex; + } + } + }]); + return PickerAndroid; + }(React.Component); + + PickerAndroid.propTypes = babelHelpers.extends({}, ViewPropTypes, { + style: pickerStyleType, + selectedValue: ReactPropTypes.any, + enabled: ReactPropTypes.bool, + mode: ReactPropTypes.oneOf(['dialog', 'dropdown']), + onValueChange: ReactPropTypes.func, + prompt: ReactPropTypes.string, + testID: ReactPropTypes.string + }); + + var _initialiseProps = function _initialiseProps() { + var _this2 = this; + + this._stateFromProps = function (props) { + var selectedIndex = 0; + var items = React.Children.map(props.children, function (child, index) { + if (child.props.value === props.selectedValue) { + selectedIndex = index; + } + + var childProps = { + value: child.props.value, + label: child.props.label + }; + + if (child.props.color) { + childProps.color = processColor(child.props.color); + } + + return childProps; + }); + return { + selectedIndex: selectedIndex, + items: items + }; + }; + + this._onChange = function (event) { + if (_this2.props.onValueChange) { + var position = event.nativeEvent.position; + + if (position >= 0) { + var children = React.Children.toArray(_this2.props.children); + var value = children[position].props.value; + + _this2.props.onValueChange(value, position); + } else { + _this2.props.onValueChange(null, position); + } + } + + _this2._lastNativePosition = event.nativeEvent.position; + + _this2.forceUpdate(); + }; + }; + + var styles = StyleSheet.create({ + pickerAndroid: { + height: 50 + } + }); + var cfg = { + nativeOnly: { + items: true, + selected: true + } + }; + var DropdownPicker = requireNativeComponent('AndroidDropdownPicker', PickerAndroid, cfg); + var DialogPicker = requireNativeComponent('AndroidDialogPicker', PickerAndroid, cfg); + module.exports = PickerAndroid; +},325,[167,171,24,209,179,172,180,193,186],"PickerAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js"; + + var React = require(_dependencyMap[0], 'React'); + + var StyleSheet = require(_dependencyMap[1], 'StyleSheet'); + + var Text = require(_dependencyMap[2], 'Text'); + + var View = require(_dependencyMap[3], 'View'); + + var DummyProgressViewIOS = function (_React$Component) { + babelHelpers.inherits(DummyProgressViewIOS, _React$Component); + + function DummyProgressViewIOS() { + babelHelpers.classCallCheck(this, DummyProgressViewIOS); + return babelHelpers.possibleConstructorReturn(this, (DummyProgressViewIOS.__proto__ || Object.getPrototypeOf(DummyProgressViewIOS)).apply(this, arguments)); + } + + babelHelpers.createClass(DummyProgressViewIOS, [{ + key: "render", + value: function render() { + return React.createElement( + View, + { + style: [styles.dummy, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 23 + } + }, + React.createElement( + Text, + { + style: styles.text, + __source: { + fileName: _jsxFileName, + lineNumber: 24 + } + }, + "ProgressViewIOS is not supported on this platform!" + ) + ); + } + }]); + return DummyProgressViewIOS; + }(React.Component); + + var styles = StyleSheet.create({ + dummy: { + width: 120, + height: 20, + backgroundColor: '#ffbcbc', + borderWidth: 1, + borderColor: 'red', + alignItems: 'center', + justifyContent: 'center' + }, + text: { + color: '#333333', + margin: 5, + fontSize: 10 + } + }); + module.exports = DummyProgressViewIOS; +},326,[171,209,222,211],"ProgressViewIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Lists/SectionList.js"; + + var MetroListView = require(_dependencyMap[0], 'MetroListView'); + + var Platform = require(_dependencyMap[1], 'Platform'); + + var React = require(_dependencyMap[2], 'React'); + + var ScrollView = require(_dependencyMap[3], 'ScrollView'); + + var VirtualizedSectionList = require(_dependencyMap[4], 'VirtualizedSectionList'); + + var defaultProps = babelHelpers.extends({}, VirtualizedSectionList.defaultProps, { + stickySectionHeadersEnabled: Platform.OS === 'ios' + }); + + var SectionList = function (_React$PureComponent) { + babelHelpers.inherits(SectionList, _React$PureComponent); + + function SectionList() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, SectionList); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = SectionList.__proto__ || Object.getPrototypeOf(SectionList)).call.apply(_ref, [this].concat(args))), _this), _this._captureRef = function (ref) { + _this._wrapperListRef = ref; + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(SectionList, [{ + key: "scrollToLocation", + value: function scrollToLocation(params) { + this._wrapperListRef.scrollToLocation(params); + } + }, { + key: "recordInteraction", + value: function recordInteraction() { + var listRef = this._wrapperListRef && this._wrapperListRef.getListRef(); + + listRef && listRef.recordInteraction(); + } + }, { + key: "flashScrollIndicators", + value: function flashScrollIndicators() { + var listRef = this._wrapperListRef && this._wrapperListRef.getListRef(); + + listRef && listRef.flashScrollIndicators(); + } + }, { + key: "getScrollResponder", + value: function getScrollResponder() { + var listRef = this._wrapperListRef && this._wrapperListRef.getListRef(); + + if (listRef) { + return listRef.getScrollResponder(); + } + } + }, { + key: "getScrollableNode", + value: function getScrollableNode() { + var listRef = this._wrapperListRef && this._wrapperListRef.getListRef(); + + if (listRef) { + return listRef.getScrollableNode(); + } + } + }, { + key: "setNativeProps", + value: function setNativeProps(props) { + var listRef = this._wrapperListRef && this._wrapperListRef.getListRef(); + + if (listRef) { + listRef.setNativeProps(props); + } + } + }, { + key: "render", + value: function render() { + var List = this.props.legacyImplementation ? MetroListView : VirtualizedSectionList; + return React.createElement(List, babelHelpers.extends({}, this.props, { + ref: this._captureRef, + __source: { + fileName: _jsxFileName, + lineNumber: 331 + } + })); + } + }]); + return SectionList; + }(React.PureComponent); + + SectionList.defaultProps = defaultProps; + module.exports = SectionList; +},327,[281,105,171,265,328],"SectionList"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Lists/VirtualizedSectionList.js"; + + var React = require(_dependencyMap[0], 'React'); + + var View = require(_dependencyMap[1], 'View'); + + var VirtualizedList = require(_dependencyMap[2], 'VirtualizedList'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var VirtualizedSectionList = function (_React$PureComponent) { + babelHelpers.inherits(VirtualizedSectionList, _React$PureComponent); + babelHelpers.createClass(VirtualizedSectionList, [{ + key: "scrollToLocation", + value: function scrollToLocation(params) { + var index = params.itemIndex + 1; + + for (var ii = 0; ii < params.sectionIndex; ii++) { + index += this.props.sections[ii].data.length + 2; + } + + var toIndexParams = babelHelpers.extends({}, params, { + index: index + }); + + this._listRef.scrollToIndex(toIndexParams); + } + }, { + key: "getListRef", + value: function getListRef() { + return this._listRef; + } + }, { + key: "_subExtractor", + value: function _subExtractor(index) { + var itemIndex = index; + var defaultKeyExtractor = this.props.keyExtractor; + + for (var ii = 0; ii < this.props.sections.length; ii++) { + var _section = this.props.sections[ii]; + + var _key = _section.key || String(ii); + + itemIndex -= 1; + + if (itemIndex >= _section.data.length + 1) { + itemIndex -= _section.data.length + 1; + } else if (itemIndex === -1) { + return { + section: _section, + key: _key + ':header', + index: null, + header: true, + trailingSection: this.props.sections[ii + 1] + }; + } else if (itemIndex === _section.data.length) { + return { + section: _section, + key: _key + ':footer', + index: null, + header: false, + trailingSection: this.props.sections[ii + 1] + }; + } else { + var _keyExtractor = _section.keyExtractor || defaultKeyExtractor; + + return { + section: _section, + key: _key + ':' + _keyExtractor(_section.data[itemIndex], itemIndex), + index: itemIndex, + leadingItem: _section.data[itemIndex - 1], + leadingSection: this.props.sections[ii - 1], + trailingItem: _section.data[itemIndex + 1], + trailingSection: this.props.sections[ii + 1] + }; + } + } + } + }, { + key: "_getSeparatorComponent", + value: function _getSeparatorComponent(index, info) { + info = info || this._subExtractor(index); + + if (!info) { + return null; + } + + var ItemSeparatorComponent = info.section.ItemSeparatorComponent || this.props.ItemSeparatorComponent; + var SectionSeparatorComponent = this.props.SectionSeparatorComponent; + var isLastItemInList = index === this.state.childProps.getItemCount() - 1; + var isLastItemInSection = info.index === info.section.data.length - 1; + + if (SectionSeparatorComponent && isLastItemInSection) { + return SectionSeparatorComponent; + } + + if (ItemSeparatorComponent && !isLastItemInSection && !isLastItemInList) { + return ItemSeparatorComponent; + } + + return null; + } + }, { + key: "_computeState", + value: function _computeState(props) { + var offset = props.ListHeaderComponent ? 1 : 0; + var stickyHeaderIndices = []; + var itemCount = props.sections.reduce(function (v, section) { + stickyHeaderIndices.push(v + offset); + return v + section.data.length + 2; + }, 0); + return { + childProps: babelHelpers.extends({}, props, { + renderItem: this._renderItem, + ItemSeparatorComponent: undefined, + data: props.sections, + getItemCount: function getItemCount() { + return itemCount; + }, + getItem: getItem, + keyExtractor: this._keyExtractor, + onViewableItemsChanged: props.onViewableItemsChanged ? this._onViewableItemsChanged : undefined, + stickyHeaderIndices: props.stickySectionHeadersEnabled ? stickyHeaderIndices : undefined + }) + }; + } + }]); + + function VirtualizedSectionList(props, context) { + babelHelpers.classCallCheck(this, VirtualizedSectionList); + + var _this = babelHelpers.possibleConstructorReturn(this, (VirtualizedSectionList.__proto__ || Object.getPrototypeOf(VirtualizedSectionList)).call(this, props, context)); + + _this._keyExtractor = function (item, index) { + var info = _this._subExtractor(index); + + return info && info.key || String(index); + }; + + _this._convertViewable = function (viewable) { + invariant(viewable.index != null, 'Received a broken ViewToken'); + + var info = _this._subExtractor(viewable.index); + + if (!info) { + return null; + } + + var keyExtractor = info.section.keyExtractor || _this.props.keyExtractor; + return babelHelpers.extends({}, viewable, { + index: info.index, + key: keyExtractor(viewable.item, info.index), + section: info.section + }); + }; + + _this._onViewableItemsChanged = function (_ref) { + var viewableItems = _ref.viewableItems, + changed = _ref.changed; + + if (_this.props.onViewableItemsChanged) { + _this.props.onViewableItemsChanged({ + viewableItems: viewableItems.map(_this._convertViewable, _this).filter(Boolean), + changed: changed.map(_this._convertViewable, _this).filter(Boolean) + }); + } + }; + + _this._renderItem = function (_ref2) { + var item = _ref2.item, + index = _ref2.index; + + var info = _this._subExtractor(index); + + if (!info) { + return null; + } + + var infoIndex = info.index; + + if (infoIndex == null) { + var _section2 = info.section; + + if (info.header === true) { + var _renderSectionHeader = _this.props.renderSectionHeader; + return _renderSectionHeader ? _renderSectionHeader({ + section: _section2 + }) : null; + } else { + var _renderSectionFooter = _this.props.renderSectionFooter; + return _renderSectionFooter ? _renderSectionFooter({ + section: _section2 + }) : null; + } + } else { + var _renderItem = info.section.renderItem || _this.props.renderItem; + + var _SeparatorComponent = _this._getSeparatorComponent(index, info); + + invariant(_renderItem, 'no renderItem!'); + return React.createElement(ItemWithSeparator, { + SeparatorComponent: _SeparatorComponent, + LeadingSeparatorComponent: infoIndex === 0 ? _this.props.SectionSeparatorComponent : undefined, + cellKey: info.key, + index: infoIndex, + item: item, + leadingItem: info.leadingItem, + leadingSection: info.leadingSection, + onUpdateSeparator: _this._onUpdateSeparator, + prevCellKey: (_this._subExtractor(index - 1) || {}).key, + ref: function ref(_ref3) { + _this._cellRefs[info.key] = _ref3; + }, + renderItem: _renderItem, + section: info.section, + trailingItem: info.trailingItem, + trailingSection: info.trailingSection, + __source: { + fileName: _jsxFileName, + lineNumber: 278 + } + }); + } + }; + + _this._onUpdateSeparator = function (key, newProps) { + var ref = _this._cellRefs[key]; + ref && ref.updateSeparatorProps(newProps); + }; + + _this._cellRefs = {}; + + _this._captureRef = function (ref) { + _this._listRef = ref; + }; + + _this.state = _this._computeState(props); + return _this; + } + + babelHelpers.createClass(VirtualizedSectionList, [{ + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this.setState(this._computeState(nextProps)); + } + }, { + key: "render", + value: function render() { + return React.createElement(VirtualizedList, babelHelpers.extends({}, this.state.childProps, { + ref: this._captureRef, + __source: { + fileName: _jsxFileName, + lineNumber: 367 + } + })); + } + }]); + return VirtualizedSectionList; + }(React.PureComponent); + + VirtualizedSectionList.defaultProps = babelHelpers.extends({}, VirtualizedList.defaultProps, { + data: [] + }); + + var ItemWithSeparator = function (_React$Component) { + babelHelpers.inherits(ItemWithSeparator, _React$Component); + + function ItemWithSeparator() { + var _ref4; + + var _temp, _this2, _ret; + + babelHelpers.classCallCheck(this, ItemWithSeparator); + + for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) { + args[_key2] = arguments[_key2]; + } + + return _ret = (_temp = (_this2 = babelHelpers.possibleConstructorReturn(this, (_ref4 = ItemWithSeparator.__proto__ || Object.getPrototypeOf(ItemWithSeparator)).call.apply(_ref4, [this].concat(args))), _this2), _this2.state = { + separatorProps: { + highlighted: false, + leadingItem: _this2.props.item, + leadingSection: _this2.props.leadingSection, + section: _this2.props.section, + trailingItem: _this2.props.trailingItem, + trailingSection: _this2.props.trailingSection + }, + leadingSeparatorProps: { + highlighted: false, + leadingItem: _this2.props.leadingItem, + leadingSection: _this2.props.leadingSection, + section: _this2.props.section, + trailingItem: _this2.props.item, + trailingSection: _this2.props.trailingSection + } + }, _this2._separators = { + highlight: function highlight() { + ['leading', 'trailing'].forEach(function (s) { + return _this2._separators.updateProps(s, { + highlighted: true + }); + }); + }, + unhighlight: function unhighlight() { + ['leading', 'trailing'].forEach(function (s) { + return _this2._separators.updateProps(s, { + highlighted: false + }); + }); + }, + updateProps: function updateProps(select, newProps) { + var _this2$props = _this2.props, + LeadingSeparatorComponent = _this2$props.LeadingSeparatorComponent, + cellKey = _this2$props.cellKey, + prevCellKey = _this2$props.prevCellKey; + + if (select === 'leading' && LeadingSeparatorComponent) { + _this2.setState(function (state) { + return { + leadingSeparatorProps: babelHelpers.extends({}, state.leadingSeparatorProps, newProps) + }; + }); + } else { + _this2.props.onUpdateSeparator(select === 'leading' && prevCellKey || cellKey, newProps); + } + } + }, _temp), babelHelpers.possibleConstructorReturn(_this2, _ret); + } + + babelHelpers.createClass(ItemWithSeparator, [{ + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(props) { + var _this3 = this; + + this.setState(function (state) { + return { + separatorProps: babelHelpers.extends({}, _this3.state.separatorProps, { + leadingItem: props.item, + leadingSection: props.leadingSection, + section: props.section, + trailingItem: props.trailingItem, + trailingSection: props.trailingSection + }), + leadingSeparatorProps: babelHelpers.extends({}, _this3.state.leadingSeparatorProps, { + leadingItem: props.leadingItem, + leadingSection: props.leadingSection, + section: props.section, + trailingItem: props.item, + trailingSection: props.trailingSection + }) + }; + }); + } + }, { + key: "updateSeparatorProps", + value: function updateSeparatorProps(newProps) { + this.setState(function (state) { + return { + separatorProps: babelHelpers.extends({}, state.separatorProps, newProps) + }; + }); + } + }, { + key: "render", + value: function render() { + var _props = this.props, + LeadingSeparatorComponent = _props.LeadingSeparatorComponent, + SeparatorComponent = _props.SeparatorComponent, + item = _props.item, + index = _props.index, + section = _props.section; + var element = this.props.renderItem({ + item: item, + index: index, + section: section, + separators: this._separators + }); + var leadingSeparator = LeadingSeparatorComponent && React.createElement(LeadingSeparatorComponent, babelHelpers.extends({}, this.state.leadingSeparatorProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 488 + } + })); + var separator = SeparatorComponent && React.createElement(SeparatorComponent, babelHelpers.extends({}, this.state.separatorProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 491 + } + })); + return leadingSeparator || separator ? React.createElement( + View, + { + __source: { + fileName: _jsxFileName, + lineNumber: 494 + } + }, + leadingSeparator, + element, + separator + ) : element; + } + }]); + return ItemWithSeparator; + }(React.Component); + + function getItem(sections, index) { + if (!sections) { + return null; + } + + var itemIdx = index - 1; + + for (var ii = 0; ii < sections.length; ii++) { + if (itemIdx === -1 || itemIdx === sections[ii].data.length) { + return sections[ii]; + } else if (itemIdx < sections[ii].data.length) { + return sections[ii].data[itemIdx]; + } else { + itemIdx -= sections[ii].data.length + 2; + } + } + + return null; + } + + module.exports = VirtualizedSectionList; +},328,[171,211,288,18],"VirtualizedSectionList"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js"; + + var React = require(_dependencyMap[0], 'React'); + + var StyleSheet = require(_dependencyMap[1], 'StyleSheet'); + + var Text = require(_dependencyMap[2], 'Text'); + + var View = require(_dependencyMap[3], 'View'); + + var DummySegmentedControlIOS = function (_React$Component) { + babelHelpers.inherits(DummySegmentedControlIOS, _React$Component); + + function DummySegmentedControlIOS() { + babelHelpers.classCallCheck(this, DummySegmentedControlIOS); + return babelHelpers.possibleConstructorReturn(this, (DummySegmentedControlIOS.__proto__ || Object.getPrototypeOf(DummySegmentedControlIOS)).apply(this, arguments)); + } + + babelHelpers.createClass(DummySegmentedControlIOS, [{ + key: "render", + value: function render() { + return React.createElement( + View, + { + style: [styles.dummy, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 23 + } + }, + React.createElement( + Text, + { + style: styles.text, + __source: { + fileName: _jsxFileName, + lineNumber: 24 + } + }, + "SegmentedControlIOS is not supported on this platform!" + ) + ); + } + }]); + return DummySegmentedControlIOS; + }(React.Component); + + var styles = StyleSheet.create({ + dummy: { + width: 120, + height: 50, + backgroundColor: '#ffbcbc', + borderWidth: 1, + borderColor: 'red', + alignItems: 'center', + justifyContent: 'center' + }, + text: { + color: '#333333', + margin: 5, + fontSize: 10 + } + }); + module.exports = DummySegmentedControlIOS; +},329,[171,209,222,211],"SegmentedControlIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Slider/Slider.js"; + + var Image = require(_dependencyMap[0], 'Image'); + + var ColorPropType = require(_dependencyMap[1], 'ColorPropType'); + + var NativeMethodsMixin = require(_dependencyMap[2], 'NativeMethodsMixin'); + + var ReactNativeViewAttributes = require(_dependencyMap[3], 'ReactNativeViewAttributes'); + + var Platform = require(_dependencyMap[4], 'Platform'); + + var React = require(_dependencyMap[5], 'React'); + + var PropTypes = require(_dependencyMap[6], 'prop-types'); + + var StyleSheet = require(_dependencyMap[7], 'StyleSheet'); + + var ViewPropTypes = require(_dependencyMap[8], 'ViewPropTypes'); + + var createReactClass = require(_dependencyMap[9], 'create-react-class'); + + var requireNativeComponent = require(_dependencyMap[10], 'requireNativeComponent'); + + var Slider = createReactClass({ + displayName: 'Slider', + mixins: [NativeMethodsMixin], + propTypes: babelHelpers.extends({}, ViewPropTypes, { + style: ViewPropTypes.style, + value: PropTypes.number, + step: PropTypes.number, + minimumValue: PropTypes.number, + maximumValue: PropTypes.number, + minimumTrackTintColor: ColorPropType, + maximumTrackTintColor: ColorPropType, + disabled: PropTypes.bool, + trackImage: Image.propTypes.source, + minimumTrackImage: Image.propTypes.source, + maximumTrackImage: Image.propTypes.source, + thumbImage: Image.propTypes.source, + thumbTintColor: ColorPropType, + onValueChange: PropTypes.func, + onSlidingComplete: PropTypes.func, + testID: PropTypes.string + }), + getDefaultProps: function getDefaultProps() { + return { + disabled: false, + value: 0, + minimumValue: 0, + maximumValue: 1, + step: 0 + }; + }, + viewConfig: { + uiViewClassName: 'RCTSlider', + validAttributes: babelHelpers.extends({}, ReactNativeViewAttributes.RCTView, { + value: true + }) + }, + render: function render() { + var _props = this.props, + style = _props.style, + onValueChange = _props.onValueChange, + onSlidingComplete = _props.onSlidingComplete, + props = babelHelpers.objectWithoutProperties(_props, ["style", "onValueChange", "onSlidingComplete"]); + props.style = [styles.slider, style]; + + props.onValueChange = onValueChange && function (event) { + var userEvent = true; + + if (Platform.OS === 'android') { + userEvent = event.nativeEvent.fromUser; + } + + onValueChange && userEvent && onValueChange(event.nativeEvent.value); + }; + + props.onChange = props.onValueChange; + + props.onSlidingComplete = onSlidingComplete && function (event) { + onSlidingComplete && onSlidingComplete(event.nativeEvent.value); + }; + + return React.createElement(RCTSlider, babelHelpers.extends({}, props, { + enabled: !this.props.disabled, + onStartShouldSetResponder: function onStartShouldSetResponder() { + return true; + }, + onResponderTerminationRequest: function onResponderTerminationRequest() { + return false; + }, + __source: { + fileName: _jsxFileName, + lineNumber: 248 + } + })); + } + }); + var styles = void 0; + + if (Platform.OS === 'ios') { + styles = StyleSheet.create({ + slider: { + height: 40 + } + }); + } else { + styles = StyleSheet.create({ + slider: {} + }); + } + + var options = {}; + + if (Platform.OS === 'android') { + options = { + nativeOnly: { + enabled: true + } + }; + } + + var RCTSlider = requireNativeComponent('RCTSlider', Slider, options); + module.exports = Slider; +},330,[263,167,169,212,105,171,24,209,172,213,186],"Slider"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + module.exports = require(_dependencyMap[0], 'UnimplementedView'); +},331,[300],"SnapshotViewIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/Switch/Switch.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var NativeMethodsMixin = require(_dependencyMap[1], 'NativeMethodsMixin'); + + var Platform = require(_dependencyMap[2], 'Platform'); + + var React = require(_dependencyMap[3], 'React'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var StyleSheet = require(_dependencyMap[5], 'StyleSheet'); + + var ViewPropTypes = require(_dependencyMap[6], 'ViewPropTypes'); + + var createReactClass = require(_dependencyMap[7], 'create-react-class'); + + var requireNativeComponent = require(_dependencyMap[8], 'requireNativeComponent'); + + var Switch = createReactClass({ + displayName: 'Switch', + propTypes: babelHelpers.extends({}, ViewPropTypes, { + value: PropTypes.bool, + disabled: PropTypes.bool, + onValueChange: PropTypes.func, + testID: PropTypes.string, + tintColor: ColorPropType, + onTintColor: ColorPropType, + thumbTintColor: ColorPropType + }), + getDefaultProps: function getDefaultProps() { + return { + value: false, + disabled: false + }; + }, + mixins: [NativeMethodsMixin], + _rctSwitch: {}, + _onChange: function _onChange(event) { + if (Platform.OS === 'android') { + this._rctSwitch.setNativeProps({ + on: this.props.value + }); + } else { + this._rctSwitch.setNativeProps({ + value: this.props.value + }); + } + + this.props.onChange && this.props.onChange(event); + this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value); + }, + render: function render() { + var _this = this; + + var props = babelHelpers.extends({}, this.props); + + props.onStartShouldSetResponder = function () { + return true; + }; + + props.onResponderTerminationRequest = function () { + return false; + }; + + if (Platform.OS === 'android') { + props.enabled = !this.props.disabled; + props.on = this.props.value; + props.style = this.props.style; + props.trackTintColor = this.props.value ? this.props.onTintColor : this.props.tintColor; + } else if (Platform.OS === 'ios') { + props.style = [styles.rctSwitchIOS, this.props.style]; + } + + return React.createElement(RCTSwitch, babelHelpers.extends({}, props, { + ref: function ref(_ref) { + _this._rctSwitch = _ref; + }, + onChange: this._onChange, + __source: { + fileName: _jsxFileName, + lineNumber: 115 + } + })); + } + }); + var styles = StyleSheet.create({ + rctSwitchIOS: { + height: 31, + width: 51 + } + }); + + if (Platform.OS === 'android') { + var RCTSwitch = requireNativeComponent('AndroidSwitch', Switch, { + nativeOnly: { + onChange: true, + on: true, + enabled: true, + trackTintColor: true + } + }); + } else { + var RCTSwitch = requireNativeComponent('RCTSwitch', Switch, { + nativeOnly: { + onChange: true + } + }); + } + + module.exports = Switch; +},332,[167,169,105,171,24,209,172,213,186],"Switch"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableFlatList.js"; + + var PropTypes = require(_dependencyMap[0], 'prop-types'); + + var React = require(_dependencyMap[1], 'React'); + + var SwipeableRow = require(_dependencyMap[2], 'SwipeableRow'); + + var FlatList = require(_dependencyMap[3], 'FlatList'); + + var SwipeableFlatList = function (_React$Component) { + babelHelpers.inherits(SwipeableFlatList, _React$Component); + + function SwipeableFlatList(props, context) { + babelHelpers.classCallCheck(this, SwipeableFlatList); + + var _this = babelHelpers.possibleConstructorReturn(this, (SwipeableFlatList.__proto__ || Object.getPrototypeOf(SwipeableFlatList)).call(this, props, context)); + + _this._flatListRef = null; + _this._shouldBounceFirstRowOnMount = false; + + _this._onScroll = function (e) { + if (_this.state.openRowKey) { + _this.setState({ + openRowKey: null + }); + } + + _this.props.onScroll && _this.props.onScroll(e); + }; + + _this._renderItem = function (info) { + var slideoutView = _this.props.renderQuickActions(info); + + var key = _this.props.keyExtractor(info.item, info.index); + + if (!slideoutView) { + return _this.props.renderItem(info); + } + + var shouldBounceOnMount = false; + + if (_this._shouldBounceFirstRowOnMount) { + _this._shouldBounceFirstRowOnMount = false; + shouldBounceOnMount = true; + } + + return React.createElement( + SwipeableRow, + { + slideoutView: slideoutView, + isOpen: key === _this.state.openRowKey, + maxSwipeDistance: _this._getMaxSwipeDistance(info), + onOpen: function onOpen() { + return _this._onOpen(key); + }, + onClose: function onClose() { + return _this._onClose(key); + }, + shouldBounceOnMount: shouldBounceOnMount, + onSwipeEnd: _this._setListViewScrollable, + onSwipeStart: _this._setListViewNotScrollable, + __source: { + fileName: _jsxFileName, + lineNumber: 137 + } + }, + _this.props.renderItem(info) + ); + }; + + _this._setListViewScrollable = function () { + _this._setListViewScrollableTo(true); + }; + + _this._setListViewNotScrollable = function () { + _this._setListViewScrollableTo(false); + }; + + _this.state = { + openRowKey: null + }; + _this._shouldBounceFirstRowOnMount = _this.props.bounceFirstRowOnMount; + return _this; + } + + babelHelpers.createClass(SwipeableFlatList, [{ + key: "render", + value: function render() { + var _this2 = this; + + return React.createElement(FlatList, babelHelpers.extends({}, this.props, { + ref: function ref(_ref) { + _this2._flatListRef = _ref; + }, + onScroll: this._onScroll, + renderItem: this._renderItem, + __source: { + fileName: _jsxFileName, + lineNumber: 99 + } + })); + } + }, { + key: "_getMaxSwipeDistance", + value: function _getMaxSwipeDistance(info) { + if (typeof this.props.maxSwipeDistance === 'function') { + return this.props.maxSwipeDistance(info); + } + + return this.props.maxSwipeDistance; + } + }, { + key: "_setListViewScrollableTo", + value: function _setListViewScrollableTo(value) { + if (this._flatListRef) { + this._flatListRef.setNativeProps({ + scrollEnabled: value + }); + } + } + }, { + key: "_onOpen", + value: function _onOpen(key) { + this.setState({ + openRowKey: key + }); + } + }, { + key: "_onClose", + value: function _onClose(key) { + this.setState({ + openRowKey: null + }); + } + }]); + return SwipeableFlatList; + }(React.Component); + + SwipeableFlatList.propTypes = babelHelpers.extends({}, FlatList.propTypes, { + bounceFirstRowOnMount: PropTypes.bool.isRequired, + maxSwipeDistance: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired, + renderQuickActions: PropTypes.func.isRequired + }); + SwipeableFlatList.defaultProps = babelHelpers.extends({}, FlatList.defaultProps, { + bounceFirstRowOnMount: true, + renderQuickActions: function renderQuickActions() { + return null; + } + }); + module.exports = SwipeableFlatList; +},333,[24,171,334,280],"SwipeableFlatList"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableRow.js"; + + var Animated = require(_dependencyMap[0], 'Animated'); + + var I18nManager = require(_dependencyMap[1], 'I18nManager'); + + var PanResponder = require(_dependencyMap[2], 'PanResponder'); + + var React = require(_dependencyMap[3], 'React'); + + var PropTypes = require(_dependencyMap[4], 'prop-types'); + + var StyleSheet = require(_dependencyMap[5], 'StyleSheet'); + + var TimerMixin = require(_dependencyMap[6], 'react-timer-mixin'); + + var View = require(_dependencyMap[7], 'View'); + + var createReactClass = require(_dependencyMap[8], 'create-react-class'); + + var emptyFunction = require(_dependencyMap[9], 'fbjs/lib/emptyFunction'); + + var IS_RTL = I18nManager.isRTL; + var CLOSED_LEFT_POSITION = 0; + var HORIZONTAL_SWIPE_DISTANCE_THRESHOLD = 10; + var HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD = 0.3; + var SLOW_SPEED_SWIPE_FACTOR = 4; + var SWIPE_DURATION = 300; + var ON_MOUNT_BOUNCE_DELAY = 700; + var ON_MOUNT_BOUNCE_DURATION = 400; + var RIGHT_SWIPE_BOUNCE_BACK_DISTANCE = 30; + var RIGHT_SWIPE_BOUNCE_BACK_DURATION = 300; + var RIGHT_SWIPE_THRESHOLD = 30 * SLOW_SPEED_SWIPE_FACTOR; + var SwipeableRow = createReactClass({ + displayName: 'SwipeableRow', + _panResponder: {}, + _previousLeft: CLOSED_LEFT_POSITION, + mixins: [TimerMixin], + propTypes: { + children: PropTypes.any, + isOpen: PropTypes.bool, + preventSwipeRight: PropTypes.bool, + maxSwipeDistance: PropTypes.number.isRequired, + onOpen: PropTypes.func.isRequired, + onClose: PropTypes.func.isRequired, + onSwipeEnd: PropTypes.func.isRequired, + onSwipeStart: PropTypes.func.isRequired, + shouldBounceOnMount: PropTypes.bool, + slideoutView: PropTypes.node.isRequired, + swipeThreshold: PropTypes.number.isRequired + }, + getInitialState: function getInitialState() { + return { + currentLeft: new Animated.Value(this._previousLeft), + isSwipeableViewRendered: false, + rowHeight: null + }; + }, + getDefaultProps: function getDefaultProps() { + return { + isOpen: false, + preventSwipeRight: false, + maxSwipeDistance: 0, + onOpen: emptyFunction, + onClose: emptyFunction, + onSwipeEnd: emptyFunction, + onSwipeStart: emptyFunction, + swipeThreshold: 30 + }; + }, + componentWillMount: function componentWillMount() { + this._panResponder = PanResponder.create({ + onMoveShouldSetPanResponderCapture: this._handleMoveShouldSetPanResponderCapture, + onPanResponderGrant: this._handlePanResponderGrant, + onPanResponderMove: this._handlePanResponderMove, + onPanResponderRelease: this._handlePanResponderEnd, + onPanResponderTerminationRequest: this._onPanResponderTerminationRequest, + onPanResponderTerminate: this._handlePanResponderEnd, + onShouldBlockNativeResponder: function onShouldBlockNativeResponder(event, gestureState) { + return false; + } + }); + }, + componentDidMount: function componentDidMount() { + var _this = this; + + if (this.props.shouldBounceOnMount) { + this.setTimeout(function () { + _this._animateBounceBack(ON_MOUNT_BOUNCE_DURATION); + }, ON_MOUNT_BOUNCE_DELAY); + } + }, + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + if (this.props.isOpen && !nextProps.isOpen) { + this._animateToClosedPosition(); + } + }, + shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) { + if (this.props.shouldBounceOnMount && !nextProps.shouldBounceOnMount) { + return false; + } + + return true; + }, + render: function render() { + var slideOutView = void 0; + + if (this.state.isSwipeableViewRendered && this.state.rowHeight) { + slideOutView = React.createElement( + View, + { + style: [styles.slideOutContainer, { + height: this.state.rowHeight + }], + __source: { + fileName: _jsxFileName, + lineNumber: 176 + } + }, + this.props.slideoutView + ); + } + + var swipeableView = React.createElement( + Animated.View, + { + onLayout: this._onSwipeableViewLayout, + style: { + transform: [{ + translateX: this.state.currentLeft + }] + }, + __source: { + fileName: _jsxFileName, + lineNumber: 187 + } + }, + this.props.children + ); + return React.createElement( + View, + babelHelpers.extends({}, this._panResponder.panHandlers, { + __source: { + fileName: _jsxFileName, + lineNumber: 195 + } + }), + slideOutView, + swipeableView + ); + }, + close: function close() { + this.props.onClose(); + + this._animateToClosedPosition(); + }, + _onSwipeableViewLayout: function _onSwipeableViewLayout(event) { + this.setState({ + isSwipeableViewRendered: true, + rowHeight: event.nativeEvent.layout.height + }); + }, + _handleMoveShouldSetPanResponderCapture: function _handleMoveShouldSetPanResponderCapture(event, gestureState) { + return gestureState.dy < 10 && this._isValidSwipe(gestureState); + }, + _handlePanResponderGrant: function _handlePanResponderGrant(event, gestureState) {}, + _handlePanResponderMove: function _handlePanResponderMove(event, gestureState) { + if (this._isSwipingExcessivelyRightFromClosedPosition(gestureState)) { + return; + } + + this.props.onSwipeStart(); + + if (this._isSwipingRightFromClosed(gestureState)) { + this._swipeSlowSpeed(gestureState); + } else { + this._swipeFullSpeed(gestureState); + } + }, + _isSwipingRightFromClosed: function _isSwipingRightFromClosed(gestureState) { + var gestureStateDx = IS_RTL ? -gestureState.dx : gestureState.dx; + return this._previousLeft === CLOSED_LEFT_POSITION && gestureStateDx > 0; + }, + _swipeFullSpeed: function _swipeFullSpeed(gestureState) { + this.state.currentLeft.setValue(this._previousLeft + gestureState.dx); + }, + _swipeSlowSpeed: function _swipeSlowSpeed(gestureState) { + this.state.currentLeft.setValue(this._previousLeft + gestureState.dx / SLOW_SPEED_SWIPE_FACTOR); + }, + _isSwipingExcessivelyRightFromClosedPosition: function _isSwipingExcessivelyRightFromClosedPosition(gestureState) { + var gestureStateDx = IS_RTL ? -gestureState.dx : gestureState.dx; + return this._isSwipingRightFromClosed(gestureState) && gestureStateDx > RIGHT_SWIPE_THRESHOLD; + }, + _onPanResponderTerminationRequest: function _onPanResponderTerminationRequest(event, gestureState) { + return false; + }, + _animateTo: function _animateTo(toValue) { + var _this2 = this; + + var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SWIPE_DURATION; + var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : emptyFunction; + Animated.timing(this.state.currentLeft, { + duration: duration, + toValue: toValue, + useNativeDriver: true + }).start(function () { + _this2._previousLeft = toValue; + callback(); + }); + }, + _animateToOpenPosition: function _animateToOpenPosition() { + var maxSwipeDistance = IS_RTL ? -this.props.maxSwipeDistance : this.props.maxSwipeDistance; + + this._animateTo(-maxSwipeDistance); + }, + _animateToOpenPositionWith: function _animateToOpenPositionWith(speed, distMoved) { + speed = speed > HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD ? speed : HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD; + var duration = Math.abs((this.props.maxSwipeDistance - Math.abs(distMoved)) / speed); + var maxSwipeDistance = IS_RTL ? -this.props.maxSwipeDistance : this.props.maxSwipeDistance; + + this._animateTo(-maxSwipeDistance, duration); + }, + _animateToClosedPosition: function _animateToClosedPosition() { + var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SWIPE_DURATION; + + this._animateTo(CLOSED_LEFT_POSITION, duration); + }, + _animateToClosedPositionDuringBounce: function _animateToClosedPositionDuringBounce() { + this._animateToClosedPosition(RIGHT_SWIPE_BOUNCE_BACK_DURATION); + }, + _animateBounceBack: function _animateBounceBack(duration) { + var swipeBounceBackDistance = IS_RTL ? -RIGHT_SWIPE_BOUNCE_BACK_DISTANCE : RIGHT_SWIPE_BOUNCE_BACK_DISTANCE; + + this._animateTo(-swipeBounceBackDistance, duration, this._animateToClosedPositionDuringBounce); + }, + _isValidSwipe: function _isValidSwipe(gestureState) { + if (this.props.preventSwipeRight && this._previousLeft === CLOSED_LEFT_POSITION && gestureState.dx > 0) { + return false; + } + + return Math.abs(gestureState.dx) > HORIZONTAL_SWIPE_DISTANCE_THRESHOLD; + }, + _shouldAnimateRemainder: function _shouldAnimateRemainder(gestureState) { + return Math.abs(gestureState.dx) > this.props.swipeThreshold || gestureState.vx > HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD; + }, + _handlePanResponderEnd: function _handlePanResponderEnd(event, gestureState) { + var horizontalDistance = IS_RTL ? -gestureState.dx : gestureState.dx; + + if (this._isSwipingRightFromClosed(gestureState)) { + this.props.onOpen(); + + this._animateBounceBack(RIGHT_SWIPE_BOUNCE_BACK_DURATION); + } else if (this._shouldAnimateRemainder(gestureState)) { + if (horizontalDistance < 0) { + this.props.onOpen(); + + this._animateToOpenPositionWith(gestureState.vx, horizontalDistance); + } else { + this.props.onClose(); + + this._animateToClosedPosition(); + } + } else { + if (this._previousLeft === CLOSED_LEFT_POSITION) { + this._animateToClosedPosition(); + } else { + this._animateToOpenPosition(); + } + } + + this.props.onSwipeEnd(); + } + }); + var styles = StyleSheet.create({ + slideOutContainer: { + bottom: 0, + left: 0, + position: 'absolute', + right: 0, + top: 0 + } + }); + module.exports = SwipeableRow; +},334,[235,321,335,171,24,209,232,211,213,16],"SwipeableRow"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var InteractionManager = require(_dependencyMap[0], './InteractionManager'); + + var TouchHistoryMath = require(_dependencyMap[1], 'TouchHistoryMath'); + + var currentCentroidXOfTouchesChangedAfter = TouchHistoryMath.currentCentroidXOfTouchesChangedAfter; + var currentCentroidYOfTouchesChangedAfter = TouchHistoryMath.currentCentroidYOfTouchesChangedAfter; + var previousCentroidXOfTouchesChangedAfter = TouchHistoryMath.previousCentroidXOfTouchesChangedAfter; + var previousCentroidYOfTouchesChangedAfter = TouchHistoryMath.previousCentroidYOfTouchesChangedAfter; + var currentCentroidX = TouchHistoryMath.currentCentroidX; + var currentCentroidY = TouchHistoryMath.currentCentroidY; + var PanResponder = { + _initializeGestureState: function _initializeGestureState(gestureState) { + gestureState.moveX = 0; + gestureState.moveY = 0; + gestureState.x0 = 0; + gestureState.y0 = 0; + gestureState.dx = 0; + gestureState.dy = 0; + gestureState.vx = 0; + gestureState.vy = 0; + gestureState.numberActiveTouches = 0; + gestureState._accountsForMovesUpTo = 0; + }, + _updateGestureStateOnMove: function _updateGestureStateOnMove(gestureState, touchHistory) { + gestureState.numberActiveTouches = touchHistory.numberActiveTouches; + gestureState.moveX = currentCentroidXOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo); + gestureState.moveY = currentCentroidYOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo); + var movedAfter = gestureState._accountsForMovesUpTo; + var prevX = previousCentroidXOfTouchesChangedAfter(touchHistory, movedAfter); + var x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter); + var prevY = previousCentroidYOfTouchesChangedAfter(touchHistory, movedAfter); + var y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter); + var nextDX = gestureState.dx + (x - prevX); + var nextDY = gestureState.dy + (y - prevY); + var dt = touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo; + gestureState.vx = (nextDX - gestureState.dx) / dt; + gestureState.vy = (nextDY - gestureState.dy) / dt; + gestureState.dx = nextDX; + gestureState.dy = nextDY; + gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp; + }, + create: function create(config) { + var interactionState = { + handle: null + }; + var gestureState = { + stateID: Math.random() + }; + + PanResponder._initializeGestureState(gestureState); + + var panHandlers = { + onStartShouldSetResponder: function onStartShouldSetResponder(e) { + return config.onStartShouldSetPanResponder === undefined ? false : config.onStartShouldSetPanResponder(e, gestureState); + }, + onMoveShouldSetResponder: function onMoveShouldSetResponder(e) { + return config.onMoveShouldSetPanResponder === undefined ? false : config.onMoveShouldSetPanResponder(e, gestureState); + }, + onStartShouldSetResponderCapture: function onStartShouldSetResponderCapture(e) { + if (e.nativeEvent.touches.length === 1) { + PanResponder._initializeGestureState(gestureState); + } + + gestureState.numberActiveTouches = e.touchHistory.numberActiveTouches; + return config.onStartShouldSetPanResponderCapture !== undefined ? config.onStartShouldSetPanResponderCapture(e, gestureState) : false; + }, + onMoveShouldSetResponderCapture: function onMoveShouldSetResponderCapture(e) { + var touchHistory = e.touchHistory; + + if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) { + return false; + } + + PanResponder._updateGestureStateOnMove(gestureState, touchHistory); + + return config.onMoveShouldSetPanResponderCapture ? config.onMoveShouldSetPanResponderCapture(e, gestureState) : false; + }, + onResponderGrant: function onResponderGrant(e) { + if (!interactionState.handle) { + interactionState.handle = InteractionManager.createInteractionHandle(); + } + + gestureState.x0 = currentCentroidX(e.touchHistory); + gestureState.y0 = currentCentroidY(e.touchHistory); + gestureState.dx = 0; + gestureState.dy = 0; + + if (config.onPanResponderGrant) { + config.onPanResponderGrant(e, gestureState); + } + + return config.onShouldBlockNativeResponder === undefined ? true : config.onShouldBlockNativeResponder(); + }, + onResponderReject: function onResponderReject(e) { + clearInteractionHandle(interactionState, config.onPanResponderReject, e, gestureState); + }, + onResponderRelease: function onResponderRelease(e) { + clearInteractionHandle(interactionState, config.onPanResponderRelease, e, gestureState); + + PanResponder._initializeGestureState(gestureState); + }, + onResponderStart: function onResponderStart(e) { + var touchHistory = e.touchHistory; + gestureState.numberActiveTouches = touchHistory.numberActiveTouches; + + if (config.onPanResponderStart) { + config.onPanResponderStart(e, gestureState); + } + }, + onResponderMove: function onResponderMove(e) { + var touchHistory = e.touchHistory; + + if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) { + return; + } + + PanResponder._updateGestureStateOnMove(gestureState, touchHistory); + + if (config.onPanResponderMove) { + config.onPanResponderMove(e, gestureState); + } + }, + onResponderEnd: function onResponderEnd(e) { + var touchHistory = e.touchHistory; + gestureState.numberActiveTouches = touchHistory.numberActiveTouches; + clearInteractionHandle(interactionState, config.onPanResponderEnd, e, gestureState); + }, + onResponderTerminate: function onResponderTerminate(e) { + clearInteractionHandle(interactionState, config.onPanResponderTerminate, e, gestureState); + + PanResponder._initializeGestureState(gestureState); + }, + onResponderTerminationRequest: function onResponderTerminationRequest(e) { + return config.onPanResponderTerminationRequest === undefined ? true : config.onPanResponderTerminationRequest(e, gestureState); + } + }; + return { + panHandlers: panHandlers, + getInteractionHandle: function getInteractionHandle() { + return interactionState.handle; + } + }; + } + }; + + function clearInteractionHandle(interactionState, callback, event, gestureState) { + if (interactionState.handle) { + InteractionManager.clearInteractionHandle(interactionState.handle); + interactionState.handle = null; + } + + if (callback) { + callback(event, gestureState); + } + } + + module.exports = PanResponder; +},335,[243,336],"PanResponder"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.TouchHistoryMath; +},336,[74],"TouchHistoryMath"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableListView.js"; + + var ListView = require(_dependencyMap[0], 'ListView'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var React = require(_dependencyMap[2], 'React'); + + var SwipeableListViewDataSource = require(_dependencyMap[3], 'SwipeableListViewDataSource'); + + var SwipeableRow = require(_dependencyMap[4], 'SwipeableRow'); + + var SwipeableListView = function (_React$Component) { + babelHelpers.inherits(SwipeableListView, _React$Component); + babelHelpers.createClass(SwipeableListView, null, [{ + key: "getNewDataSource", + value: function getNewDataSource() { + return new SwipeableListViewDataSource({ + getRowData: function getRowData(data, sectionID, rowID) { + return data[sectionID][rowID]; + }, + getSectionHeaderData: function getSectionHeaderData(data, sectionID) { + return data[sectionID]; + }, + rowHasChanged: function rowHasChanged(row1, row2) { + return row1 !== row2; + }, + sectionHeaderHasChanged: function sectionHeaderHasChanged(s1, s2) { + return s1 !== s2; + } + }); + } + }]); + + function SwipeableListView(props, context) { + babelHelpers.classCallCheck(this, SwipeableListView); + + var _this = babelHelpers.possibleConstructorReturn(this, (SwipeableListView.__proto__ || Object.getPrototypeOf(SwipeableListView)).call(this, props, context)); + + _this._listViewRef = null; + _this._shouldBounceFirstRowOnMount = false; + + _this._onScroll = function (e) { + if (_this.props.dataSource.getOpenRowID()) { + _this.setState({ + dataSource: _this.state.dataSource.setOpenRowID(null) + }); + } + + _this.props.onScroll && _this.props.onScroll(e); + }; + + _this._renderRow = function (rowData, sectionID, rowID) { + var slideoutView = _this.props.renderQuickActions(rowData, sectionID, rowID); + + if (!slideoutView) { + return _this.props.renderRow(rowData, sectionID, rowID); + } + + var shouldBounceOnMount = false; + + if (_this._shouldBounceFirstRowOnMount) { + _this._shouldBounceFirstRowOnMount = false; + shouldBounceOnMount = rowID === _this.props.dataSource.getFirstRowID(); + } + + return React.createElement( + SwipeableRow, + { + slideoutView: slideoutView, + isOpen: rowData.id === _this.props.dataSource.getOpenRowID(), + maxSwipeDistance: _this._getMaxSwipeDistance(rowData, sectionID, rowID), + key: rowID, + onOpen: function onOpen() { + return _this._onOpen(rowData.id); + }, + onClose: function onClose() { + return _this._onClose(rowData.id); + }, + onSwipeEnd: function onSwipeEnd() { + return _this._setListViewScrollable(true); + }, + onSwipeStart: function onSwipeStart() { + return _this._setListViewScrollable(false); + }, + shouldBounceOnMount: shouldBounceOnMount, + __source: { + fileName: _jsxFileName, + lineNumber: 185 + } + }, + _this.props.renderRow(rowData, sectionID, rowID) + ); + }; + + _this._shouldBounceFirstRowOnMount = _this.props.bounceFirstRowOnMount; + _this.state = { + dataSource: _this.props.dataSource + }; + return _this; + } + + babelHelpers.createClass(SwipeableListView, [{ + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + if (this.state.dataSource.getDataSource() !== nextProps.dataSource.getDataSource()) { + this.setState({ + dataSource: nextProps.dataSource + }); + } + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + return React.createElement(ListView, babelHelpers.extends({}, this.props, { + ref: function ref(_ref) { + _this2._listViewRef = _ref; + }, + dataSource: this.state.dataSource.getDataSource(), + onScroll: this._onScroll, + renderRow: this._renderRow, + __source: { + fileName: _jsxFileName, + lineNumber: 118 + } + })); + } + }, { + key: "_setListViewScrollable", + value: function _setListViewScrollable(value) { + if (this._listViewRef && typeof this._listViewRef.setNativeProps === 'function') { + this._listViewRef.setNativeProps({ + scrollEnabled: value + }); + } + } + }, { + key: "getScrollResponder", + value: function getScrollResponder() { + if (this._listViewRef && typeof this._listViewRef.getScrollResponder === 'function') { + return this._listViewRef.getScrollResponder(); + } + } + }, { + key: "_getMaxSwipeDistance", + value: function _getMaxSwipeDistance(rowData, sectionID, rowID) { + if (typeof this.props.maxSwipeDistance === 'function') { + return this.props.maxSwipeDistance(rowData, sectionID, rowID); + } + + return this.props.maxSwipeDistance; + } + }, { + key: "_onOpen", + value: function _onOpen(rowID) { + this.setState({ + dataSource: this.state.dataSource.setOpenRowID(rowID) + }); + } + }, { + key: "_onClose", + value: function _onClose(rowID) { + this.setState({ + dataSource: this.state.dataSource.setOpenRowID(null) + }); + } + }]); + return SwipeableListView; + }(React.Component); + + SwipeableListView.propTypes = { + bounceFirstRowOnMount: PropTypes.bool.isRequired, + dataSource: PropTypes.instanceOf(SwipeableListViewDataSource).isRequired, + maxSwipeDistance: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired, + renderRow: PropTypes.func.isRequired, + renderQuickActions: PropTypes.func.isRequired + }; + SwipeableListView.defaultProps = { + bounceFirstRowOnMount: false, + renderQuickActions: function renderQuickActions() { + return null; + } + }; + module.exports = SwipeableListView; +},337,[282,24,171,338,334],"SwipeableListView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var ListViewDataSource = require(_dependencyMap[0], 'ListViewDataSource'); + + var SwipeableListViewDataSource = function () { + function SwipeableListViewDataSource(params) { + var _this = this; + + babelHelpers.classCallCheck(this, SwipeableListViewDataSource); + this._dataSource = new ListViewDataSource({ + getRowData: params.getRowData, + getSectionHeaderData: params.getSectionHeaderData, + rowHasChanged: function rowHasChanged(row1, row2) { + return row1.id !== _this._previousOpenRowID && row2.id === _this._openRowID || row1.id === _this._previousOpenRowID && row2.id !== _this._openRowID || params.rowHasChanged(row1, row2); + }, + sectionHeaderHasChanged: params.sectionHeaderHasChanged + }); + } + + babelHelpers.createClass(SwipeableListViewDataSource, [{ + key: "cloneWithRowsAndSections", + value: function cloneWithRowsAndSections(dataBlob, sectionIdentities, rowIdentities) { + this._dataSource = this._dataSource.cloneWithRowsAndSections(dataBlob, sectionIdentities, rowIdentities); + this._dataBlob = dataBlob; + this.rowIdentities = this._dataSource.rowIdentities; + this.sectionIdentities = this._dataSource.sectionIdentities; + return this; + } + }, { + key: "getDataSource", + value: function getDataSource() { + return this._dataSource; + } + }, { + key: "getOpenRowID", + value: function getOpenRowID() { + return this._openRowID; + } + }, { + key: "getFirstRowID", + value: function getFirstRowID() { + if (this.rowIdentities) { + return this.rowIdentities[0] && this.rowIdentities[0][0]; + } + + return Object.keys(this._dataBlob)[0]; + } + }, { + key: "getLastRowID", + value: function getLastRowID() { + if (this.rowIdentities && this.rowIdentities.length) { + var lastSection = this.rowIdentities[this.rowIdentities.length - 1]; + + if (lastSection && lastSection.length) { + return lastSection[lastSection.length - 1]; + } + } + + return Object.keys(this._dataBlob)[this._dataBlob.length - 1]; + } + }, { + key: "setOpenRowID", + value: function setOpenRowID(rowID) { + this._previousOpenRowID = this._openRowID; + this._openRowID = rowID; + this._dataSource = this._dataSource.cloneWithRowsAndSections(this._dataBlob, this.sectionIdentities, this.rowIdentities); + return this; + } + }]); + return SwipeableListViewDataSource; + }(); + + module.exports = SwipeableListViewDataSource; +},338,[283],"SwipeableListViewDataSource"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.android.js"; + + var React = require(_dependencyMap[0], 'React'); + + var StyleSheet = require(_dependencyMap[1], 'StyleSheet'); + + var TabBarItemIOS = require(_dependencyMap[2], 'TabBarItemIOS'); + + var View = require(_dependencyMap[3], 'View'); + + var DummyTabBarIOS = function (_React$Component) { + babelHelpers.inherits(DummyTabBarIOS, _React$Component); + + function DummyTabBarIOS() { + babelHelpers.classCallCheck(this, DummyTabBarIOS); + return babelHelpers.possibleConstructorReturn(this, (DummyTabBarIOS.__proto__ || Object.getPrototypeOf(DummyTabBarIOS)).apply(this, arguments)); + } + + babelHelpers.createClass(DummyTabBarIOS, [{ + key: "render", + value: function render() { + return React.createElement( + View, + { + style: [this.props.style, styles.tabGroup], + __source: { + fileName: _jsxFileName, + lineNumber: 25 + } + }, + this.props.children + ); + } + }]); + return DummyTabBarIOS; + }(React.Component); + + DummyTabBarIOS.Item = TabBarItemIOS; + var styles = StyleSheet.create({ + tabGroup: { + flex: 1 + } + }); + module.exports = DummyTabBarIOS; +},339,[171,209,340,211],"TabBarIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.android.js"; + + var React = require(_dependencyMap[0], 'React'); + + var View = require(_dependencyMap[1], 'View'); + + var StyleSheet = require(_dependencyMap[2], 'StyleSheet'); + + var DummyTab = function (_React$Component) { + babelHelpers.inherits(DummyTab, _React$Component); + + function DummyTab() { + babelHelpers.classCallCheck(this, DummyTab); + return babelHelpers.possibleConstructorReturn(this, (DummyTab.__proto__ || Object.getPrototypeOf(DummyTab)).apply(this, arguments)); + } + + babelHelpers.createClass(DummyTab, [{ + key: "render", + value: function render() { + if (!this.props.selected) { + return React.createElement(View, { + __source: { + fileName: _jsxFileName, + lineNumber: 21 + } + }); + } + + return React.createElement( + View, + { + style: [this.props.style, styles.tab], + __source: { + fileName: _jsxFileName, + lineNumber: 24 + } + }, + this.props.children + ); + } + }]); + return DummyTab; + }(React.Component); + + var styles = StyleSheet.create({ + tab: { + top: 0, + right: 0, + bottom: 0, + left: 0, + borderColor: 'red', + borderWidth: 1 + } + }); + module.exports = DummyTab; +},340,[171,211,209],"TabBarItemIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/TextInput/TextInput.js"; + + var ColorPropType = require(_dependencyMap[0], 'ColorPropType'); + + var DocumentSelectionState = require(_dependencyMap[1], 'DocumentSelectionState'); + + var EventEmitter = require(_dependencyMap[2], 'EventEmitter'); + + var NativeMethodsMixin = require(_dependencyMap[3], 'NativeMethodsMixin'); + + var Platform = require(_dependencyMap[4], 'Platform'); + + var React = require(_dependencyMap[5], 'React'); + + var createReactClass = require(_dependencyMap[6], 'create-react-class'); + + var PropTypes = require(_dependencyMap[7], 'prop-types'); + + var ReactNative = require(_dependencyMap[8], 'ReactNative'); + + var StyleSheet = require(_dependencyMap[9], 'StyleSheet'); + + var Text = require(_dependencyMap[10], 'Text'); + + var TextInputState = require(_dependencyMap[11], 'TextInputState'); + + var TimerMixin = require(_dependencyMap[12], 'react-timer-mixin'); + + var TouchableWithoutFeedback = require(_dependencyMap[13], 'TouchableWithoutFeedback'); + + var UIManager = require(_dependencyMap[14], 'UIManager'); + + var ViewPropTypes = require(_dependencyMap[15], 'ViewPropTypes'); + + var emptyFunction = require(_dependencyMap[16], 'fbjs/lib/emptyFunction'); + + var invariant = require(_dependencyMap[17], 'fbjs/lib/invariant'); + + var requireNativeComponent = require(_dependencyMap[18], 'requireNativeComponent'); + + var warning = require(_dependencyMap[19], 'fbjs/lib/warning'); + + var onlyMultiline = { + onTextInput: true, + children: true + }; + + if (Platform.OS === 'android') { + var AndroidTextInput = requireNativeComponent('AndroidTextInput', null); + } else if (Platform.OS === 'ios') { + var RCTTextView = requireNativeComponent('RCTTextView', null); + var RCTTextField = requireNativeComponent('RCTTextField', null); + } + + var DataDetectorTypes = ['phoneNumber', 'link', 'address', 'calendarEvent', 'none', 'all']; + var TextInput = createReactClass({ + displayName: 'TextInput', + statics: { + State: TextInputState + }, + propTypes: babelHelpers.extends({}, ViewPropTypes, { + autoCapitalize: PropTypes.oneOf(['none', 'sentences', 'words', 'characters']), + autoCorrect: PropTypes.bool, + spellCheck: PropTypes.bool, + autoFocus: PropTypes.bool, + autoGrow: PropTypes.bool, + allowFontScaling: PropTypes.bool, + editable: PropTypes.bool, + keyboardType: PropTypes.oneOf(['default', 'email-address', 'numeric', 'phone-pad', 'ascii-capable', 'numbers-and-punctuation', 'url', 'number-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search', 'visible-password']), + keyboardAppearance: PropTypes.oneOf(['default', 'light', 'dark']), + returnKeyType: PropTypes.oneOf(['done', 'go', 'next', 'search', 'send', 'none', 'previous', 'default', 'emergency-call', 'google', 'join', 'route', 'yahoo']), + returnKeyLabel: PropTypes.string, + maxLength: PropTypes.number, + maxHeight: PropTypes.number, + numberOfLines: PropTypes.number, + disableFullscreenUI: PropTypes.bool, + enablesReturnKeyAutomatically: PropTypes.bool, + multiline: PropTypes.bool, + textBreakStrategy: PropTypes.oneOf(['simple', 'highQuality', 'balanced']), + onBlur: PropTypes.func, + onFocus: PropTypes.func, + onChange: PropTypes.func, + onChangeText: PropTypes.func, + onContentSizeChange: PropTypes.func, + onEndEditing: PropTypes.func, + onSelectionChange: PropTypes.func, + onSubmitEditing: PropTypes.func, + onKeyPress: PropTypes.func, + onLayout: PropTypes.func, + onScroll: PropTypes.func, + placeholder: PropTypes.string, + placeholderTextColor: ColorPropType, + secureTextEntry: PropTypes.bool, + selectionColor: ColorPropType, + selectionState: PropTypes.instanceOf(DocumentSelectionState), + selection: PropTypes.shape({ + start: PropTypes.number.isRequired, + end: PropTypes.number + }), + value: PropTypes.string, + defaultValue: PropTypes.string, + clearButtonMode: PropTypes.oneOf(['never', 'while-editing', 'unless-editing', 'always']), + clearTextOnFocus: PropTypes.bool, + selectTextOnFocus: PropTypes.bool, + blurOnSubmit: PropTypes.bool, + style: Text.propTypes.style, + underlineColorAndroid: ColorPropType, + inlineImageLeft: PropTypes.string, + inlineImagePadding: PropTypes.number, + dataDetectorTypes: PropTypes.oneOfType([PropTypes.oneOf(DataDetectorTypes), PropTypes.arrayOf(PropTypes.oneOf(DataDetectorTypes))]), + caretHidden: PropTypes.bool + }), + getDefaultProps: function getDefaultProps() { + return { + allowFontScaling: true + }; + }, + mixins: [NativeMethodsMixin, TimerMixin], + getInitialState: function getInitialState() { + return { + layoutHeight: this._layoutHeight + }; + }, + isFocused: function isFocused() { + return TextInputState.currentlyFocusedField() === ReactNative.findNodeHandle(this._inputRef); + }, + contextTypes: { + onFocusRequested: PropTypes.func, + focusEmitter: PropTypes.instanceOf(EventEmitter) + }, + _inputRef: undefined, + _focusSubscription: undefined, + _lastNativeText: undefined, + _lastNativeSelection: undefined, + _layoutHeight: -1, + componentDidMount: function componentDidMount() { + var _this = this; + + this._lastNativeText = this.props.value; + + if (!this.context.focusEmitter) { + if (this.props.autoFocus) { + this.requestAnimationFrame(this.focus); + } + + return; + } + + this._focusSubscription = this.context.focusEmitter.addListener('focus', function (el) { + if (_this === el) { + _this.requestAnimationFrame(_this.focus); + } else if (_this.isFocused()) { + _this.blur(); + } + }); + + if (this.props.autoFocus) { + this.context.onFocusRequested(this); + } + }, + componentWillUnmount: function componentWillUnmount() { + this._focusSubscription && this._focusSubscription.remove(); + + if (this.isFocused()) { + this.blur(); + } + }, + getChildContext: function getChildContext() { + return { + isInAParentText: true + }; + }, + childContextTypes: { + isInAParentText: PropTypes.bool + }, + clear: function clear() { + this.setNativeProps({ + text: '' + }); + }, + render: function render() { + if (Platform.OS === 'ios') { + return this._renderIOS(); + } else if (Platform.OS === 'android') { + return this._renderAndroid(); + } + }, + _getText: function _getText() { + return typeof this.props.value === 'string' ? this.props.value : typeof this.props.defaultValue === 'string' ? this.props.defaultValue : ''; + }, + _setNativeRef: function _setNativeRef(ref) { + this._inputRef = ref; + }, + _renderIOS: function _renderIOS() { + var textContainer; + var props = babelHelpers.extends({}, this.props); + props.style = [this.props.style]; + + if (props.selection && props.selection.end == null) { + props.selection = { + start: props.selection.start, + end: props.selection.start + }; + } + + if (!props.multiline) { + if (__DEV__) { + for (var propKey in onlyMultiline) { + if (props[propKey]) { + var error = new Error('TextInput prop `' + propKey + '` is only supported with multiline.'); + warning(false, '%s', error.stack); + } + } + } + + textContainer = React.createElement(RCTTextField, babelHelpers.extends({ + ref: this._setNativeRef + }, props, { + onFocus: this._onFocus, + onBlur: this._onBlur, + onChange: this._onChange, + onSelectionChange: this._onSelectionChange, + onSelectionChangeShouldSetResponder: emptyFunction.thatReturnsTrue, + text: this._getText(), + __source: { + fileName: _jsxFileName, + lineNumber: 727 + } + })); + } else { + var children = props.children; + var childCount = 0; + React.Children.forEach(children, function () { + return ++childCount; + }); + invariant(!(props.value && childCount), 'Cannot specify both value and children.'); + + if (childCount >= 1) { + children = React.createElement( + Text, + { + style: props.style, + allowFontScaling: props.allowFontScaling, + __source: { + fileName: _jsxFileName, + lineNumber: 746 + } + }, + children + ); + } + + if (props.inputView) { + children = [children, props.inputView]; + } + + props.style.unshift(styles.multilineInput); + textContainer = React.createElement(RCTTextView, babelHelpers.extends({ + ref: this._setNativeRef + }, props, { + children: children, + onFocus: this._onFocus, + onBlur: this._onBlur, + onChange: this._onChange, + onContentSizeChange: this.props.onContentSizeChange, + onSelectionChange: this._onSelectionChange, + onTextInput: this._onTextInput, + onSelectionChangeShouldSetResponder: emptyFunction.thatReturnsTrue, + text: this._getText(), + dataDetectorTypes: this.props.dataDetectorTypes, + onScroll: this._onScroll, + __source: { + fileName: _jsxFileName, + lineNumber: 753 + } + })); + } + + return React.createElement( + TouchableWithoutFeedback, + { + onLayout: props.onLayout, + onPress: this._onPress, + rejectResponderTermination: true, + accessible: props.accessible, + accessibilityLabel: props.accessibilityLabel, + accessibilityTraits: props.accessibilityTraits, + nativeID: this.props.nativeID, + testID: props.testID, + __source: { + fileName: _jsxFileName, + lineNumber: 770 + } + }, + textContainer + ); + }, + _renderAndroid: function _renderAndroid() { + var props = babelHelpers.extends({}, this.props); + props.style = this.props.style; + + if (this.state.layoutHeight >= 0) { + props.style = [props.style, { + height: this.state.layoutHeight + }]; + } + + props.autoCapitalize = UIManager.AndroidTextInput.Constants.AutoCapitalizationType[props.autoCapitalize || 'sentences']; + var children = this.props.children; + var childCount = 0; + React.Children.forEach(children, function () { + return ++childCount; + }); + invariant(!(this.props.value && childCount), 'Cannot specify both value and children.'); + + if (childCount > 1) { + children = React.createElement( + Text, + { + __source: { + fileName: _jsxFileName, + lineNumber: 805 + } + }, + children + ); + } + + if (props.selection && props.selection.end == null) { + props.selection = { + start: props.selection.start, + end: props.selection.start + }; + } + + var textContainer = React.createElement(AndroidTextInput, babelHelpers.extends({ + ref: this._setNativeRef + }, props, { + mostRecentEventCount: 0, + onFocus: this._onFocus, + onBlur: this._onBlur, + onChange: this._onChange, + onContentSizeChange: this._onContentSizeChange, + onSelectionChange: this._onSelectionChange, + onTextInput: this._onTextInput, + text: this._getText(), + children: children, + disableFullscreenUI: this.props.disableFullscreenUI, + textBreakStrategy: this.props.textBreakStrategy, + onScroll: this._onScroll, + __source: { + fileName: _jsxFileName, + lineNumber: 811 + } + })); + return React.createElement( + TouchableWithoutFeedback, + { + onLayout: this._onLayout, + onPress: this._onPress, + accessible: this.props.accessible, + accessibilityLabel: this.props.accessibilityLabel, + accessibilityComponentType: this.props.accessibilityComponentType, + nativeID: this.props.nativeID, + testID: this.props.testID, + __source: { + fileName: _jsxFileName, + lineNumber: 829 + } + }, + textContainer + ); + }, + _onFocus: function _onFocus(event) { + if (this.props.onFocus) { + this.props.onFocus(event); + } + + if (this.props.selectionState) { + this.props.selectionState.focus(); + } + }, + _onPress: function _onPress(event) { + if (this.props.editable || this.props.editable === undefined) { + this.focus(); + } + }, + _onChange: function _onChange(event) { + if (this._inputRef) { + this._inputRef.setNativeProps({ + mostRecentEventCount: event.nativeEvent.eventCount + }); + } + + var text = event.nativeEvent.text; + this.props.onChange && this.props.onChange(event); + this.props.onChangeText && this.props.onChangeText(text); + + if (!this._inputRef) { + return; + } + + this._lastNativeText = text; + this.forceUpdate(); + }, + _onContentSizeChange: function _onContentSizeChange(event) { + var contentHeight = event.nativeEvent.contentSize.height; + + if (this.props.autoGrow) { + if (this.props.maxHeight) { + contentHeight = Math.min(this.props.maxHeight, contentHeight); + } + + this.setState({ + layoutHeight: Math.max(this._layoutHeight, contentHeight) + }); + } + + this.props.onContentSizeChange && this.props.onContentSizeChange(event); + }, + _onLayout: function _onLayout(event) { + var height = event.nativeEvent.layout.height; + + if (height) { + this._layoutHeight = event.nativeEvent.layout.height; + } + + this.props.onLayout && this.props.onLayout(event); + }, + _onSelectionChange: function _onSelectionChange(event) { + this.props.onSelectionChange && this.props.onSelectionChange(event); + + if (!this._inputRef) { + return; + } + + this._lastNativeSelection = event.nativeEvent.selection; + + if (this.props.selection || this.props.selectionState) { + this.forceUpdate(); + } + }, + componentDidUpdate: function componentDidUpdate() { + var nativeProps = {}; + + if (this._lastNativeText !== this.props.value && typeof this.props.value === 'string') { + nativeProps.text = this.props.value; + } + + var selection = this.props.selection; + + if (this._lastNativeSelection && selection && (this._lastNativeSelection.start !== selection.start || this._lastNativeSelection.end !== selection.end)) { + nativeProps.selection = this.props.selection; + } + + if (Object.keys(nativeProps).length > 0 && this._inputRef) { + this._inputRef.setNativeProps(nativeProps); + } + + if (this.props.selectionState && selection) { + this.props.selectionState.update(selection.start, selection.end); + } + }, + _onBlur: function _onBlur(event) { + this.blur(); + + if (this.props.onBlur) { + this.props.onBlur(event); + } + + if (this.props.selectionState) { + this.props.selectionState.blur(); + } + }, + _onTextInput: function _onTextInput(event) { + this.props.onTextInput && this.props.onTextInput(event); + }, + _onScroll: function _onScroll(event) { + this.props.onScroll && this.props.onScroll(event); + } + }); + var styles = StyleSheet.create({ + multilineInput: { + paddingTop: 5 + } + }); + module.exports = TextInput; +},341,[167,342,118,169,105,171,213,24,74,209,222,159,232,231,158,172,16,18,186,19],"TextInput"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var mixInEventEmitter = require(_dependencyMap[0], 'mixInEventEmitter'); + + var DocumentSelectionState = function () { + function DocumentSelectionState(anchor, focus) { + babelHelpers.classCallCheck(this, DocumentSelectionState); + this._anchorOffset = anchor; + this._focusOffset = focus; + this._hasFocus = false; + } + + babelHelpers.createClass(DocumentSelectionState, [{ + key: "update", + value: function update(anchor, focus) { + if (this._anchorOffset !== anchor || this._focusOffset !== focus) { + this._anchorOffset = anchor; + this._focusOffset = focus; + this.emit('update'); + } + } + }, { + key: "constrainLength", + value: function constrainLength(maxLength) { + this.update(Math.min(this._anchorOffset, maxLength), Math.min(this._focusOffset, maxLength)); + } + }, { + key: "focus", + value: function focus() { + if (!this._hasFocus) { + this._hasFocus = true; + this.emit('focus'); + } + } + }, { + key: "blur", + value: function blur() { + if (this._hasFocus) { + this._hasFocus = false; + this.emit('blur'); + } + } + }, { + key: "hasFocus", + value: function hasFocus() { + return this._hasFocus; + } + }, { + key: "isCollapsed", + value: function isCollapsed() { + return this._anchorOffset === this._focusOffset; + } + }, { + key: "isBackward", + value: function isBackward() { + return this._anchorOffset > this._focusOffset; + } + }, { + key: "getAnchorOffset", + value: function getAnchorOffset() { + return this._hasFocus ? this._anchorOffset : null; + } + }, { + key: "getFocusOffset", + value: function getFocusOffset() { + return this._hasFocus ? this._focusOffset : null; + } + }, { + key: "getStartOffset", + value: function getStartOffset() { + return this._hasFocus ? Math.min(this._anchorOffset, this._focusOffset) : null; + } + }, { + key: "getEndOffset", + value: function getEndOffset() { + return this._hasFocus ? Math.max(this._anchorOffset, this._focusOffset) : null; + } + }, { + key: "overlaps", + value: function overlaps(start, end) { + return this.hasFocus() && this.getStartOffset() <= end && start <= this.getEndOffset(); + } + }]); + return DocumentSelectionState; + }(); + + mixInEventEmitter(DocumentSelectionState, { + 'blur': true, + 'focus': true, + 'update': true + }); + module.exports = DocumentSelectionState; +},342,[343],"DocumentSelectionState"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventEmitter = require(_dependencyMap[0], 'EventEmitter'); + + var EventEmitterWithHolding = require(_dependencyMap[1], 'EventEmitterWithHolding'); + + var EventHolder = require(_dependencyMap[2], 'EventHolder'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var keyOf = require(_dependencyMap[4], 'fbjs/lib/keyOf'); + + var TYPES_KEY = keyOf({ + __types: true + }); + + function mixInEventEmitter(cls, types) { + invariant(types, 'Must supply set of valid event types'); + var target = cls.prototype || cls; + invariant(!target.__eventEmitter, 'An active emitter is already mixed in'); + var ctor = cls.constructor; + + if (ctor) { + invariant(ctor === Object || ctor === Function, 'Mix EventEmitter into a class, not an instance'); + } + + if (target.hasOwnProperty(TYPES_KEY)) { + babelHelpers.extends(target.__types, types); + } else if (target.__types) { + target.__types = babelHelpers.extends({}, target.__types, types); + } else { + target.__types = types; + } + + babelHelpers.extends(target, EventEmitterMixin); + } + + var EventEmitterMixin = { + emit: function emit(eventType, a, b, c, d, e, _) { + return this.__getEventEmitter().emit(eventType, a, b, c, d, e, _); + }, + emitAndHold: function emitAndHold(eventType, a, b, c, d, e, _) { + return this.__getEventEmitter().emitAndHold(eventType, a, b, c, d, e, _); + }, + addListener: function addListener(eventType, listener, context) { + return this.__getEventEmitter().addListener(eventType, listener, context); + }, + once: function once(eventType, listener, context) { + return this.__getEventEmitter().once(eventType, listener, context); + }, + addRetroactiveListener: function addRetroactiveListener(eventType, listener, context) { + return this.__getEventEmitter().addRetroactiveListener(eventType, listener, context); + }, + addListenerMap: function addListenerMap(listenerMap, context) { + return this.__getEventEmitter().addListenerMap(listenerMap, context); + }, + addRetroactiveListenerMap: function addRetroactiveListenerMap(listenerMap, context) { + return this.__getEventEmitter().addListenerMap(listenerMap, context); + }, + removeAllListeners: function removeAllListeners() { + this.__getEventEmitter().removeAllListeners(); + }, + removeCurrentListener: function removeCurrentListener() { + this.__getEventEmitter().removeCurrentListener(); + }, + releaseHeldEventType: function releaseHeldEventType(eventType) { + this.__getEventEmitter().releaseHeldEventType(eventType); + }, + __getEventEmitter: function __getEventEmitter() { + if (!this.__eventEmitter) { + var emitter = new EventEmitter(); + + if (__DEV__) { + var EventValidator = require(_dependencyMap[5], 'EventValidator'); + + emitter = EventValidator.addValidation(emitter, this.__types); + } + + var holder = new EventHolder(); + this.__eventEmitter = new EventEmitterWithHolding(emitter, holder); + } + + return this.__eventEmitter; + } + }; + module.exports = mixInEventEmitter; +},343,[118,344,345,18,346,347],"mixInEventEmitter"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventEmitterWithHolding = function () { + function EventEmitterWithHolding(emitter, holder) { + babelHelpers.classCallCheck(this, EventEmitterWithHolding); + this._emitter = emitter; + this._eventHolder = holder; + this._currentEventToken = null; + this._emittingHeldEvents = false; + } + + babelHelpers.createClass(EventEmitterWithHolding, [{ + key: "addListener", + value: function addListener(eventType, listener, context) { + return this._emitter.addListener(eventType, listener, context); + } + }, { + key: "once", + value: function once(eventType, listener, context) { + return this._emitter.once(eventType, listener, context); + } + }, { + key: "addRetroactiveListener", + value: function addRetroactiveListener(eventType, listener, context) { + var subscription = this._emitter.addListener(eventType, listener, context); + + this._emittingHeldEvents = true; + + this._eventHolder.emitToListener(eventType, listener, context); + + this._emittingHeldEvents = false; + return subscription; + } + }, { + key: "removeAllListeners", + value: function removeAllListeners(eventType) { + this._emitter.removeAllListeners(eventType); + } + }, { + key: "removeCurrentListener", + value: function removeCurrentListener() { + this._emitter.removeCurrentListener(); + } + }, { + key: "listeners", + value: function listeners(eventType) { + return this._emitter.listeners(eventType); + } + }, { + key: "emit", + value: function emit(eventType) { + var _emitter; + + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + (_emitter = this._emitter).emit.apply(_emitter, [eventType].concat(babelHelpers.toConsumableArray(args))); + } + }, { + key: "emitAndHold", + value: function emitAndHold(eventType) { + var _eventHolder, _emitter2; + + for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + this._currentEventToken = (_eventHolder = this._eventHolder).holdEvent.apply(_eventHolder, [eventType].concat(babelHelpers.toConsumableArray(args))); + + (_emitter2 = this._emitter).emit.apply(_emitter2, [eventType].concat(babelHelpers.toConsumableArray(args))); + + this._currentEventToken = null; + } + }, { + key: "releaseCurrentEvent", + value: function releaseCurrentEvent() { + if (this._currentEventToken) { + this._eventHolder.releaseEvent(this._currentEventToken); + } else if (this._emittingHeldEvents) { + this._eventHolder.releaseCurrentEvent(); + } + } + }, { + key: "releaseHeldEventType", + value: function releaseHeldEventType(eventType) { + this._eventHolder.releaseEventType(eventType); + } + }]); + return EventEmitterWithHolding; + }(); + + module.exports = EventEmitterWithHolding; +},344,[],"EventEmitterWithHolding"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var invariant = require(_dependencyMap[0], 'fbjs/lib/invariant'); + + var EventHolder = function () { + function EventHolder() { + babelHelpers.classCallCheck(this, EventHolder); + this._heldEvents = {}; + this._currentEventKey = null; + } + + babelHelpers.createClass(EventHolder, [{ + key: "holdEvent", + value: function holdEvent(eventType) { + this._heldEvents[eventType] = this._heldEvents[eventType] || []; + var eventsOfType = this._heldEvents[eventType]; + var key = { + eventType: eventType, + index: eventsOfType.length + }; + + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + eventsOfType.push(args); + return key; + } + }, { + key: "emitToListener", + value: function emitToListener(eventType, listener, context) { + var _this = this; + + var eventsOfType = this._heldEvents[eventType]; + + if (!eventsOfType) { + return; + } + + var origEventKey = this._currentEventKey; + eventsOfType.forEach(function (eventHeld, index) { + if (!eventHeld) { + return; + } + + _this._currentEventKey = { + eventType: eventType, + index: index + }; + listener.apply(context, eventHeld); + }); + this._currentEventKey = origEventKey; + } + }, { + key: "releaseCurrentEvent", + value: function releaseCurrentEvent() { + invariant(this._currentEventKey !== null, 'Not in an emitting cycle; there is no current event'); + this._currentEventKey && this.releaseEvent(this._currentEventKey); + } + }, { + key: "releaseEvent", + value: function releaseEvent(token) { + delete this._heldEvents[token.eventType][token.index]; + } + }, { + key: "releaseEventType", + value: function releaseEventType(type) { + this._heldEvents[type] = []; + } + }]); + return EventHolder; + }(); + + module.exports = EventHolder; +},345,[18],"EventHolder"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + var keyOf = function keyOf(oneKeyObj) { + var key; + + for (key in oneKeyObj) { + if (!oneKeyObj.hasOwnProperty(key)) { + continue; + } + + return key; + } + + return null; + }; + + module.exports = keyOf; +},346,[],"fbjs/lib/keyOf.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var EventValidator = { + addValidation: function addValidation(emitter, types) { + var eventTypes = Object.keys(types); + var emitterWithValidation = Object.create(emitter); + babelHelpers.extends(emitterWithValidation, { + emit: function emit(type, a, b, c, d, e, _) { + assertAllowsEventType(type, eventTypes); + return emitter.emit.call(this, type, a, b, c, d, e, _); + } + }); + return emitterWithValidation; + } + }; + + function assertAllowsEventType(type, allowedTypes) { + if (allowedTypes.indexOf(type) === -1) { + throw new TypeError(errorMessageFor(type, allowedTypes)); + } + } + + function errorMessageFor(type, allowedTypes) { + var message = 'Unknown event type "' + type + '". '; + + if (__DEV__) { + message += recommendationFor(type, allowedTypes); + } + + message += 'Known event types: ' + allowedTypes.join(', ') + '.'; + return message; + } + + if (__DEV__) { + var recommendationFor = function recommendationFor(type, allowedTypes) { + var closestTypeRecommendation = closestTypeFor(type, allowedTypes); + + if (isCloseEnough(closestTypeRecommendation, type)) { + return 'Did you mean "' + closestTypeRecommendation.type + '"? '; + } else { + return ''; + } + }; + + var closestTypeFor = function closestTypeFor(type, allowedTypes) { + var typeRecommendations = allowedTypes.map(typeRecommendationFor.bind(this, type)); + return typeRecommendations.sort(recommendationSort)[0]; + }; + + var typeRecommendationFor = function typeRecommendationFor(type, recomendedType) { + return { + type: recomendedType, + distance: damerauLevenshteinDistance(type, recomendedType) + }; + }; + + var recommendationSort = function recommendationSort(recommendationA, recommendationB) { + if (recommendationA.distance < recommendationB.distance) { + return -1; + } else if (recommendationA.distance > recommendationB.distance) { + return 1; + } else { + return 0; + } + }; + + var isCloseEnough = function isCloseEnough(closestType, actualType) { + return closestType.distance / actualType.length < 0.334; + }; + + var damerauLevenshteinDistance = function damerauLevenshteinDistance(a, b) { + var i = void 0, + j = void 0; + var d = []; + + for (i = 0; i <= a.length; i++) { + d[i] = [i]; + } + + for (j = 1; j <= b.length; j++) { + d[0][j] = j; + } + + for (i = 1; i <= a.length; i++) { + for (j = 1; j <= b.length; j++) { + var cost = a.charAt(i - 1) === b.charAt(j - 1) ? 0 : 1; + d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost); + + if (i > 1 && j > 1 && a.charAt(i - 1) === b.charAt(j - 2) && a.charAt(i - 2) === b.charAt(j - 1)) { + d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost); + } + } + } + + return d[a.length][b.length]; + }; + } + + module.exports = EventValidator; +},347,[],"EventValidator"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/ToolbarAndroid/ToolbarAndroid.android.js"; + + var Image = require(_dependencyMap[0], 'Image'); + + var NativeMethodsMixin = require(_dependencyMap[1], 'NativeMethodsMixin'); + + var React = require(_dependencyMap[2], 'React'); + + var PropTypes = require(_dependencyMap[3], 'prop-types'); + + var ReactNativeViewAttributes = require(_dependencyMap[4], 'ReactNativeViewAttributes'); + + var UIManager = require(_dependencyMap[5], 'UIManager'); + + var ViewPropTypes = require(_dependencyMap[6], 'ViewPropTypes'); + + var ColorPropType = require(_dependencyMap[7], 'ColorPropType'); + + var createReactClass = require(_dependencyMap[8], 'create-react-class'); + + var requireNativeComponent = require(_dependencyMap[9], 'requireNativeComponent'); + + var resolveAssetSource = require(_dependencyMap[10], 'resolveAssetSource'); + + var optionalImageSource = PropTypes.oneOfType([Image.propTypes.source, PropTypes.oneOf([])]); + var ToolbarAndroid = createReactClass({ + displayName: 'ToolbarAndroid', + mixins: [NativeMethodsMixin], + propTypes: babelHelpers.extends({}, ViewPropTypes, { + actions: PropTypes.arrayOf(PropTypes.shape({ + title: PropTypes.string.isRequired, + icon: optionalImageSource, + show: PropTypes.oneOf(['always', 'ifRoom', 'never']), + showWithText: PropTypes.bool + })), + logo: optionalImageSource, + navIcon: optionalImageSource, + onActionSelected: PropTypes.func, + onIconClicked: PropTypes.func, + overflowIcon: optionalImageSource, + subtitle: PropTypes.string, + subtitleColor: ColorPropType, + title: PropTypes.string, + titleColor: ColorPropType, + contentInsetStart: PropTypes.number, + contentInsetEnd: PropTypes.number, + rtl: PropTypes.bool, + testID: PropTypes.string + }), + render: function render() { + var nativeProps = babelHelpers.extends({}, this.props); + + if (this.props.logo) { + nativeProps.logo = resolveAssetSource(this.props.logo); + } + + if (this.props.navIcon) { + nativeProps.navIcon = resolveAssetSource(this.props.navIcon); + } + + if (this.props.overflowIcon) { + nativeProps.overflowIcon = resolveAssetSource(this.props.overflowIcon); + } + + if (this.props.actions) { + var nativeActions = []; + + for (var i = 0; i < this.props.actions.length; i++) { + var action = babelHelpers.extends({}, this.props.actions[i]); + + if (action.icon) { + action.icon = resolveAssetSource(action.icon); + } + + if (action.show) { + action.show = UIManager.ToolbarAndroid.Constants.ShowAsAction[action.show]; + } + + nativeActions.push(action); + } + + nativeProps.nativeActions = nativeActions; + } + + return React.createElement(NativeToolbar, babelHelpers.extends({ + onSelect: this._onSelect + }, nativeProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 196 + } + })); + }, + _onSelect: function _onSelect(event) { + var position = event.nativeEvent.position; + + if (position === -1) { + this.props.onIconClicked && this.props.onIconClicked(); + } else { + this.props.onActionSelected && this.props.onActionSelected(position); + } + } + }); + var NativeToolbar = requireNativeComponent('ToolbarAndroid', ToolbarAndroid, { + nativeOnly: { + nativeActions: true + } + }); + module.exports = ToolbarAndroid; +},348,[263,169,171,24,212,158,172,167,213,186,201],"ToolbarAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/ViewPager/ViewPagerAndroid.android.js"; + + var React = require(_dependencyMap[0], 'React'); + + var PropTypes = require(_dependencyMap[1], 'prop-types'); + + var ReactNative = require(_dependencyMap[2], 'ReactNative'); + + var UIManager = require(_dependencyMap[3], 'UIManager'); + + var ViewPropTypes = require(_dependencyMap[4], 'ViewPropTypes'); + + var dismissKeyboard = require(_dependencyMap[5], 'dismissKeyboard'); + + var requireNativeComponent = require(_dependencyMap[6], 'requireNativeComponent'); + + var VIEWPAGER_REF = 'viewPager'; + + var ViewPagerAndroid = function (_React$Component) { + babelHelpers.inherits(ViewPagerAndroid, _React$Component); + + function ViewPagerAndroid() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, ViewPagerAndroid); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = ViewPagerAndroid.__proto__ || Object.getPrototypeOf(ViewPagerAndroid)).call.apply(_ref, [this].concat(args))), _this), _this.getInnerViewNode = function () { + return _this.refs[VIEWPAGER_REF].getInnerViewNode(); + }, _this._childrenWithOverridenStyle = function () { + return React.Children.map(_this.props.children, function (child) { + if (!child) { + return null; + } + + var newProps = babelHelpers.extends({}, child.props, { + style: [child.props.style, { + position: 'absolute', + left: 0, + top: 0, + right: 0, + bottom: 0, + width: undefined, + height: undefined + }], + collapsable: false + }); + + if (child.type && child.type.displayName && child.type.displayName !== 'RCTView' && child.type.displayName !== 'View') { + console.warn('Each ViewPager child must be a . Was ' + child.type.displayName); + } + + return React.createElement(child.type, newProps); + }); + }, _this._onPageScroll = function (e) { + if (_this.props.onPageScroll) { + _this.props.onPageScroll(e); + } + + if (_this.props.keyboardDismissMode === 'on-drag') { + dismissKeyboard(); + } + }, _this._onPageScrollStateChanged = function (e) { + if (_this.props.onPageScrollStateChanged) { + _this.props.onPageScrollStateChanged(e.nativeEvent.pageScrollState); + } + }, _this._onPageSelected = function (e) { + if (_this.props.onPageSelected) { + _this.props.onPageSelected(e); + } + }, _this.setPage = function (selectedPage) { + UIManager.dispatchViewManagerCommand(ReactNative.findNodeHandle(_this), UIManager.AndroidViewPager.Commands.setPage, [selectedPage]); + }, _this.setPageWithoutAnimation = function (selectedPage) { + UIManager.dispatchViewManagerCommand(ReactNative.findNodeHandle(_this), UIManager.AndroidViewPager.Commands.setPageWithoutAnimation, [selectedPage]); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(ViewPagerAndroid, [{ + key: "componentDidMount", + value: function componentDidMount() { + if (this.props.initialPage != null) { + this.setPageWithoutAnimation(this.props.initialPage); + } + } + }, { + key: "render", + value: function render() { + return React.createElement(NativeAndroidViewPager, babelHelpers.extends({}, this.props, { + ref: VIEWPAGER_REF, + style: this.props.style, + onPageScroll: this._onPageScroll, + onPageScrollStateChanged: this._onPageScrollStateChanged, + onPageSelected: this._onPageSelected, + children: this._childrenWithOverridenStyle(), + __source: { + fileName: _jsxFileName, + lineNumber: 238 + } + })); + } + }]); + return ViewPagerAndroid; + }(React.Component); + + ViewPagerAndroid.propTypes = babelHelpers.extends({}, ViewPropTypes, { + initialPage: PropTypes.number, + onPageScroll: PropTypes.func, + onPageScrollStateChanged: PropTypes.func, + onPageSelected: PropTypes.func, + pageMargin: PropTypes.number, + keyboardDismissMode: PropTypes.oneOf(['none', 'on-drag']), + scrollEnabled: PropTypes.bool, + peekEnabled: PropTypes.bool + }); + var NativeAndroidViewPager = requireNativeComponent('AndroidViewPager', ViewPagerAndroid); + module.exports = ViewPagerAndroid; +},349,[171,24,74,158,172,270,186],"ViewPagerAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/Components/WebView/WebView.android.js"; + + var EdgeInsetsPropType = require(_dependencyMap[0], 'EdgeInsetsPropType'); + + var ActivityIndicator = require(_dependencyMap[1], 'ActivityIndicator'); + + var React = require(_dependencyMap[2], 'React'); + + var PropTypes = require(_dependencyMap[3], 'prop-types'); + + var ReactNative = require(_dependencyMap[4], 'ReactNative'); + + var StyleSheet = require(_dependencyMap[5], 'StyleSheet'); + + var UIManager = require(_dependencyMap[6], 'UIManager'); + + var View = require(_dependencyMap[7], 'View'); + + var ViewPropTypes = require(_dependencyMap[8], 'ViewPropTypes'); + + var deprecatedPropType = require(_dependencyMap[9], 'deprecatedPropType'); + + var keyMirror = require(_dependencyMap[10], 'fbjs/lib/keyMirror'); + + var requireNativeComponent = require(_dependencyMap[11], 'requireNativeComponent'); + + var resolveAssetSource = require(_dependencyMap[12], 'resolveAssetSource'); + + var RCT_WEBVIEW_REF = 'webview'; + var WebViewState = keyMirror({ + IDLE: null, + LOADING: null, + ERROR: null + }); + + var defaultRenderLoading = function defaultRenderLoading() { + return React.createElement( + View, + { + style: styles.loadingView, + __source: { + fileName: _jsxFileName, + lineNumber: 37 + } + }, + React.createElement(ActivityIndicator, { + style: styles.loadingProgressBar, + __source: { + fileName: _jsxFileName, + lineNumber: 38 + } + }) + ); + }; + + var WebView = function (_React$Component) { + babelHelpers.inherits(WebView, _React$Component); + + function WebView() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, WebView); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = WebView.__proto__ || Object.getPrototypeOf(WebView)).call.apply(_ref, [this].concat(args))), _this), _this.state = { + viewState: WebViewState.IDLE, + lastErrorEvent: null, + startInLoadingState: true + }, _this.goForward = function () { + UIManager.dispatchViewManagerCommand(_this.getWebViewHandle(), UIManager.RCTWebView.Commands.goForward, null); + }, _this.goBack = function () { + UIManager.dispatchViewManagerCommand(_this.getWebViewHandle(), UIManager.RCTWebView.Commands.goBack, null); + }, _this.reload = function () { + _this.setState({ + viewState: WebViewState.LOADING + }); + + UIManager.dispatchViewManagerCommand(_this.getWebViewHandle(), UIManager.RCTWebView.Commands.reload, null); + }, _this.stopLoading = function () { + UIManager.dispatchViewManagerCommand(_this.getWebViewHandle(), UIManager.RCTWebView.Commands.stopLoading, null); + }, _this.postMessage = function (data) { + UIManager.dispatchViewManagerCommand(_this.getWebViewHandle(), UIManager.RCTWebView.Commands.postMessage, [String(data)]); + }, _this.injectJavaScript = function (data) { + UIManager.dispatchViewManagerCommand(_this.getWebViewHandle(), UIManager.RCTWebView.Commands.injectJavaScript, [data]); + }, _this.updateNavigationState = function (event) { + if (_this.props.onNavigationStateChange) { + _this.props.onNavigationStateChange(event.nativeEvent); + } + }, _this.getWebViewHandle = function () { + return ReactNative.findNodeHandle(_this.refs[RCT_WEBVIEW_REF]); + }, _this.onLoadingStart = function (event) { + var onLoadStart = _this.props.onLoadStart; + onLoadStart && onLoadStart(event); + + _this.updateNavigationState(event); + }, _this.onLoadingError = function (event) { + event.persist(); + var _this$props = _this.props, + onError = _this$props.onError, + onLoadEnd = _this$props.onLoadEnd; + onError && onError(event); + onLoadEnd && onLoadEnd(event); + console.warn('Encountered an error loading page', event.nativeEvent); + + _this.setState({ + lastErrorEvent: event.nativeEvent, + viewState: WebViewState.ERROR + }); + }, _this.onLoadingFinish = function (event) { + var _this$props2 = _this.props, + onLoad = _this$props2.onLoad, + onLoadEnd = _this$props2.onLoadEnd; + onLoad && onLoad(event); + onLoadEnd && onLoadEnd(event); + + _this.setState({ + viewState: WebViewState.IDLE + }); + + _this.updateNavigationState(event); + }, _this.onMessage = function (event) { + var onMessage = _this.props.onMessage; + onMessage && onMessage(event); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(WebView, [{ + key: "componentWillMount", + value: function componentWillMount() { + if (this.props.startInLoadingState) { + this.setState({ + viewState: WebViewState.LOADING + }); + } + } + }, { + key: "render", + value: function render() { + var otherView = null; + + if (this.state.viewState === WebViewState.LOADING) { + otherView = (this.props.renderLoading || defaultRenderLoading)(); + } else if (this.state.viewState === WebViewState.ERROR) { + var errorEvent = this.state.lastErrorEvent; + otherView = this.props.renderError && this.props.renderError(errorEvent.domain, errorEvent.code, errorEvent.description); + } else if (this.state.viewState !== WebViewState.IDLE) { + console.error('RCTWebView invalid state encountered: ' + this.state.loading); + } + + var webViewStyles = [styles.container, this.props.style]; + + if (this.state.viewState === WebViewState.LOADING || this.state.viewState === WebViewState.ERROR) { + webViewStyles.push(styles.hidden); + } + + var source = this.props.source || {}; + + if (this.props.html) { + source.html = this.props.html; + } else if (this.props.url) { + source.uri = this.props.url; + } + + if (source.method === 'POST' && source.headers) { + console.warn('WebView: `source.headers` is not supported when using POST.'); + } else if (source.method === 'GET' && source.body) { + console.warn('WebView: `source.body` is not supported when using GET.'); + } + + var nativeConfig = this.props.nativeConfig || {}; + var NativeWebView = nativeConfig.component || RCTWebView; + var webView = React.createElement(NativeWebView, babelHelpers.extends({ + ref: RCT_WEBVIEW_REF, + key: "webViewKey", + style: webViewStyles, + source: resolveAssetSource(source), + scalesPageToFit: this.props.scalesPageToFit, + injectedJavaScript: this.props.injectedJavaScript, + userAgent: this.props.userAgent, + javaScriptEnabled: this.props.javaScriptEnabled, + thirdPartyCookiesEnabled: this.props.thirdPartyCookiesEnabled, + domStorageEnabled: this.props.domStorageEnabled, + messagingEnabled: typeof this.props.onMessage === 'function', + onMessage: this.onMessage, + contentInset: this.props.contentInset, + automaticallyAdjustContentInsets: this.props.automaticallyAdjustContentInsets, + onContentSizeChange: this.props.onContentSizeChange, + onLoadingStart: this.onLoadingStart, + onLoadingFinish: this.onLoadingFinish, + onLoadingError: this.onLoadingError, + testID: this.props.testID, + mediaPlaybackRequiresUserAction: this.props.mediaPlaybackRequiresUserAction, + allowUniversalAccessFromFileURLs: this.props.allowUniversalAccessFromFileURLs, + mixedContentMode: this.props.mixedContentMode, + saveFormDataDisabled: this.props.saveFormDataDisabled, + urlPrefixesForDefaultIntent: this.props.urlPrefixesForDefaultIntent + }, nativeConfig.props, { + __source: { + fileName: _jsxFileName, + lineNumber: 296 + } + })); + return React.createElement( + View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 325 + } + }, + webView, + otherView + ); + } + }], [{ + key: "extraNativeComponentConfig", + get: function get() { + return { + nativeOnly: { + messagingEnabled: PropTypes.bool + } + }; + } + }]); + return WebView; + }(React.Component); + + WebView.propTypes = babelHelpers.extends({}, ViewPropTypes, { + renderError: PropTypes.func, + renderLoading: PropTypes.func, + onLoad: PropTypes.func, + onLoadEnd: PropTypes.func, + onLoadStart: PropTypes.func, + onError: PropTypes.func, + automaticallyAdjustContentInsets: PropTypes.bool, + contentInset: EdgeInsetsPropType, + onNavigationStateChange: PropTypes.func, + onMessage: PropTypes.func, + onContentSizeChange: PropTypes.func, + startInLoadingState: PropTypes.bool, + style: ViewPropTypes.style, + html: deprecatedPropType(PropTypes.string, 'Use the `source` prop instead.'), + url: deprecatedPropType(PropTypes.string, 'Use the `source` prop instead.'), + source: PropTypes.oneOfType([PropTypes.shape({ + uri: PropTypes.string, + method: PropTypes.oneOf(['GET', 'POST']), + headers: PropTypes.object, + body: PropTypes.string + }), PropTypes.shape({ + html: PropTypes.string, + baseUrl: PropTypes.string + }), PropTypes.number]), + javaScriptEnabled: PropTypes.bool, + thirdPartyCookiesEnabled: PropTypes.bool, + domStorageEnabled: PropTypes.bool, + injectedJavaScript: PropTypes.string, + scalesPageToFit: PropTypes.bool, + userAgent: PropTypes.string, + testID: PropTypes.string, + mediaPlaybackRequiresUserAction: PropTypes.bool, + allowUniversalAccessFromFileURLs: PropTypes.bool, + injectJavaScript: PropTypes.func, + mixedContentMode: PropTypes.oneOf(['never', 'always', 'compatibility']), + saveFormDataDisabled: PropTypes.bool, + nativeConfig: PropTypes.shape({ + component: PropTypes.any, + props: PropTypes.object, + viewManager: PropTypes.object + }), + urlPrefixesForDefaultIntent: PropTypes.arrayOf(PropTypes.string) + }); + WebView.defaultProps = { + javaScriptEnabled: true, + thirdPartyCookiesEnabled: true, + scalesPageToFit: true, + saveFormDataDisabled: false + }; + var RCTWebView = requireNativeComponent('RCTWebView', WebView, WebView.extraNativeComponentConfig); + var styles = StyleSheet.create({ + container: { + flex: 1 + }, + hidden: { + height: 0, + flex: 0 + }, + loadingView: { + flex: 1, + justifyContent: 'center', + alignItems: 'center' + }, + loadingProgressBar: { + height: 20 + } + }); + module.exports = WebView; +},350,[173,166,171,24,74,209,158,211,172,184,191,186,201],"WebView"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTActionSheetManager = require(_dependencyMap[0], 'NativeModules').ActionSheetManager; + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var processColor = require(_dependencyMap[2], 'processColor'); + + var ActionSheetIOS = { + showActionSheetWithOptions: function showActionSheetWithOptions(options, callback) { + invariant(typeof options === 'object' && options !== null, 'Options must be a valid object'); + invariant(typeof callback === 'function', 'Must provide a valid callback'); + RCTActionSheetManager.showActionSheetWithOptions(babelHelpers.extends({}, options, { + tintColor: processColor(options.tintColor) + }), callback); + }, + showShareActionSheetWithOptions: function showShareActionSheetWithOptions(options, failureCallback, successCallback) { + invariant(typeof options === 'object' && options !== null, 'Options must be a valid object'); + invariant(typeof failureCallback === 'function', 'Must provide a valid failureCallback'); + invariant(typeof successCallback === 'function', 'Must provide a valid successCallback'); + RCTActionSheetManager.showShareActionSheetWithOptions(babelHelpers.extends({}, options, { + tintColor: processColor(options.tintColor) + }), failureCallback, successCallback); + } + }; + module.exports = ActionSheetIOS; +},351,[68,18,193],"ActionSheetIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var BatchedBridge = require(_dependencyMap[0], 'BatchedBridge'); + + var BugReporting = require(_dependencyMap[1], 'BugReporting'); + + var NativeModules = require(_dependencyMap[2], 'NativeModules'); + + var ReactNative = require(_dependencyMap[3], 'ReactNative'); + + var SceneTracker = require(_dependencyMap[4], 'SceneTracker'); + + var infoLog = require(_dependencyMap[5], 'infoLog'); + + var invariant = require(_dependencyMap[6], 'fbjs/lib/invariant'); + + var renderApplication = require(_dependencyMap[7], 'renderApplication'); + + var runnables = {}; + var runCount = 1; + var sections = {}; + var tasks = new Map(); + + var componentProviderInstrumentationHook = function componentProviderInstrumentationHook(component) { + return component(); + }; + + var wrapperComponentProvider = void 0; + var AppRegistry = { + setWrapperComponentProvider: function setWrapperComponentProvider(provider) { + wrapperComponentProvider = provider; + }, + registerConfig: function registerConfig(config) { + config.forEach(function (appConfig) { + if (appConfig.run) { + AppRegistry.registerRunnable(appConfig.appKey, appConfig.run); + } else { + invariant(appConfig.component != null, 'AppRegistry.registerConfig(...): Every config is expected to set ' + 'either `run` or `component`, but `%s` has neither.', appConfig.appKey); + AppRegistry.registerComponent(appConfig.appKey, appConfig.component, appConfig.section); + } + }); + }, + registerComponent: function registerComponent(appKey, componentProvider, section) { + runnables[appKey] = { + componentProvider: componentProvider, + run: function run(appParameters) { + return renderApplication(componentProviderInstrumentationHook(componentProvider), appParameters.initialProps, appParameters.rootTag, wrapperComponentProvider && wrapperComponentProvider(appParameters)); + } + }; + + if (section) { + sections[appKey] = runnables[appKey]; + } + + return appKey; + }, + registerRunnable: function registerRunnable(appKey, run) { + runnables[appKey] = { + run: run + }; + return appKey; + }, + registerSection: function registerSection(appKey, component) { + AppRegistry.registerComponent(appKey, component, true); + }, + getAppKeys: function getAppKeys() { + return Object.keys(runnables); + }, + getSectionKeys: function getSectionKeys() { + return Object.keys(sections); + }, + getSections: function getSections() { + return babelHelpers.extends({}, sections); + }, + getRunnable: function getRunnable(appKey) { + return runnables[appKey]; + }, + getRegistry: function getRegistry() { + return { + sections: AppRegistry.getSectionKeys(), + runnables: babelHelpers.extends({}, runnables) + }; + }, + setComponentProviderInstrumentationHook: function setComponentProviderInstrumentationHook(hook) { + componentProviderInstrumentationHook = hook; + }, + runApplication: function runApplication(appKey, appParameters) { + var msg = 'Running application "' + appKey + '" with appParams: ' + JSON.stringify(appParameters) + '. ' + '__DEV__ === ' + String(__DEV__) + ', development-level warning are ' + (__DEV__ ? 'ON' : 'OFF') + ', performance optimizations are ' + (__DEV__ ? 'OFF' : 'ON'); + infoLog(msg); + BugReporting.addSource('AppRegistry.runApplication' + runCount++, function () { + return msg; + }); + invariant(runnables[appKey] && runnables[appKey].run, 'Application ' + appKey + ' has not been registered.\n\n' + "Hint: This error often happens when you're running the packager " + '(local dev server) from a wrong folder. For example you have ' + 'multiple apps and the packager is still running for the app you ' + 'were working on before.\nIf this is the case, simply kill the old ' + 'packager instance (e.g. close the packager terminal window) ' + 'and start the packager in the correct app folder (e.g. cd into app ' + "folder and run 'npm start').\n\n" + 'This error can also happen due to a require() error during ' + 'initialization or failure to call AppRegistry.registerComponent.\n\n'); + SceneTracker.setActiveScene({ + name: appKey + }); + runnables[appKey].run(appParameters); + }, + unmountApplicationComponentAtRootTag: function unmountApplicationComponentAtRootTag(rootTag) { + ReactNative.unmountComponentAtNodeAndRemoveContainer(rootTag); + }, + registerHeadlessTask: function registerHeadlessTask(taskKey, task) { + if (tasks.has(taskKey)) { + console.warn("registerHeadlessTask called multiple times for same key '" + taskKey + "'"); + } + + tasks.set(taskKey, task); + }, + startHeadlessTask: function startHeadlessTask(taskId, taskKey, data) { + var taskProvider = tasks.get(taskKey); + + if (!taskProvider) { + throw new Error("No task registered for key " + taskKey); + } + + taskProvider()(data).then(function () { + return NativeModules.HeadlessJsTaskSupport.notifyTaskFinished(taskId); + }).catch(function (reason) { + console.error(reason); + NativeModules.HeadlessJsTaskSupport.notifyTaskFinished(taskId); + }); + } + }; + BatchedBridge.registerCallableModule('AppRegistry', AppRegistry); + module.exports = AppRegistry; +},352,[69,353,68,74,355,145,18,356],"AppRegistry"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTDeviceEventEmitter = require(_dependencyMap[0], 'RCTDeviceEventEmitter'); + + var Map = require(_dependencyMap[1], 'Map'); + + var infoLog = require(_dependencyMap[2], 'infoLog'); + + function defaultExtras() { + BugReporting.addFileSource('react_hierarchy.txt', function () { + return require(_dependencyMap[3], 'dumpReactTree')(); + }); + } + + var BugReporting = function () { + function BugReporting() { + babelHelpers.classCallCheck(this, BugReporting); + } + + babelHelpers.createClass(BugReporting, null, [{ + key: "_maybeInit", + value: function _maybeInit() { + if (!BugReporting._subscription) { + BugReporting._subscription = RCTDeviceEventEmitter.addListener('collectBugExtraData', BugReporting.collectExtraData, null); + defaultExtras(); + } + } + }, { + key: "addSource", + value: function addSource(key, callback) { + return this._addSource(key, callback, BugReporting._extraSources); + } + }, { + key: "addFileSource", + value: function addFileSource(key, callback) { + return this._addSource(key, callback, BugReporting._fileSources); + } + }, { + key: "_addSource", + value: function _addSource(key, callback, source) { + BugReporting._maybeInit(); + + if (source.has(key)) { + console.warn("BugReporting.add* called multiple times for same key '" + key + "'"); + } + + source.set(key, callback); + return { + remove: function remove() { + source.delete(key); + } + }; + } + }, { + key: "collectExtraData", + value: function collectExtraData() { + var extraData = {}; + + for (var _iterator = BugReporting._extraSources, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]();;) { + var _ref3; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref3 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref3 = _i.value; + } + + var _ref = _ref3; + + var _ref2 = babelHelpers.slicedToArray(_ref, 2); + + var _key = _ref2[0]; + var callback = _ref2[1]; + extraData[_key] = callback(); + } + + var fileData = {}; + + for (var _iterator2 = BugReporting._fileSources, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]();;) { + var _ref6; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref6 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref6 = _i2.value; + } + + var _ref4 = _ref6; + + var _ref5 = babelHelpers.slicedToArray(_ref4, 2); + + var _key2 = _ref5[0]; + var _callback = _ref5[1]; + fileData[_key2] = _callback(); + } + + infoLog('BugReporting extraData:', extraData); + + var BugReportingNativeModule = require(_dependencyMap[4], 'NativeModules').BugReporting; + + BugReportingNativeModule && BugReportingNativeModule.setExtraData && BugReportingNativeModule.setExtraData(extraData, fileData); + return { + extras: extraData, + files: fileData + }; + } + }]); + return BugReporting; + }(); + + BugReporting._extraSources = new Map(); + BugReporting._fileSources = new Map(); + BugReporting._subscription = null; + module.exports = BugReporting; +},353,[121,79,145,354,68],"BugReporting"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + function dumpReactTree() { + try { + return getReactTree(); + } catch (e) { + return 'Failed to dump react tree: ' + e; + } + } + + function getReactTree() { + return 'React tree dumps have been temporarily disabled while React is ' + 'upgraded to Fiber.'; + } + + module.exports = dumpReactTree; +},354,[],"dumpReactTree"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _listeners = []; + var _activeScene = { + name: 'default' + }; + var SceneTracker = { + setActiveScene: function setActiveScene(scene) { + _activeScene = scene; + + _listeners.forEach(function (listener) { + return listener(_activeScene); + }); + }, + getActiveScene: function getActiveScene() { + return _activeScene; + }, + addActiveSceneChangedListener: function addActiveSceneChangedListener(callback) { + _listeners.push(callback); + + return { + remove: function remove() { + _listeners = _listeners.filter(function (listener) { + return callback !== listener; + }); + } + }; + } + }; + module.exports = SceneTracker; +},355,[],"SceneTracker"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native/Libraries/ReactNative/renderApplication.js"; + + var AppContainer = require(_dependencyMap[0], 'AppContainer'); + + var React = require(_dependencyMap[1], 'React'); + + var ReactNative = require(_dependencyMap[2], 'ReactNative'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + require(_dependencyMap[4], 'BackHandler'); + + function renderApplication(RootComponent, initialProps, rootTag, WrapperComponent) { + invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag); + var renderable = React.createElement( + AppContainer, + { + rootTag: rootTag, + WrapperComponent: WrapperComponent, + __source: { + fileName: _jsxFileName, + lineNumber: 34 + } + }, + React.createElement(RootComponent, babelHelpers.extends({}, initialProps, { + rootTag: rootTag, + __source: { + fileName: _jsxFileName, + lineNumber: 35 + } + })) + ); + + if (RootComponent.prototype != null && RootComponent.prototype.unstable_isAsyncReactComponent === true) { + var AppContainerAsyncWrapper = function (_React$unstable_Async) { + babelHelpers.inherits(AppContainerAsyncWrapper, _React$unstable_Async); + + function AppContainerAsyncWrapper() { + babelHelpers.classCallCheck(this, AppContainerAsyncWrapper); + return babelHelpers.possibleConstructorReturn(this, (AppContainerAsyncWrapper.__proto__ || Object.getPrototypeOf(AppContainerAsyncWrapper)).apply(this, arguments)); + } + + babelHelpers.createClass(AppContainerAsyncWrapper, [{ + key: "render", + value: function render() { + return this.props.children; + } + }]); + return AppContainerAsyncWrapper; + }(React.unstable_AsyncComponent); + + renderable = React.createElement( + AppContainerAsyncWrapper, + { + __source: { + fileName: _jsxFileName, + lineNumber: 54 + } + }, + renderable + ); + } + + ReactNative.render(renderable, rootTag); + } + + module.exports = renderApplication; +},356,[302,171,74,18,357],"renderApplication"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var DeviceEventManager = require(_dependencyMap[0], 'NativeModules').DeviceEventManager; + + var RCTDeviceEventEmitter = require(_dependencyMap[1], 'RCTDeviceEventEmitter'); + + var DEVICE_BACK_EVENT = 'hardwareBackPress'; + + var _backPressSubscriptions = new Set(); + + RCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function () { + var invokeDefault = true; + var subscriptions = Array.from(_backPressSubscriptions.values()).reverse(); + + for (var i = 0; i < subscriptions.length; ++i) { + if (subscriptions[i]()) { + invokeDefault = false; + break; + } + } + + if (invokeDefault) { + BackHandler.exitApp(); + } + }); + var BackHandler = { + exitApp: function exitApp() { + DeviceEventManager.invokeDefaultBackPressHandler(); + }, + addEventListener: function addEventListener(eventName, handler) { + _backPressSubscriptions.add(handler); + + return { + remove: function remove() { + return BackHandler.removeEventListener(eventName, handler); + } + }; + }, + removeEventListener: function removeEventListener(eventName, handler) { + _backPressSubscriptions.delete(handler); + } + }; + module.exports = BackHandler; +},357,[68,121],"BackHandler"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeModules = require(_dependencyMap[0], 'NativeModules'); + + var RCTAsyncStorage = NativeModules.AsyncRocksDBStorage || NativeModules.AsyncSQLiteDBStorage || NativeModules.AsyncLocalStorage; + var AsyncStorage = { + _getRequests: [], + _getKeys: [], + _immediate: null, + getItem: function getItem(key, callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.multiGet([key], function (errors, result) { + var value = result && result[0] && result[0][1] ? result[0][1] : null; + var errs = convertErrors(errors); + callback && callback(errs && errs[0], value); + + if (errs) { + reject(errs[0]); + } else { + resolve(value); + } + }); + }); + }, + setItem: function setItem(key, value, callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.multiSet([[key, value]], function (errors) { + var errs = convertErrors(errors); + callback && callback(errs && errs[0]); + + if (errs) { + reject(errs[0]); + } else { + resolve(null); + } + }); + }); + }, + removeItem: function removeItem(key, callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.multiRemove([key], function (errors) { + var errs = convertErrors(errors); + callback && callback(errs && errs[0]); + + if (errs) { + reject(errs[0]); + } else { + resolve(null); + } + }); + }); + }, + mergeItem: function mergeItem(key, value, callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.multiMerge([[key, value]], function (errors) { + var errs = convertErrors(errors); + callback && callback(errs && errs[0]); + + if (errs) { + reject(errs[0]); + } else { + resolve(null); + } + }); + }); + }, + clear: function clear(callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.clear(function (error) { + callback && callback(convertError(error)); + + if (error && convertError(error)) { + reject(convertError(error)); + } else { + resolve(null); + } + }); + }); + }, + getAllKeys: function getAllKeys(callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.getAllKeys(function (error, keys) { + callback && callback(convertError(error), keys); + + if (error) { + reject(convertError(error)); + } else { + resolve(keys); + } + }); + }); + }, + flushGetRequests: function flushGetRequests() { + var getRequests = this._getRequests; + var getKeys = this._getKeys; + this._getRequests = []; + this._getKeys = []; + RCTAsyncStorage.multiGet(getKeys, function (errors, result) { + var map = {}; + result && result.forEach(function (_ref) { + var _ref2 = babelHelpers.slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + + map[key] = value; + return value; + }); + var reqLength = getRequests.length; + + for (var i = 0; i < reqLength; i++) { + var request = getRequests[i]; + var requestKeys = request.keys; + var requestResult = requestKeys.map(function (key) { + return [key, map[key]]; + }); + request.callback && request.callback(null, requestResult); + request.resolve && request.resolve(requestResult); + } + }); + }, + multiGet: function multiGet(keys, callback) { + var _this = this; + + if (!this._immediate) { + this._immediate = setImmediate(function () { + _this._immediate = null; + + _this.flushGetRequests(); + }); + } + + var getRequest = { + keys: keys, + callback: callback, + keyIndex: this._getKeys.length, + resolve: null, + reject: null + }; + var promiseResult = new Promise(function (resolve, reject) { + getRequest.resolve = resolve; + getRequest.reject = reject; + }); + + this._getRequests.push(getRequest); + + keys.forEach(function (key) { + if (_this._getKeys.indexOf(key) === -1) { + _this._getKeys.push(key); + } + }); + return promiseResult; + }, + multiSet: function multiSet(keyValuePairs, callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.multiSet(keyValuePairs, function (errors) { + var error = convertErrors(errors); + callback && callback(error); + + if (error) { + reject(error); + } else { + resolve(null); + } + }); + }); + }, + multiRemove: function multiRemove(keys, callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.multiRemove(keys, function (errors) { + var error = convertErrors(errors); + callback && callback(error); + + if (error) { + reject(error); + } else { + resolve(null); + } + }); + }); + }, + multiMerge: function multiMerge(keyValuePairs, callback) { + return new Promise(function (resolve, reject) { + RCTAsyncStorage.multiMerge(keyValuePairs, function (errors) { + var error = convertErrors(errors); + callback && callback(error); + + if (error) { + reject(error); + } else { + resolve(null); + } + }); + }); + } + }; + + if (!RCTAsyncStorage.multiMerge) { + delete AsyncStorage.mergeItem; + delete AsyncStorage.multiMerge; + } + + function convertErrors(errs) { + if (!errs) { + return null; + } + + return (Array.isArray(errs) ? errs : [errs]).map(function (e) { + return convertError(e); + }); + } + + function convertError(error) { + if (!error) { + return null; + } + + var out = new Error(error.message); + out.key = error.key; + return out; + } + + module.exports = AsyncStorage; +},358,[68],"AsyncStorage"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var BackHandler = require(_dependencyMap[0], 'BackHandler'); + + var warning = require(_dependencyMap[1], 'fbjs/lib/warning'); + + var BackAndroid = { + exitApp: function exitApp() { + warning(false, 'BackAndroid is deprecated. Please use BackHandler instead.'); + BackHandler.exitApp(); + }, + addEventListener: function addEventListener(eventName, handler) { + warning(false, 'BackAndroid is deprecated. Please use BackHandler instead.'); + return BackHandler.addEventListener(eventName, handler); + }, + removeEventListener: function removeEventListener(eventName, handler) { + warning(false, 'BackAndroid is deprecated. Please use BackHandler instead.'); + BackHandler.removeEventListener(eventName, handler); + } + }; + module.exports = BackAndroid; +},359,[357,19],"BackAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var PropTypes = require(_dependencyMap[0], 'prop-types'); + + var checkPropTypes = PropTypes.checkPropTypes; + + var RCTCameraRollManager = require(_dependencyMap[1], 'NativeModules').CameraRollManager; + + var createStrictShapeTypeChecker = require(_dependencyMap[2], 'createStrictShapeTypeChecker'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var GROUP_TYPES_OPTIONS = { + Album: 'Album', + All: 'All', + Event: 'Event', + Faces: 'Faces', + Library: 'Library', + PhotoStream: 'PhotoStream', + SavedPhotos: 'SavedPhotos' + }; + var ASSET_TYPE_OPTIONS = { + All: 'All', + Videos: 'Videos', + Photos: 'Photos' + }; + var getPhotosParamChecker = createStrictShapeTypeChecker({ + first: PropTypes.number.isRequired, + after: PropTypes.string, + groupTypes: PropTypes.oneOf(Object.keys(GROUP_TYPES_OPTIONS)), + groupName: PropTypes.string, + assetType: PropTypes.oneOf(Object.keys(ASSET_TYPE_OPTIONS)), + mimeTypes: PropTypes.arrayOf(PropTypes.string) + }); + var getPhotosReturnChecker = createStrictShapeTypeChecker({ + edges: PropTypes.arrayOf(createStrictShapeTypeChecker({ + node: createStrictShapeTypeChecker({ + type: PropTypes.string.isRequired, + group_name: PropTypes.string.isRequired, + image: createStrictShapeTypeChecker({ + uri: PropTypes.string.isRequired, + height: PropTypes.number.isRequired, + width: PropTypes.number.isRequired, + isStored: PropTypes.bool, + playableDuration: PropTypes.number.isRequired + }).isRequired, + timestamp: PropTypes.number.isRequired, + location: createStrictShapeTypeChecker({ + latitude: PropTypes.number, + longitude: PropTypes.number, + altitude: PropTypes.number, + heading: PropTypes.number, + speed: PropTypes.number + }) + }).isRequired + })).isRequired, + page_info: createStrictShapeTypeChecker({ + has_next_page: PropTypes.bool.isRequired, + start_cursor: PropTypes.string, + end_cursor: PropTypes.string + }).isRequired + }); + + var CameraRoll = function () { + function CameraRoll() { + babelHelpers.classCallCheck(this, CameraRoll); + } + + babelHelpers.createClass(CameraRoll, null, [{ + key: "saveImageWithTag", + value: function saveImageWithTag(tag) { + console.warn('`CameraRoll.saveImageWithTag()` is deprecated. Use `CameraRoll.saveToCameraRoll()` instead.'); + return this.saveToCameraRoll(tag, 'photo'); + } + }, { + key: "deletePhotos", + value: function deletePhotos(photos) { + return RCTCameraRollManager.deletePhotos(photos); + } + }, { + key: "saveToCameraRoll", + value: function saveToCameraRoll(tag, type) { + invariant(typeof tag === 'string', 'CameraRoll.saveToCameraRoll must be a valid string.'); + invariant(type === 'photo' || type === 'video' || type === undefined, "The second argument to saveToCameraRoll must be 'photo' or 'video'. You passed " + (type || 'unknown')); + var mediaType = 'photo'; + + if (type) { + mediaType = type; + } else if (['mov', 'mp4'].indexOf(tag.split('.').slice(-1)[0]) >= 0) { + mediaType = 'video'; + } + + return RCTCameraRollManager.saveToCameraRoll(tag, mediaType); + } + }, { + key: "getPhotos", + value: function getPhotos(params) { + if (__DEV__) { + checkPropTypes({ + params: getPhotosParamChecker + }, { + params: params + }, 'params', 'CameraRoll.getPhotos'); + } + + if (arguments.length > 1) { + console.warn('CameraRoll.getPhotos(tag, success, error) is deprecated. Use the returned Promise instead'); + var successCallback = arguments[1]; + + if (__DEV__) { + var callback = arguments[1]; + + successCallback = function successCallback(response) { + checkPropTypes({ + response: getPhotosReturnChecker + }, { + response: response + }, 'response', 'CameraRoll.getPhotos callback'); + callback(response); + }; + } + + var errorCallback = arguments[2] || function () {}; + + RCTCameraRollManager.getPhotos(params).then(successCallback, errorCallback); + } + + return RCTCameraRollManager.getPhotos(params); + } + }]); + return CameraRoll; + }(); + + CameraRoll.GroupTypesOptions = GROUP_TYPES_OPTIONS; + CameraRoll.AssetTypeOptions = ASSET_TYPE_OPTIONS; + module.exports = CameraRoll; +},360,[24,68,174,18],"CameraRoll"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Clipboard = require(_dependencyMap[0], 'NativeModules').Clipboard; + + module.exports = { + getString: function getString() { + return Clipboard.getString(); + }, + setString: function setString(content) { + Clipboard.setString(content); + } + }; +},361,[68],"Clipboard"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var DatePickerModule = require(_dependencyMap[0], 'NativeModules').DatePickerAndroid; + + function _toMillis(options, key) { + var dateVal = options[key]; + + if (typeof dateVal === 'object' && typeof dateVal.getMonth === 'function') { + options[key] = dateVal.getTime(); + } + } + + var DatePickerAndroid = function () { + function DatePickerAndroid() { + babelHelpers.classCallCheck(this, DatePickerAndroid); + } + + babelHelpers.createClass(DatePickerAndroid, null, [{ + key: "open", + value: function open(options) { + var optionsMs; + return regeneratorRuntime.async(function open$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + optionsMs = options; + + if (optionsMs) { + _toMillis(options, 'date'); + + _toMillis(options, 'minDate'); + + _toMillis(options, 'maxDate'); + } + + return _context.abrupt("return", DatePickerModule.open(options)); + + case 3: + case "end": + return _context.stop(); + } + } + }, null, this); + } + }, { + key: "dateSetAction", + get: function get() { + return 'dateSetAction'; + } + }, { + key: "dismissedAction", + get: function get() { + return 'dismissedAction'; + } + }]); + return DatePickerAndroid; + }(); + + module.exports = DatePickerAndroid; +},362,[68],"DatePickerAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTImagePicker = require(_dependencyMap[0], 'NativeModules').ImagePickerIOS; + + var ImagePickerIOS = { + canRecordVideos: function canRecordVideos(callback) { + return RCTImagePicker.canRecordVideos(callback); + }, + canUseCamera: function canUseCamera(callback) { + return RCTImagePicker.canUseCamera(callback); + }, + openCameraDialog: function openCameraDialog(config, successCallback, cancelCallback) { + config = babelHelpers.extends({ + videoMode: false + }, config); + return RCTImagePicker.openCameraDialog(config, successCallback, cancelCallback); + }, + openSelectDialog: function openSelectDialog(config, successCallback, cancelCallback) { + config = babelHelpers.extends({ + showImages: true, + showVideos: false + }, config); + return RCTImagePicker.openSelectDialog(config, successCallback, cancelCallback); + } + }; + module.exports = ImagePickerIOS; +},363,[68],"ImagePickerIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeEventEmitter = require(_dependencyMap[0], 'NativeEventEmitter'); + + var NativeModules = require(_dependencyMap[1], 'NativeModules'); + + var Platform = require(_dependencyMap[2], 'Platform'); + + var invariant = require(_dependencyMap[3], 'fbjs/lib/invariant'); + + var LinkingManager = Platform.OS === 'android' ? NativeModules.IntentAndroid : NativeModules.LinkingManager; + + var Linking = function (_NativeEventEmitter) { + babelHelpers.inherits(Linking, _NativeEventEmitter); + + function Linking() { + babelHelpers.classCallCheck(this, Linking); + return babelHelpers.possibleConstructorReturn(this, (Linking.__proto__ || Object.getPrototypeOf(Linking)).call(this, LinkingManager)); + } + + babelHelpers.createClass(Linking, [{ + key: "addEventListener", + value: function addEventListener(type, handler) { + this.addListener(type, handler); + } + }, { + key: "removeEventListener", + value: function removeEventListener(type, handler) { + this.removeListener(type, handler); + } + }, { + key: "openURL", + value: function openURL(url) { + this._validateURL(url); + + return LinkingManager.openURL(url); + } + }, { + key: "canOpenURL", + value: function canOpenURL(url) { + this._validateURL(url); + + return LinkingManager.canOpenURL(url); + } + }, { + key: "getInitialURL", + value: function getInitialURL() { + return LinkingManager.getInitialURL(); + } + }, { + key: "_validateURL", + value: function _validateURL(url) { + invariant(typeof url === 'string', 'Invalid URL: should be a string. Was: ' + url); + invariant(url, 'Invalid URL: cannot be empty'); + } + }]); + return Linking; + }(NativeEventEmitter); + + module.exports = new Linking(); +},364,[120,68,105,18],"Linking"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Map = require(_dependencyMap[0], 'Map'); + + var NativeEventEmitter = require(_dependencyMap[1], 'NativeEventEmitter'); + + var NativeModules = require(_dependencyMap[2], 'NativeModules'); + + var Platform = require(_dependencyMap[3], 'Platform'); + + var RCTNetInfo = NativeModules.NetInfo; + var NetInfoEventEmitter = new NativeEventEmitter(RCTNetInfo); + var DEVICE_CONNECTIVITY_EVENT = 'networkStatusDidChange'; + + var _subscriptions = new Map(); + + var _isConnectedDeprecated = void 0; + + if (Platform.OS === 'ios') { + _isConnectedDeprecated = function _isConnectedDeprecated(reachability) { + return reachability !== 'none' && reachability !== 'unknown'; + }; + } else if (Platform.OS === 'android') { + _isConnectedDeprecated = function _isConnectedDeprecated(connectionType) { + return connectionType !== 'NONE' && connectionType !== 'UNKNOWN'; + }; + } + + function _isConnected(connection) { + return connection.type !== 'none' && connection.type !== 'unknown'; + } + + var _isConnectedSubscriptions = new Map(); + + var NetInfo = { + addEventListener: function addEventListener(eventName, handler) { + var listener = void 0; + + if (eventName === 'connectionChange') { + listener = NetInfoEventEmitter.addListener(DEVICE_CONNECTIVITY_EVENT, function (appStateData) { + handler({ + type: appStateData.connectionType, + effectiveType: appStateData.effectiveConnectionType + }); + }); + } else if (eventName === 'change') { + console.warn('NetInfo\'s "change" event is deprecated. Listen to the "connectionChange" event instead.'); + listener = NetInfoEventEmitter.addListener(DEVICE_CONNECTIVITY_EVENT, function (appStateData) { + handler(appStateData.network_info); + }); + } else { + console.warn('Trying to subscribe to unknown event: "' + eventName + '"'); + return { + remove: function remove() {} + }; + } + + _subscriptions.set(handler, listener); + + return { + remove: function remove() { + return NetInfo.removeEventListener(eventName, handler); + } + }; + }, + removeEventListener: function removeEventListener(eventName, handler) { + var listener = _subscriptions.get(handler); + + if (!listener) { + return; + } + + listener.remove(); + + _subscriptions.delete(handler); + }, + fetch: function fetch() { + console.warn('NetInfo.fetch() is deprecated. Use NetInfo.getConnectionInfo() instead.'); + return RCTNetInfo.getCurrentConnectivity().then(function (resp) { + return resp.network_info; + }); + }, + getConnectionInfo: function getConnectionInfo() { + return RCTNetInfo.getCurrentConnectivity().then(function (resp) { + return { + type: resp.connectionType, + effectiveType: resp.effectiveConnectionType + }; + }); + }, + isConnected: { + addEventListener: function addEventListener(eventName, handler) { + var listener = function listener(connection) { + if (eventName === 'change') { + handler(_isConnectedDeprecated(connection)); + } else if (eventName === 'connectionChange') { + handler(_isConnected(connection)); + } + }; + + _isConnectedSubscriptions.set(handler, listener); + + NetInfo.addEventListener(eventName, listener); + return { + remove: function remove() { + return NetInfo.isConnected.removeEventListener(eventName, handler); + } + }; + }, + removeEventListener: function removeEventListener(eventName, handler) { + var listener = _isConnectedSubscriptions.get(handler); + + NetInfo.removeEventListener(eventName, listener); + + _isConnectedSubscriptions.delete(handler); + }, + fetch: function fetch() { + return NetInfo.getConnectionInfo().then(_isConnected); + } + }, + isConnectionExpensive: function isConnectionExpensive() { + return Platform.OS === 'android' ? RCTNetInfo.isConnectionMetered() : Promise.reject(new Error('Currently not supported on iOS')); + } + }; + module.exports = NetInfo; +},365,[79,120,68,105],"NetInfo"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeEventEmitter = require(_dependencyMap[0], 'NativeEventEmitter'); + + var RCTPushNotificationManager = require(_dependencyMap[1], 'NativeModules').PushNotificationManager; + + var invariant = require(_dependencyMap[2], 'fbjs/lib/invariant'); + + var PushNotificationEmitter = new NativeEventEmitter(RCTPushNotificationManager); + + var _notifHandlers = new Map(); + + var DEVICE_NOTIF_EVENT = 'remoteNotificationReceived'; + var NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered'; + var NOTIF_REGISTRATION_ERROR_EVENT = 'remoteNotificationRegistrationError'; + var DEVICE_LOCAL_NOTIF_EVENT = 'localNotificationReceived'; + + var PushNotificationIOS = function () { + babelHelpers.createClass(PushNotificationIOS, null, [{ + key: "presentLocalNotification", + value: function presentLocalNotification(details) { + RCTPushNotificationManager.presentLocalNotification(details); + } + }, { + key: "scheduleLocalNotification", + value: function scheduleLocalNotification(details) { + RCTPushNotificationManager.scheduleLocalNotification(details); + } + }, { + key: "cancelAllLocalNotifications", + value: function cancelAllLocalNotifications() { + RCTPushNotificationManager.cancelAllLocalNotifications(); + } + }, { + key: "removeAllDeliveredNotifications", + value: function removeAllDeliveredNotifications() { + RCTPushNotificationManager.removeAllDeliveredNotifications(); + } + }, { + key: "getDeliveredNotifications", + value: function getDeliveredNotifications(callback) { + RCTPushNotificationManager.getDeliveredNotifications(callback); + } + }, { + key: "removeDeliveredNotifications", + value: function removeDeliveredNotifications(identifiers) { + RCTPushNotificationManager.removeDeliveredNotifications(identifiers); + } + }, { + key: "setApplicationIconBadgeNumber", + value: function setApplicationIconBadgeNumber(number) { + RCTPushNotificationManager.setApplicationIconBadgeNumber(number); + } + }, { + key: "getApplicationIconBadgeNumber", + value: function getApplicationIconBadgeNumber(callback) { + RCTPushNotificationManager.getApplicationIconBadgeNumber(callback); + } + }, { + key: "cancelLocalNotifications", + value: function cancelLocalNotifications(userInfo) { + RCTPushNotificationManager.cancelLocalNotifications(userInfo); + } + }, { + key: "getScheduledLocalNotifications", + value: function getScheduledLocalNotifications(callback) { + RCTPushNotificationManager.getScheduledLocalNotifications(callback); + } + }, { + key: "addEventListener", + value: function addEventListener(type, handler) { + invariant(type === 'notification' || type === 'register' || type === 'registrationError' || type === 'localNotification', 'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events'); + var listener; + + if (type === 'notification') { + listener = PushNotificationEmitter.addListener(DEVICE_NOTIF_EVENT, function (notifData) { + handler(new PushNotificationIOS(notifData)); + }); + } else if (type === 'localNotification') { + listener = PushNotificationEmitter.addListener(DEVICE_LOCAL_NOTIF_EVENT, function (notifData) { + handler(new PushNotificationIOS(notifData)); + }); + } else if (type === 'register') { + listener = PushNotificationEmitter.addListener(NOTIF_REGISTER_EVENT, function (registrationInfo) { + handler(registrationInfo.deviceToken); + }); + } else if (type === 'registrationError') { + listener = PushNotificationEmitter.addListener(NOTIF_REGISTRATION_ERROR_EVENT, function (errorInfo) { + handler(errorInfo); + }); + } + + _notifHandlers.set(type, listener); + } + }, { + key: "removeEventListener", + value: function removeEventListener(type, handler) { + invariant(type === 'notification' || type === 'register' || type === 'registrationError' || type === 'localNotification', 'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events'); + + var listener = _notifHandlers.get(type); + + if (!listener) { + return; + } + + listener.remove(); + + _notifHandlers.delete(type); + } + }, { + key: "requestPermissions", + value: function requestPermissions(permissions) { + var requestedPermissions = {}; + + if (permissions) { + requestedPermissions = { + alert: !!permissions.alert, + badge: !!permissions.badge, + sound: !!permissions.sound + }; + } else { + requestedPermissions = { + alert: true, + badge: true, + sound: true + }; + } + + return RCTPushNotificationManager.requestPermissions(requestedPermissions); + } + }, { + key: "abandonPermissions", + value: function abandonPermissions() { + RCTPushNotificationManager.abandonPermissions(); + } + }, { + key: "checkPermissions", + value: function checkPermissions(callback) { + invariant(typeof callback === 'function', 'Must provide a valid callback'); + RCTPushNotificationManager.checkPermissions(callback); + } + }, { + key: "getInitialNotification", + value: function getInitialNotification() { + return RCTPushNotificationManager.getInitialNotification().then(function (notification) { + return notification && new PushNotificationIOS(notification); + }); + } + }]); + + function PushNotificationIOS(nativeNotif) { + var _this = this; + + babelHelpers.classCallCheck(this, PushNotificationIOS); + this._data = {}; + this._remoteNotificationCompleteCallbackCalled = false; + this._isRemote = nativeNotif.remote; + + if (this._isRemote) { + this._notificationId = nativeNotif.notificationId; + } + + if (nativeNotif.remote) { + Object.keys(nativeNotif).forEach(function (notifKey) { + var notifVal = nativeNotif[notifKey]; + + if (notifKey === 'aps') { + _this._alert = notifVal.alert; + _this._sound = notifVal.sound; + _this._badgeCount = notifVal.badge; + _this._category = notifVal.category; + _this._contentAvailable = notifVal['content-available']; + } else { + _this._data[notifKey] = notifVal; + } + }); + } else { + this._badgeCount = nativeNotif.applicationIconBadgeNumber; + this._sound = nativeNotif.soundName; + this._alert = nativeNotif.alertBody; + this._data = nativeNotif.userInfo; + this._category = nativeNotif.category; + } + } + + babelHelpers.createClass(PushNotificationIOS, [{ + key: "finish", + value: function finish(fetchResult) { + if (!this._isRemote || !this._notificationId || this._remoteNotificationCompleteCallbackCalled) { + return; + } + + this._remoteNotificationCompleteCallbackCalled = true; + RCTPushNotificationManager.onFinishRemoteNotification(this._notificationId, fetchResult); + } + }, { + key: "getMessage", + value: function getMessage() { + return this._alert; + } + }, { + key: "getSound", + value: function getSound() { + return this._sound; + } + }, { + key: "getCategory", + value: function getCategory() { + return this._category; + } + }, { + key: "getAlert", + value: function getAlert() { + return this._alert; + } + }, { + key: "getContentAvailable", + value: function getContentAvailable() { + return this._contentAvailable; + } + }, { + key: "getBadgeCount", + value: function getBadgeCount() { + return this._badgeCount; + } + }, { + key: "getData", + value: function getData() { + return this._data; + } + }]); + return PushNotificationIOS; + }(); + + PushNotificationIOS.FetchResult = { + NewData: 'UIBackgroundFetchResultNewData', + NoData: 'UIBackgroundFetchResultNoData', + ResultFailed: 'UIBackgroundFetchResultFailed' + }; + module.exports = PushNotificationIOS; +},366,[120,68,18],"PushNotificationIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Settings = { + get: function get(key) { + console.warn('Settings is not yet supported on Android'); + return null; + }, + set: function set(settings) { + console.warn('Settings is not yet supported on Android'); + }, + watchKeys: function watchKeys(keys, callback) { + console.warn('Settings is not yet supported on Android'); + return -1; + }, + clearWatch: function clearWatch(watchId) { + console.warn('Settings is not yet supported on Android'); + } + }; + module.exports = Settings; +},367,[],"Settings"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var Platform = require(_dependencyMap[0], 'Platform'); + + var invariant = require(_dependencyMap[1], 'fbjs/lib/invariant'); + + var processColor = require(_dependencyMap[2], 'processColor'); + + var _require = require(_dependencyMap[3], 'NativeModules'), + ActionSheetManager = _require.ActionSheetManager, + ShareModule = _require.ShareModule; + + var Share = function () { + function Share() { + babelHelpers.classCallCheck(this, Share); + } + + babelHelpers.createClass(Share, null, [{ + key: "share", + value: function share(content) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + invariant(typeof content === 'object' && content !== null, 'Content to share must be a valid object'); + invariant(typeof content.url === 'string' || typeof content.message === 'string', 'At least one of URL and message is required'); + invariant(typeof options === 'object' && options !== null, 'Options must be a valid object'); + + if (Platform.OS === 'android') { + invariant(!content.title || typeof content.title === 'string', 'Invalid title: title should be a string.'); + return ShareModule.share(content, options.dialogTitle); + } else if (Platform.OS === 'ios') { + return new Promise(function (resolve, reject) { + ActionSheetManager.showShareActionSheetWithOptions(babelHelpers.extends({}, content, options, { + tintColor: processColor(options.tintColor) + }), function (error) { + return reject(error); + }, function (success, activityType) { + if (success) { + resolve({ + 'action': 'sharedAction', + 'activityType': activityType + }); + } else { + resolve({ + 'action': 'dismissedAction' + }); + } + }); + }); + } else { + return Promise.reject(new Error('Unsupported platform')); + } + } + }, { + key: "sharedAction", + get: function get() { + return 'sharedAction'; + } + }, { + key: "dismissedAction", + get: function get() { + return 'dismissedAction'; + } + }]); + return Share; + }(); + + module.exports = Share; +},368,[105,18,193,68],"Share"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var NativeEventEmitter = require(_dependencyMap[0], 'NativeEventEmitter'); + + module.exports = new NativeEventEmitter('StatusBarManager'); +},369,[120],"StatusBarIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var TimePickerModule = require(_dependencyMap[0], 'NativeModules').TimePickerAndroid; + + var TimePickerAndroid = function () { + function TimePickerAndroid() { + babelHelpers.classCallCheck(this, TimePickerAndroid); + } + + babelHelpers.createClass(TimePickerAndroid, null, [{ + key: "open", + value: function open(options) { + return regeneratorRuntime.async(function open$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", TimePickerModule.open(options)); + + case 1: + case "end": + return _context.stop(); + } + } + }, null, this); + } + }, { + key: "timeSetAction", + get: function get() { + return 'timeSetAction'; + } + }, { + key: "dismissedAction", + get: function get() { + return 'dismissedAction'; + } + }]); + return TimePickerAndroid; + }(); + + module.exports = TimePickerAndroid; +},370,[68],"TimePickerAndroid"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var RCTVibration = require(_dependencyMap[0], 'NativeModules').Vibration; + + var Platform = require(_dependencyMap[1], 'Platform'); + + var _vibrating = false; + var _id = 0; + + function vibrateByPattern(pattern) { + var repeat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (_vibrating) { + return; + } + + _vibrating = true; + + if (pattern[0] === 0) { + RCTVibration.vibrate(); + pattern = pattern.slice(1); + } + + if (pattern.length === 0) { + _vibrating = false; + return; + } + + setTimeout(function () { + return vibrateScheduler(++_id, pattern, repeat, 1); + }, pattern[0]); + } + + function vibrateScheduler(id, pattern, repeat, nextIndex) { + if (!_vibrating || id !== _id) { + return; + } + + RCTVibration.vibrate(); + + if (nextIndex >= pattern.length) { + if (repeat) { + nextIndex = 0; + } else { + _vibrating = false; + return; + } + } + + setTimeout(function () { + return vibrateScheduler(id, pattern, repeat, nextIndex + 1); + }, pattern[nextIndex]); + } + + var Vibration = { + vibrate: function vibrate() { + var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 400; + var repeat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (Platform.OS === 'android') { + if (typeof pattern === 'number') { + RCTVibration.vibrate(pattern); + } else if (Array.isArray(pattern)) { + RCTVibration.vibrateByPattern(pattern, repeat ? 0 : -1); + } else { + throw new Error('Vibration pattern should be a number or array'); + } + } else { + if (_vibrating) { + return; + } + + if (typeof pattern === 'number') { + RCTVibration.vibrate(); + } else if (Array.isArray(pattern)) { + vibrateByPattern(pattern, repeat); + } else { + throw new Error('Vibration pattern should be a number or array'); + } + } + }, + cancel: function cancel() { + if (Platform.OS === 'ios') { + _vibrating = false; + } else { + RCTVibration.cancel(); + } + } + }; + module.exports = Vibration; +},371,[68,105],"Vibration"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var warning = require(_dependencyMap[0], 'fbjs/lib/warning'); + + var VibrationIOS = { + vibrate: function vibrate() { + warning('VibrationIOS is not supported on this platform!'); + } + }; + module.exports = VibrationIOS; +},372,[19],"VibrationIOS"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var _require = require(_dependencyMap[0], 'ReactNative'), + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _require.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + + module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.takeSnapshot; +},373,[74],"takeSnapshot"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _view = require(_dependencyMap[2], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state, props) { + return { + claim: (0, _lbryRedux.makeSelectClaimForUri)(props.uri)(state), + fileInfo: (0, _lbryRedux.makeSelectFileInfoForUri)(props.uri)(state), + metadata: (0, _lbryRedux.makeSelectMetadataForUri)(props.uri)(state), + rewardedContentClaimIds: (0, _lbryRedux.selectRewardContentClaimIds)(state, props), + isResolvingUri: (0, _lbryRedux.makeSelectIsUriResolving)(props.uri)(state) + }; + }; + + var perform = function perform(dispatch) { + return { + resolveUri: function resolveUri(uri) { + return dispatch((0, _lbryRedux.doResolveUri)(uri)); + } + }; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},374,[22,62,375],"LBRYApp/src/component/fileItem/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/component/fileItem/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _reactNavigation = require(_dependencyMap[2], "react-navigation"); + + var _reactNative = require(_dependencyMap[3], "react-native"); + + var _fileItemMedia = require(_dependencyMap[4], "../fileItemMedia"); + + var _fileItemMedia2 = babelHelpers.interopRequireDefault(_fileItemMedia); + + var _filePrice = require(_dependencyMap[5], "../filePrice"); + + var _filePrice2 = babelHelpers.interopRequireDefault(_filePrice); + + var _discover = require(_dependencyMap[6], "../../styles/discover"); + + var _discover2 = babelHelpers.interopRequireDefault(_discover); + + var FileItem = function (_React$PureComponent) { + babelHelpers.inherits(FileItem, _React$PureComponent); + + function FileItem(props) { + babelHelpers.classCallCheck(this, FileItem); + return babelHelpers.possibleConstructorReturn(this, (FileItem.__proto__ || Object.getPrototypeOf(FileItem)).call(this, props)); + } + + babelHelpers.createClass(FileItem, [{ + key: "componentWillMount", + value: function componentWillMount() { + this.resolve(this.props); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this.resolve(nextProps); + } + }, { + key: "resolve", + value: function resolve(props) { + var isResolvingUri = props.isResolvingUri, + resolveUri = props.resolveUri, + claim = props.claim, + uri = props.uri; + + if (!isResolvingUri && claim === undefined && uri) { + resolveUri(uri); + } + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _props = this.props, + claim = _props.claim, + fileInfo = _props.fileInfo, + metadata = _props.metadata, + isResolvingUri = _props.isResolvingUri, + rewardedContentClaimIds = _props.rewardedContentClaimIds, + style = _props.style; + var uri = (0, _lbryRedux.normalizeURI)(this.props.uri); + var title = metadata && metadata.title ? metadata.title : uri; + var thumbnail = metadata && metadata.thumbnail ? metadata.thumbnail : null; + var obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; + var isRewardContent = claim && rewardedContentClaimIds.includes(claim.claim_id); + var channelName = claim ? claim.channel_name : null; + var description = ''; + + if (isResolvingUri && !claim) { + description = 'Loading...'; + } else if (metadata && metadata.description) { + description = metadata.description; + } else if (claim === null) { + description = 'This address contains no content.'; + } + + return _react2.default.createElement( + _reactNative.TouchableOpacity, + { + style: style, + onPress: function onPress() { + _this2.props.navigation.navigate('File', { + uri: uri + }); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 57 + } + }, + _react2.default.createElement(_fileItemMedia2.default, { + title: title, + thumbnail: thumbnail, + __source: { + fileName: _jsxFileName, + lineNumber: 61 + } + }), + _react2.default.createElement(_filePrice2.default, { + uri: uri, + style: _discover2.default.filePriceContainer, + textStyle: _discover2.default.filePriceText, + __source: { + fileName: _jsxFileName, + lineNumber: 62 + } + }), + _react2.default.createElement( + _reactNative.Text, + { + style: _discover2.default.fileItemName, + __source: { + fileName: _jsxFileName, + lineNumber: 63 + } + }, + title + ), + channelName && _react2.default.createElement( + _reactNative.Text, + { + style: _discover2.default.channelName, + __source: { + fileName: _jsxFileName, + lineNumber: 65 + } + }, + channelName + ) + ); + } + }]); + return FileItem; + }(_react2.default.PureComponent); + + exports.default = FileItem; +},375,[12,62,376,66,449,452,454],"LBRYApp/src/component/fileItem/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = { + get createNavigationContainer() { + return require(_dependencyMap[0], './createNavigationContainer').default; + }, + + get StateUtils() { + return require(_dependencyMap[1], './StateUtils').default; + }, + + get addNavigationHelpers() { + return require(_dependencyMap[2], './addNavigationHelpers').default; + }, + + get NavigationActions() { + return require(_dependencyMap[3], './NavigationActions').default; + }, + + get createNavigator() { + return require(_dependencyMap[4], './navigators/createNavigator').default; + }, + + get StackNavigator() { + return require(_dependencyMap[5], './navigators/StackNavigator').default; + }, + + get SwitchNavigator() { + return require(_dependencyMap[6], './navigators/SwitchNavigator').default; + }, + + get TabNavigator() { + return require(_dependencyMap[7], './navigators/TabNavigator').default; + }, + + get DrawerNavigator() { + return require(_dependencyMap[8], './navigators/DrawerNavigator').default; + }, + + get StackRouter() { + return require(_dependencyMap[9], './routers/StackRouter').default; + }, + + get TabRouter() { + return require(_dependencyMap[10], './routers/TabRouter').default; + }, + + get SwitchRouter() { + return require(_dependencyMap[11], './routers/SwitchRouter').default; + }, + + get Transitioner() { + return require(_dependencyMap[12], './views/Transitioner').default; + }, + + get CardStackTransitioner() { + return require(_dependencyMap[13], './views/CardStack/CardStackTransitioner').default; + }, + + get CardStack() { + return require(_dependencyMap[14], './views/CardStack/CardStack').default; + }, + + get Card() { + return require(_dependencyMap[15], './views/CardStack/Card').default; + }, + + get SafeAreaView() { + return require(_dependencyMap[16], 'react-native-safe-area-view').default; + }, + + get Header() { + return require(_dependencyMap[17], './views/Header/Header').default; + }, + + get HeaderTitle() { + return require(_dependencyMap[18], './views/Header/HeaderTitle').default; + }, + + get HeaderBackButton() { + return require(_dependencyMap[19], './views/Header/HeaderBackButton').default; + }, + + get DrawerView() { + return require(_dependencyMap[20], './views/Drawer/DrawerView').default; + }, + + get DrawerItems() { + return require(_dependencyMap[21], './views/Drawer/DrawerNavigatorItems').default; + }, + + get TabView() { + return require(_dependencyMap[22], './views/TabView/TabView').default; + }, + + get TabBarTop() { + return require(_dependencyMap[23], './views/TabView/TabBarTop').default; + }, + + get TabBarBottom() { + return require(_dependencyMap[24], './views/TabView/TabBarBottom').default; + }, + + get SwitchView() { + return require(_dependencyMap[25], './views/SwitchView/SwitchView').default; + }, + + get withNavigation() { + return require(_dependencyMap[26], './views/withNavigation').default; + }, + + get withNavigationFocus() { + return require(_dependencyMap[27], './views/withNavigationFocus').default; + } + + }; +},376,[377,382,380,379,383,384,420,424,441,411,425,421,408,385,386,388,392,391,394,395,443,446,426,438,440,422,447,448],"react-navigation/src/react-navigation.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/createNavigationContainer.js"; + exports.default = createNavigationContainer; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _PlatformHelpers = require(_dependencyMap[2], "./PlatformHelpers"); + + var _NavigationActions = require(_dependencyMap[3], "./NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _addNavigationHelpers = require(_dependencyMap[4], "./addNavigationHelpers"); + + var _addNavigationHelpers2 = babelHelpers.interopRequireDefault(_addNavigationHelpers); + + var _invariant = require(_dependencyMap[5], "./utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + function createNavigationContainer(Component) { + var NavigationContainer = function (_React$Component) { + babelHelpers.inherits(NavigationContainer, _React$Component); + + function NavigationContainer(props) { + babelHelpers.classCallCheck(this, NavigationContainer); + + var _this = babelHelpers.possibleConstructorReturn(this, (NavigationContainer.__proto__ || Object.getPrototypeOf(NavigationContainer)).call(this, props)); + + _this.subs = null; + _this._actionEventSubscribers = new Set(); + + _this._handleOpenURL = function (_ref) { + var url = _ref.url; + + var parsedUrl = _this._urlToPathAndParams(url); + + if (parsedUrl) { + var path = parsedUrl.path, + params = parsedUrl.params; + var action = Component.router.getActionForPathAndParams(path, params); + + if (action) { + _this.dispatch(action); + } + } + }; + + _this.dispatch = function (action) { + if (!_this._isStateful()) { + return false; + } + + _this._nav = _this._nav || _this.state.nav; + var oldNav = _this._nav; + (0, _invariant2.default)(oldNav, 'should be set in constructor if stateful'); + var nav = Component.router.getStateForAction(action, oldNav); + + var dispatchActionEvents = function dispatchActionEvents() { + _this._actionEventSubscribers.forEach(function (subscriber) { + return subscriber({ + type: 'action', + action: action, + state: nav, + lastState: oldNav + }); + }); + }; + + if (nav && nav !== oldNav) { + _this._nav = nav; + + _this.setState({ + nav: nav + }, function () { + _this._onNavigationStateChange(oldNav, nav, action); + + dispatchActionEvents(); + }); + + return true; + } else { + dispatchActionEvents(); + } + + return false; + }; + + _this._validateProps(props); + + _this._initialAction = _NavigationActions2.default.init(); + + if (_this._isStateful()) { + _this.subs = _PlatformHelpers.BackHandler.addEventListener('hardwareBackPress', function () { + if (!_this._isMounted) { + _this.subs && _this.subs.remove(); + } else { + return _this.dispatch(_NavigationActions2.default.back()); + } + }); + } + + _this.state = { + nav: _this._isStateful() ? Component.router.getStateForAction(_this._initialAction) : null + }; + return _this; + } + + babelHelpers.createClass(NavigationContainer, [{ + key: "_isStateful", + value: function _isStateful() { + return !this.props.navigation; + } + }, { + key: "_validateProps", + value: function _validateProps(props) { + if (this._isStateful()) { + return; + } + + var navigation = props.navigation, + screenProps = props.screenProps, + containerProps = babelHelpers.objectWithoutProperties(props, ["navigation", "screenProps"]); + var keys = Object.keys(containerProps); + + if (keys.length !== 0) { + throw new Error('This navigator has both navigation and container props, so it is ' + ("unclear if it should own its own state. Remove props: \"" + keys.join(', ') + "\" ") + 'if the navigator should get its state from the navigation prop. If the ' + 'navigator should maintain its own state, do not pass a navigation prop.'); + } + } + }, { + key: "_urlToPathAndParams", + value: function _urlToPathAndParams(url) { + var params = {}; + var delimiter = this.props.uriPrefix || '://'; + var path = url.split(delimiter)[1]; + + if (typeof path === 'undefined') { + path = url; + } else if (path === '') { + path = '/'; + } + + return { + path: path, + params: params + }; + } + }, { + key: "_onNavigationStateChange", + value: function _onNavigationStateChange(prevNav, nav, action) { + if (typeof this.props.onNavigationStateChange === 'undefined' && this._isStateful() && !!process.env.REACT_NAV_LOGGING) { + if (console.group) { + console.group('Navigation Dispatch: '); + console.log('Action: ', action); + console.log('New State: ', nav); + console.log('Last State: ', prevNav); + console.groupEnd(); + } else { + console.log('Navigation Dispatch: ', { + action: action, + newState: nav, + lastState: prevNav + }); + } + + return; + } + + if (typeof this.props.onNavigationStateChange === 'function') { + this.props.onNavigationStateChange(prevNav, nav, action); + } + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this._validateProps(nextProps); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + if (this._nav === this.state.nav) { + this._nav = null; + } + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + this._isMounted = true; + + if (!this._isStateful()) { + return; + } + + _reactNative.Linking.addEventListener('url', this._handleOpenURL); + + _reactNative.Linking.getInitialURL().then(function (url) { + return url && _this2._handleOpenURL({ + url: url + }); + }); + + this._actionEventSubscribers.forEach(function (subscriber) { + return subscriber({ + type: 'action', + action: _this2._initialAction, + state: _this2.state.nav, + lastState: null + }); + }); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._isMounted = false; + + _reactNative.Linking.removeEventListener('url', this._handleOpenURL); + + this.subs && this.subs.remove(); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var navigation = this.props.navigation; + + if (this._isStateful()) { + var nav = this.state.nav; + (0, _invariant2.default)(nav, 'should be set in constructor if stateful'); + + if (!this._navigation || this._navigation.state !== nav) { + this._navigation = (0, _addNavigationHelpers2.default)({ + dispatch: this.dispatch, + state: nav, + addListener: function addListener(eventName, handler) { + if (eventName !== 'action') { + return { + remove: function remove() {} + }; + } + + _this3._actionEventSubscribers.add(handler); + + return { + remove: function remove() { + _this3._actionEventSubscribers.delete(handler); + } + }; + } + }); + } + + navigation = this._navigation; + } + + (0, _invariant2.default)(navigation, 'failed to get navigation'); + return _react2.default.createElement(Component, babelHelpers.extends({}, this.props, { + navigation: navigation, + __source: { + fileName: _jsxFileName, + lineNumber: 226 + } + })); + } + }]); + return NavigationContainer; + }(_react2.default.Component); + + NavigationContainer.router = Component.router; + NavigationContainer.navigationOptions = null; + return NavigationContainer; + } +},377,[12,66,378,379,380,381],"react-navigation/src/createNavigationContainer.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.MaskedViewIOS = exports.BackHandler = undefined; + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var BackHandler = _reactNative.BackHandler || _reactNative.BackAndroid; + exports.BackHandler = BackHandler; + exports.MaskedViewIOS = _reactNative.MaskedViewIOS; +},378,[66],"react-navigation/src/PlatformHelpers.native.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var BACK = 'Navigation/BACK'; + var INIT = 'Navigation/INIT'; + var NAVIGATE = 'Navigation/NAVIGATE'; + var POP = 'Navigation/POP'; + var POP_TO_TOP = 'Navigation/POP_TO_TOP'; + var PUSH = 'Navigation/PUSH'; + var RESET = 'Navigation/RESET'; + var REPLACE = 'Navigation/REPLACE'; + var SET_PARAMS = 'Navigation/SET_PARAMS'; + var URI = 'Navigation/URI'; + var COMPLETE_TRANSITION = 'Navigation/COMPLETE_TRANSITION'; + + var createAction = function createAction(type, fn) { + fn.toString = function () { + return type; + }; + + return fn; + }; + + var back = createAction(BACK, function () { + var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return { + type: BACK, + key: payload.key, + immediate: payload.immediate + }; + }); + var init = createAction(INIT, function () { + var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = { + type: INIT + }; + + if (payload.params) { + action.params = payload.params; + } + + return action; + }); + var navigate = createAction(NAVIGATE, function (payload) { + var action = { + type: NAVIGATE, + routeName: payload.routeName + }; + + if (payload.params) { + action.params = payload.params; + } + + if (payload.action) { + action.action = payload.action; + } + + if (payload.key) { + action.key = payload.key; + } + + return action; + }); + var pop = createAction(POP, function (payload) { + return { + type: POP, + n: payload && payload.n, + immediate: payload && payload.immediate + }; + }); + var popToTop = createAction(POP_TO_TOP, function (payload) { + return { + type: POP_TO_TOP, + immediate: payload && payload.immediate, + key: payload && payload.key + }; + }); + var push = createAction(PUSH, function (payload) { + var action = { + type: PUSH, + routeName: payload.routeName + }; + + if (payload.params) { + action.params = payload.params; + } + + if (payload.action) { + action.action = payload.action; + } + + return action; + }); + var reset = createAction(RESET, function (payload) { + return { + type: RESET, + index: payload.index, + key: payload.key, + actions: payload.actions + }; + }); + var replace = createAction(REPLACE, function (payload) { + return { + type: REPLACE, + key: payload.key, + newKey: payload.newKey, + params: payload.params, + action: payload.action, + routeName: payload.routeName, + immediate: payload.immediate + }; + }); + var setParams = createAction(SET_PARAMS, function (payload) { + return { + type: SET_PARAMS, + key: payload.key, + params: payload.params + }; + }); + var uri = createAction(URI, function (payload) { + return { + type: URI, + uri: payload.uri + }; + }); + var completeTransition = createAction(COMPLETE_TRANSITION, function (payload) { + return { + type: COMPLETE_TRANSITION, + key: payload && payload.key + }; + }); + exports.default = { + BACK: BACK, + INIT: INIT, + NAVIGATE: NAVIGATE, + POP: POP, + POP_TO_TOP: POP_TO_TOP, + PUSH: PUSH, + RESET: RESET, + REPLACE: REPLACE, + SET_PARAMS: SET_PARAMS, + URI: URI, + COMPLETE_TRANSITION: COMPLETE_TRANSITION, + back: back, + init: init, + navigate: navigate, + pop: pop, + popToTop: popToTop, + push: push, + reset: reset, + replace: replace, + setParams: setParams, + uri: uri, + completeTransition: completeTransition + }; +},379,[],"react-navigation/src/NavigationActions.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + exports.default = function (navigation) { + return babelHelpers.extends({}, navigation, { + goBack: function goBack(key) { + var actualizedKey = key; + + if (key === undefined && navigation.state.key) { + (0, _invariant2.default)(typeof navigation.state.key === 'string', 'key should be a string'); + actualizedKey = navigation.state.key; + } + + return navigation.dispatch(_NavigationActions2.default.back({ + key: actualizedKey + })); + }, + navigate: function navigate(navigateTo, params, action) { + if (typeof navigateTo === 'string') { + return navigation.dispatch(_NavigationActions2.default.navigate({ + routeName: navigateTo, + params: params, + action: action + })); + } + + (0, _invariant2.default)(typeof navigateTo === 'object', 'Must navigateTo an object or a string'); + (0, _invariant2.default)(params == null, 'Params must not be provided to .navigate() when specifying an object'); + (0, _invariant2.default)(action == null, 'Child action must not be provided to .navigate() when specifying an object'); + return navigation.dispatch(_NavigationActions2.default.navigate(navigateTo)); + }, + pop: function pop(n, params) { + return navigation.dispatch(_NavigationActions2.default.pop({ + n: n, + immediate: params && params.immediate + })); + }, + popToTop: function popToTop(params) { + return navigation.dispatch(_NavigationActions2.default.popToTop({ + immediate: params && params.immediate + })); + }, + setParams: function setParams(params) { + (0, _invariant2.default)(navigation.state.key && typeof navigation.state.key === 'string', 'setParams cannot be called by root navigator'); + var key = navigation.state.key; + return navigation.dispatch(_NavigationActions2.default.setParams({ + params: params, + key: key + })); + }, + getParam: function getParam(paramName, defaultValue) { + var params = navigation.state.params; + + if (params && paramName in params) { + return params[paramName]; + } + + return defaultValue; + }, + push: function push(routeName, params, action) { + return navigation.dispatch(_NavigationActions2.default.push({ + routeName: routeName, + params: params, + action: action + })); + }, + replace: function replace(routeName, params, action) { + return navigation.dispatch(_NavigationActions2.default.replace({ + routeName: routeName, + params: params, + action: action, + key: navigation.state.key + })); + } + }); + }; + + var _NavigationActions = require(_dependencyMap[0], "./NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _invariant = require(_dependencyMap[1], "./utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); +},380,[379,381],"react-navigation/src/addNavigationHelpers.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var validateFormat = function validateFormat(format) {}; + + if (__DEV__) { + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; + } + + function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; + throw error; + } + } + + module.exports = invariant; +},381,[],"react-navigation/src/utils/invariant.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _invariant = require(_dependencyMap[0], "./utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var StateUtils = { + get: function get(state, key) { + return state.routes.find(function (route) { + return route.key === key; + }) || null; + }, + indexOf: function indexOf(state, key) { + return state.routes.map(function (route) { + return route.key; + }).indexOf(key); + }, + has: function has(state, key) { + return !!state.routes.some(function (route) { + return route.key === key; + }); + }, + push: function push(state, route) { + (0, _invariant2.default)(StateUtils.indexOf(state, route.key) === -1, 'should not push route with duplicated key %s', route.key); + var routes = state.routes.slice(); + routes.push(route); + return babelHelpers.extends({}, state, { + index: routes.length - 1, + routes: routes + }); + }, + pop: function pop(state) { + if (state.index <= 0) { + return state; + } + + var routes = state.routes.slice(0, -1); + return babelHelpers.extends({}, state, { + index: routes.length - 1, + routes: routes + }); + }, + jumpToIndex: function jumpToIndex(state, index) { + if (index === state.index) { + return state; + } + + (0, _invariant2.default)(!!state.routes[index], 'invalid index %s to jump to', index); + return babelHelpers.extends({}, state, { + index: index + }); + }, + jumpTo: function jumpTo(state, key) { + var index = StateUtils.indexOf(state, key); + return StateUtils.jumpToIndex(state, index); + }, + back: function back(state) { + var index = state.index - 1; + var route = state.routes[index]; + return route ? StateUtils.jumpToIndex(state, index) : state; + }, + forward: function forward(state) { + var index = state.index + 1; + var route = state.routes[index]; + return route ? StateUtils.jumpToIndex(state, index) : state; + }, + replaceAt: function replaceAt(state, key, route) { + var index = StateUtils.indexOf(state, key); + return StateUtils.replaceAtIndex(state, index, route); + }, + replaceAtIndex: function replaceAtIndex(state, index, route) { + (0, _invariant2.default)(!!state.routes[index], 'invalid index %s for replacing route %s', index, route.key); + + if (state.routes[index] === route) { + return state; + } + + var routes = state.routes.slice(); + routes[index] = route; + return babelHelpers.extends({}, state, { + index: index, + routes: routes + }); + }, + reset: function reset(state, routes, index) { + (0, _invariant2.default)(routes.length && Array.isArray(routes), 'invalid routes to replace'); + var nextIndex = index === undefined ? routes.length - 1 : index; + + if (state.routes.length === routes.length && state.index === nextIndex) { + var compare = function compare(route, ii) { + return routes[ii] === route; + }; + + if (state.routes.every(compare)) { + return state; + } + } + + (0, _invariant2.default)(!!routes[nextIndex], 'invalid index %s to reset', nextIndex); + return babelHelpers.extends({}, state, { + index: nextIndex, + routes: routes + }); + } + }; + exports.default = StateUtils; +},382,[381],"react-navigation/src/StateUtils.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/navigators/createNavigator.js"; + exports.default = createNavigator; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + function createNavigator(router, routeConfigs, navigatorConfig) { + return function (NavigationView) { + var Navigator = function (_React$Component) { + babelHelpers.inherits(Navigator, _React$Component); + + function Navigator() { + babelHelpers.classCallCheck(this, Navigator); + return babelHelpers.possibleConstructorReturn(this, (Navigator.__proto__ || Object.getPrototypeOf(Navigator)).apply(this, arguments)); + } + + babelHelpers.createClass(Navigator, [{ + key: "render", + value: function render() { + return _react2.default.createElement(NavigationView, babelHelpers.extends({}, this.props, { + router: router, + __source: { + fileName: _jsxFileName, + lineNumber: 13 + } + })); + } + }]); + return Navigator; + }(_react2.default.Component); + + Navigator.router = router; + Navigator.navigationOptions = null; + return Navigator; + }; + } +},383,[12],"react-navigation/src/navigators/createNavigator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/navigators/StackNavigator.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _createNavigationContainer = require(_dependencyMap[1], "../createNavigationContainer"); + + var _createNavigationContainer2 = babelHelpers.interopRequireDefault(_createNavigationContainer); + + var _createNavigator = require(_dependencyMap[2], "./createNavigator"); + + var _createNavigator2 = babelHelpers.interopRequireDefault(_createNavigator); + + var _CardStackTransitioner = require(_dependencyMap[3], "../views/CardStack/CardStackTransitioner"); + + var _CardStackTransitioner2 = babelHelpers.interopRequireDefault(_CardStackTransitioner); + + var _StackRouter = require(_dependencyMap[4], "../routers/StackRouter"); + + var _StackRouter2 = babelHelpers.interopRequireDefault(_StackRouter); + + var _NavigationActions = require(_dependencyMap[5], "../NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + exports.default = function (routeConfigMap) { + var stackConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var initialRouteKey = stackConfig.initialRouteKey, + initialRouteName = stackConfig.initialRouteName, + initialRouteParams = stackConfig.initialRouteParams, + paths = stackConfig.paths, + headerMode = stackConfig.headerMode, + headerTransitionPreset = stackConfig.headerTransitionPreset, + mode = stackConfig.mode, + cardStyle = stackConfig.cardStyle, + transitionConfig = stackConfig.transitionConfig, + onTransitionStart = stackConfig.onTransitionStart, + _onTransitionEnd = stackConfig.onTransitionEnd, + navigationOptions = stackConfig.navigationOptions; + var stackRouterConfig = { + initialRouteKey: initialRouteKey, + initialRouteName: initialRouteName, + initialRouteParams: initialRouteParams, + paths: paths, + navigationOptions: navigationOptions + }; + var router = (0, _StackRouter2.default)(routeConfigMap, stackRouterConfig); + var navigator = (0, _createNavigator2.default)(router, routeConfigMap, stackConfig)(function (props) { + return _react2.default.createElement(_CardStackTransitioner2.default, babelHelpers.extends({}, props, { + headerMode: headerMode, + headerTransitionPreset: headerTransitionPreset, + mode: mode, + cardStyle: cardStyle, + transitionConfig: transitionConfig, + onTransitionStart: onTransitionStart, + onTransitionEnd: function onTransitionEnd(lastTransition, transition) { + var _props$navigation = props.navigation, + state = _props$navigation.state, + dispatch = _props$navigation.dispatch; + dispatch(_NavigationActions2.default.completeTransition({ + key: state.key + })); + _onTransitionEnd && _onTransitionEnd(); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 41 + } + })); + }); + return (0, _createNavigationContainer2.default)(navigator); + }; +},384,[12,377,383,385,411,379],"react-navigation/src/navigators/StackNavigator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/CardStack/CardStackTransitioner.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _CardStack = require(_dependencyMap[2], "./CardStack"); + + var _CardStack2 = babelHelpers.interopRequireDefault(_CardStack); + + var _CardStackStyleInterpolator = require(_dependencyMap[3], "./CardStackStyleInterpolator"); + + var _CardStackStyleInterpolator2 = babelHelpers.interopRequireDefault(_CardStackStyleInterpolator); + + var _Transitioner = require(_dependencyMap[4], "../Transitioner"); + + var _Transitioner2 = babelHelpers.interopRequireDefault(_Transitioner); + + var _TransitionConfigs = require(_dependencyMap[5], "./TransitionConfigs"); + + var _TransitionConfigs2 = babelHelpers.interopRequireDefault(_TransitionConfigs); + + var NativeAnimatedModule = _reactNative.NativeModules && _reactNative.NativeModules.NativeAnimatedModule; + + var CardStackTransitioner = function (_React$Component) { + babelHelpers.inherits(CardStackTransitioner, _React$Component); + + function CardStackTransitioner() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, CardStackTransitioner); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = CardStackTransitioner.__proto__ || Object.getPrototypeOf(CardStackTransitioner)).call.apply(_ref, [this].concat(args))), _this), _this._configureTransition = function (transitionProps, prevTransitionProps) { + var isModal = _this.props.mode === 'modal'; + var transitionSpec = babelHelpers.extends({}, _TransitionConfigs2.default.getTransitionConfig(_this.props.transitionConfig, transitionProps, prevTransitionProps, isModal).transitionSpec); + + if (!!NativeAnimatedModule && _CardStackStyleInterpolator2.default.canUseNativeDriver()) { + transitionSpec.useNativeDriver = true; + } + + return transitionSpec; + }, _this._render = function (props, prevProps) { + var _this$props = _this.props, + screenProps = _this$props.screenProps, + headerMode = _this$props.headerMode, + headerTransitionPreset = _this$props.headerTransitionPreset, + mode = _this$props.mode, + router = _this$props.router, + cardStyle = _this$props.cardStyle, + transitionConfig = _this$props.transitionConfig; + return _react2.default.createElement(_CardStack2.default, { + screenProps: screenProps, + headerMode: headerMode, + headerTransitionPreset: headerTransitionPreset, + mode: mode, + router: router, + cardStyle: cardStyle, + transitionConfig: transitionConfig, + transitionProps: props, + prevTransitionProps: prevProps, + __source: { + fileName: _jsxFileName, + lineNumber: 67 + } + }); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(CardStackTransitioner, [{ + key: "render", + value: function render() { + return _react2.default.createElement(_Transitioner2.default, { + configureTransition: this._configureTransition, + navigation: this.props.navigation, + render: this._render, + onTransitionStart: this.props.onTransitionStart, + onTransitionEnd: this.props.onTransitionEnd, + __source: { + fileName: _jsxFileName, + lineNumber: 19 + } + }); + } + }]); + return CardStackTransitioner; + }(_react2.default.Component); + + CardStackTransitioner.defaultProps = { + mode: 'card' + }; + exports.default = CardStackTransitioner; +},385,[12,66,386,406,408,405],"react-navigation/src/views/CardStack/CardStackTransitioner.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/CardStack/CardStack.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _clamp = require(_dependencyMap[1], "clamp"); + + var _clamp2 = babelHelpers.interopRequireDefault(_clamp); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _Card = require(_dependencyMap[3], "./Card"); + + var _Card2 = babelHelpers.interopRequireDefault(_Card); + + var _Header = require(_dependencyMap[4], "../Header/Header"); + + var _Header2 = babelHelpers.interopRequireDefault(_Header); + + var _NavigationActions = require(_dependencyMap[5], "../../NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _addNavigationHelpers = require(_dependencyMap[6], "../../addNavigationHelpers"); + + var _addNavigationHelpers2 = babelHelpers.interopRequireDefault(_addNavigationHelpers); + + var _getChildEventSubscriber = require(_dependencyMap[7], "../../getChildEventSubscriber"); + + var _getChildEventSubscriber2 = babelHelpers.interopRequireDefault(_getChildEventSubscriber); + + var _SceneView = require(_dependencyMap[8], "../SceneView"); + + var _SceneView2 = babelHelpers.interopRequireDefault(_SceneView); + + var _TransitionConfigs = require(_dependencyMap[9], "./TransitionConfigs"); + + var _TransitionConfigs2 = babelHelpers.interopRequireDefault(_TransitionConfigs); + + var _ReactNativeFeatures = require(_dependencyMap[10], "../../utils/ReactNativeFeatures"); + + var ReactNativeFeatures = babelHelpers.interopRequireWildcard(_ReactNativeFeatures); + + var emptyFunction = function emptyFunction() {}; + + var EaseInOut = _reactNative.Easing.inOut(_reactNative.Easing.ease); + + var ANIMATION_DURATION = 500; + var POSITION_THRESHOLD = 1 / 2; + var RESPOND_THRESHOLD = 20; + var GESTURE_RESPONSE_DISTANCE_HORIZONTAL = 25; + var GESTURE_RESPONSE_DISTANCE_VERTICAL = 135; + + var animatedSubscribeValue = function animatedSubscribeValue(animatedValue) { + if (!animatedValue.__isNative) { + return; + } + + if (Object.keys(animatedValue._listeners).length === 0) { + animatedValue.addListener(emptyFunction); + } + }; + + var CardStack = function (_React$Component) { + babelHelpers.inherits(CardStack, _React$Component); + + function CardStack() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, CardStack); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = CardStack.__proto__ || Object.getPrototypeOf(CardStack)).call.apply(_ref, [this].concat(args))), _this), _this._gestureStartValue = 0, _this._isResponding = false, _this._immediateIndex = null, _this._screenDetails = {}, _this._childEventSubscribers = {}, _this._isRouteFocused = function (route) { + var state = _this.props.navigation.state; + var focusedRoute = state.routes[state.index]; + return route === focusedRoute; + }, _this._getScreenDetails = function (scene) { + var _this$props = _this.props, + screenProps = _this$props.screenProps, + navigation = _this$props.transitionProps.navigation, + router = _this$props.router; + var screenDetails = _this._screenDetails[scene.key]; + + if (!screenDetails || screenDetails.state !== scene.route) { + if (!_this._childEventSubscribers[scene.route.key]) { + _this._childEventSubscribers[scene.route.key] = (0, _getChildEventSubscriber2.default)(navigation.addListener, scene.route.key); + } + + var screenNavigation = (0, _addNavigationHelpers2.default)({ + dispatch: navigation.dispatch, + state: scene.route, + isFocused: _this._isRouteFocused.bind(_this, scene.route), + addListener: _this._childEventSubscribers[scene.route.key] + }); + screenDetails = { + state: scene.route, + navigation: screenNavigation, + options: router.getScreenOptions(screenNavigation, screenProps) + }; + _this._screenDetails[scene.key] = screenDetails; + } + + return screenDetails; + }, _this._getTransitionConfig = function () { + var isModal = _this.props.mode === 'modal'; + return _TransitionConfigs2.default.getTransitionConfig(_this.props.transitionConfig, _this.props.transitionProps, _this.props.prevTransitionProps, isModal); + }, _this._renderCard = function (scene) { + var _this$_getTransitionC = _this._getTransitionConfig(), + screenInterpolator = _this$_getTransitionC.screenInterpolator; + + var style = screenInterpolator && screenInterpolator(babelHelpers.extends({}, _this.props.transitionProps, { + scene: scene + })); + + var SceneComponent = _this.props.router.getComponentForRouteName(scene.route.routeName); + + var _this$props2 = _this.props, + transitionProps = _this$props2.transitionProps, + props = babelHelpers.objectWithoutProperties(_this$props2, ["transitionProps"]); + return _react2.default.createElement( + _Card2.default, + babelHelpers.extends({}, props, transitionProps, { + key: "card_" + scene.key, + style: [style, _this.props.cardStyle], + scene: scene, + __source: { + fileName: _jsxFileName, + lineNumber: 498 + } + }), + _this._renderInnerScene(SceneComponent, scene) + ); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(CardStack, [{ + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(props) { + var _this2 = this; + + if (props.screenProps !== this.props.screenProps) { + this._screenDetails = {}; + } + + props.transitionProps.scenes.forEach(function (newScene) { + if (_this2._screenDetails[newScene.key] && _this2._screenDetails[newScene.key].state !== newScene.route) { + _this2._screenDetails[newScene.key] = null; + } + }); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + var _this3 = this; + + var activeKeys = this.props.transitionProps.navigation.state.routes.map(function (route) { + return route.key; + }); + Object.keys(this._childEventSubscribers).forEach(function (key) { + if (!activeKeys.includes(key)) { + delete _this3._childEventSubscribers[key]; + } + }); + } + }, { + key: "_renderHeader", + value: function _renderHeader(scene, headerMode) { + var header = this._getScreenDetails(scene).options.header; + + if (typeof header !== 'undefined' && typeof header !== 'function') { + return header; + } + + var renderHeader = header || function (props) { + return _react2.default.createElement(_Header2.default, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 152 + } + })); + }; + + var _getTransitionConfig = this._getTransitionConfig(), + headerLeftInterpolator = _getTransitionConfig.headerLeftInterpolator, + headerTitleInterpolator = _getTransitionConfig.headerTitleInterpolator, + headerRightInterpolator = _getTransitionConfig.headerRightInterpolator; + + var _props = this.props, + mode = _props.mode, + transitionProps = _props.transitionProps, + prevTransitionProps = _props.prevTransitionProps, + passProps = babelHelpers.objectWithoutProperties(_props, ["mode", "transitionProps", "prevTransitionProps"]); + return renderHeader(babelHelpers.extends({}, passProps, transitionProps, { + scene: scene, + mode: headerMode, + transitionPreset: this._getHeaderTransitionPreset(), + getScreenDetails: this._getScreenDetails, + leftInterpolator: headerLeftInterpolator, + titleInterpolator: headerTitleInterpolator, + rightInterpolator: headerRightInterpolator + })); + } + }, { + key: "_animatedSubscribe", + value: function _animatedSubscribe(props) { + animatedSubscribeValue(props.transitionProps.layout.width); + animatedSubscribeValue(props.transitionProps.layout.height); + animatedSubscribeValue(props.transitionProps.position); + } + }, { + key: "_reset", + value: function _reset(resetToIndex, duration) { + if (_reactNative.Platform.OS === 'ios' && ReactNativeFeatures.supportsImprovedSpringAnimation()) { + _reactNative.Animated.spring(this.props.transitionProps.position, { + toValue: resetToIndex, + stiffness: 5000, + damping: 600, + mass: 3, + useNativeDriver: this.props.transitionProps.position.__isNative + }).start(); + } else { + _reactNative.Animated.timing(this.props.transitionProps.position, { + toValue: resetToIndex, + duration: duration, + easing: EaseInOut, + useNativeDriver: this.props.transitionProps.position.__isNative + }).start(); + } + } + }, { + key: "_goBack", + value: function _goBack(backFromIndex, duration) { + var _this4 = this; + + var _props$transitionProp = this.props.transitionProps, + navigation = _props$transitionProp.navigation, + position = _props$transitionProp.position, + scenes = _props$transitionProp.scenes; + var toValue = Math.max(backFromIndex - 1, 0); + this._immediateIndex = toValue; + + var onCompleteAnimation = function onCompleteAnimation() { + _this4._immediateIndex = null; + var backFromScene = scenes.find(function (s) { + return s.index === toValue + 1; + }); + + if (!_this4._isResponding && backFromScene) { + navigation.dispatch(_NavigationActions2.default.back({ + key: backFromScene.route.key, + immediate: true + })); + } + }; + + if (_reactNative.Platform.OS === 'ios' && ReactNativeFeatures.supportsImprovedSpringAnimation()) { + _reactNative.Animated.spring(position, { + toValue: toValue, + stiffness: 5000, + damping: 600, + mass: 3, + useNativeDriver: position.__isNative + }).start(onCompleteAnimation); + } else { + _reactNative.Animated.timing(position, { + toValue: toValue, + duration: duration, + easing: EaseInOut, + useNativeDriver: position.__isNative + }).start(onCompleteAnimation); + } + } + }, { + key: "render", + value: function render() { + var _this5 = this; + + var floatingHeader = null; + + var headerMode = this._getHeaderMode(); + + if (headerMode === 'float') { + floatingHeader = this._renderHeader(this.props.transitionProps.scene, headerMode); + } + + var _props2 = this.props, + _props2$transitionPro = _props2.transitionProps, + navigation = _props2$transitionPro.navigation, + position = _props2$transitionPro.position, + layout = _props2$transitionPro.layout, + scene = _props2$transitionPro.scene, + scenes = _props2$transitionPro.scenes, + mode = _props2.mode; + var index = navigation.state.index; + var isVertical = mode === 'modal'; + + var _getScreenDetails = this._getScreenDetails(scene), + options = _getScreenDetails.options; + + var gestureDirectionInverted = options.gestureDirection === 'inverted'; + var gesturesEnabled = typeof options.gesturesEnabled === 'boolean' ? options.gesturesEnabled : _reactNative.Platform.OS === 'ios'; + var responder = !gesturesEnabled ? null : _reactNative.PanResponder.create({ + onPanResponderTerminate: function onPanResponderTerminate() { + _this5._isResponding = false; + + _this5._reset(index, 0); + }, + onPanResponderGrant: function onPanResponderGrant() { + position.stopAnimation(function (value) { + _this5._isResponding = true; + _this5._gestureStartValue = value; + }); + }, + onMoveShouldSetPanResponder: function onMoveShouldSetPanResponder(event, gesture) { + if (index !== scene.index) { + return false; + } + + var immediateIndex = _this5._immediateIndex == null ? index : _this5._immediateIndex; + var currentDragDistance = gesture[isVertical ? 'dy' : 'dx']; + var currentDragPosition = event.nativeEvent[isVertical ? 'pageY' : 'pageX']; + var axisLength = isVertical ? layout.height.__getValue() : layout.width.__getValue(); + var axisHasBeenMeasured = !!axisLength; + var screenEdgeDistance = gestureDirectionInverted ? axisLength - (currentDragPosition - currentDragDistance) : currentDragPosition - currentDragDistance; + + var _getScreenDetails$opt = _this5._getScreenDetails(scene).options.gestureResponseDistance, + userGestureResponseDistance = _getScreenDetails$opt === undefined ? {} : _getScreenDetails$opt; + + var gestureResponseDistance = isVertical ? userGestureResponseDistance.vertical || GESTURE_RESPONSE_DISTANCE_VERTICAL : userGestureResponseDistance.horizontal || GESTURE_RESPONSE_DISTANCE_HORIZONTAL; + + if (screenEdgeDistance > gestureResponseDistance) { + return false; + } + + var hasDraggedEnough = Math.abs(currentDragDistance) > RESPOND_THRESHOLD; + var isOnFirstCard = immediateIndex === 0; + var shouldSetResponder = hasDraggedEnough && axisHasBeenMeasured && !isOnFirstCard; + return shouldSetResponder; + }, + onPanResponderMove: function onPanResponderMove(event, gesture) { + var startValue = _this5._gestureStartValue; + var axis = isVertical ? 'dy' : 'dx'; + var axisDistance = isVertical ? layout.height.__getValue() : layout.width.__getValue(); + var currentValue = (_reactNative.I18nManager.isRTL && axis === 'dx') !== gestureDirectionInverted ? startValue + gesture[axis] / axisDistance : startValue - gesture[axis] / axisDistance; + var value = (0, _clamp2.default)(index - 1, currentValue, index); + position.setValue(value); + }, + onPanResponderTerminationRequest: function onPanResponderTerminationRequest() { + return false; + }, + onPanResponderRelease: function onPanResponderRelease(event, gesture) { + if (!_this5._isResponding) { + return; + } + + _this5._isResponding = false; + var immediateIndex = _this5._immediateIndex == null ? index : _this5._immediateIndex; + var axisDistance = isVertical ? layout.height.__getValue() : layout.width.__getValue(); + var movementDirection = gestureDirectionInverted ? -1 : 1; + var movedDistance = movementDirection * gesture[isVertical ? 'dy' : 'dx']; + var gestureVelocity = movementDirection * gesture[isVertical ? 'vy' : 'vx']; + var defaultVelocity = axisDistance / ANIMATION_DURATION; + var velocity = Math.max(Math.abs(gestureVelocity), defaultVelocity); + var resetDuration = gestureDirectionInverted ? (axisDistance - movedDistance) / velocity : movedDistance / velocity; + var goBackDuration = gestureDirectionInverted ? movedDistance / velocity : (axisDistance - movedDistance) / velocity; + position.stopAnimation(function (value) { + if (gestureVelocity < -0.5) { + _this5._reset(immediateIndex, resetDuration); + + return; + } + + if (gestureVelocity > 0.5) { + _this5._goBack(immediateIndex, goBackDuration); + + return; + } + + if (value <= index - POSITION_THRESHOLD) { + _this5._goBack(immediateIndex, goBackDuration); + } else { + _this5._reset(immediateIndex, resetDuration); + } + }); + } + }); + var handlers = gesturesEnabled ? responder.panHandlers : {}; + var containerStyle = [styles.container, this._getTransitionConfig().containerStyle]; + return _react2.default.createElement( + _reactNative.View, + babelHelpers.extends({}, handlers, { + style: containerStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 413 + } + }), + _react2.default.createElement( + _reactNative.View, + { + style: styles.scenes, + __source: { + fileName: _jsxFileName, + lineNumber: 414 + } + }, + scenes.map(function (s) { + return _this5._renderCard(s); + }) + ), + floatingHeader + ); + } + }, { + key: "_getHeaderMode", + value: function _getHeaderMode() { + if (this.props.headerMode) { + return this.props.headerMode; + } + + if (_reactNative.Platform.OS === 'android' || this.props.mode === 'modal') { + return 'screen'; + } + + return 'float'; + } + }, { + key: "_getHeaderTransitionPreset", + value: function _getHeaderTransitionPreset() { + if (_reactNative.Platform.OS === 'android' || this._getHeaderMode() === 'screen') { + return 'fade-in-place'; + } + + if (this.props.headerTransitionPreset) { + return this.props.headerTransitionPreset; + } else { + return 'fade-in-place'; + } + } + }, { + key: "_renderInnerScene", + value: function _renderInnerScene(SceneComponent, scene) { + var _getScreenDetails2 = this._getScreenDetails(scene), + navigation = _getScreenDetails2.navigation; + + var screenProps = this.props.screenProps; + + var headerMode = this._getHeaderMode(); + + if (headerMode === 'screen') { + return _react2.default.createElement( + _reactNative.View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 453 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: { + flex: 1 + }, + __source: { + fileName: _jsxFileName, + lineNumber: 454 + } + }, + _react2.default.createElement(_SceneView2.default, { + screenProps: screenProps, + navigation: navigation, + component: SceneComponent, + __source: { + fileName: _jsxFileName, + lineNumber: 455 + } + }) + ), + this._renderHeader(scene, headerMode) + ); + } + + return _react2.default.createElement(_SceneView2.default, { + screenProps: this.props.screenProps, + navigation: navigation, + component: SceneComponent, + __source: { + fileName: _jsxFileName, + lineNumber: 466 + } + }); + } + }]); + return CardStack; + }(_react2.default.Component); + + var styles = _reactNative.StyleSheet.create({ + container: { + flex: 1, + flexDirection: 'column-reverse' + }, + scenes: { + flex: 1 + } + }); + + exports.default = CardStack; +},386,[12,387,66,388,391,379,380,403,404,405,407],"react-navigation/src/views/CardStack/CardStack.js"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = clamp; + + function clamp(value, min, max) { + return min < max ? value < min ? min : value > max ? max : value : value < max ? max : value > min ? min : value; + } +},387,[],"clamp/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/CardStack/Card.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _PointerEventsContainer = require(_dependencyMap[2], "./PointerEventsContainer"); + + var _PointerEventsContainer2 = babelHelpers.interopRequireDefault(_PointerEventsContainer); + + var Card = function (_React$Component) { + babelHelpers.inherits(Card, _React$Component); + + function Card() { + babelHelpers.classCallCheck(this, Card); + return babelHelpers.possibleConstructorReturn(this, (Card.__proto__ || Object.getPrototypeOf(Card)).apply(this, arguments)); + } + + babelHelpers.createClass(Card, [{ + key: "render", + value: function render() { + var _props = this.props, + children = _props.children, + pointerEvents = _props.pointerEvents, + style = _props.style; + return _react2.default.createElement( + _reactNative.Animated.View, + { + pointerEvents: pointerEvents, + ref: this.props.onComponentRef, + style: [styles.main, style], + __source: { + fileName: _jsxFileName, + lineNumber: 12 + } + }, + children + ); + } + }]); + return Card; + }(_react2.default.Component); + + var styles = _reactNative.StyleSheet.create({ + main: { + backgroundColor: '#EFEFF4', + bottom: 0, + left: 0, + position: 'absolute', + right: 0, + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 0 + }, + shadowOpacity: 0.2, + shadowRadius: 5, + top: 0 + } + }); + + Card = (0, _PointerEventsContainer2.default)(Card); + exports.default = Card; +},388,[12,66,389],"react-navigation/src/views/CardStack/Card.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/CardStack/PointerEventsContainer.js"; + exports.default = create; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _invariant = require(_dependencyMap[1], "../../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _AnimatedValueSubscription = require(_dependencyMap[2], "../AnimatedValueSubscription"); + + var _AnimatedValueSubscription2 = babelHelpers.interopRequireDefault(_AnimatedValueSubscription); + + var MIN_POSITION_OFFSET = 0.01; + + function create(Component) { + var Container = function (_React$Component) { + babelHelpers.inherits(Container, _React$Component); + + function Container(props, context) { + babelHelpers.classCallCheck(this, Container); + + var _this = babelHelpers.possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).call(this, props, context)); + + _this._pointerEvents = _this._computePointerEvents(); + return _this; + } + + babelHelpers.createClass(Container, [{ + key: "componentWillMount", + value: function componentWillMount() { + this._onPositionChange = this._onPositionChange.bind(this); + this._onComponentRef = this._onComponentRef.bind(this); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this._bindPosition(this.props); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._positionListener && this._positionListener.remove(); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this._bindPosition(nextProps); + } + }, { + key: "render", + value: function render() { + this._pointerEvents = this._computePointerEvents(); + return _react2.default.createElement(Component, babelHelpers.extends({}, this.props, { + pointerEvents: this._pointerEvents, + onComponentRef: this._onComponentRef, + __source: { + fileName: _jsxFileName, + lineNumber: 39 + } + })); + } + }, { + key: "_onComponentRef", + value: function _onComponentRef(component) { + this._component = component; + + if (component) { + (0, _invariant2.default)(typeof component.setNativeProps === 'function', 'component must implement method `setNativeProps`'); + } + } + }, { + key: "_bindPosition", + value: function _bindPosition(props) { + this._positionListener && this._positionListener.remove(); + this._positionListener = new _AnimatedValueSubscription2.default(props.position, this._onPositionChange); + } + }, { + key: "_onPositionChange", + value: function _onPositionChange() { + if (this._component) { + var pointerEvents = this._computePointerEvents(); + + if (this._pointerEvents !== pointerEvents) { + this._pointerEvents = pointerEvents; + + this._component.setNativeProps({ + pointerEvents: pointerEvents + }); + } + } + } + }, { + key: "_computePointerEvents", + value: function _computePointerEvents() { + var _props = this.props, + navigation = _props.navigation, + position = _props.position, + scene = _props.scene; + + if (scene.isStale || navigation.state.index !== scene.index) { + return scene.index > navigation.state.index ? 'box-only' : 'none'; + } + + var offset = position.__getAnimatedValue() - navigation.state.index; + + if (Math.abs(offset) > MIN_POSITION_OFFSET) { + return 'box-only'; + } + + return 'auto'; + } + }]); + return Container; + }(_react2.default.Component); + + return Container; + } +},389,[12,381,390],"react-navigation/src/views/CardStack/PointerEventsContainer.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var AnimatedValueSubscription = function () { + function AnimatedValueSubscription(value, callback) { + babelHelpers.classCallCheck(this, AnimatedValueSubscription); + this._value = value; + this._token = value.addListener(callback); + } + + babelHelpers.createClass(AnimatedValueSubscription, [{ + key: "remove", + value: function remove() { + this._value.removeListener(this._token); + } + }]); + return AnimatedValueSubscription; + }(); + + exports.default = AnimatedValueSubscription; +},390,[66],"react-navigation/src/views/AnimatedValueSubscription.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Header/Header.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _PlatformHelpers = require(_dependencyMap[2], "../../PlatformHelpers"); + + var _reactNativeSafeAreaView = require(_dependencyMap[3], "react-native-safe-area-view"); + + var _reactNativeSafeAreaView2 = babelHelpers.interopRequireDefault(_reactNativeSafeAreaView); + + var _HeaderTitle = require(_dependencyMap[4], "./HeaderTitle"); + + var _HeaderTitle2 = babelHelpers.interopRequireDefault(_HeaderTitle); + + var _HeaderBackButton = require(_dependencyMap[5], "./HeaderBackButton"); + + var _HeaderBackButton2 = babelHelpers.interopRequireDefault(_HeaderBackButton); + + var _ModularHeaderBackButton = require(_dependencyMap[6], "./ModularHeaderBackButton"); + + var _ModularHeaderBackButton2 = babelHelpers.interopRequireDefault(_ModularHeaderBackButton); + + var _HeaderStyleInterpolator = require(_dependencyMap[7], "./HeaderStyleInterpolator"); + + var _HeaderStyleInterpolator2 = babelHelpers.interopRequireDefault(_HeaderStyleInterpolator); + + var _withOrientation = require(_dependencyMap[8], "../withOrientation"); + + var _withOrientation2 = babelHelpers.interopRequireDefault(_withOrientation); + + var APPBAR_HEIGHT = _reactNative.Platform.OS === 'ios' ? 44 : 56; + var STATUSBAR_HEIGHT = _reactNative.Platform.OS === 'ios' ? 20 : 0; + var TITLE_OFFSET = _reactNative.Platform.OS === 'ios' ? 70 : 56; + + var getAppBarHeight = function getAppBarHeight(isLandscape) { + return _reactNative.Platform.OS === 'ios' ? isLandscape && !_reactNative.Platform.isPad ? 32 : 44 : 56; + }; + + var Header = function (_React$PureComponent) { + babelHelpers.inherits(Header, _React$PureComponent); + + function Header() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, Header); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = Header.__proto__ || Object.getPrototypeOf(Header)).call.apply(_ref, [this].concat(args))), _this), _this.state = { + widths: {} + }, _this._navigateBack = function () { + requestAnimationFrame(function () { + _this.props.navigation.goBack(_this.props.scene.route.key); + }); + }, _this._renderTitleComponent = function (props) { + var details = _this.props.getScreenDetails(props.scene); + + var headerTitle = details.options.headerTitle; + + if (_react2.default.isValidElement(headerTitle)) { + return headerTitle; + } + + var titleString = _this._getHeaderTitleString(props.scene); + + var titleStyle = details.options.headerTitleStyle; + var color = details.options.headerTintColor; + var allowFontScaling = details.options.headerTitleAllowFontScaling; + var onLayoutIOS = _reactNative.Platform.OS === 'ios' ? function (e) { + _this.setState({ + widths: babelHelpers.extends({}, _this.state.widths, babelHelpers.defineProperty({}, props.scene.key, e.nativeEvent.layout.width)) + }); + } : undefined; + var RenderedHeaderTitle = headerTitle && typeof headerTitle !== 'string' ? headerTitle : _HeaderTitle2.default; + return _react2.default.createElement( + RenderedHeaderTitle, + { + onLayout: onLayoutIOS, + allowFontScaling: allowFontScaling == null ? true : allowFontScaling, + style: [color ? { + color: color + } : null, titleStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 119 + } + }, + titleString + ); + }, _this._renderLeftComponent = function (props) { + var _this$props$getScreen = _this.props.getScreenDetails(props.scene), + options = _this$props$getScreen.options; + + if (_react2.default.isValidElement(options.headerLeft) || options.headerLeft === null) { + return options.headerLeft; + } + + if (props.scene.index === 0) { + return; + } + + var backButtonTitle = _this._getBackButtonTitleString(props.scene); + + var truncatedBackButtonTitle = _this._getTruncatedBackButtonTitle(props.scene); + + var width = _this.state.widths[props.scene.key] ? (_this.props.layout.initWidth - _this.state.widths[props.scene.key]) / 2 : undefined; + var RenderedLeftComponent = options.headerLeft || _HeaderBackButton2.default; + return _react2.default.createElement(RenderedLeftComponent, { + onPress: _this._navigateBack, + pressColorAndroid: options.headerPressColorAndroid, + tintColor: options.headerTintColor, + buttonImage: options.headerBackImage, + title: backButtonTitle, + truncatedTitle: truncatedBackButtonTitle, + titleStyle: options.headerBackTitleStyle, + width: width, + __source: { + fileName: _jsxFileName, + lineNumber: 152 + } + }); + }, _this._renderModularLeftComponent = function (props, ButtonContainerComponent, LabelContainerComponent) { + var _this$props$getScreen2 = _this.props.getScreenDetails(props.scene), + options = _this$props$getScreen2.options; + + var backButtonTitle = _this._getBackButtonTitleString(props.scene); + + var truncatedBackButtonTitle = _this._getTruncatedBackButtonTitle(props.scene); + + var width = _this.state.widths[props.scene.key] ? (_this.props.layout.initWidth - _this.state.widths[props.scene.key]) / 2 : undefined; + return _react2.default.createElement(_ModularHeaderBackButton2.default, { + onPress: _this._navigateBack, + ButtonContainerComponent: ButtonContainerComponent, + LabelContainerComponent: LabelContainerComponent, + pressColorAndroid: options.headerPressColorAndroid, + tintColor: options.headerTintColor, + buttonImage: options.headerBackImage, + title: backButtonTitle, + truncatedTitle: truncatedBackButtonTitle, + titleStyle: options.headerBackTitleStyle, + width: width, + __source: { + fileName: _jsxFileName, + lineNumber: 180 + } + }); + }, _this._renderRightComponent = function (props) { + var details = _this.props.getScreenDetails(props.scene); + + var headerRight = details.options.headerRight; + return headerRight || null; + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(Header, [{ + key: "_getHeaderTitleString", + value: function _getHeaderTitleString(scene) { + var sceneOptions = this.props.getScreenDetails(scene).options; + + if (typeof sceneOptions.headerTitle === 'string') { + return sceneOptions.headerTitle; + } + + return sceneOptions.title; + } + }, { + key: "_getLastScene", + value: function _getLastScene(scene) { + return this.props.scenes.find(function (s) { + return s.index === scene.index - 1; + }); + } + }, { + key: "_getBackButtonTitleString", + value: function _getBackButtonTitleString(scene) { + var lastScene = this._getLastScene(scene); + + if (!lastScene) { + return null; + } + + var headerBackTitle = this.props.getScreenDetails(lastScene).options.headerBackTitle; + + if (headerBackTitle || headerBackTitle === null) { + return headerBackTitle; + } + + return this._getHeaderTitleString(lastScene); + } + }, { + key: "_getTruncatedBackButtonTitle", + value: function _getTruncatedBackButtonTitle(scene) { + var lastScene = this._getLastScene(scene); + + if (!lastScene) { + return null; + } + + return this.props.getScreenDetails(lastScene).options.headerTruncatedBackTitle; + } + }, { + key: "_renderLeft", + value: function _renderLeft(props) { + var _props$getScreenDetai = this.props.getScreenDetails(props.scene), + options = _props$getScreenDetai.options; + + var transitionPreset = this.props.transitionPreset; + + if (transitionPreset !== 'uikit' || options.headerBackImage || options.headerLeft || options.headerLeft === null) { + return this._renderSubView(props, 'left', this._renderLeftComponent, this.props.leftInterpolator); + } else { + return this._renderModularSubView(props, 'left', this._renderModularLeftComponent, this.props.leftLabelInterpolator, this.props.leftButtonInterpolator); + } + } + }, { + key: "_renderTitle", + value: function _renderTitle(props, options) { + var style = {}; + var transitionPreset = this.props.transitionPreset; + + if (_reactNative.Platform.OS === 'android') { + if (!options.hasLeftComponent) { + style.left = 0; + } + + if (!options.hasRightComponent) { + style.right = 0; + } + } else if (_reactNative.Platform.OS === 'ios' && !options.hasLeftComponent && !options.hasRightComponent) { + style.left = 0; + style.right = 0; + } + + return this._renderSubView(babelHelpers.extends({}, props, { + style: style + }), 'title', this._renderTitleComponent, transitionPreset === 'uikit' ? this.props.titleFromLeftInterpolator : this.props.titleInterpolator); + } + }, { + key: "_renderRight", + value: function _renderRight(props) { + return this._renderSubView(props, 'right', this._renderRightComponent, this.props.rightInterpolator); + } + }, { + key: "_renderModularSubView", + value: function _renderModularSubView(props, name, renderer, labelStyleInterpolator, buttonStyleInterpolator) { + var _this2 = this; + + var scene = props.scene; + var index = scene.index, + isStale = scene.isStale, + key = scene.key; + + if (index === 0) { + return; + } + + var offset = this.props.navigation.state.index - index; + + if (Math.abs(offset) > 2) { + return null; + } + + var ButtonContainer = function ButtonContainer(_ref2) { + var children = _ref2.children; + return _react2.default.createElement( + _reactNative.Animated.View, + { + style: [buttonStyleInterpolator(babelHelpers.extends({}, _this2.props, props))], + __source: { + fileName: _jsxFileName, + lineNumber: 294 + } + }, + children + ); + }; + + var LabelContainer = function LabelContainer(_ref3) { + var children = _ref3.children; + return _react2.default.createElement( + _reactNative.Animated.View, + { + style: [labelStyleInterpolator(babelHelpers.extends({}, _this2.props, props))], + __source: { + fileName: _jsxFileName, + lineNumber: 302 + } + }, + children + ); + }; + + var subView = renderer(props, ButtonContainer, LabelContainer); + + if (subView === null) { + return subView; + } + + var pointerEvents = offset !== 0 || isStale ? 'none' : 'box-none'; + return _react2.default.createElement( + _reactNative.View, + { + key: name + "_" + key, + pointerEvents: pointerEvents, + style: [styles.item, styles[name], props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 318 + } + }, + subView + ); + } + }, { + key: "_renderSubView", + value: function _renderSubView(props, name, renderer, styleInterpolator) { + var scene = props.scene; + var index = scene.index, + isStale = scene.isStale, + key = scene.key; + var offset = this.props.navigation.state.index - index; + + if (Math.abs(offset) > 2) { + return null; + } + + var subView = renderer(props); + + if (subView == null) { + return null; + } + + var pointerEvents = offset !== 0 || isStale ? 'none' : 'box-none'; + return _react2.default.createElement( + _reactNative.Animated.View, + { + pointerEvents: pointerEvents, + key: name + "_" + key, + style: [styles.item, styles[name], props.style, styleInterpolator(babelHelpers.extends({}, this.props, props))], + __source: { + fileName: _jsxFileName, + lineNumber: 349 + } + }, + subView + ); + } + }, { + key: "_renderHeader", + value: function _renderHeader(props) { + var left = this._renderLeft(props); + + var right = this._renderRight(props); + + var title = this._renderTitle(props, { + hasLeftComponent: !!left, + hasRightComponent: !!right + }); + + var _props = this.props, + isLandscape = _props.isLandscape, + transitionPreset = _props.transitionPreset; + + var _props$getScreenDetai2 = this.props.getScreenDetails(props.scene), + options = _props$getScreenDetai2.options; + + var wrapperProps = { + style: styles.header, + key: "scene_" + props.scene.key + }; + + if (options.headerLeft || options.headerBackImage || _reactNative.Platform.OS !== 'ios' || transitionPreset !== 'uikit') { + return _react2.default.createElement( + _reactNative.View, + babelHelpers.extends({}, wrapperProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 391 + } + }), + title, + left, + right + ); + } else { + return _react2.default.createElement( + _PlatformHelpers.MaskedViewIOS, + babelHelpers.extends({}, wrapperProps, { + maskElement: _react2.default.createElement( + _reactNative.View, + { + style: styles.iconMaskContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 402 + } + }, + _react2.default.createElement(_reactNative.Image, { + source: require(_dependencyMap[9], '../assets/back-icon-mask.png'), + style: styles.iconMask, + __source: { + fileName: _jsxFileName, + lineNumber: 403 + } + }), + _react2.default.createElement(_reactNative.View, { + style: styles.iconMaskFillerRect, + __source: { + fileName: _jsxFileName, + lineNumber: 407 + } + }) + ), + __source: { + fileName: _jsxFileName, + lineNumber: 399 + } + }), + title, + left, + right + ); + } + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var appBar = void 0; + var _props2 = this.props, + mode = _props2.mode, + scene = _props2.scene, + isLandscape = _props2.isLandscape; + + if (mode === 'float') { + var scenesByIndex = {}; + this.props.scenes.forEach(function (scene) { + scenesByIndex[scene.index] = scene; + }); + var scenesProps = Object.values(scenesByIndex).map(function (scene) { + return { + position: _this3.props.position, + progress: _this3.props.progress, + scene: scene + }; + }); + appBar = scenesProps.map(this._renderHeader, this); + } else { + appBar = this._renderHeader({ + position: new _reactNative.Animated.Value(this.props.scene.index), + progress: new _reactNative.Animated.Value(0), + scene: this.props.scene + }); + } + + var _props$getScreenDetai3 = this.props.getScreenDetails(scene), + options = _props$getScreenDetai3.options; + + var _options$headerStyle = options.headerStyle, + headerStyle = _options$headerStyle === undefined ? {} : _options$headerStyle; + + var headerStyleObj = _reactNative.StyleSheet.flatten(headerStyle); + + var appBarHeight = getAppBarHeight(isLandscape); + var alignItems = headerStyleObj.alignItems, + justifyContent = headerStyleObj.justifyContent, + flex = headerStyleObj.flex, + flexDirection = headerStyleObj.flexDirection, + flexGrow = headerStyleObj.flexGrow, + flexShrink = headerStyleObj.flexShrink, + flexBasis = headerStyleObj.flexBasis, + flexWrap = headerStyleObj.flexWrap, + safeHeaderStyle = babelHelpers.objectWithoutProperties(headerStyleObj, ["alignItems", "justifyContent", "flex", "flexDirection", "flexGrow", "flexShrink", "flexBasis", "flexWrap"]); + + if (__DEV__) { + warnIfHeaderStyleDefined(alignItems, 'alignItems'); + warnIfHeaderStyleDefined(justifyContent, 'justifyContent'); + warnIfHeaderStyleDefined(flex, 'flex'); + warnIfHeaderStyleDefined(flexDirection, 'flexDirection'); + warnIfHeaderStyleDefined(flexGrow, 'flexGrow'); + warnIfHeaderStyleDefined(flexShrink, 'flexShrink'); + warnIfHeaderStyleDefined(flexBasis, 'flexBasis'); + warnIfHeaderStyleDefined(flexWrap, 'flexWrap'); + } + + var containerStyles = [options.headerTransparent ? styles.transparentContainer : styles.container, { + height: appBarHeight + }, safeHeaderStyle]; + var headerForceInset = options.headerForceInset; + var forceInset = headerForceInset || { + top: 'always', + bottom: 'never' + }; + return _react2.default.createElement( + _reactNativeSafeAreaView2.default, + { + forceInset: forceInset, + style: containerStyles, + __source: { + fileName: _jsxFileName, + lineNumber: 483 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: _reactNative.StyleSheet.absoluteFill, + __source: { + fileName: _jsxFileName, + lineNumber: 484 + } + }, + options.headerBackground + ), + _react2.default.createElement( + _reactNative.View, + { + style: { + flex: 1 + }, + __source: { + fileName: _jsxFileName, + lineNumber: 485 + } + }, + appBar + ) + ); + } + }], [{ + key: "HEIGHT", + get: function get() { + return APPBAR_HEIGHT + STATUSBAR_HEIGHT; + } + }]); + return Header; + }(_react2.default.PureComponent); + + Header.defaultProps = { + leftInterpolator: _HeaderStyleInterpolator2.default.forLeft, + leftButtonInterpolator: _HeaderStyleInterpolator2.default.forLeftButton, + leftLabelInterpolator: _HeaderStyleInterpolator2.default.forLeftLabel, + titleFromLeftInterpolator: _HeaderStyleInterpolator2.default.forCenterFromLeft, + titleInterpolator: _HeaderStyleInterpolator2.default.forCenter, + rightInterpolator: _HeaderStyleInterpolator2.default.forRight + }; + + function warnIfHeaderStyleDefined(value, styleProp) { + if (value !== undefined) { + console.warn(styleProp + " was given a value of " + value + ", this has no effect on headerStyle."); + } + } + + var platformContainerStyles = void 0; + + if (_reactNative.Platform.OS === 'ios') { + platformContainerStyles = { + borderBottomWidth: _reactNative.StyleSheet.hairlineWidth, + borderBottomColor: '#A7A7AA' + }; + } else { + platformContainerStyles = { + shadowColor: 'black', + shadowOpacity: 0.1, + shadowRadius: _reactNative.StyleSheet.hairlineWidth, + shadowOffset: { + height: _reactNative.StyleSheet.hairlineWidth + }, + elevation: 4 + }; + } + + var styles = _reactNative.StyleSheet.create({ + container: babelHelpers.extends({ + backgroundColor: _reactNative.Platform.OS === 'ios' ? '#F7F7F7' : '#FFF' + }, platformContainerStyles), + transparentContainer: babelHelpers.extends({ + position: 'absolute', + top: 0, + left: 0, + right: 0 + }, platformContainerStyles), + header: babelHelpers.extends({}, _reactNative.StyleSheet.absoluteFillObject, { + flexDirection: 'row' + }), + item: { + backgroundColor: 'transparent' + }, + iconMaskContainer: { + flex: 1, + flexDirection: 'row', + justifyContent: 'center' + }, + iconMaskFillerRect: { + flex: 1, + backgroundColor: '#d8d8d8', + marginLeft: -3 + }, + iconMask: { + height: 21, + width: 12, + marginLeft: 9, + marginTop: -0.5, + alignSelf: 'center', + resizeMode: 'contain' + }, + title: { + bottom: 0, + top: 0, + left: TITLE_OFFSET, + right: TITLE_OFFSET, + position: 'absolute', + alignItems: 'center', + flexDirection: 'row', + justifyContent: _reactNative.Platform.OS === 'ios' ? 'center' : 'flex-start' + }, + left: { + left: 0, + bottom: 0, + top: 0, + position: 'absolute', + alignItems: 'center', + flexDirection: 'row' + }, + right: { + right: 0, + bottom: 0, + top: 0, + position: 'absolute', + flexDirection: 'row', + alignItems: 'center' + } + }); + + exports.default = (0, _withOrientation2.default)(Header); +},391,[12,66,378,392,394,395,398,399,401,402],"react-navigation/src/views/Header/Header.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-safe-area-view/index.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _withOrientation = require(_dependencyMap[2], "./withOrientation"); + + var _withOrientation2 = babelHelpers.interopRequireDefault(_withOrientation); + + var X_WIDTH = 375; + var X_HEIGHT = 812; + var PAD_WIDTH = 768; + var PAD_HEIGHT = 1024; + + var _Dimensions$get = _reactNative.Dimensions.get('window'), + D_HEIGHT = _Dimensions$get.height, + D_WIDTH = _Dimensions$get.width; + + var _NativeModules$Platfo = _reactNative.NativeModules.PlatformConstants, + PlatformConstants = _NativeModules$Platfo === undefined ? {} : _NativeModules$Platfo; + + var _ref = PlatformConstants.reactNativeVersion || {}, + _ref$minor = _ref.minor, + minor = _ref$minor === undefined ? 0 : _ref$minor; + + var isIPhoneX = function () { + if (_reactNative.Platform.OS === 'web') return false; + + if (minor >= 50) { + return _reactNative.DeviceInfo.isIPhoneX_deprecated; + } + + return _reactNative.Platform.OS === 'ios' && (D_HEIGHT === X_HEIGHT && D_WIDTH === X_WIDTH || D_HEIGHT === X_WIDTH && D_WIDTH === X_HEIGHT); + }(); + + var isIPad = function () { + if (_reactNative.Platform.OS !== 'ios' || isIPhoneX) return false; + + if (D_HEIGHT > D_WIDTH && D_WIDTH < PAD_WIDTH) { + return false; + } + + if (D_WIDTH > D_HEIGHT && D_HEIGHT < PAD_WIDTH) { + return false; + } + + return true; + }(); + + var _customStatusBarHeight = null; + + var statusBarHeight = function statusBarHeight(isLandscape) { + if (_customStatusBarHeight !== null) { + return _customStatusBarHeight; + } + + if (_reactNative.Platform.OS === 'android') { + if (global.Expo) { + return global.Expo.Constants.statusBarHeight; + } else { + return 0; + } + } + + if (isIPhoneX) { + return isLandscape ? 0 : 44; + } + + if (isIPad) { + return 20; + } + + return isLandscape ? 0 : 20; + }; + + var doubleFromPercentString = function doubleFromPercentString(percent) { + if (!percent.includes('%')) { + return 0; + } + + var dbl = parseFloat(percent) / 100; + if (isNaN(dbl)) return 0; + return dbl; + }; + + var SafeView = function (_Component) { + babelHelpers.inherits(SafeView, _Component); + + function SafeView() { + var _ref2; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, SafeView); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref2 = SafeView.__proto__ || Object.getPrototypeOf(SafeView)).call.apply(_ref2, [this].concat(args))), _this), _this.state = { + touchesTop: true, + touchesBottom: true, + touchesLeft: true, + touchesRight: true, + orientation: null, + viewWidth: 0, + viewHeight: 0 + }, _this._onLayout = function () { + if (!_this.view) return; + var isLandscape = _this.props.isLandscape; + var orientation = _this.state.orientation; + var newOrientation = isLandscape ? 'landscape' : 'portrait'; + + if (orientation && orientation === newOrientation) { + return; + } + + var WIDTH = isLandscape ? X_HEIGHT : X_WIDTH; + var HEIGHT = isLandscape ? X_WIDTH : X_HEIGHT; + + _this.view._component.measureInWindow(function (winX, winY, winWidth, winHeight) { + var realY = winY; + var realX = winX; + + if (realY >= HEIGHT) { + realY = realY % HEIGHT; + } else if (realY < 0) { + realY = realY % HEIGHT + HEIGHT; + } + + if (realX >= WIDTH) { + realX = realX % WIDTH; + } else if (realX < 0) { + realX = realX % WIDTH + WIDTH; + } + + var touchesTop = realY === 0; + var touchesBottom = realY + winHeight >= HEIGHT; + var touchesLeft = realX === 0; + var touchesRight = realX + winWidth >= WIDTH; + + _this.setState({ + touchesTop: touchesTop, + touchesBottom: touchesBottom, + touchesLeft: touchesLeft, + touchesRight: touchesRight, + orientation: newOrientation, + viewWidth: winWidth, + viewHeight: winHeight + }); + }); + }, _this._getSafeAreaStyle = function () { + var _this$state = _this.state, + touchesTop = _this$state.touchesTop, + touchesBottom = _this$state.touchesBottom, + touchesLeft = _this$state.touchesLeft, + touchesRight = _this$state.touchesRight; + var _this$props = _this.props, + forceInset = _this$props.forceInset, + isLandscape = _this$props.isLandscape; + + var _this$_getViewStyles = _this._getViewStyles(), + paddingTop = _this$_getViewStyles.paddingTop, + paddingBottom = _this$_getViewStyles.paddingBottom, + paddingLeft = _this$_getViewStyles.paddingLeft, + paddingRight = _this$_getViewStyles.paddingRight, + viewStyle = _this$_getViewStyles.viewStyle; + + var style = babelHelpers.extends({}, viewStyle, { + paddingTop: touchesTop ? _this._getInset('top') : 0, + paddingBottom: touchesBottom ? _this._getInset('bottom') : 0, + paddingLeft: touchesLeft ? _this._getInset('left') : 0, + paddingRight: touchesRight ? _this._getInset('right') : 0 + }); + + if (forceInset) { + Object.keys(forceInset).forEach(function (key) { + var inset = forceInset[key]; + + if (inset === 'always') { + inset = _this._getInset(key); + } + + if (inset === 'never') { + inset = 0; + } + + switch (key) { + case 'horizontal': + { + style.paddingLeft = inset; + style.paddingRight = inset; + break; + } + + case 'vertical': + { + style.paddingTop = inset; + style.paddingBottom = inset; + break; + } + + case 'left': + case 'right': + case 'top': + case 'bottom': + { + var padding = "padding" + key[0].toUpperCase() + key.slice(1); + style[padding] = inset; + break; + } + } + }); + } + + if (style.height && typeof style.height === 'number') { + style.height += style.paddingTop + style.paddingBottom; + } + + if (style.width && typeof style.width === 'number') { + style.width += style.paddingLeft + style.paddingRight; + } + + style.paddingTop = Math.max(style.paddingTop, paddingTop); + style.paddingBottom = Math.max(style.paddingBottom, paddingBottom); + style.paddingLeft = Math.max(style.paddingLeft, paddingLeft); + style.paddingRight = Math.max(style.paddingRight, paddingRight); + return style; + }, _this._getViewStyles = function () { + var viewWidth = _this.state.viewWidth; + + var _StyleSheet$flatten = _reactNative.StyleSheet.flatten(_this.props.style || {}), + _StyleSheet$flatten$p = _StyleSheet$flatten.padding, + padding = _StyleSheet$flatten$p === undefined ? 0 : _StyleSheet$flatten$p, + _StyleSheet$flatten$p2 = _StyleSheet$flatten.paddingVertical, + paddingVertical = _StyleSheet$flatten$p2 === undefined ? padding : _StyleSheet$flatten$p2, + _StyleSheet$flatten$p3 = _StyleSheet$flatten.paddingHorizontal, + paddingHorizontal = _StyleSheet$flatten$p3 === undefined ? padding : _StyleSheet$flatten$p3, + _StyleSheet$flatten$p4 = _StyleSheet$flatten.paddingTop, + paddingTop = _StyleSheet$flatten$p4 === undefined ? paddingVertical : _StyleSheet$flatten$p4, + _StyleSheet$flatten$p5 = _StyleSheet$flatten.paddingBottom, + paddingBottom = _StyleSheet$flatten$p5 === undefined ? paddingVertical : _StyleSheet$flatten$p5, + _StyleSheet$flatten$p6 = _StyleSheet$flatten.paddingLeft, + paddingLeft = _StyleSheet$flatten$p6 === undefined ? paddingHorizontal : _StyleSheet$flatten$p6, + _StyleSheet$flatten$p7 = _StyleSheet$flatten.paddingRight, + paddingRight = _StyleSheet$flatten$p7 === undefined ? paddingHorizontal : _StyleSheet$flatten$p7, + viewStyle = babelHelpers.objectWithoutProperties(_StyleSheet$flatten, ["padding", "paddingVertical", "paddingHorizontal", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight"]); + + if (typeof paddingTop !== 'number') { + paddingTop = doubleFromPercentString(paddingTop) * viewWidth; + } + + if (typeof paddingBottom !== 'number') { + paddingBottom = doubleFromPercentString(paddingBottom) * viewWidth; + } + + if (typeof paddingLeft !== 'number') { + paddingLeft = doubleFromPercentString(paddingLeft) * viewWidth; + } + + if (typeof paddingRight !== 'number') { + paddingRight = doubleFromPercentString(paddingRight) * viewWidth; + } + + return { + paddingTop: paddingTop, + paddingBottom: paddingBottom, + paddingLeft: paddingLeft, + paddingRight: paddingRight, + viewStyle: viewStyle + }; + }, _this._getInset = function (key) { + var isLandscape = _this.props.isLandscape; + + switch (key) { + case 'horizontal': + case 'right': + case 'left': + { + return isLandscape ? isIPhoneX ? 44 : 0 : 0; + } + + case 'vertical': + case 'top': + { + return statusBarHeight(isLandscape); + } + + case 'bottom': + { + return isIPhoneX ? isLandscape ? 24 : 34 : 0; + } + } + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(SafeView, [{ + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + _reactNative.InteractionManager.runAfterInteractions(function () { + _this2._onLayout(); + }); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps() { + this._onLayout(); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var _props = this.props, + _props$forceInset = _props.forceInset, + forceInset = _props$forceInset === undefined ? false : _props$forceInset, + isLandscape = _props.isLandscape, + children = _props.children, + style = _props.style; + + var safeAreaStyle = this._getSafeAreaStyle(); + + return _react2.default.createElement( + _reactNative.Animated.View, + { + ref: function ref(c) { + return _this3.view = c; + }, + onLayout: this._onLayout, + style: safeAreaStyle, + pointerEvents: "box-none", + __source: { + fileName: _jsxFileName, + lineNumber: 128 + } + }, + this.props.children + ); + } + }]); + return SafeView; + }(_react.Component); + + SafeView.setStatusBarHeight = function (height) { + _customStatusBarHeight = height; + }; + + exports.default = (0, _withOrientation2.default)(SafeView); +},392,[12,66,393],"react-native-safe-area-view/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.isOrientationLandscape = undefined; + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-safe-area-view/withOrientation.js"; + + exports.default = function (WrappedComponent) { + var withOrientation = function (_React$Component) { + babelHelpers.inherits(withOrientation, _React$Component); + + function withOrientation() { + babelHelpers.classCallCheck(this, withOrientation); + + var _this = babelHelpers.possibleConstructorReturn(this, (withOrientation.__proto__ || Object.getPrototypeOf(withOrientation)).call(this)); + + _initialiseProps.call(_this); + + var isLandscape = isOrientationLandscape(_reactNative.Dimensions.get('window')); + _this.state = { + isLandscape: isLandscape + }; + return _this; + } + + babelHelpers.createClass(withOrientation, [{ + key: "componentDidMount", + value: function componentDidMount() { + _reactNative.Dimensions.addEventListener('change', this.handleOrientationChange); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + _reactNative.Dimensions.removeEventListener('change', this.handleOrientationChange); + } + }, { + key: "render", + value: function render() { + return React.createElement(WrappedComponent, babelHelpers.extends({}, this.props, this.state, { + __source: { + fileName: _jsxFileName, + lineNumber: 50 + } + })); + } + }]); + return withOrientation; + }(React.Component); + + var _initialiseProps = function _initialiseProps() { + var _this2 = this; + + this.handleOrientationChange = function (_ref2) { + var window = _ref2.window; + var isLandscape = isOrientationLandscape(window); + + _this2.setState({ + isLandscape: isLandscape + }); + }; + }; + + return (0, _hoistNonReactStatics2.default)(withOrientation, WrappedComponent); + }; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _hoistNonReactStatics = require(_dependencyMap[2], "hoist-non-react-statics"); + + var _hoistNonReactStatics2 = babelHelpers.interopRequireDefault(_hoistNonReactStatics); + + var isOrientationLandscape = exports.isOrientationLandscape = function isOrientationLandscape(_ref) { + var width = _ref.width, + height = _ref.height; + return width > height; + }; +},393,[12,66,30],"react-native-safe-area-view/withOrientation.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Header/HeaderTitle.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var AnimatedText = _reactNative.Animated.Text; + + var HeaderTitle = function HeaderTitle(_ref) { + var style = _ref.style, + rest = babelHelpers.objectWithoutProperties(_ref, ["style"]); + return _react2.default.createElement(AnimatedText, babelHelpers.extends({ + numberOfLines: 1 + }, rest, { + style: [styles.title, style], + accessibilityTraits: "header", + __source: { + fileName: _jsxFileName, + lineNumber: 7 + } + })); + }; + + var styles = _reactNative.StyleSheet.create({ + title: { + fontSize: _reactNative.Platform.OS === 'ios' ? 17 : 20, + fontWeight: _reactNative.Platform.OS === 'ios' ? '700' : '500', + color: 'rgba(0, 0, 0, .9)', + textAlign: _reactNative.Platform.OS === 'ios' ? 'center' : 'left', + marginHorizontal: 16 + } + }); + + exports.default = HeaderTitle; +},394,[12,66],"react-navigation/src/views/Header/HeaderTitle.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Header/HeaderBackButton.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _TouchableItem = require(_dependencyMap[2], "../TouchableItem"); + + var _TouchableItem2 = babelHelpers.interopRequireDefault(_TouchableItem); + + var HeaderBackButton = function (_React$PureComponent) { + babelHelpers.inherits(HeaderBackButton, _React$PureComponent); + + function HeaderBackButton() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, HeaderBackButton); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = HeaderBackButton.__proto__ || Object.getPrototypeOf(HeaderBackButton)).call.apply(_ref, [this].concat(args))), _this), _this.state = {}, _this._onTextLayout = function (e) { + if (_this.state.initialTextWidth) { + return; + } + + _this.setState({ + initialTextWidth: e.nativeEvent.layout.x + e.nativeEvent.layout.width + }); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(HeaderBackButton, [{ + key: "render", + value: function render() { + var _props = this.props, + buttonImage = _props.buttonImage, + onPress = _props.onPress, + pressColorAndroid = _props.pressColorAndroid, + width = _props.width, + title = _props.title, + titleStyle = _props.titleStyle, + tintColor = _props.tintColor, + truncatedTitle = _props.truncatedTitle; + var renderTruncated = this.state.initialTextWidth && width ? this.state.initialTextWidth > width : false; + var backButtonTitle = renderTruncated ? truncatedTitle : title; + return _react2.default.createElement( + _TouchableItem2.default, + { + accessibilityComponentType: "button", + accessibilityLabel: backButtonTitle, + accessibilityTraits: "button", + testID: "header-back", + delayPressIn: 0, + onPress: onPress, + pressColor: pressColorAndroid, + style: styles.container, + borderless: true, + __source: { + fileName: _jsxFileName, + lineNumber: 55 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 66 + } + }, + _react2.default.createElement(_reactNative.Image, { + style: [styles.icon, !!title && styles.iconWithTitle, !!tintColor && { + tintColor: tintColor + }], + source: buttonImage, + __source: { + fileName: _jsxFileName, + lineNumber: 67 + } + }), + _reactNative.Platform.OS === 'ios' && typeof backButtonTitle === 'string' && _react2.default.createElement( + _reactNative.Text, + { + onLayout: this._onTextLayout, + style: [styles.title, !!tintColor && { + color: tintColor + }, titleStyle], + numberOfLines: 1, + __source: { + fileName: _jsxFileName, + lineNumber: 77 + } + }, + backButtonTitle + ) + ) + ); + } + }]); + return HeaderBackButton; + }(_react2.default.PureComponent); + + HeaderBackButton.defaultProps = { + pressColorAndroid: 'rgba(0, 0, 0, .32)', + tintColor: _reactNative.Platform.select({ + ios: '#037aff' + }), + truncatedTitle: 'Back', + buttonImage: require(_dependencyMap[3], '../assets/back-icon.png') + }; + + var styles = _reactNative.StyleSheet.create({ + container: { + alignItems: 'center', + flexDirection: 'row', + backgroundColor: 'transparent' + }, + title: { + fontSize: 17, + paddingRight: 10 + }, + icon: _reactNative.Platform.OS === 'ios' ? { + height: 21, + width: 13, + marginLeft: 9, + marginRight: 22, + marginVertical: 12, + resizeMode: 'contain', + transform: [{ + scaleX: _reactNative.I18nManager.isRTL ? -1 : 1 + }] + } : { + height: 24, + width: 24, + margin: 16, + resizeMode: 'contain', + transform: [{ + scaleX: _reactNative.I18nManager.isRTL ? -1 : 1 + }] + }, + iconWithTitle: _reactNative.Platform.OS === 'ios' ? { + marginRight: 6 + } : {} + }); + + exports.default = HeaderBackButton; +},395,[12,66,396,397],"react-navigation/src/views/Header/HeaderBackButton.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/TouchableItem.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var ANDROID_VERSION_LOLLIPOP = 21; + + var TouchableItem = function (_React$Component) { + babelHelpers.inherits(TouchableItem, _React$Component); + + function TouchableItem() { + babelHelpers.classCallCheck(this, TouchableItem); + return babelHelpers.possibleConstructorReturn(this, (TouchableItem.__proto__ || Object.getPrototypeOf(TouchableItem)).apply(this, arguments)); + } + + babelHelpers.createClass(TouchableItem, [{ + key: "render", + value: function render() { + if (_reactNative.Platform.OS === 'android' && _reactNative.Platform.Version >= ANDROID_VERSION_LOLLIPOP) { + var _props = this.props, + style = _props.style, + rest = babelHelpers.objectWithoutProperties(_props, ["style"]); + return _react2.default.createElement( + _reactNative.TouchableNativeFeedback, + babelHelpers.extends({}, rest, { + style: null, + background: _reactNative.TouchableNativeFeedback.Ripple(this.props.pressColor, this.props.borderless), + __source: { + fileName: _jsxFileName, + lineNumber: 41 + } + }), + _react2.default.createElement( + _reactNative.View, + { + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 49 + } + }, + _react2.default.Children.only(this.props.children) + ) + ); + } + + return _react2.default.createElement( + _reactNative.TouchableOpacity, + babelHelpers.extends({}, this.props, { + __source: { + fileName: _jsxFileName, + lineNumber: 55 + } + }), + this.props.children + ); + } + }]); + return TouchableItem; + }(_react2.default.Component); + + TouchableItem.defaultProps = { + borderless: false, + pressColor: 'rgba(0, 0, 0, .32)' + }; + exports.default = TouchableItem; +},396,[12,66],"react-navigation/src/views/TouchableItem.js"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = require(_dependencyMap[0], "react-native/Libraries/Image/AssetRegistry").registerAsset({ + "__packager_asset": true, + "httpServerLocation": "/assets/node_modules/react-navigation/src/views/assets", + "width": 24, + "height": 24, + "scales": [1, 1.5, 2, 3, 4], + "hash": "a364dc7a784101f7c8f6791c7b4514ce", + "name": "back-icon", + "type": "png" + }); +},397,[202],"node_modules/react-navigation/src/views/assets/back-icon.png"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Header/ModularHeaderBackButton.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _TouchableItem = require(_dependencyMap[2], "../TouchableItem"); + + var _TouchableItem2 = babelHelpers.interopRequireDefault(_TouchableItem); + + var ModularHeaderBackButton = function (_React$PureComponent) { + babelHelpers.inherits(ModularHeaderBackButton, _React$PureComponent); + + function ModularHeaderBackButton() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, ModularHeaderBackButton); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = ModularHeaderBackButton.__proto__ || Object.getPrototypeOf(ModularHeaderBackButton)).call.apply(_ref, [this].concat(args))), _this), _this.state = {}, _this._onTextLayout = function (e) { + if (_this.state.initialTextWidth) { + return; + } + + _this.setState({ + initialTextWidth: e.nativeEvent.layout.x + e.nativeEvent.layout.width + }); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(ModularHeaderBackButton, [{ + key: "render", + value: function render() { + var _props = this.props, + buttonImage = _props.buttonImage, + onPress = _props.onPress, + width = _props.width, + title = _props.title, + titleStyle = _props.titleStyle, + tintColor = _props.tintColor, + truncatedTitle = _props.truncatedTitle; + var renderTruncated = this.state.initialTextWidth && width ? this.state.initialTextWidth > width : false; + var backButtonTitle = renderTruncated ? truncatedTitle : title; + + if (backButtonTitle && backButtonTitle.length > 8) { + backButtonTitle = truncatedTitle; + } + + var _props2 = this.props, + ButtonContainerComponent = _props2.ButtonContainerComponent, + LabelContainerComponent = _props2.LabelContainerComponent; + return _react2.default.createElement( + _TouchableItem2.default, + { + accessibilityComponentType: "button", + accessibilityLabel: backButtonTitle, + accessibilityTraits: "button", + testID: "header-back", + delayPressIn: 0, + onPress: onPress, + style: styles.container, + borderless: true, + __source: { + fileName: _jsxFileName, + lineNumber: 52 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 62 + } + }, + _react2.default.createElement( + ButtonContainerComponent, + { + __source: { + fileName: _jsxFileName, + lineNumber: 63 + } + }, + _react2.default.createElement(_reactNative.Image, { + style: [styles.icon, !!title && styles.iconWithTitle, !!tintColor && { + tintColor: tintColor + }], + source: buttonImage, + __source: { + fileName: _jsxFileName, + lineNumber: 64 + } + }) + ), + typeof backButtonTitle === 'string' && _react2.default.createElement( + LabelContainerComponent, + { + __source: { + fileName: _jsxFileName, + lineNumber: 74 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + onLayout: this._onTextLayout, + style: [styles.title, !!tintColor && { + color: tintColor + }, titleStyle], + numberOfLines: 1, + __source: { + fileName: _jsxFileName, + lineNumber: 75 + } + }, + backButtonTitle + ) + ) + ) + ); + } + }]); + return ModularHeaderBackButton; + }(_react2.default.PureComponent); + + ModularHeaderBackButton.defaultProps = { + tintColor: '#037aff', + truncatedTitle: 'Back', + buttonImage: require(_dependencyMap[3], '../assets/back-icon.png') + }; + + var styles = _reactNative.StyleSheet.create({ + container: { + alignItems: 'center', + flexDirection: 'row', + backgroundColor: 'transparent' + }, + title: { + fontSize: 17, + paddingRight: 10 + }, + icon: { + height: 21, + width: 12, + marginLeft: 9, + marginRight: 22, + marginVertical: 12, + resizeMode: 'contain', + transform: [{ + scaleX: _reactNative.I18nManager.isRTL ? -1 : 1 + }] + }, + iconWithTitle: { + marginRight: 3 + } + }); + + exports.default = ModularHeaderBackButton; +},398,[12,66,396,397],"react-navigation/src/views/Header/ModularHeaderBackButton.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var _getSceneIndicesForInterpolationInputRange = require(_dependencyMap[1], "../../utils/getSceneIndicesForInterpolationInputRange"); + + var _getSceneIndicesForInterpolationInputRange2 = babelHelpers.interopRequireDefault(_getSceneIndicesForInterpolationInputRange); + + var crossFadeInterpolation = function crossFadeInterpolation(first, index, last) { + return { + inputRange: [first, index - 0.9, index - 0.2, index, last], + outputRange: [0, 0, 0.3, 1, 0] + }; + }; + + function forLeft(props) { + var position = props.position, + scene = props.scene, + scenes = props.scenes; + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + return { + opacity: position.interpolate(crossFadeInterpolation(first, index, last)) + }; + } + + function forCenter(props) { + var position = props.position, + scene = props.scene; + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + return { + opacity: position.interpolate(crossFadeInterpolation(first, index, last)) + }; + } + + function forRight(props) { + var position = props.position, + scene = props.scene; + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + return { + opacity: position.interpolate(crossFadeInterpolation(first, index, last)) + }; + } + + function forLeftButton(props) { + var position = props.position, + scene = props.scene, + scenes = props.scenes; + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + return { + opacity: position.interpolate({ + inputRange: [first, first + Math.abs(index - first) / 2, index, last - Math.abs(last - index) / 2, last], + outputRange: [0, 0.5, 1, 0.5, 0] + }) + }; + } + + var LEFT_LABEL_OFFSET = _reactNative.Dimensions.get('window').width / 2 - 70 - 25; + + function forLeftLabel(props) { + var position = props.position, + scene = props.scene, + scenes = props.scenes; + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + var offset = LEFT_LABEL_OFFSET; + return { + opacity: position.interpolate({ + inputRange: [first, index - 0.35, index, index + 0.5, last], + outputRange: [0, 0, 1, 0.5, 0] + }), + transform: [{ + translateX: position.interpolate({ + inputRange: [first, index, last], + outputRange: _reactNative.I18nManager.isRTL ? [-offset, 0, offset] : [offset, 0, -offset * 1.5] + }) + }] + }; + } + + var TITLE_OFFSET_IOS = _reactNative.Dimensions.get('window').width / 2 - 70 + 25; + + function forCenterFromLeft(props) { + var position = props.position, + scene = props.scene; + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + var inputRange = [first, index - 0.5, index, index + 0.5, last]; + var offset = TITLE_OFFSET_IOS; + return { + opacity: position.interpolate({ + inputRange: [first, index - 0.5, index, index + 0.7, last], + outputRange: [0, 0, 1, 0, 0] + }), + transform: [{ + translateX: position.interpolate({ + inputRange: [first, index, last], + outputRange: _reactNative.I18nManager.isRTL ? [-offset, 0, offset] : [offset, 0, -offset] + }) + }] + }; + } + + exports.default = { + forLeft: forLeft, + forLeftButton: forLeftButton, + forLeftLabel: forLeftLabel, + forCenterFromLeft: forCenterFromLeft, + forCenter: forCenter, + forRight: forRight + }; +},399,[66,400],"react-navigation/src/views/Header/HeaderStyleInterpolator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + function getSceneIndicesForInterpolationInputRange(props) { + var scene = props.scene, + scenes = props.scenes; + var index = scene.index; + var lastSceneIndexInScenes = scenes.length - 1; + var isBack = !scenes[lastSceneIndexInScenes].isActive; + + if (isBack) { + var currentSceneIndexInScenes = scenes.findIndex(function (item) { + return item === scene; + }); + var targetSceneIndexInScenes = scenes.findIndex(function (item) { + return item.isActive; + }); + var targetSceneIndex = scenes[targetSceneIndexInScenes].index; + var lastSceneIndex = scenes[lastSceneIndexInScenes].index; + + if (index !== targetSceneIndex && currentSceneIndexInScenes === lastSceneIndexInScenes) { + return { + first: Math.min(targetSceneIndex, index - 1), + last: index + 1 + }; + } else if (index === targetSceneIndex && currentSceneIndexInScenes === targetSceneIndexInScenes) { + return { + first: index - 1, + last: Math.max(lastSceneIndex, index + 1) + }; + } else if (index === targetSceneIndex || currentSceneIndexInScenes > targetSceneIndexInScenes) { + return null; + } else { + return { + first: index - 1, + last: index + 1 + }; + } + } else { + return { + first: index - 1, + last: index + 1 + }; + } + } + + exports.default = getSceneIndicesForInterpolationInputRange; +},400,[],"react-navigation/src/utils/getSceneIndicesForInterpolationInputRange.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.isOrientationLandscape = undefined; + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/withOrientation.js"; + + exports.default = function (WrappedComponent) { + var withOrientation = function (_React$Component) { + babelHelpers.inherits(withOrientation, _React$Component); + + function withOrientation() { + babelHelpers.classCallCheck(this, withOrientation); + + var _this = babelHelpers.possibleConstructorReturn(this, (withOrientation.__proto__ || Object.getPrototypeOf(withOrientation)).call(this)); + + _initialiseProps.call(_this); + + var isLandscape = isOrientationLandscape(_reactNative.Dimensions.get('window')); + _this.state = { + isLandscape: isLandscape + }; + return _this; + } + + babelHelpers.createClass(withOrientation, [{ + key: "componentDidMount", + value: function componentDidMount() { + _reactNative.Dimensions.addEventListener('change', this.handleOrientationChange); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + _reactNative.Dimensions.removeEventListener('change', this.handleOrientationChange); + } + }, { + key: "render", + value: function render() { + return _react2.default.createElement(WrappedComponent, babelHelpers.extends({}, this.props, this.state, { + __source: { + fileName: _jsxFileName, + lineNumber: 30 + } + })); + } + }]); + return withOrientation; + }(_react2.default.Component); + + var _initialiseProps = function _initialiseProps() { + var _this2 = this; + + this.handleOrientationChange = function (_ref2) { + var window = _ref2.window; + var isLandscape = isOrientationLandscape(window); + + _this2.setState({ + isLandscape: isLandscape + }); + }; + }; + + return (0, _hoistNonReactStatics2.default)(withOrientation, WrappedComponent); + }; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _hoistNonReactStatics = require(_dependencyMap[2], "hoist-non-react-statics"); + + var _hoistNonReactStatics2 = babelHelpers.interopRequireDefault(_hoistNonReactStatics); + + var isOrientationLandscape = exports.isOrientationLandscape = function isOrientationLandscape(_ref) { + var width = _ref.width, + height = _ref.height; + return width > height; + }; +},401,[12,66,30],"react-navigation/src/views/withOrientation.js"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = require(_dependencyMap[0], "react-native/Libraries/Image/AssetRegistry").registerAsset({ + "__packager_asset": true, + "httpServerLocation": "/assets/node_modules/react-navigation/src/views/assets", + "width": 48, + "height": 82, + "scales": [1], + "hash": "1c7339b1dcf76fbc66536a0728963705", + "name": "back-icon-mask", + "type": "png" + }); +},402,[202],"node_modules/react-navigation/src/views/assets/back-icon-mask.png"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = getChildEventSubscriber; + + function getChildEventSubscriber(addListener, key) { + var actionSubscribers = new Set(); + var willFocusSubscribers = new Set(); + var didFocusSubscribers = new Set(); + var willBlurSubscribers = new Set(); + var didBlurSubscribers = new Set(); + + var getChildSubscribers = function getChildSubscribers(evtName) { + switch (evtName) { + case 'action': + return actionSubscribers; + + case 'willFocus': + return willFocusSubscribers; + + case 'didFocus': + return didFocusSubscribers; + + case 'willBlur': + return willBlurSubscribers; + + case 'didBlur': + return didBlurSubscribers; + + default: + return null; + } + }; + + var emit = function emit(type, payload) { + var payloadWithType = babelHelpers.extends({}, payload, { + type: type + }); + var subscribers = getChildSubscribers(type); + subscribers && subscribers.forEach(function (subs) { + subs(payloadWithType); + }); + }; + + var lastEmittedEvent = 'didBlur'; + + var cleanup = function cleanup() { + upstreamSubscribers.forEach(function (subs) { + return subs && subs.remove(); + }); + }; + + var upstreamEvents = ['willFocus', 'didFocus', 'willBlur', 'didBlur', 'action']; + var upstreamSubscribers = upstreamEvents.map(function (eventName) { + return addListener(eventName, function (payload) { + var state = payload.state, + lastState = payload.lastState, + action = payload.action; + var lastRoutes = lastState && lastState.routes; + var routes = state && state.routes; + var lastFocusKey = lastState && lastState.routes && lastState.routes[lastState.index].key; + var focusKey = routes && routes[state.index].key; + var isChildFocused = focusKey === key; + var lastRoute = lastRoutes && lastRoutes.find(function (route) { + return route.key === key; + }); + var newRoute = routes && routes.find(function (route) { + return route.key === key; + }); + var childPayload = { + context: key + ":" + action.type + "_" + (payload.context || 'Root'), + state: newRoute, + lastState: lastRoute, + action: action, + type: eventName + }; + var isTransitioning = !!state && state.isTransitioning; + var previouslyLastEmittedEvent = lastEmittedEvent; + + if (lastEmittedEvent === 'didBlur') { + if (eventName === 'willFocus' && isChildFocused) { + emit(lastEmittedEvent = 'willFocus', childPayload); + } else if (eventName === 'action' && isChildFocused) { + emit(lastEmittedEvent = 'willFocus', childPayload); + } + } + + if (lastEmittedEvent === 'willFocus') { + if (eventName === 'didFocus' && isChildFocused && !isTransitioning) { + emit(lastEmittedEvent = 'didFocus', childPayload); + } else if (eventName === 'action' && isChildFocused && !isTransitioning) { + emit(lastEmittedEvent = 'didFocus', childPayload); + } + } + + if (lastEmittedEvent === 'didFocus') { + if (!isChildFocused) { + emit(lastEmittedEvent = 'willBlur', childPayload); + } else if (eventName === 'willBlur') { + emit(lastEmittedEvent = 'willBlur', childPayload); + } else if (eventName === 'action' && previouslyLastEmittedEvent === 'didFocus') { + emit('action', childPayload); + } + } + + if (lastEmittedEvent === 'willBlur') { + if (eventName === 'action' && !isChildFocused && !isTransitioning) { + emit(lastEmittedEvent = 'didBlur', childPayload); + } else if (eventName === 'didBlur') { + emit(lastEmittedEvent = 'didBlur', childPayload); + } + } + }); + }); + return function (eventName, eventHandler) { + var subscribers = getChildSubscribers(eventName); + + if (!subscribers) { + throw new Error("Invalid event name \"" + eventName + "\""); + } + + subscribers.add(eventHandler); + + var remove = function remove() { + subscribers.delete(eventHandler); + }; + + return { + remove: remove + }; + }; + } +},403,[],"react-navigation/src/getChildEventSubscriber.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/SceneView.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var SceneView = function (_React$PureComponent) { + babelHelpers.inherits(SceneView, _React$PureComponent); + + function SceneView() { + babelHelpers.classCallCheck(this, SceneView); + return babelHelpers.possibleConstructorReturn(this, (SceneView.__proto__ || Object.getPrototypeOf(SceneView)).apply(this, arguments)); + } + + babelHelpers.createClass(SceneView, [{ + key: "getChildContext", + value: function getChildContext() { + return { + navigation: this.props.navigation + }; + } + }, { + key: "render", + value: function render() { + var _props = this.props, + screenProps = _props.screenProps, + navigation = _props.navigation, + Component = _props.component; + return _react2.default.createElement(Component, { + screenProps: screenProps, + navigation: navigation, + __source: { + fileName: _jsxFileName, + lineNumber: 17 + } + }); + } + }]); + return SceneView; + }(_react2.default.PureComponent); + + SceneView.childContextTypes = { + navigation: _propTypes2.default.object.isRequired + }; + exports.default = SceneView; +},404,[12,24],"react-navigation/src/views/SceneView.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var _CardStackStyleInterpolator = require(_dependencyMap[1], "./CardStackStyleInterpolator"); + + var _CardStackStyleInterpolator2 = babelHelpers.interopRequireDefault(_CardStackStyleInterpolator); + + var _ReactNativeFeatures = require(_dependencyMap[2], "../../utils/ReactNativeFeatures"); + + var ReactNativeFeatures = babelHelpers.interopRequireWildcard(_ReactNativeFeatures); + var IOSTransitionSpec = void 0; + + if (ReactNativeFeatures.supportsImprovedSpringAnimation()) { + IOSTransitionSpec = { + timing: _reactNative.Animated.spring, + stiffness: 1000, + damping: 500, + mass: 3 + }; + } else { + IOSTransitionSpec = { + duration: 500, + easing: _reactNative.Easing.bezier(0.2833, 0.99, 0.31833, 0.99), + timing: _reactNative.Animated.timing + }; + } + + var SlideFromRightIOS = { + transitionSpec: IOSTransitionSpec, + screenInterpolator: _CardStackStyleInterpolator2.default.forHorizontal, + containerStyle: { + backgroundColor: '#000' + } + }; + var ModalSlideFromBottomIOS = { + transitionSpec: IOSTransitionSpec, + screenInterpolator: _CardStackStyleInterpolator2.default.forVertical, + containerStyle: { + backgroundColor: '#000' + } + }; + var FadeInFromBottomAndroid = { + transitionSpec: { + duration: 350, + easing: _reactNative.Easing.out(_reactNative.Easing.poly(5)), + timing: _reactNative.Animated.timing + }, + screenInterpolator: _CardStackStyleInterpolator2.default.forFadeFromBottomAndroid + }; + var FadeOutToBottomAndroid = { + transitionSpec: { + duration: 230, + easing: _reactNative.Easing.in(_reactNative.Easing.poly(4)), + timing: _reactNative.Animated.timing + }, + screenInterpolator: _CardStackStyleInterpolator2.default.forFadeFromBottomAndroid + }; + + function defaultTransitionConfig(transitionProps, prevTransitionProps, isModal) { + if (_reactNative.Platform.OS === 'android') { + if (prevTransitionProps && transitionProps.index < prevTransitionProps.index) { + return FadeOutToBottomAndroid; + } + + return FadeInFromBottomAndroid; + } + + if (isModal) { + return ModalSlideFromBottomIOS; + } + + return SlideFromRightIOS; + } + + function getTransitionConfig(transitionConfigurer, transitionProps, prevTransitionProps, isModal) { + var defaultConfig = defaultTransitionConfig(transitionProps, prevTransitionProps, isModal); + + if (transitionConfigurer) { + return babelHelpers.extends({}, defaultConfig, transitionConfigurer(transitionProps, prevTransitionProps, isModal)); + } + + return defaultConfig; + } + + exports.default = { + defaultTransitionConfig: defaultTransitionConfig, + getTransitionConfig: getTransitionConfig + }; +},405,[66,406,407],"react-navigation/src/views/CardStack/TransitionConfigs.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var _getSceneIndicesForInterpolationInputRange = require(_dependencyMap[1], "../../utils/getSceneIndicesForInterpolationInputRange"); + + var _getSceneIndicesForInterpolationInputRange2 = babelHelpers.interopRequireDefault(_getSceneIndicesForInterpolationInputRange); + + function forInitial(props) { + var navigation = props.navigation, + scene = props.scene; + var focused = navigation.state.index === scene.index; + var opacity = focused ? 1 : 0; + var translate = focused ? 0 : 1000000; + return { + opacity: opacity, + transform: [{ + translateX: translate + }, { + translateY: translate + }] + }; + } + + function forHorizontal(props) { + var layout = props.layout, + position = props.position, + scene = props.scene; + + if (!layout.isMeasured) { + return forInitial(props); + } + + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + var opacity = position.interpolate({ + inputRange: [first, first + 0.01, index, last - 0.01, last], + outputRange: [0, 1, 1, 0.85, 0] + }); + var width = layout.initWidth; + var translateX = position.interpolate({ + inputRange: [first, index, last], + outputRange: _reactNative.I18nManager.isRTL ? [-width, 0, width * 0.3] : [width, 0, width * -0.3] + }); + var translateY = 0; + return { + opacity: opacity, + transform: [{ + translateX: translateX + }, { + translateY: translateY + }] + }; + } + + function forVertical(props) { + var layout = props.layout, + position = props.position, + scene = props.scene; + + if (!layout.isMeasured) { + return forInitial(props); + } + + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + var opacity = position.interpolate({ + inputRange: [first, first + 0.01, index, last - 0.01, last], + outputRange: [0, 1, 1, 0.85, 0] + }); + var height = layout.initHeight; + var translateY = position.interpolate({ + inputRange: [first, index, last], + outputRange: [height, 0, 0] + }); + var translateX = 0; + return { + opacity: opacity, + transform: [{ + translateX: translateX + }, { + translateY: translateY + }] + }; + } + + function forFadeFromBottomAndroid(props) { + var layout = props.layout, + position = props.position, + scene = props.scene; + + if (!layout.isMeasured) { + return forInitial(props); + } + + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + var inputRange = [first, index, last - 0.01, last]; + var opacity = position.interpolate({ + inputRange: inputRange, + outputRange: [0, 1, 1, 0] + }); + var translateY = position.interpolate({ + inputRange: inputRange, + outputRange: [50, 0, 0, 0] + }); + var translateX = 0; + return { + opacity: opacity, + transform: [{ + translateX: translateX + }, { + translateY: translateY + }] + }; + } + + function forFade(props) { + var layout = props.layout, + position = props.position, + scene = props.scene; + + if (!layout.isMeasured) { + return forInitial(props); + } + + var interpolate = (0, _getSceneIndicesForInterpolationInputRange2.default)(props); + if (!interpolate) return { + opacity: 0 + }; + var first = interpolate.first, + last = interpolate.last; + var index = scene.index; + var opacity = position.interpolate({ + inputRange: [first, index, last], + outputRange: [0, 1, 1] + }); + return { + opacity: opacity + }; + } + + function canUseNativeDriver() { + return true; + } + + exports.default = { + forHorizontal: forHorizontal, + forVertical: forVertical, + forFadeFromBottomAndroid: forFadeFromBottomAndroid, + forFade: forFade, + canUseNativeDriver: canUseNativeDriver + }; +},406,[66,400],"react-navigation/src/views/CardStack/CardStackStyleInterpolator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.supportsImprovedSpringAnimation = undefined; + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var PlatformConstants = _reactNative.NativeModules.PlatformConstants; + + var supportsImprovedSpringAnimation = exports.supportsImprovedSpringAnimation = function supportsImprovedSpringAnimation() { + if (PlatformConstants && PlatformConstants.reactNativeVersion) { + var _PlatformConstants$re = PlatformConstants.reactNativeVersion, + major = _PlatformConstants$re.major, + minor = _PlatformConstants$re.minor; + return minor >= 50 || major === 0 && minor === 0; + } + + return false; + }; +},407,[66],"react-navigation/src/utils/ReactNativeFeatures.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Transitioner.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _invariant = require(_dependencyMap[2], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _ScenesReducer = require(_dependencyMap[3], "./ScenesReducer"); + + var _ScenesReducer2 = babelHelpers.interopRequireDefault(_ScenesReducer); + + var DefaultTransitionSpec = { + duration: 250, + easing: _reactNative.Easing.inOut(_reactNative.Easing.ease), + timing: _reactNative.Animated.timing + }; + + var Transitioner = function (_React$Component) { + babelHelpers.inherits(Transitioner, _React$Component); + + function Transitioner(props, context) { + babelHelpers.classCallCheck(this, Transitioner); + + var _this = babelHelpers.possibleConstructorReturn(this, (Transitioner.__proto__ || Object.getPrototypeOf(Transitioner)).call(this, props, context)); + + var layout = { + height: new _reactNative.Animated.Value(0), + initHeight: 0, + initWidth: 0, + isMeasured: false, + width: new _reactNative.Animated.Value(0) + }; + _this.state = { + layout: layout, + position: new _reactNative.Animated.Value(_this.props.navigation.state.index), + progress: new _reactNative.Animated.Value(1), + scenes: (0, _ScenesReducer2.default)([], _this.props.navigation.state) + }; + _this._prevTransitionProps = null; + _this._transitionProps = buildTransitionProps(props, _this.state); + _this._isMounted = false; + _this._isTransitionRunning = false; + _this._queuedTransition = null; + return _this; + } + + babelHelpers.createClass(Transitioner, [{ + key: "componentWillMount", + value: function componentWillMount() { + this._onLayout = this._onLayout.bind(this); + this._onTransitionEnd = this._onTransitionEnd.bind(this); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this._isMounted = true; + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._isMounted = false; + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + var nextScenes = (0, _ScenesReducer2.default)(this.state.scenes, nextProps.navigation.state, this.props.navigation.state); + + if (nextScenes === this.state.scenes) { + return; + } + + var indexHasChanged = nextProps.navigation.state.index !== this.props.navigation.state.index; + + if (this._isTransitionRunning) { + this._queuedTransition = { + nextProps: nextProps, + nextScenes: nextScenes, + indexHasChanged: indexHasChanged + }; + return; + } + + this._startTransition(nextProps, nextScenes, indexHasChanged); + } + }, { + key: "_startTransition", + value: function _startTransition(nextProps, nextScenes, indexHasChanged) { + var _this2 = this; + + var nextState = babelHelpers.extends({}, this.state, { + scenes: nextScenes + }); + var position = nextState.position, + progress = nextState.progress; + progress.setValue(0); + this._prevTransitionProps = this._transitionProps; + this._transitionProps = buildTransitionProps(nextProps, nextState); + var transitionUserSpec = nextProps.configureTransition ? nextProps.configureTransition(this._transitionProps, this._prevTransitionProps) : null; + var transitionSpec = babelHelpers.extends({}, DefaultTransitionSpec, transitionUserSpec); + var timing = transitionSpec.timing; + delete transitionSpec.timing; + var toValue = nextProps.navigation.state.index; + var positionHasChanged = position.__getValue() !== toValue; + var animations = indexHasChanged && positionHasChanged ? [timing(progress, babelHelpers.extends({}, transitionSpec, { + toValue: 1 + })), timing(position, babelHelpers.extends({}, transitionSpec, { + toValue: nextProps.navigation.state.index + }))] : []; + this._isTransitionRunning = true; + this.setState(nextState, function _callee() { + var result; + return regeneratorRuntime.async(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!nextProps.onTransitionStart) { + _context.next = 5; + break; + } + + result = nextProps.onTransitionStart(_this2._transitionProps, _this2._prevTransitionProps); + + if (!(result instanceof Promise)) { + _context.next = 5; + break; + } + + _context.next = 5; + return regeneratorRuntime.awrap(result); + + case 5: + _reactNative.Animated.parallel(animations).start(_this2._onTransitionEnd); + + case 6: + case "end": + return _context.stop(); + } + } + }, null, _this2); + }); + } + }, { + key: "render", + value: function render() { + return _react2.default.createElement( + _reactNative.View, + { + onLayout: this._onLayout, + style: [styles.main], + __source: { + fileName: _jsxFileName, + lineNumber: 142 + } + }, + this.props.render(this._transitionProps, this._prevTransitionProps) + ); + } + }, { + key: "_onLayout", + value: function _onLayout(event) { + var _event$nativeEvent$la = event.nativeEvent.layout, + height = _event$nativeEvent$la.height, + width = _event$nativeEvent$la.width; + + if (this.state.layout.initWidth === width && this.state.layout.initHeight === height) { + return; + } + + var layout = babelHelpers.extends({}, this.state.layout, { + initHeight: height, + initWidth: width, + isMeasured: true + }); + layout.height.setValue(height); + layout.width.setValue(width); + var nextState = babelHelpers.extends({}, this.state, { + layout: layout + }); + this._transitionProps = buildTransitionProps(this.props, nextState); + this.setState(nextState); + } + }, { + key: "_onTransitionEnd", + value: function _onTransitionEnd() { + var _this3 = this; + + if (!this._isMounted) { + return; + } + + var prevTransitionProps = this._prevTransitionProps; + this._prevTransitionProps = null; + var scenes = this.state.scenes.filter(isSceneNotStale); + var nextState = babelHelpers.extends({}, this.state, { + scenes: this.state.scenes.length === scenes.length ? this.state.scenes : scenes + }); + this._transitionProps = buildTransitionProps(this.props, nextState); + this.setState(nextState, function _callee2() { + var result; + return regeneratorRuntime.async(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (!_this3.props.onTransitionEnd) { + _context2.next = 5; + break; + } + + result = _this3.props.onTransitionEnd(_this3._transitionProps, prevTransitionProps); + + if (!(result instanceof Promise)) { + _context2.next = 5; + break; + } + + _context2.next = 5; + return regeneratorRuntime.awrap(result); + + case 5: + if (_this3._queuedTransition) { + _this3._startTransition(_this3._queuedTransition.nextProps, _this3._queuedTransition.nextScenes, _this3._queuedTransition.indexHasChanged); + + _this3._queuedTransition = null; + } else { + _this3._isTransitionRunning = false; + } + + case 6: + case "end": + return _context2.stop(); + } + } + }, null, _this3); + }); + } + }]); + return Transitioner; + }(_react2.default.Component); + + function buildTransitionProps(props, state) { + var navigation = props.navigation; + var layout = state.layout, + position = state.position, + progress = state.progress, + scenes = state.scenes; + var scene = scenes.find(isSceneActive); + (0, _invariant2.default)(scene, 'Could not find active scene'); + return { + layout: layout, + navigation: navigation, + position: position, + progress: progress, + scenes: scenes, + scene: scene, + index: scene.index + }; + } + + function isSceneNotStale(scene) { + return !scene.isStale; + } + + function isSceneActive(scene) { + return scene.isActive; + } + + var styles = _reactNative.StyleSheet.create({ + main: { + flex: 1 + } + }); + + exports.default = Transitioner; +},408,[12,66,381,409],"react-navigation/src/views/Transitioner.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = ScenesReducer; + + var _invariant = require(_dependencyMap[0], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _shallowEqual = require(_dependencyMap[1], "../utils/shallowEqual"); + + var _shallowEqual2 = babelHelpers.interopRequireDefault(_shallowEqual); + + var SCENE_KEY_PREFIX = 'scene_'; + + function compareKey(one, two) { + var delta = one.length - two.length; + + if (delta > 0) { + return 1; + } + + if (delta < 0) { + return -1; + } + + return one > two ? 1 : -1; + } + + function compareScenes(one, two) { + if (one.index > two.index) { + return 1; + } + + if (one.index < two.index) { + return -1; + } + + return compareKey(one.key, two.key); + } + + function areScenesShallowEqual(one, two) { + return one.key === two.key && one.index === two.index && one.isStale === two.isStale && one.isActive === two.isActive && areRoutesShallowEqual(one.route, two.route); + } + + function areRoutesShallowEqual(one, two) { + if (!one || !two) { + return one === two; + } + + if (one.key !== two.key) { + return false; + } + + return (0, _shallowEqual2.default)(one, two); + } + + function ScenesReducer(scenes, nextState, prevState) { + if (prevState === nextState) { + return scenes; + } + + var prevScenes = new Map(); + var freshScenes = new Map(); + var staleScenes = new Map(); + scenes.forEach(function (scene) { + var key = scene.key; + + if (scene.isStale) { + staleScenes.set(key, scene); + } + + prevScenes.set(key, scene); + }); + var nextKeys = new Set(); + nextState.routes.forEach(function (route, index) { + var key = SCENE_KEY_PREFIX + route.key; + var scene = { + index: index, + isActive: false, + isStale: false, + key: key, + route: route + }; + (0, _invariant2.default)(!nextKeys.has(key), "navigation.state.routes[" + index + "].key \"" + key + "\" conflicts with " + 'another route!'); + nextKeys.add(key); + + if (staleScenes.has(key)) { + staleScenes.delete(key); + } + + freshScenes.set(key, scene); + }); + + if (prevState) { + prevState.routes.forEach(function (route, index) { + var key = SCENE_KEY_PREFIX + route.key; + + if (freshScenes.has(key)) { + return; + } + + staleScenes.set(key, { + index: index, + isActive: false, + isStale: true, + key: key, + route: route + }); + }); + } + + var nextScenes = []; + + var mergeScene = function mergeScene(nextScene) { + var key = nextScene.key; + var prevScene = prevScenes.has(key) ? prevScenes.get(key) : null; + + if (prevScene && areScenesShallowEqual(prevScene, nextScene)) { + nextScenes.push(prevScene); + } else { + nextScenes.push(nextScene); + } + }; + + staleScenes.forEach(mergeScene); + freshScenes.forEach(mergeScene); + nextScenes.sort(compareScenes); + var activeScenesCount = 0; + nextScenes.forEach(function (scene, ii) { + var isActive = !scene.isStale && scene.index === nextState.index; + + if (isActive !== scene.isActive) { + nextScenes[ii] = babelHelpers.extends({}, scene, { + isActive: isActive + }); + } + + if (isActive) { + activeScenesCount++; + } + }); + (0, _invariant2.default)(activeScenesCount === 1, 'there should always be only one scene active, not %s.', activeScenesCount); + + if (nextScenes.length !== scenes.length) { + return nextScenes; + } + + if (nextScenes.some(function (scene, index) { + return !areScenesShallowEqual(scenes[index], scene); + })) { + return nextScenes; + } + + return scenes; + } +},409,[381,410],"react-navigation/src/views/ScenesReducer.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + function is(x, y) { + if (x === y) { + return x !== 0 || y !== 0 || 1 / x === 1 / y; + } else { + return x !== x && y !== y; + } + } + + function shallowEqual(objA, objB) { + if (is(objA, objB)) { + return true; + } + + if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { + return false; + } + + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); + + if (keysA.length !== keysB.length) { + return false; + } + + for (var i = 0; i < keysA.length; i++) { + if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { + return false; + } + } + + return true; + } + + module.exports = shallowEqual; +},410,[],"react-navigation/src/utils/shallowEqual.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _pathToRegexp = require(_dependencyMap[0], "path-to-regexp"); + + var _pathToRegexp2 = babelHelpers.interopRequireDefault(_pathToRegexp); + + var _NavigationActions = require(_dependencyMap[1], "../NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _createConfigGetter = require(_dependencyMap[2], "./createConfigGetter"); + + var _createConfigGetter2 = babelHelpers.interopRequireDefault(_createConfigGetter); + + var _getScreenForRouteName = require(_dependencyMap[3], "./getScreenForRouteName"); + + var _getScreenForRouteName2 = babelHelpers.interopRequireDefault(_getScreenForRouteName); + + var _StateUtils = require(_dependencyMap[4], "../StateUtils"); + + var _StateUtils2 = babelHelpers.interopRequireDefault(_StateUtils); + + var _validateRouteConfigMap = require(_dependencyMap[5], "./validateRouteConfigMap"); + + var _validateRouteConfigMap2 = babelHelpers.interopRequireDefault(_validateRouteConfigMap); + + var _getScreenConfigDeprecated = require(_dependencyMap[6], "./getScreenConfigDeprecated"); + + var _getScreenConfigDeprecated2 = babelHelpers.interopRequireDefault(_getScreenConfigDeprecated); + + var _invariant = require(_dependencyMap[7], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _KeyGenerator = require(_dependencyMap[8], "./KeyGenerator"); + + function isEmpty(obj) { + if (!obj) return true; + + for (var key in obj) { + return false; + } + + return true; + } + + function behavesLikePushAction(action) { + return action.type === _NavigationActions2.default.NAVIGATE || action.type === _NavigationActions2.default.PUSH; + } + + exports.default = function (routeConfigs) { + var stackConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0, _validateRouteConfigMap2.default)(routeConfigs); + var childRouters = {}; + var routeNames = Object.keys(routeConfigs); + routeNames.forEach(function (routeName) { + var screen = (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + + if (screen && screen.router) { + childRouters[routeName] = screen.router; + } else { + childRouters[routeName] = null; + } + }); + var initialRouteParams = stackConfig.initialRouteParams; + var initialRouteName = stackConfig.initialRouteName || routeNames[0]; + var initialChildRouter = childRouters[initialRouteName]; + var pathsByRouteNames = babelHelpers.extends({}, stackConfig.paths) || {}; + var paths = []; + + function getInitialState(action) { + var route = {}; + var childRouter = childRouters[action.routeName]; + + if (behavesLikePushAction(action) && childRouter !== undefined) { + var childState = {}; + + if (childRouter !== null) { + var childAction = action.action || _NavigationActions2.default.init({ + params: action.params + }); + + childState = childRouter.getStateForAction(childAction); + } + + return { + key: 'StackRouterRoot', + isTransitioning: false, + index: 0, + routes: [babelHelpers.extends({ + params: action.params + }, childState, { + key: action.key || (0, _KeyGenerator.generateKey)(), + routeName: action.routeName + })] + }; + } + + if (initialChildRouter) { + route = initialChildRouter.getStateForAction(_NavigationActions2.default.navigate({ + routeName: initialRouteName, + params: initialRouteParams + })); + } + + var params = (route.params || action.params || initialRouteParams) && babelHelpers.extends({}, route.params || {}, action.params || {}, initialRouteParams || {}); + var initialRouteKey = stackConfig.initialRouteKey; + route = babelHelpers.extends({}, route, params ? { + params: params + } : {}, { + routeName: initialRouteName, + key: action.key || initialRouteKey || (0, _KeyGenerator.generateKey)() + }); + return { + key: 'StackRouterRoot', + isTransitioning: false, + index: 0, + routes: [route] + }; + } + + routeNames.forEach(function (routeName) { + var pathPattern = pathsByRouteNames[routeName] || routeConfigs[routeName].path; + var matchExact = !!pathPattern && !childRouters[routeName]; + + if (pathPattern === undefined) { + pathPattern = routeName; + } + + var keys = []; + var re = void 0, + toPath = void 0, + priority = void 0; + + if (typeof pathPattern === 'string') { + re = (0, _pathToRegexp2.default)(pathPattern, keys); + toPath = _pathToRegexp2.default.compile(pathPattern); + priority = 0; + } else { + re = (0, _pathToRegexp2.default)('*', keys); + + toPath = function toPath() { + return ''; + }; + + matchExact = true; + priority = -1; + } + + if (!matchExact) { + var wildcardRe = (0, _pathToRegexp2.default)(pathPattern + "/*", keys); + re = new RegExp("(?:" + re.source + ")|(?:" + wildcardRe.source + ")"); + } + + pathsByRouteNames[routeName] = { + re: re, + keys: keys, + toPath: toPath, + priority: priority + }; + }); + paths = Object.entries(pathsByRouteNames); + paths.sort(function (a, b) { + return b[1].priority - a[1].priority; + }); + return { + getComponentForState: function getComponentForState(state) { + var activeChildRoute = state.routes[state.index]; + var routeName = activeChildRoute.routeName; + + if (childRouters[routeName]) { + return childRouters[routeName].getComponentForState(activeChildRoute); + } + + return (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + }, + getComponentForRouteName: function getComponentForRouteName(routeName) { + return (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + }, + getStateForAction: function getStateForAction(action, state) { + if (!state) { + return getInitialState(action); + } + + if (action.type !== _NavigationActions2.default.RESET || action.key !== null) { + var keyIndex = action.key ? _StateUtils2.default.indexOf(state, action.key) : -1; + var childIndex = keyIndex >= 0 ? keyIndex : state.index; + var childRoute = state.routes[childIndex]; + (0, _invariant2.default)(childRoute, "StateUtils erroneously thought index " + childIndex + " exists"); + var childRouter = childRouters[childRoute.routeName]; + + if (childRouter) { + var route = childRouter.getStateForAction(action, childRoute); + + if (route === null) { + return state; + } + + if (route && route !== childRoute) { + return _StateUtils2.default.replaceAt(state, childRoute.key, route); + } + } + } + + if (behavesLikePushAction(action) && childRouters[action.routeName] !== undefined) { + var _childRouter = childRouters[action.routeName]; + + var _route = void 0; + + (0, _invariant2.default)(action.type !== _NavigationActions2.default.PUSH || action.key == null, 'StackRouter does not support key on the push action'); + + if (action.key) { + var lastRouteIndex = state.routes.findIndex(function (r) { + return r.key === action.key; + }); + + if (lastRouteIndex !== -1) { + if (state.index === lastRouteIndex && !action.params) { + return state; + } + + var routes = state.routes.slice(0, lastRouteIndex + 1); + + if (action.params) { + var _route2 = state.routes.find(function (r) { + return r.key === action.key; + }); + + routes[lastRouteIndex] = babelHelpers.extends({}, _route2, { + params: babelHelpers.extends({}, _route2.params, action.params) + }); + } + + return babelHelpers.extends({}, state, { + isTransitioning: state.index !== lastRouteIndex ? action.immediate !== true : undefined, + index: lastRouteIndex, + routes: routes + }); + } + } + + if (_childRouter) { + var childAction = action.action || _NavigationActions2.default.init({ + params: action.params + }); + + _route = babelHelpers.extends({ + params: action.params + }, _childRouter.getStateForAction(childAction), { + routeName: action.routeName, + key: action.key || (0, _KeyGenerator.generateKey)() + }); + } else { + _route = { + params: action.params, + routeName: action.routeName, + key: action.key || (0, _KeyGenerator.generateKey)() + }; + } + + return babelHelpers.extends({}, _StateUtils2.default.push(state, _route), { + isTransitioning: action.immediate !== true + }); + } else if (action.type === _NavigationActions2.default.PUSH && childRouters[action.routeName] === undefined) { + return babelHelpers.extends({}, state); + } + + if (behavesLikePushAction(action)) { + var childRouterNames = Object.keys(childRouters); + + for (var i = 0; i < childRouterNames.length; i++) { + var childRouterName = childRouterNames[i]; + var _childRouter2 = childRouters[childRouterName]; + + if (_childRouter2) { + var initChildRoute = _childRouter2.getStateForAction(_NavigationActions2.default.init()); + + var navigatedChildRoute = _childRouter2.getStateForAction(action, initChildRoute); + + var routeToPush = null; + + if (navigatedChildRoute === null) { + routeToPush = initChildRoute; + } else if (navigatedChildRoute !== initChildRoute) { + routeToPush = navigatedChildRoute; + } + + if (routeToPush) { + var _route3 = babelHelpers.extends({}, routeToPush, { + routeName: childRouterName, + key: action.key || (0, _KeyGenerator.generateKey)() + }); + + return _StateUtils2.default.push(state, _route3); + } + } + } + } + + if (action.type === _NavigationActions2.default.POP_TO_TOP) { + if (action.key && state.key !== action.key) { + return state; + } + + if (state.index === 0) { + return babelHelpers.extends({}, state); + } else { + return babelHelpers.extends({}, state, { + isTransitioning: action.immediate !== true, + index: 0, + routes: [state.routes[0]] + }); + } + + return state; + } + + if (action.type === _NavigationActions2.default.REPLACE) { + var routeIndex = state.routes.findIndex(function (r) { + return r.key === action.key; + }); + + if (routeIndex !== -1) { + var _childRouter3 = childRouters[action.routeName]; + var childState = {}; + + if (_childRouter3) { + var _childAction = action.action || _NavigationActions2.default.init({ + params: action.params + }); + + childState = _childRouter3.getStateForAction(_childAction); + } + + var _routes = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes[routeIndex] = babelHelpers.extends({ + params: action.params + }, childState, { + routeName: action.routeName, + key: action.newKey || (0, _KeyGenerator.generateKey)() + }); + return babelHelpers.extends({}, state, { + routes: _routes + }); + } + } + + if (action.type === _NavigationActions2.default.COMPLETE_TRANSITION && (action.key == null || action.key === state.key) && state.isTransitioning) { + return babelHelpers.extends({}, state, { + isTransitioning: false + }); + } + + if (action.type === _NavigationActions2.default.SET_PARAMS) { + var key = action.key; + var lastRoute = state.routes.find(function (route) { + return route.key === key; + }); + + if (lastRoute) { + var params = babelHelpers.extends({}, lastRoute.params, action.params); + + var _routes2 = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes2[state.routes.indexOf(lastRoute)] = babelHelpers.extends({}, lastRoute, { + params: params + }); + return babelHelpers.extends({}, state, { + routes: _routes2 + }); + } + } + + if (action.type === _NavigationActions2.default.RESET) { + if (action.key != null && action.key != state.key) { + return state; + } + + var newStackActions = action.actions; + return babelHelpers.extends({}, state, { + routes: newStackActions.map(function (newStackAction) { + var router = childRouters[newStackAction.routeName]; + var childState = {}; + + if (router) { + var _childAction2 = newStackAction.action || _NavigationActions2.default.init({ + params: newStackAction.params + }); + + childState = router.getStateForAction(_childAction2); + } + + return babelHelpers.extends({ + params: newStackAction.params + }, childState, { + routeName: newStackAction.routeName, + key: newStackAction.key || (0, _KeyGenerator.generateKey)() + }); + }), + index: action.index + }); + } + + if (action.type === _NavigationActions2.default.BACK || action.type === _NavigationActions2.default.POP) { + var _key = action.key, + n = action.n, + immediate = action.immediate; + var backRouteIndex = state.index; + + if (action.type === _NavigationActions2.default.POP && n != null) { + backRouteIndex = Math.max(1, state.index - n + 1); + } else if (_key) { + var backRoute = state.routes.find(function (route) { + return route.key === _key; + }); + backRouteIndex = state.routes.indexOf(backRoute); + } + + if (backRouteIndex > 0) { + return babelHelpers.extends({}, state, { + routes: state.routes.slice(0, backRouteIndex), + index: backRouteIndex - 1, + isTransitioning: immediate !== true + }); + } else if (backRouteIndex === 0 && action.type === _NavigationActions2.default.POP) { + return babelHelpers.extends({}, state); + } + } + + return state; + }, + getPathAndParamsForState: function getPathAndParamsForState(state) { + var route = state.routes[state.index]; + var routeName = route.routeName; + var screen = (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + var subPath = pathsByRouteNames[routeName].toPath(route.params); + var path = subPath; + var params = route.params; + + if (screen && screen.router) { + var stateRoute = route; + var child = screen.router.getPathAndParamsForState(stateRoute); + path = subPath ? subPath + "/" + child.path : child.path; + params = child.params ? babelHelpers.extends({}, params, child.params) : params; + } + + return { + path: path, + params: params + }; + }, + getActionForPathAndParams: function getActionForPathAndParams(pathToResolve, inputParams) { + if (!pathToResolve) { + return _NavigationActions2.default.navigate({ + routeName: initialRouteName + }); + } + + var _pathToResolve$split = pathToResolve.split('?'), + _pathToResolve$split2 = babelHelpers.slicedToArray(_pathToResolve$split, 2), + pathNameToResolve = _pathToResolve$split2[0], + queryString = _pathToResolve$split2[1]; + + var matchedRouteName = void 0; + var pathMatch = void 0; + var pathMatchKeys = void 0; + + for (var _iterator = paths, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]();;) { + var _ref3; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref3 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref3 = _i.value; + } + + var _ref = _ref3; + + var _ref2 = babelHelpers.slicedToArray(_ref, 2); + + var routeName = _ref2[0]; + var path = _ref2[1]; + var re = path.re, + keys = path.keys; + pathMatch = re.exec(pathNameToResolve); + + if (pathMatch && pathMatch.length) { + pathMatchKeys = keys; + matchedRouteName = routeName; + break; + } + } + + if (!matchedRouteName) { + if (!pathToResolve) { + return _NavigationActions2.default.navigate({ + routeName: initialRouteName + }); + } + + return null; + } + + var nestedAction = void 0; + var nestedQueryString = queryString ? '?' + queryString : ''; + + if (childRouters[matchedRouteName]) { + nestedAction = childRouters[matchedRouteName].getActionForPathAndParams(pathMatch.slice(pathMatchKeys.length).join('/') + nestedQueryString); + + if (!nestedAction) { + return null; + } + } + + var queryParams = !isEmpty(inputParams) ? inputParams : (queryString || '').split('&').reduce(function (result, item) { + if (item !== '') { + var nextResult = result || {}; + + var _item$split = item.split('='), + _item$split2 = babelHelpers.slicedToArray(_item$split, 2), + key = _item$split2[0], + value = _item$split2[1]; + + nextResult[key] = value; + return nextResult; + } + + return result; + }, null); + var params = pathMatch.slice(1).reduce(function (result, matchResult, i) { + var key = pathMatchKeys[i]; + + if (key.asterisk || !key) { + return result; + } + + var nextResult = result || {}; + var paramName = key.name; + var decodedMatchResult = void 0; + + try { + decodedMatchResult = decodeURIComponent(matchResult); + } catch (e) {} + + nextResult[paramName] = decodedMatchResult || matchResult; + return nextResult; + }, queryParams); + return _NavigationActions2.default.navigate(babelHelpers.extends({ + routeName: matchedRouteName + }, params ? { + params: params + } : {}, nestedAction ? { + action: nestedAction + } : {})); + }, + getScreenOptions: (0, _createConfigGetter2.default)(routeConfigs, stackConfig.navigationOptions), + getScreenConfig: _getScreenConfigDeprecated2.default + }; + }; +},411,[412,379,414,415,382,417,418,381,419],"react-navigation/src/routers/StackRouter.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isarray = require(_dependencyMap[0], 'isarray'); + + module.exports = pathToRegexp; + module.exports.parse = parse; + module.exports.compile = compile; + module.exports.tokensToFunction = tokensToFunction; + module.exports.tokensToRegExp = tokensToRegExp; + var PATH_REGEXP = new RegExp(['(\\\\.)', '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))'].join('|'), 'g'); + + function parse(str, options) { + var tokens = []; + var key = 0; + var index = 0; + var path = ''; + var defaultDelimiter = options && options.delimiter || '/'; + var res; + + while ((res = PATH_REGEXP.exec(str)) != null) { + var m = res[0]; + var escaped = res[1]; + var offset = res.index; + path += str.slice(index, offset); + index = offset + m.length; + + if (escaped) { + path += escaped[1]; + continue; + } + + var next = str[index]; + var prefix = res[2]; + var name = res[3]; + var capture = res[4]; + var group = res[5]; + var modifier = res[6]; + var asterisk = res[7]; + + if (path) { + tokens.push(path); + path = ''; + } + + var partial = prefix != null && next != null && next !== prefix; + var repeat = modifier === '+' || modifier === '*'; + var optional = modifier === '?' || modifier === '*'; + var delimiter = res[2] || defaultDelimiter; + var pattern = capture || group; + tokens.push({ + name: name || key++, + prefix: prefix || '', + delimiter: delimiter, + optional: optional, + repeat: repeat, + partial: partial, + asterisk: !!asterisk, + pattern: pattern ? escapeGroup(pattern) : asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?' + }); + } + + if (index < str.length) { + path += str.substr(index); + } + + if (path) { + tokens.push(path); + } + + return tokens; + } + + function compile(str, options) { + return tokensToFunction(parse(str, options)); + } + + function encodeURIComponentPretty(str) { + return encodeURI(str).replace(/[\/?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase(); + }); + } + + function encodeAsterisk(str) { + return encodeURI(str).replace(/[?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase(); + }); + } + + function tokensToFunction(tokens) { + var matches = new Array(tokens.length); + + for (var i = 0; i < tokens.length; i++) { + if (typeof tokens[i] === 'object') { + matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$'); + } + } + + return function (obj, opts) { + var path = ''; + var data = obj || {}; + var options = opts || {}; + var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent; + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + path += token; + continue; + } + + var value = data[token.name]; + var segment; + + if (value == null) { + if (token.optional) { + if (token.partial) { + path += token.prefix; + } + + continue; + } else { + throw new TypeError('Expected "' + token.name + '" to be defined'); + } + } + + if (isarray(value)) { + if (!token.repeat) { + throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`'); + } + + if (value.length === 0) { + if (token.optional) { + continue; + } else { + throw new TypeError('Expected "' + token.name + '" to not be empty'); + } + } + + for (var j = 0; j < value.length; j++) { + segment = encode(value[j]); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`'); + } + + path += (j === 0 ? token.prefix : token.delimiter) + segment; + } + + continue; + } + + segment = token.asterisk ? encodeAsterisk(value) : encode(value); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"'); + } + + path += token.prefix + segment; + } + + return path; + }; + } + + function escapeString(str) { + return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1'); + } + + function escapeGroup(group) { + return group.replace(/([=!:$\/()])/g, '\\$1'); + } + + function attachKeys(re, keys) { + re.keys = keys; + return re; + } + + function flags(options) { + return options.sensitive ? '' : 'i'; + } + + function regexpToRegexp(path, keys) { + var groups = path.source.match(/\((?!\?)/g); + + if (groups) { + for (var i = 0; i < groups.length; i++) { + keys.push({ + name: i, + prefix: null, + delimiter: null, + optional: false, + repeat: false, + partial: false, + asterisk: false, + pattern: null + }); + } + } + + return attachKeys(path, keys); + } + + function arrayToRegexp(path, keys, options) { + var parts = []; + + for (var i = 0; i < path.length; i++) { + parts.push(pathToRegexp(path[i], keys, options).source); + } + + var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); + return attachKeys(regexp, keys); + } + + function stringToRegexp(path, keys, options) { + return tokensToRegExp(parse(path, options), keys, options); + } + + function tokensToRegExp(tokens, keys, options) { + if (!isarray(keys)) { + options = keys || options; + keys = []; + } + + options = options || {}; + var strict = options.strict; + var end = options.end !== false; + var route = ''; + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + route += escapeString(token); + } else { + var prefix = escapeString(token.prefix); + var capture = '(?:' + token.pattern + ')'; + keys.push(token); + + if (token.repeat) { + capture += '(?:' + prefix + capture + ')*'; + } + + if (token.optional) { + if (!token.partial) { + capture = '(?:' + prefix + '(' + capture + '))?'; + } else { + capture = prefix + '(' + capture + ')?'; + } + } else { + capture = prefix + '(' + capture + ')'; + } + + route += capture; + } + } + + var delimiter = escapeString(options.delimiter || '/'); + var endsWithDelimiter = route.slice(-delimiter.length) === delimiter; + + if (!strict) { + route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'; + } + + if (end) { + route += '$'; + } else { + route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'; + } + + return attachKeys(new RegExp('^' + route, flags(options)), keys); + } + + function pathToRegexp(path, keys, options) { + if (!isarray(keys)) { + options = keys || options; + keys = []; + } + + options = options || {}; + + if (path instanceof RegExp) { + return regexpToRegexp(path, keys); + } + + if (isarray(path)) { + return arrayToRegexp(path, keys, options); + } + + return stringToRegexp(path, keys, options); + } +},412,[413],"path-to-regexp/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; + }; +},413,[],"isarray/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _invariant = require(_dependencyMap[0], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _getScreenForRouteName = require(_dependencyMap[1], "./getScreenForRouteName"); + + var _getScreenForRouteName2 = babelHelpers.interopRequireDefault(_getScreenForRouteName); + + var _addNavigationHelpers = require(_dependencyMap[2], "../addNavigationHelpers"); + + var _addNavigationHelpers2 = babelHelpers.interopRequireDefault(_addNavigationHelpers); + + var _validateScreenOptions = require(_dependencyMap[3], "./validateScreenOptions"); + + var _validateScreenOptions2 = babelHelpers.interopRequireDefault(_validateScreenOptions); + + var _getChildEventSubscriber = require(_dependencyMap[4], "../getChildEventSubscriber"); + + var _getChildEventSubscriber2 = babelHelpers.interopRequireDefault(_getChildEventSubscriber); + + function applyConfig(configurer, navigationOptions, configProps) { + if (typeof configurer === 'function') { + return babelHelpers.extends({}, navigationOptions, configurer(babelHelpers.extends({}, configProps, { + navigationOptions: navigationOptions + }))); + } + + if (typeof configurer === 'object') { + return babelHelpers.extends({}, navigationOptions, configurer); + } + + return navigationOptions; + } + + exports.default = function (routeConfigs, navigatorScreenConfig) { + return function (navigation, screenProps) { + var state = navigation.state, + dispatch = navigation.dispatch; + var route = state; + (0, _invariant2.default)(route.routeName && typeof route.routeName === 'string', 'Cannot get config because the route does not have a routeName.'); + var Component = (0, _getScreenForRouteName2.default)(routeConfigs, route.routeName); + var outputConfig = {}; + var router = Component.router; + + if (router) { + var routes = route.routes, + index = route.index; + + if (!route || !routes || index == null) { + throw new Error("Expect nav state to have routes and index, " + JSON.stringify(route)); + } + + var childRoute = routes[index]; + var childNavigation = (0, _addNavigationHelpers2.default)({ + state: childRoute, + dispatch: dispatch, + addListener: (0, _getChildEventSubscriber2.default)(navigation.addListener, childRoute.key) + }); + outputConfig = router.getScreenOptions(childNavigation, screenProps); + } + + var routeConfig = routeConfigs[route.routeName]; + var routeScreenConfig = routeConfig.navigationOptions; + var componentScreenConfig = Component.navigationOptions; + var configOptions = { + navigation: navigation, + screenProps: screenProps || {} + }; + outputConfig = applyConfig(navigatorScreenConfig, outputConfig, configOptions); + outputConfig = applyConfig(componentScreenConfig, outputConfig, configOptions); + outputConfig = applyConfig(routeScreenConfig, outputConfig, configOptions); + (0, _validateScreenOptions2.default)(outputConfig, route); + return outputConfig; + }; + }; +},414,[381,415,380,416,403],"react-navigation/src/routers/createConfigGetter.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = getScreenForRouteName; + + var _invariant = require(_dependencyMap[0], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + function getScreenForRouteName(routeConfigs, routeName) { + var routeConfig = routeConfigs[routeName]; + + if (!routeConfig) { + throw new Error("There is no route defined for key " + routeName + ".\n" + ("Must be one of: " + Object.keys(routeConfigs).map(function (a) { + return "'" + a + "'"; + }).join(','))); + } + + if (routeConfig.screen) { + return routeConfig.screen; + } + + if (typeof routeConfig.getScreen === 'function') { + var screen = routeConfig.getScreen(); + (0, _invariant2.default)(typeof screen === 'function', "The getScreen defined for route '" + routeName + " didn't return a valid " + 'screen or navigator.\n\n' + 'Please pass it like this:\n' + (routeName + ": {\n getScreen: () => require('./MyScreen').default\n}")); + return screen; + } + + return routeConfig; + } +},415,[381],"react-navigation/src/routers/getScreenForRouteName.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var deprecatedKeys = ['tabBar']; + + exports.default = function (screenOptions, route) { + var keys = Object.keys(screenOptions); + var deprecatedKey = keys.find(function (key) { + return deprecatedKeys.includes(key); + }); + + if (typeof screenOptions.title === 'function') { + throw new Error(["`title` cannot be defined as a function in navigation options for `" + route.routeName + "` screen. \n", 'Try replacing the following:', '{', ' title: ({ state }) => state...', '}', '', 'with:', '({ navigation }) => ({', ' title: navigation.state...', '})'].join('\n')); + } + + if (deprecatedKey && typeof screenOptions[deprecatedKey] === 'function') { + throw new Error(["`" + deprecatedKey + "` cannot be defined as a function in navigation options for `" + route.routeName + "` screen. \n", 'Try replacing the following:', '{', " " + deprecatedKey + ": ({ state }) => ({", ' key: state...', ' })', '}', '', 'with:', '({ navigation }) => ({', " " + deprecatedKey + "Key: navigation.state...", '})'].join('\n')); + } + + if (deprecatedKey && typeof screenOptions[deprecatedKey] === 'object') { + throw new Error(["Invalid key `" + deprecatedKey + "` defined in navigation options for `" + route.routeName + "` screen.", '\n', 'Try replacing the following navigation options:', '{', " " + deprecatedKey + ": {"].concat(babelHelpers.toConsumableArray(Object.keys(screenOptions[deprecatedKey]).map(function (key) { + return " " + key + ": ...,"; + })), [' },', '}', '\n', 'with:', '{'], babelHelpers.toConsumableArray(Object.keys(screenOptions[deprecatedKey]).map(function (key) { + return " " + (deprecatedKey + key[0].toUpperCase() + key.slice(1)) + ": ...,"; + })), ['}']).join('\n')); + } + }; +},416,[],"react-navigation/src/routers/validateScreenOptions.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _invariant = require(_dependencyMap[0], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + function validateRouteConfigMap(routeConfigs) { + var routeNames = Object.keys(routeConfigs); + (0, _invariant2.default)(routeNames.length > 0, 'Please specify at least one route when configuring a navigator.'); + routeNames.forEach(function (routeName) { + var routeConfig = routeConfigs[routeName]; + var screenComponent = getScreenComponent(routeConfig); + + if (!screenComponent || typeof screenComponent !== 'function' && typeof screenComponent !== 'string' && !routeConfig.getScreen) { + throw new Error("The component for route '" + routeName + "' must be a " + 'React component. For example:\n\n' + "import MyScreen from './MyScreen';\n" + '...\n' + (routeName + ": MyScreen,\n") + '}\n\n' + 'You can also use a navigator:\n\n' + "import MyNavigator from './MyNavigator';\n" + '...\n' + (routeName + ": MyNavigator,\n") + '}'); + } + + if (routeConfig.screen && routeConfig.getScreen) { + throw new Error("Route '" + routeName + "' should declare a screen or " + 'a getScreen, not both.'); + } + }); + } + + function getScreenComponent(routeConfig) { + if (!routeConfig) { + return null; + } + + return routeConfig.screen ? routeConfig.screen : routeConfig; + } + + exports.default = validateRouteConfigMap; +},417,[381],"react-navigation/src/routers/validateRouteConfigMap.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _invariant = require(_dependencyMap[0], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + exports.default = function () { + return (0, _invariant2.default)(false, '`getScreenConfig` has been replaced with `getScreenOptions`'); + }; +},418,[381],"react-navigation/src/routers/getScreenConfigDeprecated.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports._TESTING_ONLY_normalize_keys = _TESTING_ONLY_normalize_keys; + exports.generateKey = generateKey; + var uniqueBaseId = "id-" + Date.now(); + var uuidCount = 0; + + function _TESTING_ONLY_normalize_keys() { + uniqueBaseId = 'id'; + uuidCount = 0; + } + + function generateKey() { + return uniqueBaseId + "-" + uuidCount++; + } +},419,[],"react-navigation/src/routers/KeyGenerator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/navigators/SwitchNavigator.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _SwitchRouter = require(_dependencyMap[1], "../routers/SwitchRouter"); + + var _SwitchRouter2 = babelHelpers.interopRequireDefault(_SwitchRouter); + + var _SwitchView = require(_dependencyMap[2], "../views/SwitchView/SwitchView"); + + var _SwitchView2 = babelHelpers.interopRequireDefault(_SwitchView); + + var _createNavigationContainer = require(_dependencyMap[3], "../createNavigationContainer"); + + var _createNavigationContainer2 = babelHelpers.interopRequireDefault(_createNavigationContainer); + + var _createNavigator = require(_dependencyMap[4], "../navigators/createNavigator"); + + var _createNavigator2 = babelHelpers.interopRequireDefault(_createNavigator); + + exports.default = function (routeConfigMap) { + var switchConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var router = (0, _SwitchRouter2.default)(routeConfigMap, switchConfig); + var navigator = (0, _createNavigator2.default)(router, routeConfigMap, switchConfig)(function (props) { + return _react2.default.createElement(_SwitchView2.default, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 11 + } + })); + }); + return (0, _createNavigationContainer2.default)(navigator); + }; +},420,[12,421,422,377,383],"react-navigation/src/navigators/SwitchNavigator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _invariant = require(_dependencyMap[0], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _getScreenForRouteName = require(_dependencyMap[1], "./getScreenForRouteName"); + + var _getScreenForRouteName2 = babelHelpers.interopRequireDefault(_getScreenForRouteName); + + var _createConfigGetter = require(_dependencyMap[2], "./createConfigGetter"); + + var _createConfigGetter2 = babelHelpers.interopRequireDefault(_createConfigGetter); + + var _NavigationActions = require(_dependencyMap[3], "../NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _validateRouteConfigMap = require(_dependencyMap[4], "./validateRouteConfigMap"); + + var _validateRouteConfigMap2 = babelHelpers.interopRequireDefault(_validateRouteConfigMap); + + var _getScreenConfigDeprecated = require(_dependencyMap[5], "./getScreenConfigDeprecated"); + + var _getScreenConfigDeprecated2 = babelHelpers.interopRequireDefault(_getScreenConfigDeprecated); + + function childrenUpdateWithoutSwitchingIndex(actionType) { + return [_NavigationActions2.default.SET_PARAMS, _NavigationActions2.default.COMPLETE_TRANSITION].includes(actionType); + } + + exports.default = function (routeConfigs) { + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0, _validateRouteConfigMap2.default)(routeConfigs); + var order = config.order || Object.keys(routeConfigs); + var paths = config.paths || {}; + var initialRouteParams = config.initialRouteParams; + var initialRouteName = config.initialRouteName || order[0]; + var backBehavior = config.backBehavior || 'none'; + var shouldBackNavigateToInitialRoute = backBehavior === 'initialRoute'; + var resetOnBlur = config.hasOwnProperty('resetOnBlur') ? config.resetOnBlur : true; + var initialRouteIndex = order.indexOf(initialRouteName); + var childRouters = {}; + order.forEach(function (routeName) { + var routeConfig = routeConfigs[routeName]; + paths[routeName] = typeof routeConfig.path === 'string' ? routeConfig.path : routeName; + childRouters[routeName] = null; + var screen = (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + + if (screen.router) { + childRouters[routeName] = screen.router; + } + }); + + if (initialRouteIndex === -1) { + throw new Error("Invalid initialRouteName '" + initialRouteName + "'." + ("Should be one of " + order.map(function (n) { + return "\"" + n + "\""; + }).join(', '))); + } + + function resetChildRoute(routeName) { + var params = routeName === initialRouteName ? initialRouteParams : undefined; + var childRouter = childRouters[routeName]; + + if (childRouter) { + var childAction = _NavigationActions2.default.init(); + + return babelHelpers.extends({}, childRouter.getStateForAction(childAction), { + key: routeName, + routeName: routeName, + params: params + }); + } + + return { + key: routeName, + routeName: routeName, + params: params + }; + } + + return { + getInitialState: function getInitialState() { + var routes = order.map(resetChildRoute); + return { + routes: routes, + index: initialRouteIndex, + isTransitioning: false + }; + }, + getNextState: function getNextState(prevState, possibleNextState) { + var nextState = void 0; + + if (prevState.index !== possibleNextState.index && resetOnBlur) { + var prevRouteName = prevState.routes[prevState.index].routeName; + var nextRoutes = [].concat(babelHelpers.toConsumableArray(possibleNextState.routes)); + nextRoutes[prevState.index] = resetChildRoute(prevRouteName); + return babelHelpers.extends({}, possibleNextState, { + routes: nextRoutes + }); + } else { + nextState = possibleNextState; + } + + return nextState; + }, + getStateForAction: function getStateForAction(action, inputState) { + var prevState = inputState ? babelHelpers.extends({}, inputState) : inputState; + var state = inputState || this.getInitialState(); + var activeChildIndex = state.index; + + if (action.type === _NavigationActions2.default.INIT) { + var params = action.params; + + if (params) { + state.routes = state.routes.map(function (route) { + return babelHelpers.extends({}, route, { + params: babelHelpers.extends({}, route.params, params, route.routeName === initialRouteName ? initialRouteParams : null) + }); + }); + } + } + + var activeChildLastState = state.routes[state.index]; + var activeChildRouter = childRouters[order[state.index]]; + + if (activeChildRouter) { + var activeChildState = activeChildRouter.getStateForAction(action, activeChildLastState); + + if (!activeChildState && inputState) { + return null; + } + + if (activeChildState && activeChildState !== activeChildLastState) { + var _routes = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes[state.index] = activeChildState; + return this.getNextState(prevState, babelHelpers.extends({}, state, { + routes: _routes + })); + } + } + + if (backBehavior !== 'none') { + var isBackEligible = action.key == null || action.key === activeChildLastState.key; + + if (action.type === _NavigationActions2.default.BACK) { + if (isBackEligible && shouldBackNavigateToInitialRoute) { + activeChildIndex = initialRouteIndex; + } else { + return state; + } + } + } + + var didNavigate = false; + + if (action.type === _NavigationActions2.default.NAVIGATE) { + var navigateAction = action; + didNavigate = !!order.find(function (childId, i) { + if (childId === navigateAction.routeName) { + activeChildIndex = i; + return true; + } + + return false; + }); + + if (didNavigate) { + var childState = state.routes[activeChildIndex]; + var newChildState = void 0; + var childRouter = childRouters[action.routeName]; + + if (action.action) { + newChildState = childRouter ? childRouter.getStateForAction(action.action, childState) : null; + } else if (!childRouter && action.params) { + newChildState = babelHelpers.extends({}, childState, { + params: babelHelpers.extends({}, childState.params || {}, action.params) + }); + } + + if (newChildState && newChildState !== childState) { + var _routes2 = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes2[activeChildIndex] = newChildState; + return this.getNextState(prevState, babelHelpers.extends({}, state, { + routes: _routes2, + index: activeChildIndex + })); + } + } + } + + if (action.type === _NavigationActions2.default.SET_PARAMS) { + var key = action.key; + var lastRoute = state.routes.find(function (route) { + return route.key === key; + }); + + if (lastRoute) { + var _params = babelHelpers.extends({}, lastRoute.params, action.params); + + var _routes3 = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes3[state.routes.indexOf(lastRoute)] = babelHelpers.extends({}, lastRoute, { + params: _params + }); + return this.getNextState(prevState, babelHelpers.extends({}, state, { + routes: _routes3 + })); + } + } + + if (activeChildIndex !== state.index) { + return this.getNextState(prevState, babelHelpers.extends({}, state, { + index: activeChildIndex + })); + } else if (didNavigate && !inputState) { + return state; + } else if (didNavigate) { + return null; + } + + var index = state.index; + var routes = state.routes; + order.find(function (childId, i) { + var childRouter = childRouters[childId]; + + if (i === index) { + return false; + } + + var childState = routes[i]; + + if (childRouter) { + childState = childRouter.getStateForAction(action, childState); + } + + if (!childState) { + index = i; + return true; + } + + if (childState !== routes[i]) { + routes = [].concat(babelHelpers.toConsumableArray(routes)); + routes[i] = childState; + index = i; + return true; + } + + return false; + }); + + if (childrenUpdateWithoutSwitchingIndex(action.type)) { + index = state.index; + } + + if (index !== state.index || routes !== state.routes) { + return this.getNextState(prevState, babelHelpers.extends({}, state, { + index: index, + routes: routes + })); + } + + return state; + }, + getComponentForState: function getComponentForState(state) { + var routeName = state.routes[state.index].routeName; + (0, _invariant2.default)(routeName, "There is no route defined for index " + state.index + ". Check that\n that you passed in a navigation state with a valid tab/screen index."); + var childRouter = childRouters[routeName]; + + if (childRouter) { + return childRouter.getComponentForState(state.routes[state.index]); + } + + return (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + }, + getComponentForRouteName: function getComponentForRouteName(routeName) { + return (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + }, + getPathAndParamsForState: function getPathAndParamsForState(state) { + var route = state.routes[state.index]; + var routeName = order[state.index]; + var subPath = paths[routeName]; + var screen = (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + var path = subPath; + var params = route.params; + + if (screen && screen.router) { + var stateRoute = route; + var child = screen.router.getPathAndParamsForState(stateRoute); + path = subPath ? subPath + "/" + child.path : child.path; + params = child.params ? babelHelpers.extends({}, params, child.params) : params; + } + + return { + path: path, + params: params + }; + }, + getActionForPathAndParams: function getActionForPathAndParams(path, params) { + return order.map(function (childId) { + var parts = path.split('/'); + var pathToTest = paths[childId]; + + if (parts[0] === pathToTest) { + var childRouter = childRouters[childId]; + + var action = _NavigationActions2.default.navigate({ + routeName: childId + }); + + if (childRouter && childRouter.getActionForPathAndParams) { + action.action = childRouter.getActionForPathAndParams(parts.slice(1).join('/'), params); + } else if (params) { + action.params = params; + } + + return action; + } + + return null; + }).find(function (action) { + return !!action; + }) || order.map(function (childId) { + var childRouter = childRouters[childId]; + return childRouter && childRouter.getActionForPathAndParams(path, params); + }).find(function (action) { + return !!action; + }) || null; + }, + getScreenOptions: (0, _createConfigGetter2.default)(routeConfigs, config.navigationOptions), + getScreenConfig: _getScreenConfigDeprecated2.default + }; + }; +},421,[381,415,414,379,417,418],"react-navigation/src/routers/SwitchRouter.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/SwitchView/SwitchView.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _SceneView = require(_dependencyMap[1], "../SceneView"); + + var _SceneView2 = babelHelpers.interopRequireDefault(_SceneView); + + var _withCachedChildNavigation = require(_dependencyMap[2], "../../withCachedChildNavigation"); + + var _withCachedChildNavigation2 = babelHelpers.interopRequireDefault(_withCachedChildNavigation); + + var SwitchContainer = function (_React$Component) { + babelHelpers.inherits(SwitchContainer, _React$Component); + + function SwitchContainer() { + babelHelpers.classCallCheck(this, SwitchContainer); + return babelHelpers.possibleConstructorReturn(this, (SwitchContainer.__proto__ || Object.getPrototypeOf(SwitchContainer)).apply(this, arguments)); + } + + babelHelpers.createClass(SwitchContainer, [{ + key: "render", + value: function render() { + var screenProps = this.props.screenProps; + var route = this.props.navigation.state.routes[this.props.navigation.state.index]; + var childNavigation = this.props.childNavigationProps[route.key]; + var ChildComponent = this.props.router.getComponentForRouteName(route.routeName); + return _react2.default.createElement(_SceneView2.default, { + component: ChildComponent, + navigation: childNavigation, + screenProps: screenProps, + __source: { + fileName: _jsxFileName, + lineNumber: 18 + } + }); + } + }]); + return SwitchContainer; + }(_react2.default.Component); + + exports.default = (0, _withCachedChildNavigation2.default)(SwitchContainer); +},422,[12,404,423],"react-navigation/src/views/SwitchView/SwitchView.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/withCachedChildNavigation.js"; + exports.default = withCachedChildNavigation; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _addNavigationHelpers = require(_dependencyMap[1], "./addNavigationHelpers"); + + var _addNavigationHelpers2 = babelHelpers.interopRequireDefault(_addNavigationHelpers); + + var _getChildEventSubscriber = require(_dependencyMap[2], "./getChildEventSubscriber"); + + var _getChildEventSubscriber2 = babelHelpers.interopRequireDefault(_getChildEventSubscriber); + + function withCachedChildNavigation(Comp) { + var _class, _temp2; + + var displayName = Comp.displayName || Comp.name; + return _temp2 = _class = function (_React$PureComponent) { + babelHelpers.inherits(_class, _React$PureComponent); + + function _class() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, _class); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = _class.__proto__ || Object.getPrototypeOf(_class)).call.apply(_ref, [this].concat(args))), _this), _this._childEventSubscribers = {}, _this._isRouteFocused = function (route) { + return function () { + var state = _this.props.navigation.state; + var focusedRoute = state.routes[state.index]; + return route === focusedRoute; + }; + }, _this._updateNavigationProps = function (navigation) { + if (!_this._childNavigationProps) { + _this._childNavigationProps = {}; + } + + navigation.state.routes.forEach(function (route) { + var childNavigation = _this._childNavigationProps[route.key]; + + if (childNavigation && childNavigation.state === route) { + return; + } + + if (!_this._childEventSubscribers[route.key]) { + _this._childEventSubscribers[route.key] = (0, _getChildEventSubscriber2.default)(navigation.addListener, route.key); + } + + _this._childNavigationProps[route.key] = (0, _addNavigationHelpers2.default)({ + dispatch: navigation.dispatch, + state: route, + isFocused: _this._isRouteFocused.bind(_this, route), + addListener: _this._childEventSubscribers[route.key] + }); + }); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(_class, [{ + key: "componentWillMount", + value: function componentWillMount() { + this._updateNavigationProps(this.props.navigation); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this._updateNavigationProps(nextProps.navigation); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + var _this2 = this; + + var activeKeys = this.props.navigation.state.routes.map(function (route) { + return route.key; + }); + Object.keys(this._childEventSubscribers).forEach(function (key) { + if (!activeKeys.includes(key)) { + delete _this2._childEventSubscribers[key]; + } + }); + } + }, { + key: "render", + value: function render() { + return _react2.default.createElement(Comp, babelHelpers.extends({}, this.props, { + childNavigationProps: this._childNavigationProps, + __source: { + fileName: _jsxFileName, + lineNumber: 69 + } + })); + } + }]); + return _class; + }(_react2.default.PureComponent), _class.displayName = "withCachedChildNavigation(" + displayName + ")", _temp2; + } +},423,[12,380,403],"react-navigation/src/withCachedChildNavigation.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/navigators/TabNavigator.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _createNavigator = require(_dependencyMap[2], "./createNavigator"); + + var _createNavigator2 = babelHelpers.interopRequireDefault(_createNavigator); + + var _createNavigationContainer = require(_dependencyMap[3], "../createNavigationContainer"); + + var _createNavigationContainer2 = babelHelpers.interopRequireDefault(_createNavigationContainer); + + var _TabRouter = require(_dependencyMap[4], "../routers/TabRouter"); + + var _TabRouter2 = babelHelpers.interopRequireDefault(_TabRouter); + + var _TabView = require(_dependencyMap[5], "../views/TabView/TabView"); + + var _TabView2 = babelHelpers.interopRequireDefault(_TabView); + + var _TabBarTop = require(_dependencyMap[6], "../views/TabView/TabBarTop"); + + var _TabBarTop2 = babelHelpers.interopRequireDefault(_TabBarTop); + + var _TabBarBottom = require(_dependencyMap[7], "../views/TabView/TabBarBottom"); + + var _TabBarBottom2 = babelHelpers.interopRequireDefault(_TabBarBottom); + + var TabNavigator = function TabNavigator(routeConfigs) { + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var mergedConfig = babelHelpers.extends({}, TabNavigator.Presets.Default, config); + var tabBarComponent = mergedConfig.tabBarComponent, + tabBarPosition = mergedConfig.tabBarPosition, + tabBarOptions = mergedConfig.tabBarOptions, + lazy = mergedConfig.lazy, + removeClippedSubviews = mergedConfig.removeClippedSubviews, + swipeEnabled = mergedConfig.swipeEnabled, + animationEnabled = mergedConfig.animationEnabled, + configureTransition = mergedConfig.configureTransition, + initialLayout = mergedConfig.initialLayout, + tabsConfig = babelHelpers.objectWithoutProperties(mergedConfig, ["tabBarComponent", "tabBarPosition", "tabBarOptions", "lazy", "removeClippedSubviews", "swipeEnabled", "animationEnabled", "configureTransition", "initialLayout"]); + var router = (0, _TabRouter2.default)(routeConfigs, tabsConfig); + var navigator = (0, _createNavigator2.default)(router, routeConfigs, config)(function (props) { + return _react2.default.createElement(_TabView2.default, babelHelpers.extends({}, props, { + lazy: lazy, + removeClippedSubviews: removeClippedSubviews, + tabBarComponent: tabBarComponent, + tabBarPosition: tabBarPosition, + tabBarOptions: tabBarOptions, + swipeEnabled: swipeEnabled, + animationEnabled: animationEnabled, + configureTransition: configureTransition, + initialLayout: initialLayout, + __source: { + fileName: _jsxFileName, + lineNumber: 34 + } + })); + }); + return (0, _createNavigationContainer2.default)(navigator); + }; + + var Presets = { + iOSBottomTabs: { + tabBarComponent: _TabBarBottom2.default, + tabBarPosition: 'bottom', + swipeEnabled: false, + animationEnabled: false, + initialLayout: undefined + }, + AndroidTopTabs: { + tabBarComponent: _TabBarTop2.default, + tabBarPosition: 'top', + swipeEnabled: true, + animationEnabled: true, + initialLayout: undefined + } + }; + TabNavigator.Presets = { + iOSBottomTabs: Presets.iOSBottomTabs, + AndroidTopTabs: Presets.AndroidTopTabs, + Default: _reactNative.Platform.OS === 'ios' ? Presets.iOSBottomTabs : Presets.AndroidTopTabs + }; + exports.default = TabNavigator; +},424,[12,66,383,377,425,426,438,440],"react-navigation/src/navigators/TabNavigator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _invariant = require(_dependencyMap[0], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _getScreenForRouteName = require(_dependencyMap[1], "./getScreenForRouteName"); + + var _getScreenForRouteName2 = babelHelpers.interopRequireDefault(_getScreenForRouteName); + + var _createConfigGetter = require(_dependencyMap[2], "./createConfigGetter"); + + var _createConfigGetter2 = babelHelpers.interopRequireDefault(_createConfigGetter); + + var _NavigationActions = require(_dependencyMap[3], "../NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _validateRouteConfigMap = require(_dependencyMap[4], "./validateRouteConfigMap"); + + var _validateRouteConfigMap2 = babelHelpers.interopRequireDefault(_validateRouteConfigMap); + + var _getScreenConfigDeprecated = require(_dependencyMap[5], "./getScreenConfigDeprecated"); + + var _getScreenConfigDeprecated2 = babelHelpers.interopRequireDefault(_getScreenConfigDeprecated); + + function childrenUpdateWithoutSwitchingIndex(actionType) { + return [_NavigationActions2.default.SET_PARAMS, _NavigationActions2.default.COMPLETE_TRANSITION].includes(actionType); + } + + exports.default = function (routeConfigs) { + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0, _validateRouteConfigMap2.default)(routeConfigs); + var order = config.order || Object.keys(routeConfigs); + var paths = config.paths || {}; + var initialRouteParams = config.initialRouteParams; + var initialRouteName = config.initialRouteName || order[0]; + var initialRouteIndex = order.indexOf(initialRouteName); + var backBehavior = config.backBehavior || 'initialRoute'; + var shouldBackNavigateToInitialRoute = backBehavior === 'initialRoute'; + var tabRouters = {}; + order.forEach(function (routeName) { + var routeConfig = routeConfigs[routeName]; + paths[routeName] = typeof routeConfig.path === 'string' ? routeConfig.path : routeName; + tabRouters[routeName] = null; + var screen = (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + + if (screen.router) { + tabRouters[routeName] = screen.router; + } + }); + + if (initialRouteIndex === -1) { + throw new Error("Invalid initialRouteName '" + initialRouteName + "' for TabRouter. " + ("Should be one of " + order.map(function (n) { + return "\"" + n + "\""; + }).join(', '))); + } + + return { + getStateForAction: function getStateForAction(action, inputState) { + var state = inputState; + + if (!state) { + var _routes = order.map(function (routeName) { + var params = routeName === initialRouteName ? initialRouteParams : undefined; + var tabRouter = tabRouters[routeName]; + + if (tabRouter) { + var childAction = _NavigationActions2.default.init(); + + return babelHelpers.extends({}, tabRouter.getStateForAction(childAction), { + key: routeName, + routeName: routeName, + params: params + }); + } + + return { + key: routeName, + routeName: routeName, + params: params + }; + }); + + state = { + routes: _routes, + index: initialRouteIndex, + isTransitioning: false + }; + } + + if (action.type === _NavigationActions2.default.INIT) { + var params = action.params; + + if (params) { + state.routes = state.routes.map(function (route) { + return babelHelpers.extends({}, route, { + params: babelHelpers.extends({}, route.params, params, route.routeName === initialRouteName ? initialRouteParams : null) + }); + }); + } + } + + var activeTabLastState = state.routes[state.index]; + var activeTabRouter = tabRouters[order[state.index]]; + + if (activeTabRouter) { + var activeTabState = activeTabRouter.getStateForAction(action, activeTabLastState); + + if (!activeTabState && inputState) { + return null; + } + + if (activeTabState && activeTabState !== activeTabLastState) { + var _routes2 = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes2[state.index] = activeTabState; + return babelHelpers.extends({}, state, { + routes: _routes2 + }); + } + } + + var activeTabIndex = state.index; + var isBackEligible = action.key == null || action.key === activeTabLastState.key; + + if (action.type === _NavigationActions2.default.BACK) { + if (isBackEligible && shouldBackNavigateToInitialRoute) { + activeTabIndex = initialRouteIndex; + } else { + return state; + } + } + + var didNavigate = false; + + if (action.type === _NavigationActions2.default.NAVIGATE) { + var navigateAction = action; + didNavigate = !!order.find(function (tabId, i) { + if (tabId === navigateAction.routeName) { + activeTabIndex = i; + return true; + } + + return false; + }); + + if (didNavigate) { + var childState = state.routes[activeTabIndex]; + var newChildState = void 0; + var tabRouter = tabRouters[action.routeName]; + + if (action.action) { + newChildState = tabRouter ? tabRouter.getStateForAction(action.action, childState) : null; + } else if (!tabRouter && action.params) { + newChildState = babelHelpers.extends({}, childState, { + params: babelHelpers.extends({}, childState.params || {}, action.params) + }); + } + + if (newChildState && newChildState !== childState) { + var _routes3 = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes3[activeTabIndex] = newChildState; + return babelHelpers.extends({}, state, { + routes: _routes3, + index: activeTabIndex + }); + } + } + } + + if (action.type === _NavigationActions2.default.SET_PARAMS) { + var key = action.key; + var lastRoute = state.routes.find(function (route) { + return route.key === key; + }); + + if (lastRoute) { + var _params = babelHelpers.extends({}, lastRoute.params, action.params); + + var _routes4 = [].concat(babelHelpers.toConsumableArray(state.routes)); + + _routes4[state.routes.indexOf(lastRoute)] = babelHelpers.extends({}, lastRoute, { + params: _params + }); + return babelHelpers.extends({}, state, { + routes: _routes4 + }); + } + } + + if (activeTabIndex !== state.index) { + return babelHelpers.extends({}, state, { + index: activeTabIndex + }); + } else if (didNavigate && !inputState) { + return state; + } else if (didNavigate) { + return null; + } + + var index = state.index; + var routes = state.routes; + order.find(function (tabId, i) { + var tabRouter = tabRouters[tabId]; + + if (i === index) { + return false; + } + + var tabState = routes[i]; + + if (tabRouter) { + tabState = tabRouter.getStateForAction(action, tabState); + } + + if (!tabState) { + index = i; + return true; + } + + if (tabState !== routes[i]) { + routes = [].concat(babelHelpers.toConsumableArray(routes)); + routes[i] = tabState; + index = i; + return true; + } + + return false; + }); + + if (childrenUpdateWithoutSwitchingIndex(action.type)) { + index = state.index; + } + + if (index !== state.index || routes !== state.routes) { + return babelHelpers.extends({}, state, { + index: index, + routes: routes + }); + } + + return state; + }, + getComponentForState: function getComponentForState(state) { + var routeName = state.routes[state.index].routeName; + (0, _invariant2.default)(routeName, "There is no route defined for index " + state.index + ". Check that\n that you passed in a navigation state with a valid tab/screen index."); + var childRouter = tabRouters[routeName]; + + if (childRouter) { + return childRouter.getComponentForState(state.routes[state.index]); + } + + return (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + }, + getComponentForRouteName: function getComponentForRouteName(routeName) { + return (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + }, + getPathAndParamsForState: function getPathAndParamsForState(state) { + var route = state.routes[state.index]; + var routeName = order[state.index]; + var subPath = paths[routeName]; + var screen = (0, _getScreenForRouteName2.default)(routeConfigs, routeName); + var path = subPath; + var params = route.params; + + if (screen && screen.router) { + var stateRoute = route; + var child = screen.router.getPathAndParamsForState(stateRoute); + path = subPath ? subPath + "/" + child.path : child.path; + params = child.params ? babelHelpers.extends({}, params, child.params) : params; + } + + return { + path: path, + params: params + }; + }, + getActionForPathAndParams: function getActionForPathAndParams(path, params) { + return order.map(function (tabId) { + var parts = path.split('/'); + var pathToTest = paths[tabId]; + + if (parts[0] === pathToTest) { + var tabRouter = tabRouters[tabId]; + + var action = _NavigationActions2.default.navigate({ + routeName: tabId + }); + + if (tabRouter && tabRouter.getActionForPathAndParams) { + action.action = tabRouter.getActionForPathAndParams(parts.slice(1).join('/'), params); + } else if (params) { + action.params = params; + } + + return action; + } + + return null; + }).find(function (action) { + return !!action; + }) || order.map(function (tabId) { + var tabRouter = tabRouters[tabId]; + return tabRouter && tabRouter.getActionForPathAndParams(path, params); + }).find(function (action) { + return !!action; + }) || null; + }, + getScreenOptions: (0, _createConfigGetter2.default)(routeConfigs, config.navigationOptions), + getScreenConfig: _getScreenConfigDeprecated2.default + }; + }; +},425,[381,415,414,379,417,418],"react-navigation/src/routers/TabRouter.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/TabView/TabView.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _reactNativeTabView = require(_dependencyMap[2], "react-native-tab-view"); + + var _reactNativeSafeAreaView = require(_dependencyMap[3], "react-native-safe-area-view"); + + var _reactNativeSafeAreaView2 = babelHelpers.interopRequireDefault(_reactNativeSafeAreaView); + + var _ResourceSavingSceneView = require(_dependencyMap[4], "../ResourceSavingSceneView"); + + var _ResourceSavingSceneView2 = babelHelpers.interopRequireDefault(_ResourceSavingSceneView); + + var _withCachedChildNavigation = require(_dependencyMap[5], "../../withCachedChildNavigation"); + + var _withCachedChildNavigation2 = babelHelpers.interopRequireDefault(_withCachedChildNavigation); + + var TabView = function (_React$PureComponent) { + babelHelpers.inherits(TabView, _React$PureComponent); + + function TabView() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, TabView); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = TabView.__proto__ || Object.getPrototypeOf(TabView)).call.apply(_ref, [this].concat(args))), _this), _this._handlePageChanged = function (index) { + var navigation = _this.props.navigation; + navigation.navigate(navigation.state.routes[index].routeName); + }, _this._renderScene = function (_ref2) { + var route = _ref2.route; + var screenProps = _this.props.screenProps; + var childNavigation = _this.props.childNavigationProps[route.key]; + + var TabComponent = _this.props.router.getComponentForRouteName(route.routeName); + + return _react2.default.createElement(_ResourceSavingSceneView2.default, { + lazy: _this.props.lazy, + removeClippedSubViews: _this.props.removeClippedSubviews, + animationEnabled: _this.props.animationEnabled, + swipeEnabled: _this.props.swipeEnabled, + screenProps: screenProps, + component: TabComponent, + navigation: _this.props.navigation, + childNavigation: childNavigation, + __source: { + fileName: _jsxFileName, + lineNumber: 32 + } + }); + }, _this._getLabel = function (_ref3) { + var route = _ref3.route, + tintColor = _ref3.tintColor, + focused = _ref3.focused; + + var options = _this.props.router.getScreenOptions(_this.props.childNavigationProps[route.key], _this.props.screenProps || {}); + + if (options.tabBarLabel) { + return typeof options.tabBarLabel === 'function' ? options.tabBarLabel({ + tintColor: tintColor, + focused: focused + }) : options.tabBarLabel; + } + + if (typeof options.title === 'string') { + return options.title; + } + + return route.routeName; + }, _this._getOnPress = function (previousScene, _ref4) { + var route = _ref4.route; + + var options = _this.props.router.getScreenOptions(_this.props.childNavigationProps[route.key], _this.props.screenProps || {}); + + return options.tabBarOnPress; + }, _this._getTestIDProps = function (_ref5) { + var route = _ref5.route, + focused = _ref5.focused; + + var options = _this.props.router.getScreenOptions(_this.props.childNavigationProps[route.key], _this.props.screenProps || {}); + + return typeof options.tabBarTestIDProps === 'function' ? options.tabBarTestIDProps({ + focused: focused + }) : options.tabBarTestIDProps; + }, _this._renderIcon = function (_ref6) { + var focused = _ref6.focused, + route = _ref6.route, + tintColor = _ref6.tintColor; + + var options = _this.props.router.getScreenOptions(_this.props.childNavigationProps[route.key], _this.props.screenProps || {}); + + if (options.tabBarIcon) { + return typeof options.tabBarIcon === 'function' ? options.tabBarIcon({ + tintColor: tintColor, + focused: focused + }) : options.tabBarIcon; + } + + return null; + }, _this._renderTabBar = function (props) { + var _this$props = _this.props, + tabBarOptions = _this$props.tabBarOptions, + TabBarComponent = _this$props.tabBarComponent, + animationEnabled = _this$props.animationEnabled; + + if (typeof TabBarComponent === 'undefined') { + return null; + } + + return _react2.default.createElement(TabBarComponent, babelHelpers.extends({}, props, tabBarOptions, { + tabBarPosition: _this.props.tabBarPosition, + screenProps: _this.props.screenProps, + navigation: _this.props.navigation, + getLabel: _this._getLabel, + getTestIDProps: _this._getTestIDProps, + getOnPress: _this._getOnPress, + renderIcon: _this._renderIcon, + animationEnabled: animationEnabled, + __source: { + fileName: _jsxFileName, + lineNumber: 108 + } + })); + }, _this._renderPager = function (props) { + return _react2.default.createElement(_reactNativeTabView.TabViewPagerPan, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 123 + } + })); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(TabView, [{ + key: "render", + value: function render() { + var _props = this.props, + router = _props.router, + tabBarComponent = _props.tabBarComponent, + tabBarPosition = _props.tabBarPosition, + animationEnabled = _props.animationEnabled, + configureTransition = _props.configureTransition, + initialLayout = _props.initialLayout, + screenProps = _props.screenProps; + var renderHeader = void 0; + var renderFooter = void 0; + var renderPager = void 0; + var state = this.props.navigation.state; + var options = router.getScreenOptions(this.props.childNavigationProps[state.routes[state.index].key], screenProps || {}); + var tabBarVisible = options.tabBarVisible == null ? true : options.tabBarVisible; + var swipeEnabled = options.swipeEnabled == null ? this.props.swipeEnabled : options.swipeEnabled; + + if (typeof swipeEnabled === 'function') { + swipeEnabled = swipeEnabled(state); + } + + if (tabBarComponent !== undefined && tabBarVisible) { + if (tabBarPosition === 'bottom') { + renderFooter = this._renderTabBar; + } else { + renderHeader = this._renderTabBar; + } + } + + if (animationEnabled === false && swipeEnabled === false || typeof configureTransition === 'function') { + renderPager = this._renderPager; + } + + var props = { + initialLayout: initialLayout, + animationEnabled: animationEnabled, + configureTransition: configureTransition, + swipeEnabled: swipeEnabled, + renderPager: renderPager, + renderHeader: renderHeader, + renderFooter: renderFooter, + renderScene: this._renderScene, + onIndexChange: this._handlePageChanged, + navigationState: this.props.navigation.state, + screenProps: this.props.screenProps, + style: styles.container + }; + return _react2.default.createElement(_reactNativeTabView.TabViewAnimated, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 188 + } + })); + } + }]); + return TabView; + }(_react2.default.PureComponent); + + TabView.defaultProps = { + lazy: true, + removedClippedSubviews: true, + initialLayout: _reactNative.Platform.select({ + android: { + width: 1, + height: 0 + } + }) + }; + exports.default = (0, _withCachedChildNavigation2.default)(TabView); + + var styles = _reactNative.StyleSheet.create({ + container: { + flex: 1 + } + }); +},426,[12,66,427,392,437,423],"react-navigation/src/views/TabView/TabView.js"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = { + get TabViewAnimated() { + return require(_dependencyMap[0], './TabViewAnimated').default; + }, + + get TabViewPagerPan() { + return require(_dependencyMap[1], './TabViewPagerPan').default; + }, + + get TabViewPagerScroll() { + return require(_dependencyMap[2], './TabViewPagerScroll').default; + }, + + get TabViewPagerAndroid() { + return require(_dependencyMap[3], './TabViewPagerAndroid').default; + }, + + get TabViewPagerExperimental() { + return require(_dependencyMap[4], './TabViewPagerExperimental').default; + }, + + get TabBar() { + return require(_dependencyMap[5], './TabBar').default; + }, + + get SceneMap() { + return require(_dependencyMap[6], './SceneMap').default; + } + + }; +},427,[428,432,431,430,433,434,436],"react-native-tab-view/src/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/TabViewAnimated.js"; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _TabViewPropTypes = require(_dependencyMap[3], "./TabViewPropTypes"); + + var TabViewPager = void 0; + + switch (_reactNative.Platform.OS) { + case 'android': + TabViewPager = require(_dependencyMap[4], './TabViewPagerAndroid').default; + break; + + case 'ios': + TabViewPager = require(_dependencyMap[5], './TabViewPagerScroll').default; + break; + + default: + TabViewPager = require(_dependencyMap[6], './TabViewPagerPan').default; + break; + } + + var TabViewAnimated = function (_React$Component) { + babelHelpers.inherits(TabViewAnimated, _React$Component); + + function TabViewAnimated(props) { + babelHelpers.classCallCheck(this, TabViewAnimated); + + var _this = babelHelpers.possibleConstructorReturn(this, (TabViewAnimated.__proto__ || Object.getPrototypeOf(TabViewAnimated)).call(this, props)); + + _initialiseProps.call(_this); + + var navigationState = _this.props.navigationState; + var layout = babelHelpers.extends({}, _this.props.initialLayout, { + measured: false + }); + var panX = new _reactNative.Animated.Value(0); + var offsetX = new _reactNative.Animated.Value(-navigationState.index * layout.width); + var layoutXY = new _reactNative.Animated.ValueXY({ + x: layout.width || 0.001, + y: layout.height || 0.001 + }); + + var position = _reactNative.Animated.multiply(_reactNative.Animated.divide(_reactNative.Animated.add(panX, offsetX), layoutXY.x), -1); + + _this.state = { + loaded: [navigationState.index], + layout: layout, + layoutXY: layoutXY, + panX: panX, + offsetX: offsetX, + position: position + }; + return _this; + } + + babelHelpers.createClass(TabViewAnimated, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._mounted = true; + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._mounted = false; + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _props = this.props, + navigationState = _props.navigationState, + onIndexChange = _props.onIndexChange, + initialLayout = _props.initialLayout, + renderScene = _props.renderScene, + renderPager = _props.renderPager, + renderHeader = _props.renderHeader, + renderFooter = _props.renderFooter, + rest = babelHelpers.objectWithoutProperties(_props, ["navigationState", "onIndexChange", "initialLayout", "renderScene", "renderPager", "renderHeader", "renderFooter"]); + + var props = this._buildSceneRendererProps(); + + return React.createElement( + _reactNative.View, + { + onLayout: this._handleLayout, + loaded: this.state.loaded, + style: [styles.container, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 194 + } + }, + renderHeader && renderHeader(props), + renderPager(babelHelpers.extends({}, props, rest, { + panX: this.state.panX, + offsetX: this.state.offsetX, + children: navigationState.routes.map(function (route, index) { + var scene = _this2._renderScene(babelHelpers.extends({}, props, { + route: route, + index: index, + focused: index === navigationState.index + })); + + if (scene) { + return React.cloneElement(scene, { + key: route.key + }); + } + + return scene; + }) + })), + renderFooter && renderFooter(props) + ); + } + }]); + return TabViewAnimated; + }(React.Component); + + TabViewAnimated.propTypes = { + navigationState: _TabViewPropTypes.NavigationStatePropType.isRequired, + onIndexChange: _propTypes2.default.func.isRequired, + initialLayout: _propTypes2.default.shape({ + height: _propTypes2.default.number.isRequired, + width: _propTypes2.default.number.isRequired + }), + canJumpToTab: _propTypes2.default.func.isRequired, + renderPager: _propTypes2.default.func.isRequired, + renderScene: _propTypes2.default.func.isRequired, + renderHeader: _propTypes2.default.func, + renderFooter: _propTypes2.default.func + }; + TabViewAnimated.defaultProps = { + canJumpToTab: function canJumpToTab() { + return true; + }, + renderPager: function renderPager(props) { + return React.createElement(TabViewPager, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 71 + } + })); + }, + initialLayout: { + height: 0, + width: 0 + }, + useNativeDriver: false + }; + + var _initialiseProps = function _initialiseProps() { + var _this3 = this; + + this._mounted = false; + + this._renderScene = function (props) { + return _this3.props.renderScene(props); + }; + + this._handleLayout = function (e) { + var _e$nativeEvent$layout = e.nativeEvent.layout, + height = _e$nativeEvent$layout.height, + width = _e$nativeEvent$layout.width; + + if (_this3.state.layout.width === width && _this3.state.layout.height === height) { + return; + } + + _this3.state.offsetX.setValue(-_this3.props.navigationState.index * width); + + _this3.state.layoutXY.setValue({ + x: width || 0.001, + y: height || 0.001 + }); + + _this3.setState({ + layout: { + measured: true, + height: height, + width: width + } + }); + }; + + this._buildSceneRendererProps = function () { + return { + panX: _this3.state.panX, + offsetX: _this3.state.offsetX, + position: _this3.state.position, + layout: _this3.state.layout, + navigationState: _this3.props.navigationState, + jumpToIndex: _this3._jumpToIndex, + useNativeDriver: _this3.props.useNativeDriver === true + }; + }; + + this._jumpToIndex = function (index) { + if (!_this3._mounted) { + return; + } + + var _props2 = _this3.props, + canJumpToTab = _props2.canJumpToTab, + navigationState = _props2.navigationState; + + if (!canJumpToTab(navigationState.routes[index])) { + return; + } + + if (index !== navigationState.index) { + _this3.props.onIndexChange(index); + } + }; + }; + + exports.default = TabViewAnimated; + + var styles = _reactNative.StyleSheet.create({ + container: { + flex: 1, + overflow: 'hidden' + } + }); +},428,[12,24,66,429,430,431,432],"react-native-tab-view/src/TabViewAnimated.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.PagerRendererPropType = exports.SceneRendererPropType = exports.NavigationStatePropType = exports.NavigationRoutePropType = undefined; + + var _propTypes = require(_dependencyMap[0], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var NavigationRoutePropType = exports.NavigationRoutePropType = _propTypes2.default.shape({ + title: _propTypes2.default.string, + key: _propTypes2.default.string.isRequired + }); + + var NavigationStatePropType = exports.NavigationStatePropType = _propTypes2.default.shape({ + routes: _propTypes2.default.arrayOf(NavigationRoutePropType).isRequired, + index: _propTypes2.default.number.isRequired + }); + + var SceneRendererPropType = exports.SceneRendererPropType = { + panX: _propTypes2.default.object.isRequired, + offsetX: _propTypes2.default.object.isRequired, + layout: _propTypes2.default.shape({ + measured: _propTypes2.default.bool.isRequired, + height: _propTypes2.default.number.isRequired, + width: _propTypes2.default.number.isRequired + }).isRequired, + navigationState: NavigationStatePropType.isRequired, + position: _propTypes2.default.object.isRequired, + jumpToIndex: _propTypes2.default.func.isRequired, + useNativeDriver: _propTypes2.default.bool + }; + var PagerRendererPropType = exports.PagerRendererPropType = { + layout: _propTypes2.default.shape({ + measured: _propTypes2.default.bool.isRequired, + height: _propTypes2.default.number.isRequired, + width: _propTypes2.default.number.isRequired + }).isRequired, + navigationState: NavigationStatePropType.isRequired, + panX: _propTypes2.default.instanceOf(_reactNative.Animated.Value).isRequired, + offsetX: _propTypes2.default.instanceOf(_reactNative.Animated.Value).isRequired, + canJumpToTab: _propTypes2.default.func.isRequired, + jumpToIndex: _propTypes2.default.func.isRequired, + animationEnabled: _propTypes2.default.bool, + swipeEnabled: _propTypes2.default.bool, + useNativeDriver: _propTypes2.default.bool, + children: _propTypes2.default.node.isRequired + }; +},429,[24,66],"react-native-tab-view/src/TabViewPropTypes.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/TabViewPagerAndroid.js"; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _TabViewPropTypes = require(_dependencyMap[2], "./TabViewPropTypes"); + + var TabViewPagerAndroid = function (_React$Component) { + babelHelpers.inherits(TabViewPagerAndroid, _React$Component); + + function TabViewPagerAndroid(props) { + babelHelpers.classCallCheck(this, TabViewPagerAndroid); + + var _this = babelHelpers.possibleConstructorReturn(this, (TabViewPagerAndroid.__proto__ || Object.getPrototypeOf(TabViewPagerAndroid)).call(this, props)); + + _this._isIdle = true; + _this._currentIndex = 0; + + _this._getPageIndex = function (index) { + return _reactNative.I18nManager.isRTL ? _this.props.navigationState.routes.length - (index + 1) : index; + }; + + _this._setPage = function (index) { + var animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var pager = _this._viewPager; + + if (pager) { + var page = _this._getPageIndex(index); + + if (_this.props.animationEnabled === false || animated === false) { + pager.setPageWithoutAnimation(page); + } else { + pager.setPage(page); + } + } + }; + + _this._handlePageChange = function (index) { + if (_this._isIdle && _this._currentIndex !== index) { + _this._setPage(index); + + _this._currentIndex = index; + } + }; + + _this._handlePageScroll = function (e) { + _this.props.offsetX.setValue(e.nativeEvent.position * _this.props.layout.width * (_reactNative.I18nManager.isRTL ? 1 : -1)); + + _this.props.panX.setValue(e.nativeEvent.offset * _this.props.layout.width * (_reactNative.I18nManager.isRTL ? 1 : -1)); + }; + + _this._handlePageScrollStateChanged = function (e) { + _this._isIdle = e === 'idle'; + var nextIndex = _this._currentIndex; + + if (_this.props.canJumpToTab(_this.props.navigationState.routes[nextIndex])) { + _this.props.jumpToIndex(nextIndex); + } else { + _this._setPage(_this.props.navigationState.index); + + _this._currentIndex = _this.props.navigationState.index; + } + }; + + _this._handlePageSelected = function (e) { + var index = _this._getPageIndex(e.nativeEvent.position); + + _this._currentIndex = index; + }; + + _this._setRef = function (el) { + return _this._viewPager = el; + }; + + _this._currentIndex = _this.props.navigationState.index; + return _this; + } + + babelHelpers.createClass(TabViewPagerAndroid, [{ + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (this.props.layout !== prevProps.layout || this.props.navigationState.routes.length !== prevProps.navigationState.routes.length || this.props.navigationState.index !== prevProps.navigationState.index) { + this._handlePageChange(this.props.navigationState.index); + } + } + }, { + key: "render", + value: function render() { + var _props = this.props, + children = _props.children, + navigationState = _props.navigationState, + swipeEnabled = _props.swipeEnabled; + var content = React.Children.map(children, function (child, i) { + return React.createElement( + _reactNative.View, + { + key: navigationState.routes[i].key, + testID: navigationState.routes[i].testID, + style: styles.page, + __source: { + fileName: _jsxFileName, + lineNumber: 111 + } + }, + child + ); + }); + + if (_reactNative.I18nManager.isRTL) { + content.reverse(); + } + + var initialPage = this._getPageIndex(navigationState.index); + + return React.createElement( + _reactNative.ViewPagerAndroid, + { + key: navigationState.routes.length, + keyboardDismissMode: "on-drag", + initialPage: initialPage, + scrollEnabled: swipeEnabled !== false, + onPageScroll: this._handlePageScroll, + onPageScrollStateChanged: this._handlePageScrollStateChanged, + onPageSelected: this._handlePageSelected, + style: styles.container, + ref: this._setRef, + __source: { + fileName: _jsxFileName, + lineNumber: 127 + } + }, + content + ); + } + }]); + return TabViewPagerAndroid; + }(React.Component); + + TabViewPagerAndroid.propTypes = _TabViewPropTypes.PagerRendererPropType; + TabViewPagerAndroid.defaultProps = { + canJumpToTab: function canJumpToTab() { + return true; + } + }; + exports.default = TabViewPagerAndroid; + + var styles = _reactNative.StyleSheet.create({ + container: { + flexGrow: 1 + }, + page: { + overflow: 'hidden' + } + }); +},430,[12,66,429],"react-native-tab-view/src/TabViewPagerAndroid.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/TabViewPagerScroll.js"; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _TabViewPropTypes = require(_dependencyMap[2], "./TabViewPropTypes"); + + var TabViewPagerScroll = function (_React$Component) { + babelHelpers.inherits(TabViewPagerScroll, _React$Component); + + function TabViewPagerScroll(props) { + babelHelpers.classCallCheck(this, TabViewPagerScroll); + + var _this = babelHelpers.possibleConstructorReturn(this, (TabViewPagerScroll.__proto__ || Object.getPrototypeOf(TabViewPagerScroll)).call(this, props)); + + _initialiseProps.call(_this); + + var _this$props = _this.props, + navigationState = _this$props.navigationState, + layout = _this$props.layout; + _this.state = { + initialOffset: { + x: navigationState.index * layout.width, + y: 0 + } + }; + return _this; + } + + babelHelpers.createClass(TabViewPagerScroll, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._setInitialPage(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (prevProps.layout.width !== this.props.layout.width || prevProps.navigationState !== this.props.navigationState) { + this._scrollTo(this.props.navigationState.index * this.props.layout.width, prevProps.layout.width === this.props.layout.width); + } + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _props = this.props, + children = _props.children, + layout = _props.layout, + navigationState = _props.navigationState; + return React.createElement( + _reactNative.ScrollView, + { + horizontal: true, + pagingEnabled: true, + directionalLockEnabled: true, + keyboardDismissMode: "on-drag", + keyboardShouldPersistTaps: "always", + overScrollMode: "never", + scrollEnabled: this.props.swipeEnabled, + automaticallyAdjustContentInsets: false, + bounces: false, + alwaysBounceHorizontal: false, + scrollsToTop: false, + showsHorizontalScrollIndicator: false, + scrollEventThrottle: 1, + onScroll: this._handleScroll, + onMomentumScrollEnd: this._handleMomentumScrollEnd, + contentOffset: this.state.initialOffset, + style: styles.container, + contentContainerStyle: layout.width ? null : styles.container, + ref: function ref(el) { + return _this2._scrollView = el; + }, + __source: { + fileName: _jsxFileName, + lineNumber: 128 + } + }, + React.Children.map(children, function (child, i) { + return React.createElement( + _reactNative.View, + { + key: navigationState.routes[i].key, + testID: navigationState.routes[i].testID, + style: layout.width ? { + width: layout.width, + overflow: 'hidden' + } : i === navigationState.index ? styles.page : null, + __source: { + fileName: _jsxFileName, + lineNumber: 150 + } + }, + i === navigationState.index || layout.width ? child : null + ); + }) + ); + } + }]); + return TabViewPagerScroll; + }(React.Component); + + TabViewPagerScroll.propTypes = _TabViewPropTypes.PagerRendererPropType; + TabViewPagerScroll.defaultProps = { + canJumpToTab: function canJumpToTab() { + return true; + } + }; + + var _initialiseProps = function _initialiseProps() { + var _this3 = this; + + this._isIdle = true; + this._isInitial = true; + + this._setInitialPage = function () { + if (_this3.props.layout.width) { + _this3._isInitial = true; + + _this3._scrollTo(_this3.props.navigationState.index * _this3.props.layout.width, false); + } + + setTimeout(function () { + _this3._isInitial = false; + }, 50); + }; + + this._scrollTo = function (x, animated) { + if (_this3._isIdle && _this3._scrollView) { + _this3._scrollView.scrollTo({ + x: x, + animated: animated && _this3.props.animationEnabled !== false + }); + } + }; + + this._handleMomentumScrollEnd = function (e) { + var nextIndex = Math.round(e.nativeEvent.contentOffset.x / _this3.props.layout.width); + + if (_this3.props.canJumpToTab(_this3.props.navigationState.routes[nextIndex])) { + _this3.props.jumpToIndex(nextIndex); + } else { + global.requestAnimationFrame(function () { + _this3._scrollTo(_this3.props.navigationState.index * _this3.props.layout.width); + }); + } + }; + + this._handleScroll = function (e) { + if (_this3._isInitial) { + return; + } + + var _props2 = _this3.props, + navigationState = _props2.navigationState, + layout = _props2.layout; + var offset = navigationState.index * layout.width; + + _this3.props.offsetX.setValue(-offset); + + _this3.props.panX.setValue(offset - e.nativeEvent.contentOffset.x); + + global.cancelAnimationFrame(_this3._idleCallback); + _this3._isIdle = false; + _this3._idleCallback = global.requestAnimationFrame(function () { + _this3._isIdle = true; + }); + }; + }; + + exports.default = TabViewPagerScroll; + + var styles = _reactNative.StyleSheet.create({ + container: { + flex: 1 + }, + page: { + flex: 1, + overflow: 'hidden' + } + }); +},431,[12,66,429],"react-native-tab-view/src/TabViewPagerScroll.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/TabViewPagerPan.js"; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _TabViewPropTypes = require(_dependencyMap[3], "./TabViewPropTypes"); + + var DEAD_ZONE = 12; + var DefaultTransitionSpec = { + timing: _reactNative.Animated.spring, + tension: 300, + friction: 35 + }; + + var TabViewPagerPan = function (_React$Component) { + babelHelpers.inherits(TabViewPagerPan, _React$Component); + + function TabViewPagerPan() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, TabViewPagerPan); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = TabViewPagerPan.__proto__ || Object.getPrototypeOf(TabViewPagerPan)).call.apply(_ref, [this].concat(args))), _this), _this._isMovingHorizontally = function (evt, gestureState) { + return Math.abs(gestureState.dx) > Math.abs(gestureState.dy * 2) && Math.abs(gestureState.vx) > Math.abs(gestureState.vy * 2); + }, _this._canMoveScreen = function (evt, gestureState) { + if (_this.props.swipeEnabled === false) { + return false; + } + + var _this$props$navigatio = _this.props.navigationState, + routes = _this$props$navigatio.routes, + index = _this$props$navigatio.index; + return _this._isMovingHorizontally(evt, gestureState) && (gestureState.dx >= DEAD_ZONE && index >= 0 || gestureState.dx <= -DEAD_ZONE && index <= routes.length - 1); + }, _this._startGesture = function (evt, gestureState) { + if (typeof _this.props.onSwipeStart === 'function') { + _this.props.onSwipeStart(evt, gestureState); + } + + _this.props.panX.stopAnimation(); + }, _this._respondToGesture = function (evt, gestureState) { + var _this$props$navigatio2 = _this.props.navigationState, + routes = _this$props$navigatio2.routes, + index = _this$props$navigatio2.index; + + if (gestureState.dx > 0 && index <= 0 || gestureState.dx < 0 && index >= routes.length - 1) { + return; + } + + _this.props.panX.setValue(gestureState.dx); + }, _this._finishGesture = function (evt, gestureState) { + var _this$props = _this.props, + navigationState = _this$props.navigationState, + layout = _this$props.layout, + _this$props$swipeDist = _this$props.swipeDistanceThreshold, + swipeDistanceThreshold = _this$props$swipeDist === undefined ? layout.width / 1.75 : _this$props$swipeDist; + var _this$props$swipeVelo = _this.props.swipeVelocityThreshold, + swipeVelocityThreshold = _this$props$swipeVelo === undefined ? 0.15 : _this$props$swipeVelo; + + if (_reactNative.Platform.OS === 'android') { + swipeVelocityThreshold /= 1000000; + } + + var currentIndex = typeof _this._pendingIndex === 'number' ? _this._pendingIndex : navigationState.index; + var nextIndex = currentIndex; + + if (Math.abs(gestureState.dx) > Math.abs(gestureState.dy) && Math.abs(gestureState.vx) > Math.abs(gestureState.vy) && (Math.abs(gestureState.dx) > swipeDistanceThreshold || Math.abs(gestureState.vx) > swipeVelocityThreshold)) { + nextIndex = Math.round(Math.min(Math.max(0, currentIndex - gestureState.dx / Math.abs(gestureState.dx)), navigationState.routes.length - 1)); + } + + if (!isFinite(nextIndex) || !_this.props.canJumpToTab(_this.props.navigationState.routes[nextIndex])) { + nextIndex = currentIndex; + } + + _this._transitionTo(nextIndex); + }, _this._transitionTo = function (index) { + var offset = -index * _this.props.layout.width; + + if (_this.props.animationEnabled === false) { + _this.props.panX.setValue(0); + + _this.props.offsetX.setValue(offset); + + return; + } + + var timing = DefaultTransitionSpec.timing, + transitionConfig = babelHelpers.objectWithoutProperties(DefaultTransitionSpec, ["timing"]); + + _reactNative.Animated.parallel([timing(_this.props.panX, babelHelpers.extends({}, transitionConfig, { + toValue: 0 + })), timing(_this.props.offsetX, babelHelpers.extends({}, transitionConfig, { + toValue: offset + }))]).start(function (_ref2) { + var finished = _ref2.finished; + + if (finished) { + _this.props.jumpToIndex(index); + + _this._pendingIndex = null; + } + }); + + _this._pendingIndex = index; + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(TabViewPagerPan, [{ + key: "componentWillMount", + value: function componentWillMount() { + this._panResponder = _reactNative.PanResponder.create({ + onMoveShouldSetPanResponder: this._canMoveScreen, + onMoveShouldSetPanResponderCapture: this._canMoveScreen, + onPanResponderGrant: this._startGesture, + onPanResponderMove: this._respondToGesture, + onPanResponderTerminate: this._finishGesture, + onPanResponderRelease: this._finishGesture, + onPanResponderTerminationRequest: function onPanResponderTerminationRequest() { + return true; + } + }); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (prevProps.navigationState.index !== this.props.navigationState.index) { + this._transitionTo(this.props.navigationState.index); + } + } + }, { + key: "render", + value: function render() { + var _props = this.props, + panX = _props.panX, + offsetX = _props.offsetX, + navigationState = _props.navigationState, + layout = _props.layout, + children = _props.children; + var width = layout.width; + var routes = navigationState.routes; + var maxTranslate = width * (routes.length - 1); + + var translateX = _reactNative.Animated.add(panX, offsetX).interpolate({ + inputRange: [-maxTranslate, 0], + outputRange: [-maxTranslate, 0], + extrapolate: 'clamp' + }); + + return React.createElement( + _reactNative.Animated.View, + babelHelpers.extends({ + style: [styles.sheet, width ? { + width: routes.length * width, + transform: [{ + translateX: translateX + }] + } : null] + }, this._panResponder.panHandlers, { + __source: { + fileName: _jsxFileName, + lineNumber: 238 + } + }), + React.Children.map(children, function (child, i) { + return React.createElement( + _reactNative.View, + { + key: navigationState.routes[i].key, + testID: navigationState.routes[i].testID, + style: width ? { + width: width + } : i === navigationState.index ? _reactNative.StyleSheet.absoluteFill : null, + __source: { + fileName: _jsxFileName, + lineNumber: 251 + } + }, + i === navigationState.index || width ? child : null + ); + }) + ); + } + }]); + return TabViewPagerPan; + }(React.Component); + + TabViewPagerPan.propTypes = babelHelpers.extends({}, _TabViewPropTypes.PagerRendererPropType, { + configureTransition: _propTypes2.default.func.isRequired, + swipeDistanceThreshold: _propTypes2.default.number, + swipeVelocityThreshold: _propTypes2.default.number, + onSwipeStart: _propTypes2.default.func, + onSwipeEnd: _propTypes2.default.func + }); + TabViewPagerPan.defaultProps = { + canJumpToTab: function canJumpToTab() { + return true; + }, + configureTransition: function configureTransition() { + return DefaultTransitionSpec; + }, + initialLayout: { + height: 0, + width: 0 + } + }; + exports.default = TabViewPagerPan; + + var styles = _reactNative.StyleSheet.create({ + sheet: { + flex: 1, + flexDirection: 'row', + alignItems: 'stretch' + } + }); +},432,[12,24,66,429],"react-native-tab-view/src/TabViewPagerPan.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/TabViewPagerExperimental.js"; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _TabViewPropTypes = require(_dependencyMap[3], "./TabViewPropTypes"); + + var DefaultTransitionSpec = { + timing: _reactNative.Animated.spring, + tension: 75, + friction: 25 + }; + + var TabViewPagerExperimental = function (_React$Component) { + babelHelpers.inherits(TabViewPagerExperimental, _React$Component); + + function TabViewPagerExperimental() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, TabViewPagerExperimental); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = TabViewPagerExperimental.__proto__ || Object.getPrototypeOf(TabViewPagerExperimental)).call.apply(_ref, [this].concat(args))), _this), _this._handleHandlerStateChange = function (event) { + var GestureHandler = _this.props.GestureHandler; + + if (event.nativeEvent.state === GestureHandler.State.END) { + var _this$props = _this.props, + navigationState = _this$props.navigationState, + layout = _this$props.layout, + _this$props$swipeDist = _this$props.swipeDistanceThreshold, + _swipeDistanceThreshold = _this$props$swipeDist === undefined ? layout.width / 1.75 : _this$props$swipeDist, + _this$props$swipeVelo = _this$props.swipeVelocityThreshold, + _swipeVelocityThreshold = _this$props$swipeVelo === undefined ? 150 : _this$props$swipeVelo; + + var _event$nativeEvent = event.nativeEvent, + translationX = _event$nativeEvent.translationX, + translationY = _event$nativeEvent.translationY, + velocityX = _event$nativeEvent.velocityX, + velocityY = _event$nativeEvent.velocityY; + var currentIndex = typeof _this._pendingIndex === 'number' ? _this._pendingIndex : navigationState.index; + var nextIndex = currentIndex; + + if (Math.abs(translationX) > Math.abs(translationY) && Math.abs(velocityX) > Math.abs(velocityY) && (Math.abs(translationX) > _swipeDistanceThreshold || Math.abs(velocityX) > _swipeVelocityThreshold)) { + nextIndex = Math.round(Math.min(Math.max(0, currentIndex - translationX / Math.abs(translationX)), navigationState.routes.length - 1)); + } + + if (!isFinite(nextIndex) || !_this.props.canJumpToTab(_this.props.navigationState.routes[nextIndex])) { + nextIndex = currentIndex; + } + + _this._transitionTo(nextIndex, velocityX); + } + }, _this._transitionTo = function (index, velocity) { + var offset = -index * _this.props.layout.width; + + if (_this.props.animationEnabled === false) { + _this.props.panX.setValue(0); + + _this.props.offsetX.setValue(offset); + + return; + } + + var timing = DefaultTransitionSpec.timing, + transitionConfig = babelHelpers.objectWithoutProperties(DefaultTransitionSpec, ["timing"]); + var useNativeDriver = _this.props.useNativeDriver; + + _reactNative.Animated.parallel([timing(_this.props.panX, babelHelpers.extends({}, transitionConfig, { + toValue: 0, + velocity: velocity, + useNativeDriver: useNativeDriver + })), timing(_this.props.offsetX, babelHelpers.extends({}, transitionConfig, { + toValue: offset, + velocity: velocity, + useNativeDriver: useNativeDriver + }))]).start(function (_ref2) { + var finished = _ref2.finished; + + if (finished) { + _this.props.jumpToIndex(index); + + _this._pendingIndex = null; + } + }); + + _this._pendingIndex = index; + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(TabViewPagerExperimental, [{ + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (prevProps.navigationState.index !== this.props.navigationState.index) { + this._transitionTo(this.props.navigationState.index); + } + } + }, { + key: "render", + value: function render() { + var _props = this.props, + GestureHandler = _props.GestureHandler, + panX = _props.panX, + offsetX = _props.offsetX, + layout = _props.layout, + navigationState = _props.navigationState, + swipeEnabled = _props.swipeEnabled, + children = _props.children; + var width = layout.width; + var routes = navigationState.routes; + var maxTranslate = width * (routes.length - 1); + + var translateX = _reactNative.Animated.add(panX, offsetX).interpolate({ + inputRange: [-maxTranslate, 0], + outputRange: [-maxTranslate, 0], + extrapolate: 'clamp' + }); + + return React.createElement( + GestureHandler.PanGestureHandler, + { + enabled: layout.width !== 0 && swipeEnabled !== false, + minDeltaX: 10, + onGestureEvent: _reactNative.Animated.event([{ + nativeEvent: { + translationX: this.props.panX + } + }], { + useNativeDriver: this.props.useNativeDriver + }), + onHandlerStateChange: this._handleHandlerStateChange, + __source: { + fileName: _jsxFileName, + lineNumber: 150 + } + }, + React.createElement( + _reactNative.Animated.View, + { + style: [styles.sheet, width ? { + width: routes.length * width, + transform: [{ + translateX: translateX + }] + } : null], + __source: { + fileName: _jsxFileName, + lineNumber: 159 + } + }, + React.Children.map(children, function (child, i) { + return React.createElement( + _reactNative.View, + { + key: navigationState.routes[i].key, + testID: navigationState.routes[i].testID, + style: width ? { + width: width + } : i === navigationState.index ? _reactNative.StyleSheet.absoluteFill : null, + __source: { + fileName: _jsxFileName, + lineNumber: 168 + } + }, + i === navigationState.index || width ? child : null + ); + }) + ) + ); + } + }]); + return TabViewPagerExperimental; + }(React.Component); + + TabViewPagerExperimental.propTypes = babelHelpers.extends({}, _TabViewPropTypes.PagerRendererPropType, { + swipeDistanceThreshold: _propTypes2.default.number, + swipeVelocityThreshold: _propTypes2.default.number, + GestureHandler: _propTypes2.default.object + }); + TabViewPagerExperimental.defaultProps = { + GestureHandler: global.__expo && global.__expo.DangerZone ? global.__expo.DangerZone.GestureHandler : undefined, + canJumpToTab: function canJumpToTab() { + return true; + } + }; + exports.default = TabViewPagerExperimental; + + var styles = _reactNative.StyleSheet.create({ + sheet: { + flex: 1, + flexDirection: 'row', + alignItems: 'stretch' + } + }); +},433,[12,24,66,429],"react-native-tab-view/src/TabViewPagerExperimental.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/TabBar.js"; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _TouchableItem = require(_dependencyMap[3], "./TouchableItem"); + + var _TouchableItem2 = babelHelpers.interopRequireDefault(_TouchableItem); + + var _TabViewPropTypes = require(_dependencyMap[4], "./TabViewPropTypes"); + + var TabBar = function (_React$Component) { + babelHelpers.inherits(TabBar, _React$Component); + + function TabBar(props) { + babelHelpers.classCallCheck(this, TabBar); + + var _this = babelHelpers.possibleConstructorReturn(this, (TabBar.__proto__ || Object.getPrototypeOf(TabBar)).call(this, props)); + + _initialiseProps.call(_this); + + var initialVisibility = 1; + + if (_this.props.scrollEnabled) { + var tabWidth = _this._getTabWidth(_this.props); + + if (!tabWidth) { + initialVisibility = 0; + } + } + + var initialOffset = _this.props.scrollEnabled && _this.props.layout.width ? { + x: _this._getScrollAmount(_this.props, _this.props.navigationState.index), + y: 0 + } : undefined; + _this.state = { + visibility: new _reactNative.Animated.Value(initialVisibility), + scrollAmount: new _reactNative.Animated.Value(0), + initialOffset: initialOffset + }; + return _this; + } + + babelHelpers.createClass(TabBar, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._adjustScroll(this.props.navigationState.index); + + this.props.scrollEnabled && this._startTrackingPosition(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + var prevTabWidth = this._getTabWidth(prevProps); + + var currentTabWidth = this._getTabWidth(this.props); + + if (prevTabWidth !== currentTabWidth && currentTabWidth) { + this.state.visibility.setValue(1); + } + + if ((prevProps.navigationState !== this.props.navigationState || prevProps.layout !== this.props.layout || prevTabWidth !== currentTabWidth) && this.props.navigationState.index !== this._pendingIndex) { + this._resetScroll(this.props.navigationState.index, Boolean(prevProps.layout.width)); + + this._pendingIndex = null; + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._stopTrackingPosition(); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _props = this.props, + position = _props.position, + navigationState = _props.navigationState, + scrollEnabled = _props.scrollEnabled; + var routes = navigationState.routes, + index = navigationState.index; + + var tabWidth = this._getTabWidth(this.props); + + var tabBarWidth = tabWidth * routes.length; + var inputRange = [-1].concat(babelHelpers.toConsumableArray(routes.map(function (x, i) { + return i; + }))); + + var translateX = _reactNative.Animated.multiply(this.state.scrollAmount, -1); + + return React.createElement( + _reactNative.Animated.View, + { + style: [styles.tabBar, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 343 + } + }, + React.createElement( + _reactNative.Animated.View, + { + pointerEvents: "none", + style: [styles.indicatorContainer, scrollEnabled ? { + width: tabBarWidth, + transform: [{ + translateX: translateX + }] + } : null], + __source: { + fileName: _jsxFileName, + lineNumber: 344 + } + }, + this._renderIndicator(babelHelpers.extends({}, this.props, { + width: tabWidth + })) + ), + React.createElement( + _reactNative.View, + { + style: styles.scroll, + __source: { + fileName: _jsxFileName, + lineNumber: 358 + } + }, + React.createElement( + _reactNative.Animated.ScrollView, + { + horizontal: true, + keyboardShouldPersistTaps: "handled", + scrollEnabled: scrollEnabled, + bounces: false, + alwaysBounceHorizontal: false, + scrollsToTop: false, + showsHorizontalScrollIndicator: false, + automaticallyAdjustContentInsets: false, + overScrollMode: "never", + contentContainerStyle: [styles.tabContent, scrollEnabled ? null : styles.container], + scrollEventThrottle: 1, + onScroll: _reactNative.Animated.event([{ + nativeEvent: { + contentOffset: { + x: this.state.scrollAmount + } + } + }], { + useNativeDriver: true, + listener: this._handleScroll + }), + onScrollBeginDrag: this._handleBeginDrag, + onScrollEndDrag: this._handleEndDrag, + onMomentumScrollBegin: this._handleMomentumScrollBegin, + onMomentumScrollEnd: this._handleMomentumScrollEnd, + contentOffset: this.state.initialOffset, + ref: this._setRef, + __source: { + fileName: _jsxFileName, + lineNumber: 359 + } + }, + routes.map(function (route, i) { + var focused = index === i; + var outputRange = inputRange.map(function (inputIndex) { + return inputIndex === i ? 1 : 0.7; + }); + + var opacity = _reactNative.Animated.multiply(_this2.state.visibility, position.interpolate({ + inputRange: inputRange, + outputRange: outputRange + })); + + var scene = { + route: route, + focused: focused, + index: i + }; + + var label = _this2._renderLabel(scene); + + var icon = _this2.props.renderIcon ? _this2.props.renderIcon(scene) : null; + var badge = _this2.props.renderBadge ? _this2.props.renderBadge(scene) : null; + var tabStyle = {}; + tabStyle.opacity = opacity; + + if (icon) { + if (label) { + tabStyle.paddingTop = 8; + } else { + tabStyle.padding = 12; + } + } + + var passedTabStyle = _reactNative.StyleSheet.flatten(_this2.props.tabStyle); + + var isWidthSet = passedTabStyle && typeof passedTabStyle.width !== 'undefined' || scrollEnabled === true; + var tabContainerStyle = {}; + + if (isWidthSet) { + tabStyle.width = tabWidth; + } + + if (passedTabStyle && typeof passedTabStyle.flex === 'number') { + tabContainerStyle.flex = passedTabStyle.flex; + } else if (!isWidthSet) { + tabContainerStyle.flex = 1; + } + + var accessibilityLabel = route.accessibilityLabel || route.title; + return React.createElement( + _TouchableItem2.default, + { + borderless: true, + key: route.key, + testID: route.testID, + accessible: route.accessible, + accessibilityLabel: accessibilityLabel, + accessibilityTraits: "button", + pressColor: _this2.props.pressColor, + pressOpacity: _this2.props.pressOpacity, + delayPressIn: 0, + onPress: function onPress() { + return _this2._handleTabPress(scene); + }, + style: tabContainerStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 449 + } + }, + React.createElement( + _reactNative.View, + { + pointerEvents: "none", + style: styles.container, + __source: { + fileName: _jsxFileName, + lineNumber: 462 + } + }, + React.createElement( + _reactNative.Animated.View, + { + style: [styles.tabItem, tabStyle, passedTabStyle, styles.container], + __source: { + fileName: _jsxFileName, + lineNumber: 463 + } + }, + icon, + label + ), + badge ? React.createElement( + _reactNative.Animated.View, + { + style: [styles.badge, { + opacity: _this2.state.visibility + }], + __source: { + fileName: _jsxFileName, + lineNumber: 475 + } + }, + badge + ) : null + ) + ); + }) + ) + ) + ); + } + }]); + return TabBar; + }(React.Component); + + TabBar.propTypes = babelHelpers.extends({}, _TabViewPropTypes.SceneRendererPropType, { + scrollEnabled: _propTypes2.default.bool, + pressColor: _TouchableItem2.default.propTypes.pressColor, + pressOpacity: _TouchableItem2.default.propTypes.pressOpacity, + getLabelText: _propTypes2.default.func, + renderIcon: _propTypes2.default.func, + renderLabel: _propTypes2.default.func, + renderIndicator: _propTypes2.default.func, + onTabPress: _propTypes2.default.func, + labelStyle: _propTypes2.default.any, + style: _propTypes2.default.any + }); + TabBar.defaultProps = { + getLabelText: function getLabelText(_ref) { + var route = _ref.route; + return typeof route.title === 'string' ? route.title.toUpperCase() : route.title; + } + }; + + var _initialiseProps = function _initialiseProps() { + var _this3 = this; + + this._isManualScroll = false; + this._isMomentumScroll = false; + this._scrollDelta = 0; + + this._startTrackingPosition = function () { + _this3._offsetXListener = _this3.props.offsetX.addListener(function (_ref2) { + var value = _ref2.value; + _this3._lastOffsetX = value; + + _this3._handlePosition(); + }); + _this3._panXListener = _this3.props.panX.addListener(function (_ref3) { + var value = _ref3.value; + _this3._lastPanX = value; + + _this3._handlePosition(); + }); + }; + + this._stopTrackingPosition = function () { + _this3.props.offsetX.removeListener(_this3._offsetXListener); + + _this3.props.panX.removeListener(_this3._panXListener); + }; + + this._handlePosition = function () { + var _props2 = _this3.props, + navigationState = _props2.navigationState, + layout = _props2.layout; + var panX = typeof _this3._lastPanX === 'number' ? _this3._lastPanX : 0; + var offsetX = typeof _this3._lastOffsetX === 'number' ? _this3._lastOffsetX : -navigationState.index * layout.width; + var value = (panX + offsetX) / -(layout.width || 0.001); + + _this3._adjustScroll(value); + }; + + this._renderLabel = function (scene) { + if (typeof _this3.props.renderLabel !== 'undefined') { + return _this3.props.renderLabel(scene); + } + + var label = _this3.props.getLabelText(scene); + + if (typeof label !== 'string') { + return null; + } + + return React.createElement( + _reactNative.Animated.Text, + { + style: [styles.tabLabel, _this3.props.labelStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 177 + } + }, + label + ); + }; + + this._renderIndicator = function (props) { + if (typeof _this3.props.renderIndicator !== 'undefined') { + return _this3.props.renderIndicator(props); + } + + var width = props.width, + position = props.position, + navigationState = props.navigationState; + + var translateX = _reactNative.Animated.multiply(_reactNative.Animated.multiply(position.interpolate({ + inputRange: [0, navigationState.routes.length - 1], + outputRange: [0, navigationState.routes.length - 1], + extrapolate: 'clamp' + }), width), _reactNative.I18nManager.isRTL ? -1 : 1); + + return React.createElement(_reactNative.Animated.View, { + style: [styles.indicator, { + width: width, + transform: [{ + translateX: translateX + }] + }, _this3.props.indicatorStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 200 + } + }); + }; + + this._getTabWidth = function (props) { + var layout = props.layout, + navigationState = props.navigationState, + tabStyle = props.tabStyle; + + var flattened = _reactNative.StyleSheet.flatten(tabStyle); + + if (flattened) { + switch (typeof flattened.width) { + case 'number': + return flattened.width; + + case 'string': + if (flattened.width.endsWith('%')) { + var _width = parseFloat(flattened.width); + + if (Number.isFinite(_width)) { + return layout.width * (_width / 100); + } + } + + } + } + + if (props.scrollEnabled) { + return layout.width / 5 * 2; + } + + return layout.width / navigationState.routes.length; + }; + + this._handleTabPress = function (scene) { + _this3._pendingIndex = scene.index; + + _this3.props.jumpToIndex(scene.index); + + if (_this3.props.onTabPress) { + _this3.props.onTabPress(scene); + } + }; + + this._handleScroll = function (event) { + if (_this3._isManualScroll) { + _this3._scrollDelta = _this3._getScrollAmount(_this3.props, _this3.props.navigationState.index) - event.nativeEvent.contentOffset.x; + } + }; + + this._normalizeScrollValue = function (props, value) { + var layout = props.layout, + navigationState = props.navigationState; + + var tabWidth = _this3._getTabWidth(props); + + var tabBarWidth = Math.max(tabWidth * navigationState.routes.length, layout.width); + var maxDistance = tabBarWidth - layout.width; + return Math.max(Math.min(value, maxDistance), 0); + }; + + this._getScrollAmount = function (props, i) { + var layout = props.layout; + + var tabWidth = _this3._getTabWidth(props); + + var centerDistance = tabWidth * (i + 1 / 2); + var scrollAmount = centerDistance - layout.width / 2; + return _this3._normalizeScrollValue(props, scrollAmount); + }; + + this._adjustScroll = function (value) { + if (_this3.props.scrollEnabled) { + global.cancelAnimationFrame(_this3._scrollResetCallback); + _this3._scrollView && _this3._scrollView.scrollTo({ + x: _this3._normalizeScrollValue(_this3.props, _this3._getScrollAmount(_this3.props, value) - _this3._scrollDelta), + animated: false + }); + } + }; + + this._resetScroll = function (value) { + var animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (_this3.props.scrollEnabled) { + global.cancelAnimationFrame(_this3._scrollResetCallback); + _this3._scrollResetCallback = global.requestAnimationFrame(function () { + _this3._scrollDelta = 0; + _this3._scrollView && _this3._scrollView.scrollTo({ + x: _this3._getScrollAmount(_this3.props, value), + animated: animated + }); + }); + } + }; + + this._handleBeginDrag = function () { + _this3._isManualScroll = true; + _this3._isMomentumScroll = false; + }; + + this._handleEndDrag = function () { + global.requestAnimationFrame(function () { + if (_this3._isMomentumScroll) { + return; + } + + _this3._isManualScroll = false; + }); + }; + + this._handleMomentumScrollBegin = function () { + _this3._isMomentumScroll = true; + }; + + this._handleMomentumScrollEnd = function () { + _this3._isMomentumScroll = false; + _this3._isManualScroll = false; + }; + + this._setRef = function (el) { + return _this3._scrollView = el && el._component; + }; + }; + + exports.default = TabBar; + + var styles = _reactNative.StyleSheet.create({ + container: { + flex: 1 + }, + scroll: { + overflow: _reactNative.Platform.OS === 'web' ? 'auto' : 'scroll' + }, + tabBar: { + backgroundColor: '#2196f3', + elevation: 4, + shadowColor: 'black', + shadowOpacity: 0.1, + shadowRadius: _reactNative.StyleSheet.hairlineWidth, + shadowOffset: { + height: _reactNative.StyleSheet.hairlineWidth + }, + zIndex: _reactNative.Platform.OS === 'android' ? 0 : 1 + }, + tabContent: { + flexDirection: 'row', + flexWrap: 'nowrap' + }, + tabLabel: { + backgroundColor: 'transparent', + color: 'white', + margin: 8 + }, + tabItem: { + flex: 1, + padding: 8, + alignItems: 'center', + justifyContent: 'center' + }, + badge: { + position: 'absolute', + top: 0, + right: 0 + }, + indicatorContainer: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0 + }, + indicator: { + backgroundColor: '#ffeb3b', + position: 'absolute', + left: 0, + bottom: 0, + right: 0, + height: 2 + } + }); +},434,[12,24,66,435,429],"react-native-tab-view/src/TabBar.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/TouchableItem.js"; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var LOLLIPOP = 21; + + var TouchableItem = function (_React$Component) { + babelHelpers.inherits(TouchableItem, _React$Component); + + function TouchableItem() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, TouchableItem); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = TouchableItem.__proto__ || Object.getPrototypeOf(TouchableItem)).call.apply(_ref, [this].concat(args))), _this), _this._handlePress = function () { + global.requestAnimationFrame(_this.props.onPress); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(TouchableItem, [{ + key: "render", + value: function render() { + var _props = this.props, + style = _props.style, + pressOpacity = _props.pressOpacity, + pressColor = _props.pressColor, + borderless = _props.borderless, + rest = babelHelpers.objectWithoutProperties(_props, ["style", "pressOpacity", "pressColor", "borderless"]); + + if (_reactNative.Platform.OS === 'android' && _reactNative.Platform.Version >= LOLLIPOP) { + return React.createElement( + _reactNative.TouchableNativeFeedback, + babelHelpers.extends({}, rest, { + onPress: this._handlePress, + background: _reactNative.TouchableNativeFeedback.Ripple(pressColor, borderless), + __source: { + fileName: _jsxFileName, + lineNumber: 48 + } + }), + React.createElement( + _reactNative.View, + { + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 53 + } + }, + React.Children.only(this.props.children) + ) + ); + } else { + return React.createElement( + _reactNative.TouchableOpacity, + babelHelpers.extends({}, rest, { + onPress: this._handlePress, + style: style, + activeOpacity: pressOpacity, + __source: { + fileName: _jsxFileName, + lineNumber: 58 + } + }), + this.props.children + ); + } + } + }]); + return TouchableItem; + }(React.Component); + + TouchableItem.propTypes = { + onPress: _propTypes2.default.func.isRequired, + delayPressIn: _propTypes2.default.number, + borderless: _propTypes2.default.bool, + pressColor: _propTypes2.default.string, + pressOpacity: _propTypes2.default.number, + children: _propTypes2.default.node.isRequired + }; + TouchableItem.defaultProps = { + pressColor: 'rgba(255, 255, 255, .4)' + }; + exports.default = TouchableItem; +},435,[12,24,66],"react-native-tab-view/src/TouchableItem.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-tab-view/src/SceneMap.js"; + exports.default = SceneMap; + + var _react = require(_dependencyMap[0], "react"); + + var React = babelHelpers.interopRequireWildcard(_react); + + function SceneMap(scenes) { + var SceneComponent = function (_React$PureComponent) { + babelHelpers.inherits(SceneComponent, _React$PureComponent); + + function SceneComponent() { + babelHelpers.classCallCheck(this, SceneComponent); + return babelHelpers.possibleConstructorReturn(this, (SceneComponent.__proto__ || Object.getPrototypeOf(SceneComponent)).apply(this, arguments)); + } + + babelHelpers.createClass(SceneComponent, [{ + key: "render", + value: function render() { + return React.createElement(scenes[this.props.route.key], this.props); + } + }]); + return SceneComponent; + }(React.PureComponent); + + return function (_ref) { + var route = _ref.route; + return React.createElement(SceneComponent, { + key: route.key, + route: route, + __source: { + fileName: _jsxFileName, + lineNumber: 12 + } + }); + }; + } +},436,[12],"react-native-tab-view/src/SceneMap.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/ResourceSavingSceneView.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _propTypes = require(_dependencyMap[2], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _SceneView = require(_dependencyMap[3], "./SceneView"); + + var _SceneView2 = babelHelpers.interopRequireDefault(_SceneView); + + var FAR_FAR_AWAY = 3000; + + var ResourceSavingSceneView = function (_React$PureComponent) { + babelHelpers.inherits(ResourceSavingSceneView, _React$PureComponent); + + function ResourceSavingSceneView(props) { + babelHelpers.classCallCheck(this, ResourceSavingSceneView); + + var _this = babelHelpers.possibleConstructorReturn(this, (ResourceSavingSceneView.__proto__ || Object.getPrototypeOf(ResourceSavingSceneView)).call(this)); + + _initialiseProps.call(_this); + + var key = props.childNavigation.state.key; + var focusedIndex = props.navigation.state.index; + var focusedKey = props.navigation.state.routes[focusedIndex].key; + var isFocused = key === focusedKey; + _this.state = { + awake: props.lazy ? isFocused : true, + visible: isFocused + }; + return _this; + } + + babelHelpers.createClass(ResourceSavingSceneView, [{ + key: "componentWillMount", + value: function componentWillMount() { + this._actionListener = this.props.navigation.addListener('action', this._onAction); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._actionListener.remove(); + } + }, { + key: "render", + value: function render() { + var _state = this.state, + awake = _state.awake, + visible = _state.visible; + var _props = this.props, + childNavigation = _props.childNavigation, + navigation = _props.navigation, + removeClippedSubviews = _props.removeClippedSubviews, + lazy = _props.lazy, + rest = babelHelpers.objectWithoutProperties(_props, ["childNavigation", "navigation", "removeClippedSubviews", "lazy"]); + return _react2.default.createElement( + _reactNative.View, + { + style: styles.container, + collapsable: false, + removeClippedSubviews: _reactNative.Platform.OS === 'android' ? removeClippedSubviews : !visible && removeClippedSubviews, + __source: { + fileName: _jsxFileName, + lineNumber: 46 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: this._mustAlwaysBeVisible() || visible ? styles.innerAttached : styles.innerDetached, + __source: { + fileName: _jsxFileName, + lineNumber: 55 + } + }, + awake ? _react2.default.createElement(_SceneView2.default, babelHelpers.extends({}, rest, { + navigation: childNavigation, + __source: { + fileName: _jsxFileName, + lineNumber: 62 + } + })) : null + ) + ); + } + }]); + return ResourceSavingSceneView; + }(_react2.default.PureComponent); + + var _initialiseProps = function _initialiseProps() { + var _this2 = this; + + this._mustAlwaysBeVisible = function () { + return _this2.props.animationEnabled || _this2.props.swipeEnabled; + }; + + this._onAction = function (payload) { + if (payload.action.type == 'Navigation/COMPLETE_TRANSITION' || !payload.state) { + return; + } + + var _payload$state = payload.state, + routes = _payload$state.routes, + index = _payload$state.index; + var key = _this2.props.childNavigation.state.key; + + if (routes[index].key === key) { + if (!_this2.state.visible) { + var nextState = { + visible: true + }; + + if (!_this2.state.awake) { + nextState.awake = true; + } + + _this2.setState(nextState); + } + } else { + if (_this2.state.visible) { + _this2.setState({ + visible: false + }); + } + } + }; + }; + + exports.default = ResourceSavingSceneView; + + var styles = _reactNative.StyleSheet.create({ + container: { + flex: 1, + overflow: 'hidden' + }, + innerAttached: { + flex: 1 + }, + innerDetached: { + flex: 1, + top: FAR_FAR_AWAY + } + }); +},437,[12,66,24,404],"react-navigation/src/views/ResourceSavingSceneView.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/TabView/TabBarTop.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _reactNativeTabView = require(_dependencyMap[2], "react-native-tab-view"); + + var _TabBarIcon = require(_dependencyMap[3], "./TabBarIcon"); + + var _TabBarIcon2 = babelHelpers.interopRequireDefault(_TabBarIcon); + + var TabBarTop = function (_React$PureComponent) { + babelHelpers.inherits(TabBarTop, _React$PureComponent); + + function TabBarTop() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, TabBarTop); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = TabBarTop.__proto__ || Object.getPrototypeOf(TabBarTop)).call.apply(_ref, [this].concat(args))), _this), _this._renderLabel = function (scene) { + var _this$props = _this.props, + position = _this$props.position, + tabBarPosition = _this$props.tabBarPosition, + navigation = _this$props.navigation, + activeTintColor = _this$props.activeTintColor, + inactiveTintColor = _this$props.inactiveTintColor, + showLabel = _this$props.showLabel, + upperCaseLabel = _this$props.upperCaseLabel, + labelStyle = _this$props.labelStyle, + allowFontScaling = _this$props.allowFontScaling; + + if (showLabel === false) { + return null; + } + + var index = scene.index; + var routes = navigation.state.routes; + var inputRange = [-1].concat(babelHelpers.toConsumableArray(routes.map(function (x, i) { + return i; + }))); + var outputRange = inputRange.map(function (inputIndex) { + return inputIndex === index ? activeTintColor : inactiveTintColor; + }); + var color = position.interpolate({ + inputRange: inputRange, + outputRange: outputRange + }); + var tintColor = scene.focused ? activeTintColor : inactiveTintColor; + + var label = _this.props.getLabel(babelHelpers.extends({}, scene, { + tintColor: tintColor + })); + + if (typeof label === 'string') { + return _react2.default.createElement( + _reactNative.Animated.Text, + { + style: [styles.label, { + color: color + }, labelStyle], + allowFontScaling: allowFontScaling, + __source: { + fileName: _jsxFileName, + lineNumber: 47 + } + }, + upperCaseLabel ? label.toUpperCase() : label + ); + } + + if (typeof label === 'function') { + return label(babelHelpers.extends({}, scene, { + tintColor: tintColor + })); + } + + return label; + }, _this._renderIcon = function (scene) { + var _this$props2 = _this.props, + position = _this$props2.position, + navigation = _this$props2.navigation, + activeTintColor = _this$props2.activeTintColor, + inactiveTintColor = _this$props2.inactiveTintColor, + renderIcon = _this$props2.renderIcon, + showIcon = _this$props2.showIcon, + iconStyle = _this$props2.iconStyle; + + if (showIcon === false) { + return null; + } + + return _react2.default.createElement(_TabBarIcon2.default, { + position: position, + navigation: navigation, + activeTintColor: activeTintColor, + inactiveTintColor: inactiveTintColor, + renderIcon: renderIcon, + scene: scene, + style: [styles.icon, iconStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 76 + } + }); + }, _this._handleOnPress = function (scene) { + var _this$props3 = _this.props, + getOnPress = _this$props3.getOnPress, + jumpToIndex = _this$props3.jumpToIndex, + navigation = _this$props3.navigation; + var previousScene = navigation.state.routes[navigation.state.index]; + var onPress = getOnPress(previousScene, scene); + + if (onPress) { + onPress({ + previousScene: previousScene, + scene: scene, + jumpToIndex: jumpToIndex, + defaultHandler: jumpToIndex + }); + } else { + jumpToIndex(scene.index); + } + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(TabBarTop, [{ + key: "render", + value: function render() { + var props = this.props; + return _react2.default.createElement(_reactNativeTabView.TabBar, babelHelpers.extends({}, props, { + onTabPress: this._handleOnPress, + jumpToIndex: function jumpToIndex() {}, + renderIcon: this._renderIcon, + renderLabel: this._renderLabel, + __source: { + fileName: _jsxFileName, + lineNumber: 113 + } + })); + } + }]); + return TabBarTop; + }(_react2.default.PureComponent); + + TabBarTop.defaultProps = { + activeTintColor: '#fff', + inactiveTintColor: '#fff', + showIcon: false, + showLabel: true, + upperCaseLabel: true, + allowFontScaling: true + }; + exports.default = TabBarTop; + + var styles = _reactNative.StyleSheet.create({ + icon: { + height: 24, + width: 24 + }, + label: { + textAlign: 'center', + fontSize: 13, + margin: 8, + backgroundColor: 'transparent' + } + }); +},438,[12,66,427,439],"react-navigation/src/views/TabView/TabBarTop.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/TabView/TabBarIcon.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var TabBarIcon = function (_React$PureComponent) { + babelHelpers.inherits(TabBarIcon, _React$PureComponent); + + function TabBarIcon() { + babelHelpers.classCallCheck(this, TabBarIcon); + return babelHelpers.possibleConstructorReturn(this, (TabBarIcon.__proto__ || Object.getPrototypeOf(TabBarIcon)).apply(this, arguments)); + } + + babelHelpers.createClass(TabBarIcon, [{ + key: "render", + value: function render() { + var _props = this.props, + position = _props.position, + scene = _props.scene, + navigation = _props.navigation, + activeTintColor = _props.activeTintColor, + inactiveTintColor = _props.inactiveTintColor, + style = _props.style; + var route = scene.route, + index = scene.index; + var routes = navigation.state.routes; + var inputRange = [-1].concat(babelHelpers.toConsumableArray(routes.map(function (x, i) { + return i; + }))); + var activeOpacity = position.interpolate({ + inputRange: inputRange, + outputRange: inputRange.map(function (i) { + return i === index ? 1 : 0; + }) + }); + var inactiveOpacity = position.interpolate({ + inputRange: inputRange, + outputRange: inputRange.map(function (i) { + return i === index ? 0 : 1; + }) + }); + return _react2.default.createElement( + _reactNative.View, + { + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 29 + } + }, + _react2.default.createElement( + _reactNative.Animated.View, + { + style: [styles.icon, { + opacity: activeOpacity + }], + __source: { + fileName: _jsxFileName, + lineNumber: 30 + } + }, + this.props.renderIcon({ + route: route, + index: index, + focused: true, + tintColor: activeTintColor + }) + ), + _react2.default.createElement( + _reactNative.Animated.View, + { + style: [styles.icon, { + opacity: inactiveOpacity + }], + __source: { + fileName: _jsxFileName, + lineNumber: 38 + } + }, + this.props.renderIcon({ + route: route, + index: index, + focused: false, + tintColor: inactiveTintColor + }) + ) + ); + } + }]); + return TabBarIcon; + }(_react2.default.PureComponent); + + exports.default = TabBarIcon; + + var styles = _reactNative.StyleSheet.create({ + icon: { + alignItems: 'center', + alignSelf: 'center', + height: '100%', + justifyContent: 'center', + position: 'absolute', + width: '100%' + } + }); +},439,[12,66],"react-navigation/src/views/TabView/TabBarIcon.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/TabView/TabBarBottom.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _reactNativeSafeAreaView = require(_dependencyMap[2], "react-native-safe-area-view"); + + var _reactNativeSafeAreaView2 = babelHelpers.interopRequireDefault(_reactNativeSafeAreaView); + + var _TabBarIcon = require(_dependencyMap[3], "./TabBarIcon"); + + var _TabBarIcon2 = babelHelpers.interopRequireDefault(_TabBarIcon); + + var _NavigationActions = require(_dependencyMap[4], "../../NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _withOrientation = require(_dependencyMap[5], "../withOrientation"); + + var _withOrientation2 = babelHelpers.interopRequireDefault(_withOrientation); + + var majorVersion = parseInt(_reactNative.Platform.Version, 10); + var isIos = _reactNative.Platform.OS === 'ios'; + var isIOS11 = majorVersion >= 11 && isIos; + var defaultMaxTabBarItemWidth = 125; + + var TabBarBottom = function (_React$PureComponent) { + babelHelpers.inherits(TabBarBottom, _React$PureComponent); + + function TabBarBottom() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, TabBarBottom); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = TabBarBottom.__proto__ || Object.getPrototypeOf(TabBarBottom)).call.apply(_ref, [this].concat(args))), _this), _this._renderLabel = function (scene) { + var _this$props = _this.props, + position = _this$props.position, + navigation = _this$props.navigation, + activeTintColor = _this$props.activeTintColor, + inactiveTintColor = _this$props.inactiveTintColor, + labelStyle = _this$props.labelStyle, + showLabel = _this$props.showLabel, + showIcon = _this$props.showIcon, + isLandscape = _this$props.isLandscape, + allowFontScaling = _this$props.allowFontScaling; + + if (showLabel === false) { + return null; + } + + var index = scene.index; + var routes = navigation.state.routes; + var inputRange = [-1].concat(babelHelpers.toConsumableArray(routes.map(function (x, i) { + return i; + }))); + var outputRange = inputRange.map(function (inputIndex) { + return inputIndex === index ? activeTintColor : inactiveTintColor; + }); + var color = position.interpolate({ + inputRange: inputRange, + outputRange: outputRange + }); + var tintColor = scene.focused ? activeTintColor : inactiveTintColor; + + var label = _this.props.getLabel(babelHelpers.extends({}, scene, { + tintColor: tintColor + })); + + if (typeof label === 'string') { + return _react2.default.createElement( + _reactNative.Animated.Text, + { + numberOfLines: 1, + style: [styles.label, { + color: color + }, showIcon && _this._shouldUseHorizontalTabs() ? styles.labelBeside : styles.labelBeneath, labelStyle], + allowFontScaling: allowFontScaling, + __source: { + fileName: _jsxFileName, + lineNumber: 66 + } + }, + label + ); + } + + if (typeof label === 'function') { + return label(babelHelpers.extends({}, scene, { + tintColor: tintColor + })); + } + + return label; + }, _this._renderIcon = function (scene) { + var _this$props2 = _this.props, + position = _this$props2.position, + navigation = _this$props2.navigation, + activeTintColor = _this$props2.activeTintColor, + inactiveTintColor = _this$props2.inactiveTintColor, + renderIcon = _this$props2.renderIcon, + showIcon = _this$props2.showIcon, + showLabel = _this$props2.showLabel; + + if (showIcon === false) { + return null; + } + + return _react2.default.createElement(_TabBarIcon2.default, { + position: position, + navigation: navigation, + activeTintColor: activeTintColor, + inactiveTintColor: inactiveTintColor, + renderIcon: renderIcon, + scene: scene, + style: showLabel && _this._shouldUseHorizontalTabs() ? {} : styles.icon, + __source: { + fileName: _jsxFileName, + lineNumber: 104 + } + }); + }, _this._renderTestIDProps = function (scene) { + var testIDProps = _this.props.getTestIDProps && _this.props.getTestIDProps(scene); + + return testIDProps; + }, _this._handleTabPress = function (index) { + var _this$props3 = _this.props, + jumpToIndex = _this$props3.jumpToIndex, + navigation = _this$props3.navigation; + var currentIndex = navigation.state.index; + + if (currentIndex === index) { + var childRoute = navigation.state.routes[index]; + + if (childRoute.hasOwnProperty('index') && childRoute.index > 0) { + navigation.dispatch(_NavigationActions2.default.popToTop({ + key: childRoute.key + })); + } else {} + } else { + jumpToIndex(index); + } + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(TabBarBottom, [{ + key: "_tabItemMaxWidth", + value: function _tabItemMaxWidth() { + var _props = this.props, + tabStyle = _props.tabStyle, + layout = _props.layout; + var maxTabBarItemWidth = void 0; + + var flattenedTabStyle = _reactNative.StyleSheet.flatten(tabStyle); + + if (flattenedTabStyle) { + if (typeof flattenedTabStyle.width === 'number') { + maxTabBarItemWidth = flattenedTabStyle.width; + } else if (typeof flattenedTabStyle.width === 'string' && flattenedTabStyle.endsWith('%')) { + var width = parseFloat(flattenedTabStyle.width); + + if (Number.isFinite(width)) { + maxTabBarItemWidth = layout.width * (width / 100); + } + } else if (typeof flattenedTabStyle.maxWidth === 'number') { + maxTabBarItemWidth = flattenedTabStyle.maxWidth; + } else if (typeof flattenedTabStyle.maxWidth === 'string' && flattenedTabStyle.endsWith('%')) { + var _width = parseFloat(flattenedTabStyle.maxWidth); + + if (Number.isFinite(_width)) { + maxTabBarItemWidth = layout.width * (_width / 100); + } + } + } + + if (!maxTabBarItemWidth) { + maxTabBarItemWidth = defaultMaxTabBarItemWidth; + } + + return maxTabBarItemWidth; + } + }, { + key: "_shouldUseHorizontalTabs", + value: function _shouldUseHorizontalTabs() { + var routes = this.props.navigation.state.routes; + var _props2 = this.props, + isLandscape = _props2.isLandscape, + layout = _props2.layout, + adaptive = _props2.adaptive, + tabStyle = _props2.tabStyle; + + if (!adaptive) { + return false; + } + + var tabBarWidth = layout.width; + + if (tabBarWidth === 0) { + return _reactNative.Platform.isPad; + } + + if (!_reactNative.Platform.isPad) { + return isLandscape; + } else { + var maxTabBarItemWidth = this._tabItemMaxWidth(); + + return routes.length * maxTabBarItemWidth <= tabBarWidth; + } + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _props3 = this.props, + position = _props3.position, + navigation = _props3.navigation, + jumpToIndex = _props3.jumpToIndex, + getOnPress = _props3.getOnPress, + getTestIDProps = _props3.getTestIDProps, + activeBackgroundColor = _props3.activeBackgroundColor, + inactiveBackgroundColor = _props3.inactiveBackgroundColor, + style = _props3.style, + animateStyle = _props3.animateStyle, + tabStyle = _props3.tabStyle, + isLandscape = _props3.isLandscape; + var routes = navigation.state.routes; + var previousScene = routes[navigation.state.index]; + var inputRange = [-1].concat(babelHelpers.toConsumableArray(routes.map(function (x, i) { + return i; + }))); + var tabBarStyle = [styles.tabBar, this._shouldUseHorizontalTabs() && !_reactNative.Platform.isPad ? styles.tabBarCompact : styles.tabBarRegular, style]; + return _react2.default.createElement( + _reactNative.Animated.View, + { + style: animateStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 226 + } + }, + _react2.default.createElement( + _reactNativeSafeAreaView2.default, + { + style: tabBarStyle, + forceInset: { + bottom: 'always', + top: 'never' + }, + __source: { + fileName: _jsxFileName, + lineNumber: 227 + } + }, + routes.map(function (route, index) { + var focused = index === navigation.state.index; + var scene = { + route: route, + index: index, + focused: focused + }; + + var _onPress = getOnPress(previousScene, scene); + + var outputRange = inputRange.map(function (inputIndex) { + return inputIndex === index ? activeBackgroundColor : inactiveBackgroundColor; + }); + var backgroundColor = position.interpolate({ + inputRange: inputRange, + outputRange: outputRange + }); + var justifyContent = _this2.props.showIcon ? 'flex-end' : 'center'; + var extraProps = _this2._renderTestIDProps(scene) || {}; + var testID = extraProps.testID, + accessibilityLabel = extraProps.accessibilityLabel; + return _react2.default.createElement( + _reactNative.TouchableWithoutFeedback, + { + key: route.key, + testID: testID, + accessibilityLabel: accessibilityLabel, + onPress: function onPress() { + return _onPress ? _onPress({ + previousScene: previousScene, + scene: scene, + jumpToIndex: jumpToIndex, + defaultHandler: _this2._handleTabPress + }) : _this2._handleTabPress(index); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 251 + } + }, + _react2.default.createElement( + _reactNative.Animated.View, + { + style: [styles.tab, { + backgroundColor: backgroundColor + }], + __source: { + fileName: _jsxFileName, + lineNumber: 266 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: [styles.tab, _this2._shouldUseHorizontalTabs() ? styles.tabLandscape : styles.tabPortrait, tabStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 267 + } + }, + _this2._renderIcon(scene), + _this2._renderLabel(scene) + ) + ) + ); + }) + ) + ); + } + }]); + return TabBarBottom; + }(_react2.default.PureComponent); + + TabBarBottom.defaultProps = { + activeTintColor: '#3478f6', + activeBackgroundColor: 'transparent', + inactiveTintColor: '#929292', + inactiveBackgroundColor: 'transparent', + showLabel: true, + showIcon: true, + allowFontScaling: true, + adaptive: isIOS11 + }; + + var styles = _reactNative.StyleSheet.create({ + tabBar: { + backgroundColor: '#F7F7F7', + borderTopWidth: _reactNative.StyleSheet.hairlineWidth, + borderTopColor: 'rgba(0, 0, 0, .3)', + flexDirection: 'row' + }, + tabBarCompact: { + height: 29 + }, + tabBarRegular: { + height: 49 + }, + tab: { + flex: 1, + alignItems: isIos ? 'center' : 'stretch' + }, + tabPortrait: { + justifyContent: 'flex-end', + flexDirection: 'column' + }, + tabLandscape: { + justifyContent: 'center', + flexDirection: 'row' + }, + icon: { + flexGrow: 1 + }, + label: { + textAlign: 'center', + backgroundColor: 'transparent' + }, + labelBeneath: { + fontSize: 10, + marginBottom: 1.5 + }, + labelBeside: { + fontSize: 13, + marginLeft: 20 + } + }); + + exports.default = (0, _withOrientation2.default)(TabBarBottom); +},440,[12,66,392,439,379,401],"react-navigation/src/views/TabView/TabBarBottom.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/navigators/DrawerNavigator.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _reactNativeSafeAreaView = require(_dependencyMap[2], "react-native-safe-area-view"); + + var _reactNativeSafeAreaView2 = babelHelpers.interopRequireDefault(_reactNativeSafeAreaView); + + var _createNavigator = require(_dependencyMap[3], "./createNavigator"); + + var _createNavigator2 = babelHelpers.interopRequireDefault(_createNavigator); + + var _createNavigationContainer = require(_dependencyMap[4], "../createNavigationContainer"); + + var _createNavigationContainer2 = babelHelpers.interopRequireDefault(_createNavigationContainer); + + var _TabRouter2 = require(_dependencyMap[5], "../routers/TabRouter"); + + var _TabRouter3 = babelHelpers.interopRequireDefault(_TabRouter2); + + var _DrawerScreen = require(_dependencyMap[6], "../views/Drawer/DrawerScreen"); + + var _DrawerScreen2 = babelHelpers.interopRequireDefault(_DrawerScreen); + + var _DrawerView = require(_dependencyMap[7], "../views/Drawer/DrawerView"); + + var _DrawerView2 = babelHelpers.interopRequireDefault(_DrawerView); + + var _DrawerNavigatorItems = require(_dependencyMap[8], "../views/Drawer/DrawerNavigatorItems"); + + var _DrawerNavigatorItems2 = babelHelpers.interopRequireDefault(_DrawerNavigatorItems); + + var defaultContentComponent = function defaultContentComponent(props) { + return _react2.default.createElement( + _reactNative.ScrollView, + { + alwaysBounceVertical: false, + __source: { + fileName: _jsxFileName, + lineNumber: 17 + } + }, + _react2.default.createElement( + _reactNativeSafeAreaView2.default, + { + forceInset: { + top: 'always', + horizontal: 'never' + }, + __source: { + fileName: _jsxFileName, + lineNumber: 18 + } + }, + _react2.default.createElement(_DrawerNavigatorItems2.default, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 19 + } + })) + ) + ); + }; + + var DefaultDrawerConfig = { + drawerWidth: function drawerWidth() { + var _Dimensions$get = _reactNative.Dimensions.get('window'), + height = _Dimensions$get.height, + width = _Dimensions$get.width; + + var smallerAxisSize = Math.min(height, width); + var isLandscape = width > height; + var isTablet = smallerAxisSize >= 600; + var appBarHeight = _reactNative.Platform.OS === 'ios' ? isLandscape ? 32 : 44 : 56; + var maxWidth = isTablet ? 320 : 280; + return Math.min(smallerAxisSize - appBarHeight, maxWidth); + }, + contentComponent: defaultContentComponent, + drawerOpenRoute: 'DrawerOpen', + drawerCloseRoute: 'DrawerClose', + drawerToggleRoute: 'DrawerToggle', + drawerPosition: 'left', + drawerBackgroundColor: 'white', + useNativeAnimations: true + }; + + var DrawerNavigator = function DrawerNavigator(routeConfigs) { + var _TabRouter; + + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var mergedConfig = babelHelpers.extends({}, DefaultDrawerConfig, config); + var containerConfig = mergedConfig.containerConfig, + drawerWidth = mergedConfig.drawerWidth, + drawerLockMode = mergedConfig.drawerLockMode, + contentComponent = mergedConfig.contentComponent, + contentOptions = mergedConfig.contentOptions, + drawerPosition = mergedConfig.drawerPosition, + useNativeAnimations = mergedConfig.useNativeAnimations, + drawerBackgroundColor = mergedConfig.drawerBackgroundColor, + drawerOpenRoute = mergedConfig.drawerOpenRoute, + drawerCloseRoute = mergedConfig.drawerCloseRoute, + drawerToggleRoute = mergedConfig.drawerToggleRoute, + tabsConfig = babelHelpers.objectWithoutProperties(mergedConfig, ["containerConfig", "drawerWidth", "drawerLockMode", "contentComponent", "contentOptions", "drawerPosition", "useNativeAnimations", "drawerBackgroundColor", "drawerOpenRoute", "drawerCloseRoute", "drawerToggleRoute"]); + var contentRouter = (0, _TabRouter3.default)(routeConfigs, tabsConfig); + var drawerRouter = (0, _TabRouter3.default)((_TabRouter = {}, babelHelpers.defineProperty(_TabRouter, drawerCloseRoute, { + screen: (0, _createNavigator2.default)(contentRouter, routeConfigs, config)(function (props) { + return _react2.default.createElement(_DrawerScreen2.default, babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 71 + } + })); + }) + }), babelHelpers.defineProperty(_TabRouter, drawerOpenRoute, { + screen: function screen() { + return null; + } + }), babelHelpers.defineProperty(_TabRouter, drawerToggleRoute, { + screen: function screen() { + return null; + } + }), _TabRouter), { + initialRouteName: drawerCloseRoute + }); + var navigator = (0, _createNavigator2.default)(drawerRouter, routeConfigs, config)(function (props) { + return _react2.default.createElement(_DrawerView2.default, babelHelpers.extends({}, props, { + drawerBackgroundColor: drawerBackgroundColor, + drawerLockMode: drawerLockMode, + useNativeAnimations: useNativeAnimations, + drawerWidth: drawerWidth, + contentComponent: contentComponent, + contentOptions: contentOptions, + drawerPosition: drawerPosition, + drawerOpenRoute: drawerOpenRoute, + drawerCloseRoute: drawerCloseRoute, + drawerToggleRoute: drawerToggleRoute, + __source: { + fileName: _jsxFileName, + lineNumber: 88 + } + })); + }); + return (0, _createNavigationContainer2.default)(navigator); + }; + + exports.default = DrawerNavigator; +},441,[12,66,392,383,377,425,442,443,446],"react-navigation/src/navigators/DrawerNavigator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Drawer/DrawerScreen.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _SceneView = require(_dependencyMap[1], "../SceneView"); + + var _SceneView2 = babelHelpers.interopRequireDefault(_SceneView); + + var _withCachedChildNavigation = require(_dependencyMap[2], "../../withCachedChildNavigation"); + + var _withCachedChildNavigation2 = babelHelpers.interopRequireDefault(_withCachedChildNavigation); + + var DrawerScreen = function (_React$PureComponent) { + babelHelpers.inherits(DrawerScreen, _React$PureComponent); + + function DrawerScreen() { + babelHelpers.classCallCheck(this, DrawerScreen); + return babelHelpers.possibleConstructorReturn(this, (DrawerScreen.__proto__ || Object.getPrototypeOf(DrawerScreen)).apply(this, arguments)); + } + + babelHelpers.createClass(DrawerScreen, [{ + key: "render", + value: function render() { + var _props = this.props, + router = _props.router, + navigation = _props.navigation, + childNavigationProps = _props.childNavigationProps, + screenProps = _props.screenProps; + var _navigation$state = navigation.state, + routes = _navigation$state.routes, + index = _navigation$state.index; + var childNavigation = childNavigationProps[routes[index].key]; + var Content = router.getComponentForRouteName(routes[index].routeName); + return _react2.default.createElement(_SceneView2.default, { + screenProps: screenProps, + component: Content, + navigation: childNavigation, + __source: { + fileName: _jsxFileName, + lineNumber: 21 + } + }); + } + }]); + return DrawerScreen; + }(_react2.default.PureComponent); + + exports.default = (0, _withCachedChildNavigation2.default)(DrawerScreen); +},442,[12,404,423],"react-navigation/src/views/Drawer/DrawerScreen.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Drawer/DrawerView.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _reactNativeDrawerLayoutPolyfill = require(_dependencyMap[2], "react-native-drawer-layout-polyfill"); + + var _reactNativeDrawerLayoutPolyfill2 = babelHelpers.interopRequireDefault(_reactNativeDrawerLayoutPolyfill); + + var _addNavigationHelpers = require(_dependencyMap[3], "../../addNavigationHelpers"); + + var _addNavigationHelpers2 = babelHelpers.interopRequireDefault(_addNavigationHelpers); + + var _DrawerSidebar = require(_dependencyMap[4], "./DrawerSidebar"); + + var _DrawerSidebar2 = babelHelpers.interopRequireDefault(_DrawerSidebar); + + var _getChildEventSubscriber = require(_dependencyMap[5], "../../getChildEventSubscriber"); + + var _getChildEventSubscriber2 = babelHelpers.interopRequireDefault(_getChildEventSubscriber); + + var DrawerView = function (_React$PureComponent) { + babelHelpers.inherits(DrawerView, _React$PureComponent); + + function DrawerView() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, DrawerView); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = DrawerView.__proto__ || Object.getPrototypeOf(DrawerView)).call.apply(_ref, [this].concat(args))), _this), _this.state = { + drawerWidth: typeof _this.props.drawerWidth === 'function' ? _this.props.drawerWidth() : _this.props.drawerWidth + }, _this._childEventSubscribers = {}, _this._handleDrawerOpen = function () { + var _this$props = _this.props, + navigation = _this$props.navigation, + drawerOpenRoute = _this$props.drawerOpenRoute; + var _navigation$state = navigation.state, + routes = _navigation$state.routes, + index = _navigation$state.index; + + if (routes[index].routeName !== drawerOpenRoute) { + _this.props.navigation.navigate(drawerOpenRoute); + } + }, _this._handleDrawerClose = function () { + var _this$props2 = _this.props, + navigation = _this$props2.navigation, + drawerCloseRoute = _this$props2.drawerCloseRoute; + var _navigation$state2 = navigation.state, + routes = _navigation$state2.routes, + index = _navigation$state2.index; + + if (routes[index].routeName !== drawerCloseRoute) { + _this.props.navigation.navigate(drawerCloseRoute); + } + }, _this._isRouteFocused = function (route) { + return function () { + var state = _this.props.navigation.state; + var focusedRoute = state.routes[state.index]; + return route === focusedRoute; + }; + }, _this._updateScreenNavigation = function (navigation) { + var drawerCloseRoute = _this.props.drawerCloseRoute; + var navigationState = navigation.state.routes.find(function (route) { + return route.routeName === drawerCloseRoute; + }); + + if (_this._screenNavigationProp && _this._screenNavigationProp.state === navigationState) { + return; + } + + if (!_this._childEventSubscribers[navigationState.key]) { + _this._childEventSubscribers[navigationState.key] = (0, _getChildEventSubscriber2.default)(navigation.addListener, navigationState.key); + } + + _this._screenNavigationProp = (0, _addNavigationHelpers2.default)({ + dispatch: navigation.dispatch, + state: navigationState, + isFocused: _this._isRouteFocused.bind(_this, navigationState), + addListener: _this._childEventSubscribers[navigationState.key] + }); + }, _this._updateWidth = function () { + var drawerWidth = typeof _this.props.drawerWidth === 'function' ? _this.props.drawerWidth() : _this.props.drawerWidth; + + if (_this.state.drawerWidth !== drawerWidth) { + _this.setState({ + drawerWidth: drawerWidth + }); + } + }, _this._getNavigationState = function (navigation) { + var drawerCloseRoute = _this.props.drawerCloseRoute; + var navigationState = navigation.state.routes.find(function (route) { + return route.routeName === drawerCloseRoute; + }); + return navigationState; + }, _this._renderNavigationView = function () { + return _react2.default.createElement(_DrawerSidebar2.default, { + screenProps: _this.props.screenProps, + navigation: _this._screenNavigationProp, + router: _this.props.router, + contentComponent: _this.props.contentComponent, + contentOptions: _this.props.contentOptions, + drawerPosition: _this.props.drawerPosition, + style: _this.props.style, + __source: { + fileName: _jsxFileName, + lineNumber: 136 + } + }); + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(DrawerView, [{ + key: "componentWillMount", + value: function componentWillMount() { + this._updateScreenNavigation(this.props.navigation); + + _reactNative.Dimensions.addEventListener('change', this._updateWidth); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + _reactNative.Dimensions.removeEventListener('change', this._updateWidth); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + var _this2 = this; + + var activeKeys = this.props.navigation.state.routes.map(function (route) { + return route.key; + }); + Object.keys(this._childEventSubscribers).forEach(function (key) { + if (!activeKeys.includes(key)) { + delete _this2._childEventSubscribers[key]; + } + }); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + if (this.props.navigation.state.index !== nextProps.navigation.state.index) { + var _props = this.props, + drawerOpenRoute = _props.drawerOpenRoute, + drawerCloseRoute = _props.drawerCloseRoute, + drawerToggleRoute = _props.drawerToggleRoute; + var _nextProps$navigation = nextProps.navigation.state, + routes = _nextProps$navigation.routes, + index = _nextProps$navigation.index; + + if (routes[index].routeName === drawerOpenRoute) { + this._drawer.openDrawer(); + } else if (routes[index].routeName === drawerToggleRoute) { + if (this.props.navigation.state.index === 0) { + this.props.navigation.navigate(drawerOpenRoute); + } else { + this.props.navigation.navigate(drawerCloseRoute); + } + } else { + this._drawer.closeDrawer(); + } + } + + this._updateScreenNavigation(nextProps.navigation); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var DrawerScreen = this.props.router.getComponentForRouteName(this.props.drawerCloseRoute); + var config = this.props.router.getScreenOptions(this._screenNavigationProp, this.props.screenProps); + return _react2.default.createElement( + _reactNativeDrawerLayoutPolyfill2.default, + { + ref: function ref(c) { + _this3._drawer = c; + }, + drawerLockMode: this.props.screenProps && this.props.screenProps.drawerLockMode || config && config.drawerLockMode, + drawerBackgroundColor: this.props.drawerBackgroundColor, + drawerWidth: this.state.drawerWidth, + onDrawerOpen: this._handleDrawerOpen, + onDrawerClose: this._handleDrawerClose, + useNativeAnimations: this.props.useNativeAnimations, + renderNavigationView: this._renderNavigationView, + drawerPosition: this.props.drawerPosition === 'right' ? _reactNativeDrawerLayoutPolyfill2.default.positions.Right : _reactNativeDrawerLayoutPolyfill2.default.positions.Left, + __source: { + fileName: _jsxFileName, + lineNumber: 158 + } + }, + _react2.default.createElement(DrawerScreen, { + screenProps: this.props.screenProps, + navigation: this._screenNavigationProp, + __source: { + fileName: _jsxFileName, + lineNumber: 178 + } + }) + ); + } + }]); + return DrawerView; + }(_react2.default.PureComponent); + + exports.default = DrawerView; +},443,[12,66,444,380,445,403],"react-navigation/src/views/Drawer/DrawerView.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], 'react-native'); + + exports.default = _reactNative.DrawerLayoutAndroid; +},444,[66],"react-native-drawer-layout-polyfill/dist/index.android.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Drawer/DrawerSidebar.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _reactNativeSafeAreaView = require(_dependencyMap[2], "react-native-safe-area-view"); + + var _reactNativeSafeAreaView2 = babelHelpers.interopRequireDefault(_reactNativeSafeAreaView); + + var _withCachedChildNavigation = require(_dependencyMap[3], "../../withCachedChildNavigation"); + + var _withCachedChildNavigation2 = babelHelpers.interopRequireDefault(_withCachedChildNavigation); + + var _NavigationActions = require(_dependencyMap[4], "../../NavigationActions"); + + var _NavigationActions2 = babelHelpers.interopRequireDefault(_NavigationActions); + + var _invariant = require(_dependencyMap[5], "../../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var DrawerSidebar = function (_React$PureComponent) { + babelHelpers.inherits(DrawerSidebar, _React$PureComponent); + + function DrawerSidebar() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, DrawerSidebar); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = DrawerSidebar.__proto__ || Object.getPrototypeOf(DrawerSidebar)).call.apply(_ref, [this].concat(args))), _this), _this._getScreenOptions = function (routeKey) { + var DrawerScreen = _this.props.router.getComponentForRouteName('DrawerClose'); + + (0, _invariant2.default)(DrawerScreen.router, 'NavigationComponent with routeName DrawerClose should be a Navigator'); + var childNavigation = _this.props.childNavigationProps[routeKey]; + return DrawerScreen.router.getScreenOptions(childNavigation.state.index !== undefined ? babelHelpers.extends({}, childNavigation, { + state: babelHelpers.extends({}, childNavigation.state, { + index: 0 + }) + }) : childNavigation, _this.props.screenProps); + }, _this._getLabel = function (_ref2) { + var focused = _ref2.focused, + tintColor = _ref2.tintColor, + route = _ref2.route; + + var _this$_getScreenOptio = _this._getScreenOptions(route.key), + drawerLabel = _this$_getScreenOptio.drawerLabel, + title = _this$_getScreenOptio.title; + + if (drawerLabel) { + return typeof drawerLabel === 'function' ? drawerLabel({ + tintColor: tintColor, + focused: focused + }) : drawerLabel; + } + + if (typeof title === 'string') { + return title; + } + + return route.routeName; + }, _this._renderIcon = function (_ref3) { + var focused = _ref3.focused, + tintColor = _ref3.tintColor, + route = _ref3.route; + + var _this$_getScreenOptio2 = _this._getScreenOptions(route.key), + drawerIcon = _this$_getScreenOptio2.drawerIcon; + + if (drawerIcon) { + return typeof drawerIcon === 'function' ? drawerIcon({ + tintColor: tintColor, + focused: focused + }) : drawerIcon; + } + + return null; + }, _this._onItemPress = function (_ref4) { + var route = _ref4.route, + focused = _ref4.focused; + + _this.props.navigation.navigate('DrawerClose'); + + if (!focused) { + var subAction = void 0; + + if (route.index !== undefined && route.index !== 0) { + subAction = _NavigationActions2.default.reset({ + index: 0, + actions: [_NavigationActions2.default.navigate({ + routeName: route.routes[0].routeName + })] + }); + } + + _this.props.navigation.navigate(route.routeName, undefined, subAction); + } + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(DrawerSidebar, [{ + key: "render", + value: function render() { + var ContentComponent = this.props.contentComponent; + + if (!ContentComponent) { + return null; + } + + var state = this.props.navigation.state; + (0, _invariant2.default)(typeof state.index === 'number', 'should be set'); + return _react2.default.createElement( + _reactNative.View, + { + style: [styles.container, this.props.style], + __source: { + fileName: _jsxFileName, + lineNumber: 85 + } + }, + _react2.default.createElement(ContentComponent, babelHelpers.extends({}, this.props.contentOptions, { + navigation: this.props.navigation, + items: state.routes, + activeItemKey: state.routes[state.index] ? state.routes[state.index].key : null, + screenProps: this.props.screenProps, + getLabel: this._getLabel, + renderIcon: this._renderIcon, + onItemPress: this._onItemPress, + router: this.props.router, + drawerPosition: this.props.drawerPosition, + __source: { + fileName: _jsxFileName, + lineNumber: 86 + } + })) + ); + } + }]); + return DrawerSidebar; + }(_react2.default.PureComponent); + + exports.default = (0, _withCachedChildNavigation2.default)(DrawerSidebar); + + var styles = _reactNative.StyleSheet.create({ + container: { + flex: 1 + } + }); +},445,[12,66,392,423,379,381],"react-navigation/src/views/Drawer/DrawerSidebar.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/Drawer/DrawerNavigatorItems.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _reactNativeSafeAreaView = require(_dependencyMap[2], "react-native-safe-area-view"); + + var _reactNativeSafeAreaView2 = babelHelpers.interopRequireDefault(_reactNativeSafeAreaView); + + var _TouchableItem = require(_dependencyMap[3], "../TouchableItem"); + + var _TouchableItem2 = babelHelpers.interopRequireDefault(_TouchableItem); + + var DrawerNavigatorItems = function DrawerNavigatorItems(_ref) { + var _ref$navigation = _ref.navigation, + state = _ref$navigation.state, + navigate = _ref$navigation.navigate, + items = _ref.items, + activeItemKey = _ref.activeItemKey, + activeTintColor = _ref.activeTintColor, + activeBackgroundColor = _ref.activeBackgroundColor, + inactiveTintColor = _ref.inactiveTintColor, + inactiveBackgroundColor = _ref.inactiveBackgroundColor, + getLabel = _ref.getLabel, + renderIcon = _ref.renderIcon, + onItemPress = _ref.onItemPress, + itemsContainerStyle = _ref.itemsContainerStyle, + itemStyle = _ref.itemStyle, + labelStyle = _ref.labelStyle, + activeLabelStyle = _ref.activeLabelStyle, + inactiveLabelStyle = _ref.inactiveLabelStyle, + iconContainerStyle = _ref.iconContainerStyle, + drawerPosition = _ref.drawerPosition; + return _react2.default.createElement( + _reactNative.View, + { + style: [styles.container, itemsContainerStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 29 + } + }, + items.map(function (route, index) { + var _ref2; + + var focused = activeItemKey === route.key; + var color = focused ? activeTintColor : inactiveTintColor; + var backgroundColor = focused ? activeBackgroundColor : inactiveBackgroundColor; + var scene = { + route: route, + index: index, + focused: focused, + tintColor: color + }; + var icon = renderIcon(scene); + var label = getLabel(scene); + var extraLabelStyle = focused ? activeLabelStyle : inactiveLabelStyle; + return _react2.default.createElement( + _TouchableItem2.default, + { + key: route.key, + onPress: function onPress() { + onItemPress({ + route: route, + focused: focused + }); + }, + delayPressIn: 0, + __source: { + fileName: _jsxFileName, + lineNumber: 41 + } + }, + _react2.default.createElement( + _reactNativeSafeAreaView2.default, + { + style: { + backgroundColor: backgroundColor + }, + forceInset: (_ref2 = {}, babelHelpers.defineProperty(_ref2, drawerPosition, 'always'), babelHelpers.defineProperty(_ref2, drawerPosition === 'left' ? 'right' : 'left', 'never'), babelHelpers.defineProperty(_ref2, "vertical", 'never'), _ref2), + __source: { + fileName: _jsxFileName, + lineNumber: 48 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: [styles.item, itemStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 56 + } + }, + icon ? _react2.default.createElement( + _reactNative.View, + { + style: [styles.icon, focused ? null : styles.inactiveIcon, iconContainerStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 58 + } + }, + icon + ) : null, + typeof label === 'string' ? _react2.default.createElement( + _reactNative.Text, + { + style: [styles.label, { + color: color + }, labelStyle, extraLabelStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 69 + } + }, + label + ) : label + ) + ) + ); + }) + ); + }; + + DrawerNavigatorItems.defaultProps = { + activeTintColor: '#2196f3', + activeBackgroundColor: 'rgba(0, 0, 0, .04)', + inactiveTintColor: 'rgba(0, 0, 0, .87)', + inactiveBackgroundColor: 'transparent' + }; + + var styles = _reactNative.StyleSheet.create({ + container: { + paddingVertical: 4 + }, + item: { + flexDirection: 'row', + alignItems: 'center' + }, + icon: { + marginHorizontal: 16, + width: 24, + alignItems: 'center' + }, + inactiveIcon: { + opacity: 0.62 + }, + label: { + margin: 16, + fontWeight: 'bold' + } + }); + + exports.default = DrawerNavigatorItems; +},446,[12,66,392,396],"react-navigation/src/views/Drawer/DrawerNavigatorItems.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/withNavigation.js"; + exports.default = withNavigation; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _hoistNonReactStatics = require(_dependencyMap[2], "hoist-non-react-statics"); + + var _hoistNonReactStatics2 = babelHelpers.interopRequireDefault(_hoistNonReactStatics); + + function withNavigation(Component) { + var ComponentWithNavigation = function (_React$Component) { + babelHelpers.inherits(ComponentWithNavigation, _React$Component); + + function ComponentWithNavigation() { + babelHelpers.classCallCheck(this, ComponentWithNavigation); + return babelHelpers.possibleConstructorReturn(this, (ComponentWithNavigation.__proto__ || Object.getPrototypeOf(ComponentWithNavigation)).apply(this, arguments)); + } + + babelHelpers.createClass(ComponentWithNavigation, [{ + key: "render", + value: function render() { + var navigation = this.context.navigation; + return _react2.default.createElement(Component, babelHelpers.extends({}, this.props, { + navigation: navigation, + ref: this.props.onRef, + __source: { + fileName: _jsxFileName, + lineNumber: 17 + } + })); + } + }]); + return ComponentWithNavigation; + }(_react2.default.Component); + + ComponentWithNavigation.displayName = "withNavigation(" + (Component.displayName || Component.name) + ")"; + ComponentWithNavigation.contextTypes = { + navigation: _propTypes2.default.object.isRequired + }; + return (0, _hoistNonReactStatics2.default)(ComponentWithNavigation, Component); + } +},447,[12,24,30],"react-navigation/src/views/withNavigation.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-navigation/src/views/withNavigationFocus.js"; + exports.default = withNavigationFocus; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _hoistNonReactStatics = require(_dependencyMap[2], "hoist-non-react-statics"); + + var _hoistNonReactStatics2 = babelHelpers.interopRequireDefault(_hoistNonReactStatics); + + var _invariant = require(_dependencyMap[3], "../utils/invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + function withNavigationFocus(Component) { + var ComponentWithNavigationFocus = function (_React$Component) { + babelHelpers.inherits(ComponentWithNavigationFocus, _React$Component); + + function ComponentWithNavigationFocus(props, context) { + babelHelpers.classCallCheck(this, ComponentWithNavigationFocus); + + var _this = babelHelpers.possibleConstructorReturn(this, (ComponentWithNavigationFocus.__proto__ || Object.getPrototypeOf(ComponentWithNavigationFocus)).call(this)); + + _initialiseProps.call(_this); + + _this.state = { + isFocused: _this.getNavigation(props, context).isFocused() + }; + return _this; + } + + babelHelpers.createClass(ComponentWithNavigationFocus, [{ + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + var navigation = this.getNavigation(); + this.subscriptions = [navigation.addListener('didFocus', function () { + return _this2.setState({ + isFocused: true + }); + }), navigation.addListener('willBlur', function () { + return _this2.setState({ + isFocused: false + }); + })]; + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.subscriptions.forEach(function (sub) { + return sub.remove(); + }); + } + }, { + key: "render", + value: function render() { + return _react2.default.createElement(Component, babelHelpers.extends({}, this.props, { + isFocused: this.state.isFocused, + ref: this.props.onRef, + __source: { + fileName: _jsxFileName, + lineNumber: 50 + } + })); + } + }]); + return ComponentWithNavigationFocus; + }(_react2.default.Component); + + ComponentWithNavigationFocus.displayName = "withNavigationFocus(" + (Component.displayName || Component.name) + ")"; + ComponentWithNavigationFocus.contextTypes = { + navigation: _propTypes2.default.object.isRequired + }; + + var _initialiseProps = function _initialiseProps() { + var _this3 = this; + + this.getNavigation = function () { + var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this3.props; + var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this3.context; + var navigation = props.navigation || context.navigation; + (0, _invariant2.default)(!!navigation, 'withNavigationFocus can only be used on a view hierarchy of a navigator. The wrapped component is unable to get access to navigation from props or context.'); + return navigation; + }; + }; + + return (0, _hoistNonReactStatics2.default)(ComponentWithNavigationFocus, Component); + } +},448,[12,24,30,381],"react-navigation/src/views/withNavigationFocus.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _view = require(_dependencyMap[1], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state) { + return {}; + }; + + var perform = function perform(dispatch) { + return {}; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},449,[22,450],"LBRYApp/src/component/fileItemMedia/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/component/fileItemMedia/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _fileItemMedia = require(_dependencyMap[2], "../../styles/fileItemMedia"); + + var _fileItemMedia2 = babelHelpers.interopRequireDefault(_fileItemMedia); + + var FileItemMedia = function (_React$PureComponent) { + babelHelpers.inherits(FileItemMedia, _React$PureComponent); + + function FileItemMedia() { + babelHelpers.classCallCheck(this, FileItemMedia); + return babelHelpers.possibleConstructorReturn(this, (FileItemMedia.__proto__ || Object.getPrototypeOf(FileItemMedia)).apply(this, arguments)); + } + + babelHelpers.createClass(FileItemMedia, [{ + key: "componentWillMount", + value: function componentWillMount() { + this.setState({ + autoThumbStyle: FileItemMedia.AUTO_THUMB_STYLES[Math.floor(Math.random() * FileItemMedia.AUTO_THUMB_STYLES.length)] + }); + } + }, { + key: "render", + value: function render() { + var style = this.props.style; + var _props = this.props, + title = _props.title, + thumbnail = _props.thumbnail; + var atStyle = this.state.autoThumbStyle; + + if (thumbnail && typeof thumbnail === 'string') { + if (style == null) { + style = _fileItemMedia2.default.thumbnail; + } + + return _react2.default.createElement(_reactNative.Image, { + source: { + uri: thumbnail + }, + resizeMode: "cover", + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 40 + } + }); + } + + return _react2.default.createElement( + _reactNative.View, + { + style: [_fileItemMedia2.default.autothumb, atStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 45 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: _fileItemMedia2.default.autothumbText, + __source: { + fileName: _jsxFileName, + lineNumber: 46 + } + }, + title && title.replace(/\s+/g, '').substring(0, Math.min(title.replace(' ', '').length, 5)).toUpperCase() + ) + ); + } + }]); + return FileItemMedia; + }(_react2.default.PureComponent); + + FileItemMedia.AUTO_THUMB_STYLES = [_fileItemMedia2.default.autothumbPurple, _fileItemMedia2.default.autothumbRed, _fileItemMedia2.default.autothumbPink, _fileItemMedia2.default.autothumbIndigo, _fileItemMedia2.default.autothumbBlue, _fileItemMedia2.default.autothumbLightBlue, _fileItemMedia2.default.autothumbCyan, _fileItemMedia2.default.autothumbTeal, _fileItemMedia2.default.autothumbGreen, _fileItemMedia2.default.autothumbYellow, _fileItemMedia2.default.autothumbOrange]; + exports.default = FileItemMedia; +},450,[12,66,451],"LBRYApp/src/component/fileItemMedia/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var screenDimension = _reactNative.Dimensions.get('window'); + + var width = screenDimension.width - 48; + + var fileItemMediaStyle = _reactNative.StyleSheet.create({ + autothumb: { + width: width, + height: 180, + justifyContent: 'center' + }, + autothumbText: { + textAlign: 'center', + color: '#ffffff', + fontSize: 40 + }, + autothumbPurple: { + backgroundColor: '#9c27b0' + }, + autothumbRed: { + backgroundColor: '#e53935' + }, + autothumbPink: { + backgroundColor: '#e91e63' + }, + autothumbIndigo: { + backgroundColor: '#3f51b5' + }, + autothumbBlue: { + backgroundColor: '#2196f3' + }, + autothumbLightBlue: { + backgroundColor: '#039be5' + }, + autothumbCyan: { + backgroundColor: '#00acc1' + }, + autothumbTeal: { + backgroundColor: '#009688' + }, + autothumbGreen: { + backgroundColor: '#43a047' + }, + autothumbYellow: { + backgroundColor: '#ffeb3b' + }, + autothumbOrange: { + backgroundColor: '#ffa726' + }, + thumbnail: { + width: width, + height: 180, + shadowColor: 'transparent' + } + }); + + exports.default = fileItemMediaStyle; +},451,[66],"LBRYApp/src/styles/fileItemMedia.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _view = require(_dependencyMap[2], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state, props) { + return { + costInfo: (0, _lbryRedux.makeSelectCostInfoForUri)(props.uri)(state), + fetching: (0, _lbryRedux.makeSelectFetchingCostInfoForUri)(props.uri)(state), + claim: (0, _lbryRedux.makeSelectClaimForUri)(props.uri)(state) + }; + }; + + var perform = function perform(dispatch) { + return { + fetchCostInfo: function fetchCostInfo(uri) { + return dispatch((0, _lbryRedux.doFetchCostInfoForUri)(uri)); + } + }; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},452,[22,62,453],"LBRYApp/src/component/filePrice/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/component/filePrice/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _lbryRedux = require(_dependencyMap[3], "lbry-redux"); + + var CreditAmount = function (_React$PureComponent) { + babelHelpers.inherits(CreditAmount, _React$PureComponent); + + function CreditAmount() { + babelHelpers.classCallCheck(this, CreditAmount); + return babelHelpers.possibleConstructorReturn(this, (CreditAmount.__proto__ || Object.getPrototypeOf(CreditAmount)).apply(this, arguments)); + } + + babelHelpers.createClass(CreditAmount, [{ + key: "render", + value: function render() { + var minimumRenderableAmount = Math.pow(10, -1 * this.props.precision); + var _props = this.props, + amount = _props.amount, + precision = _props.precision, + showFullPrice = _props.showFullPrice, + style = _props.style; + var formattedAmount = void 0; + var fullPrice = (0, _lbryRedux.formatFullPrice)(amount, 2); + + if (showFullPrice) { + formattedAmount = fullPrice; + } else { + formattedAmount = amount > 0 && amount < minimumRenderableAmount ? "<" + minimumRenderableAmount : (0, _lbryRedux.formatCredits)(amount, precision); + } + + var amountText = void 0; + + if (this.props.showFree && parseFloat(this.props.amount) === 0) { + amountText = 'FREE'; + } else { + if (this.props.label) { + var label = typeof this.props.label === 'string' ? this.props.label : parseFloat(amount) == 1 ? 'credit' : 'credits'; + amountText = formattedAmount + " " + label; + } else { + amountText = formattedAmount; + } + + if (this.props.showPlus && amount > 0) { + amountText = "+" + amountText; + } + } + + return _react2.default.createElement( + _reactNative.Text, + { + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 71 + } + }, + amountText + ); + } + }]); + return CreditAmount; + }(_react2.default.PureComponent); + + CreditAmount.propTypes = { + amount: _propTypes2.default.number.isRequired, + precision: _propTypes2.default.number, + isEstimate: _propTypes2.default.bool, + label: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.bool]), + showFree: _propTypes2.default.bool, + showFullPrice: _propTypes2.default.bool, + showPlus: _propTypes2.default.bool, + look: _propTypes2.default.oneOf(['indicator', 'plain', 'fee']) + }; + CreditAmount.defaultProps = { + precision: 2, + label: true, + showFree: false, + look: 'indicator', + showFullPrice: false, + showPlus: false + }; + + var FilePrice = function (_React$PureComponent2) { + babelHelpers.inherits(FilePrice, _React$PureComponent2); + + function FilePrice() { + babelHelpers.classCallCheck(this, FilePrice); + return babelHelpers.possibleConstructorReturn(this, (FilePrice.__proto__ || Object.getPrototypeOf(FilePrice)).apply(this, arguments)); + } + + babelHelpers.createClass(FilePrice, [{ + key: "componentWillMount", + value: function componentWillMount() { + this.fetchCost(this.props); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this.fetchCost(nextProps); + } + }, { + key: "fetchCost", + value: function fetchCost(props) { + var costInfo = props.costInfo, + fetchCostInfo = props.fetchCostInfo, + uri = props.uri, + fetching = props.fetching, + claim = props.claim; + + if (costInfo === undefined && !fetching && claim) { + fetchCostInfo(uri); + } + } + }, { + key: "render", + value: function render() { + var _props2 = this.props, + costInfo = _props2.costInfo, + _props2$look = _props2.look, + look = _props2$look === undefined ? 'indicator' : _props2$look, + _props2$showFullPrice = _props2.showFullPrice, + showFullPrice = _props2$showFullPrice === undefined ? false : _props2$showFullPrice, + style = _props2.style, + textStyle = _props2.textStyle; + var isEstimate = costInfo ? !costInfo.includesData : null; + + if (!costInfo) { + return _react2.default.createElement( + _reactNative.View, + { + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 100 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: textStyle, + __source: { + fileName: _jsxFileName, + lineNumber: 101 + } + }, + "???" + ) + ); + } + + return _react2.default.createElement( + _reactNative.View, + { + style: style, + __source: { + fileName: _jsxFileName, + lineNumber: 107 + } + }, + _react2.default.createElement( + CreditAmount, + { + style: textStyle, + label: false, + amount: costInfo.cost, + isEstimate: isEstimate, + showFree: true, + showFullPrice: showFullPrice, + __source: { + fileName: _jsxFileName, + lineNumber: 108 + } + }, + "???" + ) + ); + } + }]); + return FilePrice; + }(_react2.default.PureComponent); + + exports.default = FilePrice; +},453,[12,24,66,62],"LBRYApp/src/component/filePrice/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var discoverStyle = _reactNative.StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center' + }, + scrollContainer: { + flex: 1 + }, + title: { + fontSize: 20, + textAlign: 'center', + margin: 10 + }, + categoryName: { + fontSize: 20, + marginLeft: 24, + marginTop: 16, + marginBottom: 16, + color: '#40b89a' + }, + fileItem: { + marginLeft: 24, + marginRight: 24, + marginBottom: 48 + }, + fileItemName: { + marginTop: 8, + fontSize: 16, + fontWeight: 'bold' + }, + channelName: { + fontSize: 14, + marginTop: 4, + color: '#c0c0c0', + fontWeight: 'bold' + }, + filePriceContainer: { + backgroundColor: '#61fcd8', + justifyContent: 'center', + position: 'absolute', + right: 16, + top: 16, + width: 56, + height: 24, + borderRadius: 4 + }, + filePriceText: { + fontSize: 12, + textAlign: 'center', + color: '#0c604b', + fontWeight: 'bold' + }, + drawerHamburger: { + marginLeft: 8 + } + }); + + exports.default = discoverStyle; +},454,[66],"LBRYApp/src/styles/discover.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getImageSource = exports.ToolbarAndroid = exports.TabBarItemIOS = exports.TabBarItem = exports.Button = undefined; + + var _createIconSet = require(_dependencyMap[0], "./lib/create-icon-set"); + + var _createIconSet2 = babelHelpers.interopRequireDefault(_createIconSet); + + var _Feather = require(_dependencyMap[1], "./glyphmaps/Feather.json"); + + var _Feather2 = babelHelpers.interopRequireDefault(_Feather); + + var iconSet = (0, _createIconSet2.default)(_Feather2.default, 'Feather', 'Feather.ttf'); + exports.default = iconSet; + var Button = exports.Button = iconSet.Button; + var TabBarItem = exports.TabBarItem = iconSet.TabBarItem; + var TabBarItemIOS = exports.TabBarItemIOS = iconSet.TabBarItemIOS; + var ToolbarAndroid = exports.ToolbarAndroid = iconSet.ToolbarAndroid; + var getImageSource = exports.getImageSource = iconSet.getImageSource; +},455,[456,608],"react-native-vector-icons/Feather.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-vector-icons/lib/create-icon-set.js"; + exports.default = createIconSet; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[1], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[2], "./react-native"); + + var _iconButton = require(_dependencyMap[3], "./icon-button"); + + var _iconButton2 = babelHelpers.interopRequireDefault(_iconButton); + + var _tabBarItemIos = require(_dependencyMap[4], "./tab-bar-item-ios"); + + var _tabBarItemIos2 = babelHelpers.interopRequireDefault(_tabBarItemIos); + + var _toolbarAndroid = require(_dependencyMap[5], "./toolbar-android"); + + var _toolbarAndroid2 = babelHelpers.interopRequireDefault(_toolbarAndroid); + + var NativeIconAPI = _reactNative.NativeModules.RNVectorIconsManager || _reactNative.NativeModules.RNVectorIconsModule; + var DEFAULT_ICON_SIZE = 12; + var DEFAULT_ICON_COLOR = 'black'; + + function createIconSet(glyphMap, fontFamily, fontFile) { + var fontReference = fontFamily; + + if (_reactNative.Platform.OS === 'android' && fontFile) { + fontReference = fontFile.replace(/\.(otf|ttf)$/, ''); + } + + if (_reactNative.Platform.OS === 'windows' && fontFile) { + fontReference = "Assets/" + fontFile + "#" + fontFamily; + } + + var IconNamePropType = _propTypes2.default.oneOf(Object.keys(glyphMap)); + + var Icon = function (_PureComponent) { + babelHelpers.inherits(Icon, _PureComponent); + + function Icon() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, Icon); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = Icon.__proto__ || Object.getPrototypeOf(Icon)).call.apply(_ref, [this].concat(args))), _this), _this.root = null, _this.handleRef = function (ref) { + _this.root = ref; + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(Icon, [{ + key: "setNativeProps", + value: function setNativeProps(nativeProps) { + if (this.root) { + this.root.setNativeProps(nativeProps); + } + } + }, { + key: "render", + value: function render() { + var _props = this.props, + name = _props.name, + size = _props.size, + color = _props.color, + style = _props.style, + props = babelHelpers.objectWithoutProperties(_props, ["name", "size", "color", "style"]); + var glyph = name ? glyphMap[name] || '?' : ''; + + if (typeof glyph === 'number') { + glyph = String.fromCharCode(glyph); + } + + var styleDefaults = { + fontSize: size, + color: color + }; + var styleOverrides = { + fontFamily: fontReference, + fontWeight: 'normal', + fontStyle: 'normal' + }; + props.style = [styleDefaults, style, styleOverrides]; + props.ref = this.handleRef; + return _react2.default.createElement( + _reactNative.Text, + babelHelpers.extends({}, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 82 + } + }), + glyph, + this.props.children + ); + } + }]); + return Icon; + }(_react.PureComponent); + + Icon.propTypes = { + name: IconNamePropType, + size: _propTypes2.default.number, + color: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + children: _propTypes2.default.node, + style: _propTypes2.default.any + }; + Icon.defaultProps = { + size: DEFAULT_ICON_SIZE, + allowFontScaling: false + }; + var imageSourceCache = {}; + + function ensureNativeModuleAvailable() { + if (!NativeIconAPI) { + if (_reactNative.Platform.OS === 'android') { + throw new Error('RNVectorIconsModule not available, did you properly integrate the module? Try running `react-native link react-native-vector-icons` and recompiling.'); + } + + throw new Error('RNVectorIconsManager not available, did you add the library to your project and link with libRNVectorIcons.a? Try running `react-native link react-native-vector-icons` and recompiling.'); + } + } + + function getImageSource(name) { + var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_ICON_SIZE; + var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_ICON_COLOR; + ensureNativeModuleAvailable(); + var glyph = glyphMap[name] || '?'; + + if (typeof glyph === 'number') { + glyph = String.fromCharCode(glyph); + } + + var processedColor = (0, _reactNative.processColor)(color); + var cacheKey = glyph + ":" + size + ":" + processedColor; + + var scale = _reactNative.PixelRatio.get(); + + return new Promise(function (resolve, reject) { + var cached = imageSourceCache[cacheKey]; + + if (typeof cached !== 'undefined') { + if (!cached || cached instanceof Error) { + reject(cached); + } else { + resolve({ + uri: cached, + scale: scale + }); + } + } else { + NativeIconAPI.getImageForFont(fontReference, glyph, size, processedColor, function (err, image) { + var error = typeof err === 'string' ? new Error(err) : err; + imageSourceCache[cacheKey] = image || error || false; + + if (!error && image) { + resolve({ + uri: image, + scale: scale + }); + } else { + reject(error); + } + }); + } + }); + } + + function loadFont() { + var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : fontFile; + + if (_reactNative.Platform.OS === 'ios') { + ensureNativeModuleAvailable(); + + if (!file) { + return Promise.reject(new Error('Unable to load font, because no file was specified. ')); + } + + return NativeIconAPI.loadFontWithFileName.apply(NativeIconAPI, babelHelpers.toConsumableArray(file.split('.'))); + } + + return Promise.resolve(); + } + + Icon.Button = (0, _iconButton2.default)(Icon); + Icon.TabBarItem = (0, _tabBarItemIos2.default)(IconNamePropType, getImageSource); + Icon.TabBarItemIOS = Icon.TabBarItem; + Icon.ToolbarAndroid = (0, _toolbarAndroid2.default)(IconNamePropType, getImageSource); + Icon.getImageSource = getImageSource; + Icon.loadFont = loadFont; + return Icon; + } +},456,[12,24,457,458,593,607],"react-native-vector-icons/lib/create-icon-set.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + Object.keys(_reactNative).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _reactNative[key]; + } + }); + }); +},457,[66],"react-native-vector-icons/lib/react-native.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-vector-icons/lib/icon-button.js"; + exports.default = createIconButtonComponent; + + var _isString = require(_dependencyMap[0], "lodash/isString"); + + var _isString2 = babelHelpers.interopRequireDefault(_isString); + + var _omit = require(_dependencyMap[1], "lodash/omit"); + + var _omit2 = babelHelpers.interopRequireDefault(_omit); + + var _pick = require(_dependencyMap[2], "lodash/pick"); + + var _pick2 = babelHelpers.interopRequireDefault(_pick); + + var _react = require(_dependencyMap[3], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[4], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[5], "./react-native"); + + var styles = _reactNative.StyleSheet.create({ + container: { + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'center', + padding: 8 + }, + touchable: { + overflow: 'hidden' + }, + icon: { + marginRight: 10 + }, + text: { + fontWeight: '600', + backgroundColor: 'transparent' + } + }); + + var IOS7_BLUE = '#007AFF'; + + function createIconButtonComponent(Icon) { + var _class, _temp; + + return _temp = _class = function (_PureComponent) { + babelHelpers.inherits(IconButton, _PureComponent); + + function IconButton() { + babelHelpers.classCallCheck(this, IconButton); + return babelHelpers.possibleConstructorReturn(this, (IconButton.__proto__ || Object.getPrototypeOf(IconButton)).apply(this, arguments)); + } + + babelHelpers.createClass(IconButton, [{ + key: "render", + value: function render() { + var _props = this.props, + style = _props.style, + iconStyle = _props.iconStyle, + children = _props.children, + restProps = babelHelpers.objectWithoutProperties(_props, ["style", "iconStyle", "children"]); + var iconProps = (0, _pick2.default)(restProps, Object.keys(_reactNative.Text.propTypes), 'style', 'name', 'size', 'color'); + var touchableProps = (0, _pick2.default)(restProps, Object.keys(_reactNative.TouchableHighlight.propTypes)); + var props = (0, _omit2.default)(restProps, Object.keys(iconProps), Object.keys(touchableProps), 'iconStyle', 'borderRadius', 'backgroundColor'); + iconProps.style = iconStyle ? [styles.icon, iconStyle] : styles.icon; + var colorStyle = (0, _pick2.default)(this.props, 'color'); + var blockStyle = (0, _pick2.default)(this.props, 'backgroundColor', 'borderRadius'); + return _react2.default.createElement( + _reactNative.TouchableHighlight, + babelHelpers.extends({ + style: [styles.touchable, blockStyle] + }, touchableProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 80 + } + }), + _react2.default.createElement( + _reactNative.View, + babelHelpers.extends({ + style: [styles.container, blockStyle, style] + }, props, { + __source: { + fileName: _jsxFileName, + lineNumber: 84 + } + }), + _react2.default.createElement(Icon, babelHelpers.extends({}, iconProps, { + __source: { + fileName: _jsxFileName, + lineNumber: 85 + } + })), + (0, _isString2.default)(children) ? _react2.default.createElement( + _reactNative.Text, + { + style: [styles.text, colorStyle], + __source: { + fileName: _jsxFileName, + lineNumber: 87 + } + }, + children + ) : children + ) + ); + } + }]); + return IconButton; + }(_react.PureComponent), _class.propTypes = { + backgroundColor: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + borderRadius: _propTypes2.default.number, + color: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + size: _propTypes2.default.number, + iconStyle: _propTypes2.default.any, + style: _propTypes2.default.any, + children: _propTypes2.default.node + }, _class.defaultProps = { + backgroundColor: IOS7_BLUE, + borderRadius: 5, + color: 'white', + size: 20 + }, _temp; + } +},458,[459,461,586,12,24,457],"react-native-vector-icons/lib/icon-button.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetTag = require(_dependencyMap[0], './_baseGetTag'), + isArray = require(_dependencyMap[1], './isArray'), + isObjectLike = require(_dependencyMap[2], './isObjectLike'); + + var stringTag = '[object String]'; + + function isString(value) { + return typeof value == 'string' || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag; + } + + module.exports = isString; +},459,[39,460,47],"lodash/isString.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isArray = Array.isArray; + module.exports = isArray; +},460,[],"lodash/isArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var arrayMap = require(_dependencyMap[0], './_arrayMap'), + baseClone = require(_dependencyMap[1], './_baseClone'), + baseUnset = require(_dependencyMap[2], './_baseUnset'), + castPath = require(_dependencyMap[3], './_castPath'), + copyObject = require(_dependencyMap[4], './_copyObject'), + customOmitClone = require(_dependencyMap[5], './_customOmitClone'), + flatRest = require(_dependencyMap[6], './_flatRest'), + getAllKeysIn = require(_dependencyMap[7], './_getAllKeysIn'); + + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + var omit = flatRest(function (object, paths) { + var result = {}; + + if (object == null) { + return result; + } + + var isDeep = false; + paths = arrayMap(paths, function (path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + + var length = paths.length; + + while (length--) { + baseUnset(result, paths[length]); + } + + return result; + }); + module.exports = omit; +},461,[462,463,560,561,507,574,575,540],"lodash/omit.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + + return result; + } + + module.exports = arrayMap; +},462,[],"lodash/_arrayMap.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Stack = require(_dependencyMap[0], './_Stack'), + arrayEach = require(_dependencyMap[1], './_arrayEach'), + assignValue = require(_dependencyMap[2], './_assignValue'), + baseAssign = require(_dependencyMap[3], './_baseAssign'), + baseAssignIn = require(_dependencyMap[4], './_baseAssignIn'), + cloneBuffer = require(_dependencyMap[5], './_cloneBuffer'), + copyArray = require(_dependencyMap[6], './_copyArray'), + copySymbols = require(_dependencyMap[7], './_copySymbols'), + copySymbolsIn = require(_dependencyMap[8], './_copySymbolsIn'), + getAllKeys = require(_dependencyMap[9], './_getAllKeys'), + getAllKeysIn = require(_dependencyMap[10], './_getAllKeysIn'), + getTag = require(_dependencyMap[11], './_getTag'), + initCloneArray = require(_dependencyMap[12], './_initCloneArray'), + initCloneByTag = require(_dependencyMap[13], './_initCloneByTag'), + initCloneObject = require(_dependencyMap[14], './_initCloneObject'), + isArray = require(_dependencyMap[15], './isArray'), + isBuffer = require(_dependencyMap[16], './isBuffer'), + isMap = require(_dependencyMap[17], './isMap'), + isObject = require(_dependencyMap[18], './isObject'), + isSet = require(_dependencyMap[19], './isSet'), + keys = require(_dependencyMap[20], './keys'); + + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; + + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + + if (result !== undefined) { + return result; + } + + if (!isObject(value)) { + return value; + } + + var isArr = isArray(value); + + if (isArr) { + result = initCloneArray(value); + + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + + if (tag == objectTag || tag == argsTag || isFunc && !object) { + result = isFlat || isFunc ? {} : initCloneObject(value); + + if (!isDeep) { + return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + + result = initCloneByTag(value, tag, isDeep); + } + } + + stack || (stack = new Stack()); + var stacked = stack.get(value); + + if (stacked) { + return stacked; + } + + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function (subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + return result; + } + + if (isMap(value)) { + value.forEach(function (subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys; + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function (subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + module.exports = baseClone; +},463,[464,502,503,506,525,529,530,531,535,538,540,541,546,547,554,460,513,556,482,558,508],"lodash/_baseClone.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var ListCache = require(_dependencyMap[0], './_ListCache'), + stackClear = require(_dependencyMap[1], './_stackClear'), + stackDelete = require(_dependencyMap[2], './_stackDelete'), + stackGet = require(_dependencyMap[3], './_stackGet'), + stackHas = require(_dependencyMap[4], './_stackHas'), + stackSet = require(_dependencyMap[5], './_stackSet'); + + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + module.exports = Stack; +},464,[465,473,474,475,476,477],"lodash/_Stack.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var listCacheClear = require(_dependencyMap[0], './_listCacheClear'), + listCacheDelete = require(_dependencyMap[1], './_listCacheDelete'), + listCacheGet = require(_dependencyMap[2], './_listCacheGet'), + listCacheHas = require(_dependencyMap[3], './_listCacheHas'), + listCacheSet = require(_dependencyMap[4], './_listCacheSet'); + + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + module.exports = ListCache; +},465,[466,467,470,471,472],"lodash/_ListCache.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + module.exports = listCacheClear; +},466,[],"lodash/_listCacheClear.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var assocIndexOf = require(_dependencyMap[0], './_assocIndexOf'); + + var arrayProto = Array.prototype; + var splice = arrayProto.splice; + + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + + var lastIndex = data.length - 1; + + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + + --this.size; + return true; + } + + module.exports = listCacheDelete; +},467,[468],"lodash/_listCacheDelete.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var eq = require(_dependencyMap[0], './eq'); + + function assocIndexOf(array, key) { + var length = array.length; + + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + + return -1; + } + + module.exports = assocIndexOf; +},468,[469],"lodash/_assocIndexOf.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function eq(value, other) { + return value === other || value !== value && other !== other; + } + + module.exports = eq; +},469,[],"lodash/eq.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var assocIndexOf = require(_dependencyMap[0], './_assocIndexOf'); + + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + return index < 0 ? undefined : data[index][1]; + } + + module.exports = listCacheGet; +},470,[468],"lodash/_listCacheGet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var assocIndexOf = require(_dependencyMap[0], './_assocIndexOf'); + + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + module.exports = listCacheHas; +},471,[468],"lodash/_listCacheHas.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var assocIndexOf = require(_dependencyMap[0], './_assocIndexOf'); + + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + + return this; + } + + module.exports = listCacheSet; +},472,[468],"lodash/_listCacheSet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var ListCache = require(_dependencyMap[0], './_ListCache'); + + function stackClear() { + this.__data__ = new ListCache(); + this.size = 0; + } + + module.exports = stackClear; +},473,[465],"lodash/_stackClear.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + this.size = data.size; + return result; + } + + module.exports = stackDelete; +},474,[],"lodash/_stackDelete.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function stackGet(key) { + return this.__data__.get(key); + } + + module.exports = stackGet; +},475,[],"lodash/_stackGet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function stackHas(key) { + return this.__data__.has(key); + } + + module.exports = stackHas; +},476,[],"lodash/_stackHas.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var ListCache = require(_dependencyMap[0], './_ListCache'), + Map = require(_dependencyMap[1], './_Map'), + MapCache = require(_dependencyMap[2], './_MapCache'); + + var LARGE_ARRAY_SIZE = 200; + + function stackSet(key, value) { + var data = this.__data__; + + if (data instanceof ListCache) { + var pairs = data.__data__; + + if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + + data = this.__data__ = new MapCache(pairs); + } + + data.set(key, value); + this.size = data.size; + return this; + } + + module.exports = stackSet; +},477,[465,478,487],"lodash/_stackSet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getNative = require(_dependencyMap[0], './_getNative'), + root = require(_dependencyMap[1], './_root'); + + var Map = getNative(root, 'Map'); + module.exports = Map; +},478,[479,41],"lodash/_Map.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseIsNative = require(_dependencyMap[0], './_baseIsNative'), + getValue = require(_dependencyMap[1], './_getValue'); + + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + module.exports = getNative; +},479,[480,486],"lodash/_getNative.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isFunction = require(_dependencyMap[0], './isFunction'), + isMasked = require(_dependencyMap[1], './_isMasked'), + isObject = require(_dependencyMap[2], './isObject'), + toSource = require(_dependencyMap[3], './_toSource'); + + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var funcProto = Function.prototype, + objectProto = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + module.exports = baseIsNative; +},480,[481,483,482,485],"lodash/_baseIsNative.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetTag = require(_dependencyMap[0], './_baseGetTag'), + isObject = require(_dependencyMap[1], './isObject'); + + var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + + function isFunction(value) { + if (!isObject(value)) { + return false; + } + + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + module.exports = isFunction; +},481,[39,482],"lodash/isFunction.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + module.exports = isObject; +},482,[],"lodash/isObject.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var coreJsData = require(_dependencyMap[0], './_coreJsData'); + + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + + module.exports = isMasked; +},483,[484],"lodash/_isMasked.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var root = require(_dependencyMap[0], './_root'); + + var coreJsData = root['__core-js_shared__']; + module.exports = coreJsData; +},484,[41],"lodash/_coreJsData.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var funcProto = Function.prototype; + var funcToString = funcProto.toString; + + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + + try { + return func + ''; + } catch (e) {} + } + + return ''; + } + + module.exports = toSource; +},485,[],"lodash/_toSource.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + module.exports = getValue; +},486,[],"lodash/_getValue.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var mapCacheClear = require(_dependencyMap[0], './_mapCacheClear'), + mapCacheDelete = require(_dependencyMap[1], './_mapCacheDelete'), + mapCacheGet = require(_dependencyMap[2], './_mapCacheGet'), + mapCacheHas = require(_dependencyMap[3], './_mapCacheHas'), + mapCacheSet = require(_dependencyMap[4], './_mapCacheSet'); + + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + module.exports = MapCache; +},487,[488,496,499,500,501],"lodash/_MapCache.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Hash = require(_dependencyMap[0], './_Hash'), + ListCache = require(_dependencyMap[1], './_ListCache'), + Map = require(_dependencyMap[2], './_Map'); + + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash(), + 'map': new (Map || ListCache)(), + 'string': new Hash() + }; + } + + module.exports = mapCacheClear; +},488,[489,465,478],"lodash/_mapCacheClear.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var hashClear = require(_dependencyMap[0], './_hashClear'), + hashDelete = require(_dependencyMap[1], './_hashDelete'), + hashGet = require(_dependencyMap[2], './_hashGet'), + hashHas = require(_dependencyMap[3], './_hashHas'), + hashSet = require(_dependencyMap[4], './_hashSet'); + + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + module.exports = Hash; +},489,[490,492,493,494,495],"lodash/_Hash.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var nativeCreate = require(_dependencyMap[0], './_nativeCreate'); + + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + module.exports = hashClear; +},490,[491],"lodash/_hashClear.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getNative = require(_dependencyMap[0], './_getNative'); + + var nativeCreate = getNative(Object, 'create'); + module.exports = nativeCreate; +},491,[479],"lodash/_nativeCreate.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + module.exports = hashDelete; +},492,[],"lodash/_hashDelete.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var nativeCreate = require(_dependencyMap[0], './_nativeCreate'); + + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function hashGet(key) { + var data = this.__data__; + + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + module.exports = hashGet; +},493,[491],"lodash/_hashGet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var nativeCreate = require(_dependencyMap[0], './_nativeCreate'); + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); + } + + module.exports = hashHas; +},494,[491],"lodash/_hashHas.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var nativeCreate = require(_dependencyMap[0], './_nativeCreate'); + + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; + return this; + } + + module.exports = hashSet; +},495,[491],"lodash/_hashSet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getMapData = require(_dependencyMap[0], './_getMapData'); + + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + module.exports = mapCacheDelete; +},496,[497],"lodash/_mapCacheDelete.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isKeyable = require(_dependencyMap[0], './_isKeyable'); + + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; + } + + module.exports = getMapData; +},497,[498],"lodash/_getMapData.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function isKeyable(value) { + var type = typeof value; + return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null; + } + + module.exports = isKeyable; +},498,[],"lodash/_isKeyable.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getMapData = require(_dependencyMap[0], './_getMapData'); + + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + module.exports = mapCacheGet; +},499,[497],"lodash/_mapCacheGet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getMapData = require(_dependencyMap[0], './_getMapData'); + + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + module.exports = mapCacheHas; +},500,[497],"lodash/_mapCacheHas.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getMapData = require(_dependencyMap[0], './_getMapData'); + + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + module.exports = mapCacheSet; +},501,[497],"lodash/_mapCacheSet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + + return array; + } + + module.exports = arrayEach; +},502,[],"lodash/_arrayEach.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseAssignValue = require(_dependencyMap[0], './_baseAssignValue'), + eq = require(_dependencyMap[1], './eq'); + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function assignValue(object, key, value) { + var objValue = object[key]; + + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) { + baseAssignValue(object, key, value); + } + } + + module.exports = assignValue; +},503,[504,469],"lodash/_assignValue.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var defineProperty = require(_dependencyMap[0], './_defineProperty'); + + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + module.exports = baseAssignValue; +},504,[505],"lodash/_baseAssignValue.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getNative = require(_dependencyMap[0], './_getNative'); + + var defineProperty = function () { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }(); + + module.exports = defineProperty; +},505,[479],"lodash/_defineProperty.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var copyObject = require(_dependencyMap[0], './_copyObject'), + keys = require(_dependencyMap[1], './keys'); + + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + module.exports = baseAssign; +},506,[507,508],"lodash/_baseAssign.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var assignValue = require(_dependencyMap[0], './_assignValue'), + baseAssignValue = require(_dependencyMap[1], './_baseAssignValue'); + + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + + return object; + } + + module.exports = copyObject; +},507,[503,504],"lodash/_copyObject.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var arrayLikeKeys = require(_dependencyMap[0], './_arrayLikeKeys'), + baseKeys = require(_dependencyMap[1], './_baseKeys'), + isArrayLike = require(_dependencyMap[2], './isArrayLike'); + + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + module.exports = keys; +},508,[509,521,524],"lodash/keys.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseTimes = require(_dependencyMap[0], './_baseTimes'), + isArguments = require(_dependencyMap[1], './isArguments'), + isArray = require(_dependencyMap[2], './isArray'), + isBuffer = require(_dependencyMap[3], './isBuffer'), + isIndex = require(_dependencyMap[4], './_isIndex'), + isTypedArray = require(_dependencyMap[5], './isTypedArray'); + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isBuff && (key == 'offset' || key == 'parent') || isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || isIndex(key, length)))) { + result.push(key); + } + } + + return result; + } + + module.exports = arrayLikeKeys; +},509,[510,511,460,513,515,516],"lodash/_arrayLikeKeys.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + + return result; + } + + module.exports = baseTimes; +},510,[],"lodash/_baseTimes.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseIsArguments = require(_dependencyMap[0], './_baseIsArguments'), + isObjectLike = require(_dependencyMap[1], './isObjectLike'); + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var isArguments = baseIsArguments(function () { + return arguments; + }()) ? baseIsArguments : function (value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); + }; + module.exports = isArguments; +},511,[512,47],"lodash/isArguments.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetTag = require(_dependencyMap[0], './_baseGetTag'), + isObjectLike = require(_dependencyMap[1], './isObjectLike'); + + var argsTag = '[object Arguments]'; + + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + module.exports = baseIsArguments; +},512,[39,47],"lodash/_baseIsArguments.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var root = require(_dependencyMap[0], './_root'), + stubFalse = require(_dependencyMap[1], './stubFalse'); + + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + var moduleExports = freeModule && freeModule.exports === freeExports; + var Buffer = moduleExports ? root.Buffer : undefined; + var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + var isBuffer = nativeIsBuffer || stubFalse; + module.exports = isBuffer; +},513,[41,514],"lodash/isBuffer.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function stubFalse() { + return false; + } + + module.exports = stubFalse; +},514,[],"lodash/stubFalse.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var MAX_SAFE_INTEGER = 9007199254740991; + var reIsUint = /^(?:0|[1-9]\d*)$/; + + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length; + } + + module.exports = isIndex; +},515,[],"lodash/_isIndex.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseIsTypedArray = require(_dependencyMap[0], './_baseIsTypedArray'), + baseUnary = require(_dependencyMap[1], './_baseUnary'), + nodeUtil = require(_dependencyMap[2], './_nodeUtil'); + + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + module.exports = isTypedArray; +},516,[517,519,520],"lodash/isTypedArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetTag = require(_dependencyMap[0], './_baseGetTag'), + isLength = require(_dependencyMap[1], './isLength'), + isObjectLike = require(_dependencyMap[2], './isObjectLike'); + + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + module.exports = baseIsTypedArray; +},517,[39,518,47],"lodash/_baseIsTypedArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var MAX_SAFE_INTEGER = 9007199254740991; + + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + module.exports = isLength; +},518,[],"lodash/isLength.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function baseUnary(func) { + return function (value) { + return func(value); + }; + } + + module.exports = baseUnary; +},519,[],"lodash/_baseUnary.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var freeGlobal = require(_dependencyMap[0], './_freeGlobal'); + + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + var moduleExports = freeModule && freeModule.exports === freeExports; + var freeProcess = moduleExports && freeGlobal.process; + + var nodeUtil = function () { + try { + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }(); + + module.exports = nodeUtil; +},520,[42],"lodash/_nodeUtil.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isPrototype = require(_dependencyMap[0], './_isPrototype'), + nativeKeys = require(_dependencyMap[1], './_nativeKeys'); + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + + var result = []; + + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + + return result; + } + + module.exports = baseKeys; +},521,[522,523],"lodash/_baseKeys.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var objectProto = Object.prototype; + + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = typeof Ctor == 'function' && Ctor.prototype || objectProto; + return value === proto; + } + + module.exports = isPrototype; +},522,[],"lodash/_isPrototype.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var overArg = require(_dependencyMap[0], './_overArg'); + + var nativeKeys = overArg(Object.keys, Object); + module.exports = nativeKeys; +},523,[46],"lodash/_nativeKeys.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isFunction = require(_dependencyMap[0], './isFunction'), + isLength = require(_dependencyMap[1], './isLength'); + + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + module.exports = isArrayLike; +},524,[481,518],"lodash/isArrayLike.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var copyObject = require(_dependencyMap[0], './_copyObject'), + keysIn = require(_dependencyMap[1], './keysIn'); + + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + module.exports = baseAssignIn; +},525,[507,526],"lodash/_baseAssignIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var arrayLikeKeys = require(_dependencyMap[0], './_arrayLikeKeys'), + baseKeysIn = require(_dependencyMap[1], './_baseKeysIn'), + isArrayLike = require(_dependencyMap[2], './isArrayLike'); + + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + module.exports = keysIn; +},526,[509,527,524],"lodash/keysIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isObject = require(_dependencyMap[0], './isObject'), + isPrototype = require(_dependencyMap[1], './_isPrototype'), + nativeKeysIn = require(_dependencyMap[2], './_nativeKeysIn'); + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + + return result; + } + + module.exports = baseKeysIn; +},527,[482,522,528],"lodash/_baseKeysIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function nativeKeysIn(object) { + var result = []; + + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + + return result; + } + + module.exports = nativeKeysIn; +},528,[],"lodash/_nativeKeysIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var root = require(_dependencyMap[0], './_root'); + + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + var moduleExports = freeModule && freeModule.exports === freeExports; + var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + buffer.copy(result); + return result; + } + + module.exports = cloneBuffer; +},529,[41],"lodash/_cloneBuffer.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function copyArray(source, array) { + var index = -1, + length = source.length; + array || (array = Array(length)); + + while (++index < length) { + array[index] = source[index]; + } + + return array; + } + + module.exports = copyArray; +},530,[],"lodash/_copyArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var copyObject = require(_dependencyMap[0], './_copyObject'), + getSymbols = require(_dependencyMap[1], './_getSymbols'); + + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + module.exports = copySymbols; +},531,[507,532],"lodash/_copySymbols.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var arrayFilter = require(_dependencyMap[0], './_arrayFilter'), + stubArray = require(_dependencyMap[1], './stubArray'); + + var objectProto = Object.prototype; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var nativeGetSymbols = Object.getOwnPropertySymbols; + var getSymbols = !nativeGetSymbols ? stubArray : function (object) { + if (object == null) { + return []; + } + + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function (symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + module.exports = getSymbols; +},532,[533,534],"lodash/_getSymbols.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + + return result; + } + + module.exports = arrayFilter; +},533,[],"lodash/_arrayFilter.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function stubArray() { + return []; + } + + module.exports = stubArray; +},534,[],"lodash/stubArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var copyObject = require(_dependencyMap[0], './_copyObject'), + getSymbolsIn = require(_dependencyMap[1], './_getSymbolsIn'); + + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + module.exports = copySymbolsIn; +},535,[507,536],"lodash/_copySymbolsIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var arrayPush = require(_dependencyMap[0], './_arrayPush'), + getPrototype = require(_dependencyMap[1], './_getPrototype'), + getSymbols = require(_dependencyMap[2], './_getSymbols'), + stubArray = require(_dependencyMap[3], './stubArray'); + + var nativeGetSymbols = Object.getOwnPropertySymbols; + var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) { + var result = []; + + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + + return result; + }; + module.exports = getSymbolsIn; +},536,[537,45,532,534],"lodash/_getSymbolsIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + + return array; + } + + module.exports = arrayPush; +},537,[],"lodash/_arrayPush.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetAllKeys = require(_dependencyMap[0], './_baseGetAllKeys'), + getSymbols = require(_dependencyMap[1], './_getSymbols'), + keys = require(_dependencyMap[2], './keys'); + + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + module.exports = getAllKeys; +},538,[539,532,508],"lodash/_getAllKeys.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var arrayPush = require(_dependencyMap[0], './_arrayPush'), + isArray = require(_dependencyMap[1], './isArray'); + + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + module.exports = baseGetAllKeys; +},539,[537,460],"lodash/_baseGetAllKeys.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetAllKeys = require(_dependencyMap[0], './_baseGetAllKeys'), + getSymbolsIn = require(_dependencyMap[1], './_getSymbolsIn'), + keysIn = require(_dependencyMap[2], './keysIn'); + + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + module.exports = getAllKeysIn; +},540,[539,536,526],"lodash/_getAllKeysIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var DataView = require(_dependencyMap[0], './_DataView'), + Map = require(_dependencyMap[1], './_Map'), + Promise = require(_dependencyMap[2], './_Promise'), + Set = require(_dependencyMap[3], './_Set'), + WeakMap = require(_dependencyMap[4], './_WeakMap'), + baseGetTag = require(_dependencyMap[5], './_baseGetTag'), + toSource = require(_dependencyMap[6], './_toSource'); + + var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + var dataViewTag = '[object DataView]'; + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + var getTag = baseGetTag; + + if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) { + getTag = function getTag(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag; + + case mapCtorString: + return mapTag; + + case promiseCtorString: + return promiseTag; + + case setCtorString: + return setTag; + + case weakMapCtorString: + return weakMapTag; + } + } + + return result; + }; + } + + module.exports = getTag; +},541,[542,478,543,544,545,39,485],"lodash/_getTag.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getNative = require(_dependencyMap[0], './_getNative'), + root = require(_dependencyMap[1], './_root'); + + var DataView = getNative(root, 'DataView'); + module.exports = DataView; +},542,[479,41],"lodash/_DataView.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getNative = require(_dependencyMap[0], './_getNative'), + root = require(_dependencyMap[1], './_root'); + + var Promise = getNative(root, 'Promise'); + module.exports = Promise; +},543,[479,41],"lodash/_Promise.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getNative = require(_dependencyMap[0], './_getNative'), + root = require(_dependencyMap[1], './_root'); + + var Set = getNative(root, 'Set'); + module.exports = Set; +},544,[479,41],"lodash/_Set.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getNative = require(_dependencyMap[0], './_getNative'), + root = require(_dependencyMap[1], './_root'); + + var WeakMap = getNative(root, 'WeakMap'); + module.exports = WeakMap; +},545,[479,41],"lodash/_WeakMap.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + + return result; + } + + module.exports = initCloneArray; +},546,[],"lodash/_initCloneArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var cloneArrayBuffer = require(_dependencyMap[0], './_cloneArrayBuffer'), + cloneDataView = require(_dependencyMap[1], './_cloneDataView'), + cloneRegExp = require(_dependencyMap[2], './_cloneRegExp'), + cloneSymbol = require(_dependencyMap[3], './_cloneSymbol'), + cloneTypedArray = require(_dependencyMap[4], './_cloneTypedArray'); + + var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: + case float64Tag: + case int8Tag: + case int16Tag: + case int32Tag: + case uint8Tag: + case uint8ClampedTag: + case uint16Tag: + case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor(); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor(); + + case symbolTag: + return cloneSymbol(object); + } + } + + module.exports = initCloneByTag; +},547,[548,550,551,552,553],"lodash/_initCloneByTag.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Uint8Array = require(_dependencyMap[0], './_Uint8Array'); + + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + module.exports = cloneArrayBuffer; +},548,[549],"lodash/_cloneArrayBuffer.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var root = require(_dependencyMap[0], './_root'); + + var Uint8Array = root.Uint8Array; + module.exports = Uint8Array; +},549,[41],"lodash/_Uint8Array.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var cloneArrayBuffer = require(_dependencyMap[0], './_cloneArrayBuffer'); + + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + module.exports = cloneDataView; +},550,[548],"lodash/_cloneDataView.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var reFlags = /\w*$/; + + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + module.exports = cloneRegExp; +},551,[],"lodash/_cloneRegExp.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Symbol = require(_dependencyMap[0], './_Symbol'); + + var symbolProto = Symbol ? typeof Symbol === "function" ? Symbol.prototype : "@@prototype" : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + module.exports = cloneSymbol; +},552,[40],"lodash/_cloneSymbol.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var cloneArrayBuffer = require(_dependencyMap[0], './_cloneArrayBuffer'); + + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + module.exports = cloneTypedArray; +},553,[548],"lodash/_cloneTypedArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseCreate = require(_dependencyMap[0], './_baseCreate'), + getPrototype = require(_dependencyMap[1], './_getPrototype'), + isPrototype = require(_dependencyMap[2], './_isPrototype'); + + function initCloneObject(object) { + return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; + } + + module.exports = initCloneObject; +},554,[555,45,522],"lodash/_initCloneObject.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isObject = require(_dependencyMap[0], './isObject'); + + var objectCreate = Object.create; + + var baseCreate = function () { + function object() {} + + return function (proto) { + if (!isObject(proto)) { + return {}; + } + + if (objectCreate) { + return objectCreate(proto); + } + + object.prototype = proto; + var result = new object(); + object.prototype = undefined; + return result; + }; + }(); + + module.exports = baseCreate; +},555,[482],"lodash/_baseCreate.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseIsMap = require(_dependencyMap[0], './_baseIsMap'), + baseUnary = require(_dependencyMap[1], './_baseUnary'), + nodeUtil = require(_dependencyMap[2], './_nodeUtil'); + + var nodeIsMap = nodeUtil && nodeUtil.isMap; + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + module.exports = isMap; +},556,[557,519,520],"lodash/isMap.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getTag = require(_dependencyMap[0], './_getTag'), + isObjectLike = require(_dependencyMap[1], './isObjectLike'); + + var mapTag = '[object Map]'; + + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + module.exports = baseIsMap; +},557,[541,47],"lodash/_baseIsMap.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseIsSet = require(_dependencyMap[0], './_baseIsSet'), + baseUnary = require(_dependencyMap[1], './_baseUnary'), + nodeUtil = require(_dependencyMap[2], './_nodeUtil'); + + var nodeIsSet = nodeUtil && nodeUtil.isSet; + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + module.exports = isSet; +},558,[559,519,520],"lodash/isSet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getTag = require(_dependencyMap[0], './_getTag'), + isObjectLike = require(_dependencyMap[1], './isObjectLike'); + + var setTag = '[object Set]'; + + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + module.exports = baseIsSet; +},559,[541,47],"lodash/_baseIsSet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var castPath = require(_dependencyMap[0], './_castPath'), + last = require(_dependencyMap[1], './last'), + parent = require(_dependencyMap[2], './_parent'), + toKey = require(_dependencyMap[3], './_toKey'); + + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + module.exports = baseUnset; +},560,[561,569,570,572],"lodash/_baseUnset.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isArray = require(_dependencyMap[0], './isArray'), + isKey = require(_dependencyMap[1], './_isKey'), + stringToPath = require(_dependencyMap[2], './_stringToPath'), + toString = require(_dependencyMap[3], './toString'); + + function castPath(value, object) { + if (isArray(value)) { + return value; + } + + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + module.exports = castPath; +},561,[460,562,564,567],"lodash/_castPath.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isArray = require(_dependencyMap[0], './isArray'), + isSymbol = require(_dependencyMap[1], './isSymbol'); + + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + + function isKey(value, object) { + if (isArray(value)) { + return false; + } + + var type = typeof value; + + if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { + return true; + } + + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); + } + + module.exports = isKey; +},562,[460,563],"lodash/_isKey.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGetTag = require(_dependencyMap[0], './_baseGetTag'), + isObjectLike = require(_dependencyMap[1], './isObjectLike'); + + var symbolTag = '[object Symbol]'; + + function isSymbol(value) { + return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag; + } + + module.exports = isSymbol; +},563,[39,47],"lodash/isSymbol.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var memoizeCapped = require(_dependencyMap[0], './_memoizeCapped'); + + var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reEscapeChar = /\\(\\)?/g; + var stringToPath = memoizeCapped(function (string) { + var result = []; + + if (string.charCodeAt(0) === 46) { + result.push(''); + } + + string.replace(rePropName, function (match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match); + }); + return result; + }); + module.exports = stringToPath; +},564,[565],"lodash/_stringToPath.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var memoize = require(_dependencyMap[0], './memoize'); + + var MAX_MEMOIZE_SIZE = 500; + + function memoizeCapped(func) { + var result = memoize(func, function (key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + + return key; + }); + var cache = result.cache; + return result; + } + + module.exports = memoizeCapped; +},565,[566],"lodash/_memoizeCapped.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var MapCache = require(_dependencyMap[0], './_MapCache'); + + var FUNC_ERROR_TEXT = 'Expected a function'; + + function memoize(func, resolver) { + if (typeof func != 'function' || resolver != null && typeof resolver != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + + var memoized = function memoized() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + + memoize.Cache = MapCache; + module.exports = memoize; +},566,[487],"lodash/memoize.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseToString = require(_dependencyMap[0], './_baseToString'); + + function toString(value) { + return value == null ? '' : baseToString(value); + } + + module.exports = toString; +},567,[568],"lodash/toString.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Symbol = require(_dependencyMap[0], './_Symbol'), + arrayMap = require(_dependencyMap[1], './_arrayMap'), + isArray = require(_dependencyMap[2], './isArray'), + isSymbol = require(_dependencyMap[3], './isSymbol'); + + var INFINITY = 1 / 0; + var symbolProto = Symbol ? typeof Symbol === "function" ? Symbol.prototype : "@@prototype" : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + + if (isArray(value)) { + return arrayMap(value, baseToString) + ''; + } + + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + module.exports = baseToString; +},568,[40,462,460,563],"lodash/_baseToString.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + module.exports = last; +},569,[],"lodash/last.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGet = require(_dependencyMap[0], './_baseGet'), + baseSlice = require(_dependencyMap[1], './_baseSlice'); + + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + module.exports = parent; +},570,[571,573],"lodash/_parent.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var castPath = require(_dependencyMap[0], './_castPath'), + toKey = require(_dependencyMap[1], './_toKey'); + + function baseGet(object, path) { + path = castPath(path, object); + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + + return index && index == length ? object : undefined; + } + + module.exports = baseGet; +},571,[561,572],"lodash/_baseGet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isSymbol = require(_dependencyMap[0], './isSymbol'); + + var INFINITY = 1 / 0; + + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + module.exports = toKey; +},572,[563],"lodash/_toKey.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : length + start; + } + + end = end > length ? length : end; + + if (end < 0) { + end += length; + } + + length = start > end ? 0 : end - start >>> 0; + start >>>= 0; + var result = Array(length); + + while (++index < length) { + result[index] = array[index + start]; + } + + return result; + } + + module.exports = baseSlice; +},573,[],"lodash/_baseSlice.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var isPlainObject = require(_dependencyMap[0], './isPlainObject'); + + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; + } + + module.exports = customOmitClone; +},574,[38],"lodash/_customOmitClone.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var flatten = require(_dependencyMap[0], './flatten'), + overRest = require(_dependencyMap[1], './_overRest'), + setToString = require(_dependencyMap[2], './_setToString'); + + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + module.exports = flatRest; +},575,[576,579,581],"lodash/_flatRest.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseFlatten = require(_dependencyMap[0], './_baseFlatten'); + + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + module.exports = flatten; +},576,[577],"lodash/flatten.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var arrayPush = require(_dependencyMap[0], './_arrayPush'), + isFlattenable = require(_dependencyMap[1], './_isFlattenable'); + + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + + if (depth > 0 && predicate(value)) { + if (depth > 1) { + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + + return result; + } + + module.exports = baseFlatten; +},577,[537,578],"lodash/_baseFlatten.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Symbol = require(_dependencyMap[0], './_Symbol'), + isArguments = require(_dependencyMap[1], './isArguments'), + isArray = require(_dependencyMap[2], './isArray'); + + var spreadableSymbol = Symbol ? typeof Symbol === "function" ? Symbol.isConcatSpreadable : "@@isConcatSpreadable" : undefined; + + function isFlattenable(value) { + return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + module.exports = isFlattenable; +},578,[40,511,460],"lodash/_isFlattenable.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var apply = require(_dependencyMap[0], './_apply'); + + var nativeMax = Math.max; + + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? func.length - 1 : start, 0); + return function () { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + + index = -1; + var otherArgs = Array(start + 1); + + while (++index < start) { + otherArgs[index] = args[index]; + } + + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + module.exports = overRest; +},579,[580],"lodash/_overRest.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function apply(func, thisArg, args) { + switch (args.length) { + case 0: + return func.call(thisArg); + + case 1: + return func.call(thisArg, args[0]); + + case 2: + return func.call(thisArg, args[0], args[1]); + + case 3: + return func.call(thisArg, args[0], args[1], args[2]); + } + + return func.apply(thisArg, args); + } + + module.exports = apply; +},580,[],"lodash/_apply.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseSetToString = require(_dependencyMap[0], './_baseSetToString'), + shortOut = require(_dependencyMap[1], './_shortOut'); + + var setToString = shortOut(baseSetToString); + module.exports = setToString; +},581,[582,585],"lodash/_setToString.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var constant = require(_dependencyMap[0], './constant'), + defineProperty = require(_dependencyMap[1], './_defineProperty'), + identity = require(_dependencyMap[2], './identity'); + + var baseSetToString = !defineProperty ? identity : function (func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + module.exports = baseSetToString; +},582,[583,505,584],"lodash/_baseSetToString.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function constant(value) { + return function () { + return value; + }; + } + + module.exports = constant; +},583,[],"lodash/constant.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function identity(value) { + return value; + } + + module.exports = identity; +},584,[],"lodash/identity.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var HOT_COUNT = 800, + HOT_SPAN = 16; + var nativeNow = Date.now; + + function shortOut(func) { + var count = 0, + lastCalled = 0; + return function () { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + lastCalled = stamp; + + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + + return func.apply(undefined, arguments); + }; + } + + module.exports = shortOut; +},585,[],"lodash/_shortOut.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var basePick = require(_dependencyMap[0], './_basePick'), + flatRest = require(_dependencyMap[1], './_flatRest'); + + var pick = flatRest(function (object, paths) { + return object == null ? {} : basePick(object, paths); + }); + module.exports = pick; +},586,[587,575],"lodash/pick.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var basePickBy = require(_dependencyMap[0], './_basePickBy'), + hasIn = require(_dependencyMap[1], './hasIn'); + + function basePick(object, paths) { + return basePickBy(object, paths, function (value, path) { + return hasIn(object, path); + }); + } + + module.exports = basePick; +},587,[588,590],"lodash/_basePick.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseGet = require(_dependencyMap[0], './_baseGet'), + baseSet = require(_dependencyMap[1], './_baseSet'), + castPath = require(_dependencyMap[2], './_castPath'); + + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + + return result; + } + + module.exports = basePickBy; +},588,[571,589,561],"lodash/_basePickBy.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var assignValue = require(_dependencyMap[0], './_assignValue'), + castPath = require(_dependencyMap[1], './_castPath'), + isIndex = require(_dependencyMap[2], './_isIndex'), + isObject = require(_dependencyMap[3], './isObject'), + toKey = require(_dependencyMap[4], './_toKey'); + + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + + path = castPath(path, object); + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + + if (newValue === undefined) { + newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; + } + } + + assignValue(nested, key, newValue); + nested = nested[key]; + } + + return object; + } + + module.exports = baseSet; +},589,[503,561,515,482,572],"lodash/_baseSet.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseHasIn = require(_dependencyMap[0], './_baseHasIn'), + hasPath = require(_dependencyMap[1], './_hasPath'); + + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + module.exports = hasIn; +},590,[591,592],"lodash/hasIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + module.exports = baseHasIn; +},591,[],"lodash/_baseHasIn.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var castPath = require(_dependencyMap[0], './_castPath'), + isArguments = require(_dependencyMap[1], './isArguments'), + isArray = require(_dependencyMap[2], './isArray'), + isIndex = require(_dependencyMap[3], './_isIndex'), + isLength = require(_dependencyMap[4], './isLength'), + toKey = require(_dependencyMap[5], './_toKey'); + + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + + if (!(result = object != null && hasFunc(object, key))) { + break; + } + + object = object[key]; + } + + if (result || ++index != length) { + return result; + } + + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object)); + } + + module.exports = hasPath; +},592,[561,511,460,515,518,572],"lodash/_hasPath.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-vector-icons/lib/tab-bar-item-ios.js"; + exports.default = createTabBarItemIOSComponent; + + var _isEqual = require(_dependencyMap[0], "lodash/isEqual"); + + var _isEqual2 = babelHelpers.interopRequireDefault(_isEqual); + + var _pick = require(_dependencyMap[1], "lodash/pick"); + + var _pick2 = babelHelpers.interopRequireDefault(_pick); + + var _react = require(_dependencyMap[2], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[3], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[4], "./react-native"); + + function createTabBarItemIOSComponent(IconNamePropType, getImageSource) { + var _class, _temp; + + return _temp = _class = function (_PureComponent) { + babelHelpers.inherits(TabBarItemIOS, _PureComponent); + + function TabBarItemIOS() { + babelHelpers.classCallCheck(this, TabBarItemIOS); + return babelHelpers.possibleConstructorReturn(this, (TabBarItemIOS.__proto__ || Object.getPrototypeOf(TabBarItemIOS)).apply(this, arguments)); + } + + babelHelpers.createClass(TabBarItemIOS, [{ + key: "componentWillMount", + value: function componentWillMount() { + this.updateIconSources(this.props); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + var keys = Object.keys(TabBarItemIOS.propTypes); + + if (!(0, _isEqual2.default)((0, _pick2.default)(nextProps, keys), (0, _pick2.default)(this.props, keys))) { + this.updateIconSources(nextProps); + } + } + }, { + key: "updateIconSources", + value: function updateIconSources(props) { + var _this2 = this; + + if (props.iconName) { + getImageSource(props.iconName, props.iconSize, props.iconColor).then(function (icon) { + return _this2.setState({ + icon: icon + }); + }); + } + + if (props.selectedIconName || props.selectedIconColor) { + var selectedIconName = props.selectedIconName || props.iconName; + var selectedIconColor = props.selectedIconColor || props.iconColor; + getImageSource(selectedIconName, props.iconSize, selectedIconColor).then(function (selectedIcon) { + return _this2.setState({ + selectedIcon: selectedIcon + }); + }); + } + } + }, { + key: "render", + value: function render() { + return _react2.default.createElement(_reactNative.TabBarIOS.Item, babelHelpers.extends({}, this.props, this.state, { + __source: { + fileName: _jsxFileName, + lineNumber: 59 + } + })); + } + }]); + return TabBarItemIOS; + }(_react.PureComponent), _class.propTypes = { + iconName: IconNamePropType.isRequired, + selectedIconName: IconNamePropType, + iconSize: _propTypes2.default.number, + iconColor: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + selectedIconColor: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]) + }, _class.defaultProps = { + iconSize: 30 + }, _temp; + } +},593,[594,586,12,24,457],"react-native-vector-icons/lib/tab-bar-item-ios.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseIsEqual = require(_dependencyMap[0], './_baseIsEqual'); + + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + module.exports = isEqual; +},594,[595],"lodash/isEqual.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var baseIsEqualDeep = require(_dependencyMap[0], './_baseIsEqualDeep'), + isObjectLike = require(_dependencyMap[1], './isObjectLike'); + + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + + if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { + return value !== value && other !== other; + } + + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + module.exports = baseIsEqual; +},595,[596,47],"lodash/_baseIsEqual.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Stack = require(_dependencyMap[0], './_Stack'), + equalArrays = require(_dependencyMap[1], './_equalArrays'), + equalByTag = require(_dependencyMap[2], './_equalByTag'), + equalObjects = require(_dependencyMap[3], './_equalObjects'), + getTag = require(_dependencyMap[4], './_getTag'), + isArray = require(_dependencyMap[5], './isArray'), + isBuffer = require(_dependencyMap[6], './isBuffer'), + isTypedArray = require(_dependencyMap[7], './isTypedArray'); + + var COMPARE_PARTIAL_FLAG = 1; + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + + objIsArr = true; + objIsObj = false; + } + + if (isSameTag && !objIsObj) { + stack || (stack = new Stack()); + return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + stack || (stack = new Stack()); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + + if (!isSameTag) { + return false; + } + + stack || (stack = new Stack()); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + module.exports = baseIsEqualDeep; +},596,[464,597,603,606,541,460,513,516],"lodash/_baseIsEqualDeep.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var SetCache = require(_dependencyMap[0], './_SetCache'), + arraySome = require(_dependencyMap[1], './_arraySome'), + cacheHas = require(_dependencyMap[2], './_cacheHas'); + + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + + var stacked = stack.get(array); + + if (stacked && stack.get(other)) { + return stacked == other; + } + + var index = -1, + result = true, + seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined; + stack.set(array, other); + stack.set(other, array); + + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); + } + + if (compared !== undefined) { + if (compared) { + continue; + } + + result = false; + break; + } + + if (seen) { + if (!arraySome(other, function (othValue, othIndex) { + if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + result = false; + break; + } + } + + stack['delete'](array); + stack['delete'](other); + return result; + } + + module.exports = equalArrays; +},597,[598,601,602],"lodash/_equalArrays.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var MapCache = require(_dependencyMap[0], './_MapCache'), + setCacheAdd = require(_dependencyMap[1], './_setCacheAdd'), + setCacheHas = require(_dependencyMap[2], './_setCacheHas'); + + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + this.__data__ = new MapCache(); + + while (++index < length) { + this.add(values[index]); + } + } + + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + module.exports = SetCache; +},598,[487,599,600],"lodash/_SetCache.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + + return this; + } + + module.exports = setCacheAdd; +},599,[],"lodash/_setCacheAdd.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function setCacheHas(value) { + return this.__data__.has(value); + } + + module.exports = setCacheHas; +},600,[],"lodash/_setCacheHas.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + + return false; + } + + module.exports = arraySome; +},601,[],"lodash/_arraySome.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function cacheHas(cache, key) { + return cache.has(key); + } + + module.exports = cacheHas; +},602,[],"lodash/_cacheHas.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var Symbol = require(_dependencyMap[0], './_Symbol'), + Uint8Array = require(_dependencyMap[1], './_Uint8Array'), + eq = require(_dependencyMap[2], './eq'), + equalArrays = require(_dependencyMap[3], './_equalArrays'), + mapToArray = require(_dependencyMap[4], './_mapToArray'), + setToArray = require(_dependencyMap[5], './_setToArray'); + + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + var symbolProto = Symbol ? typeof Symbol === "function" ? Symbol.prototype : "@@prototype" : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { + return false; + } + + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + + return true; + + case boolTag: + case dateTag: + case numberTag: + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + return object == other + ''; + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + + var stacked = stack.get(object); + + if (stacked) { + return stacked == other; + } + + bitmask |= COMPARE_UNORDERED_FLAG; + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + + } + + return false; + } + + module.exports = equalByTag; +},603,[40,549,469,597,604,605],"lodash/_equalByTag.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function mapToArray(map) { + var index = -1, + result = Array(map.size); + map.forEach(function (value, key) { + result[++index] = [key, value]; + }); + return result; + } + + module.exports = mapToArray; +},604,[],"lodash/_mapToArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + function setToArray(set) { + var index = -1, + result = Array(set.size); + set.forEach(function (value) { + result[++index] = value; + }); + return result; + } + + module.exports = setToArray; +},605,[],"lodash/_setToArray.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var getAllKeys = require(_dependencyMap[0], './_getAllKeys'); + + var COMPARE_PARTIAL_FLAG = 1; + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + + var index = objLength; + + while (index--) { + var key = objProps[index]; + + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + + var stacked = stack.get(object); + + if (stacked && stack.get(other)) { + return stacked == other; + } + + var result = true; + stack.set(object, other); + stack.set(other, object); + var skipCtor = isPartial; + + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); + } + + if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { + result = false; + break; + } + + skipCtor || (skipCtor = key == 'constructor'); + } + + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + + stack['delete'](object); + stack['delete'](other); + return result; + } + + module.exports = equalObjects; +},606,[538],"lodash/_equalObjects.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/node_modules/react-native-vector-icons/lib/toolbar-android.js"; + exports.default = createToolbarAndroidComponent; + + var _isEqual = require(_dependencyMap[0], "lodash/isEqual"); + + var _isEqual2 = babelHelpers.interopRequireDefault(_isEqual); + + var _pick = require(_dependencyMap[1], "lodash/pick"); + + var _pick2 = babelHelpers.interopRequireDefault(_pick); + + var _react = require(_dependencyMap[2], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _propTypes = require(_dependencyMap[3], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _reactNative = require(_dependencyMap[4], "./react-native"); + + function createToolbarAndroidComponent(IconNamePropType, getImageSource) { + var _class, _temp; + + return _temp = _class = function (_PureComponent) { + babelHelpers.inherits(IconToolbarAndroid, _PureComponent); + + function IconToolbarAndroid() { + babelHelpers.classCallCheck(this, IconToolbarAndroid); + return babelHelpers.possibleConstructorReturn(this, (IconToolbarAndroid.__proto__ || Object.getPrototypeOf(IconToolbarAndroid)).apply(this, arguments)); + } + + babelHelpers.createClass(IconToolbarAndroid, [{ + key: "componentWillMount", + value: function componentWillMount() { + this.updateIconSources(this.props); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + var _this2 = this; + + var keys = Object.keys(IconToolbarAndroid.propTypes); + + if (!(0, _isEqual2.default)((0, _pick2.default)(nextProps, keys), (0, _pick2.default)(this.props, keys))) { + var stateToEvict = {}; + + if (!nextProps.logoName) { + stateToEvict.logo = undefined; + } + + if (!nextProps.navIconName) { + stateToEvict.navIcon = undefined; + } + + if (!nextProps.overflowIconName) { + stateToEvict.overflowIcon = undefined; + } + + if (this.state && Object.keys(stateToEvict).length) { + this.setState(stateToEvict, function () { + return _this2.updateIconSources(nextProps); + }); + } else { + this.updateIconSources(nextProps); + } + } + } + }, { + key: "updateIconSources", + value: function updateIconSources(props) { + var _this3 = this; + + var size = props.iconSize; + var color = props.iconColor || props.titleColor; + + if (props.logoName) { + getImageSource(props.logoName, size, color).then(function (logo) { + return _this3.setState({ + logo: logo + }); + }); + } + + if (props.navIconName) { + getImageSource(props.navIconName, size, color).then(function (navIcon) { + return _this3.setState({ + navIcon: navIcon + }); + }); + } + + if (props.overflowIconName) { + getImageSource(props.overflowIconName, size, color).then(function (overflowIcon) { + return _this3.setState({ + overflowIcon: overflowIcon + }); + }); + } + + Promise.all((props.actions || []).map(function (action) { + if (action.iconName) { + return getImageSource(action.iconName, action.iconSize || size, action.iconColor || color).then(function (icon) { + return babelHelpers.extends({}, action, { + icon: icon + }); + }); + } + + return Promise.resolve(action); + })).then(function (actions) { + return _this3.setState({ + actions: actions + }); + }); + } + }, { + key: "render", + value: function render() { + return _react2.default.createElement(_reactNative.ToolbarAndroid, babelHelpers.extends({}, this.props, this.state, { + __source: { + fileName: _jsxFileName, + lineNumber: 94 + } + })); + } + }]); + return IconToolbarAndroid; + }(_react.PureComponent), _class.propTypes = { + logoName: IconNamePropType, + navIconName: IconNamePropType, + overflowIconName: IconNamePropType, + actions: _propTypes2.default.arrayOf(_propTypes2.default.shape({ + title: _propTypes2.default.string.isRequired, + iconName: IconNamePropType, + iconSize: _propTypes2.default.number, + iconColor: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + show: _propTypes2.default.oneOf(['always', 'ifRoom', 'never']), + showWithText: _propTypes2.default.bool + })), + iconSize: _propTypes2.default.number, + iconColor: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]) + }, _class.defaultProps = { + iconSize: 24 + }, _temp; + } +},607,[594,586,12,24,457],"react-native-vector-icons/lib/toolbar-android.js"); +__d(function (global, require, module, exports, _dependencyMap) { + module.exports = { + "activity": 59648, + "airplay": 59649, + "alert-circle": 59650, + "alert-octagon": 59651, + "alert-triangle": 59652, + "align-center": 59653, + "align-justify": 59654, + "align-left": 59655, + "align-right": 59656, + "anchor": 59657, + "aperture": 59658, + "arrow-down": 59659, + "arrow-down-left": 59660, + "arrow-down-right": 59661, + "arrow-left": 59662, + "arrow-right": 59663, + "arrow-up": 59664, + "arrow-up-left": 59665, + "arrow-up-right": 59666, + "at-sign": 59667, + "award": 59668, + "bar-chart": 59669, + "bar-chart-2": 59670, + "battery": 59671, + "battery-charging": 59672, + "bell": 59673, + "bell-off": 59674, + "bluetooth": 59675, + "bold": 59676, + "book": 59677, + "bookmark": 59678, + "box": 59679, + "briefcase": 59680, + "calendar": 59681, + "camera": 59682, + "camera-off": 59683, + "cast": 59684, + "check": 59685, + "check-circle": 59686, + "check-square": 59687, + "chevron-down": 59688, + "chevron-left": 59689, + "chevron-right": 59690, + "chevron-up": 59691, + "chevrons-down": 59692, + "chevrons-left": 59693, + "chevrons-right": 59694, + "chevrons-up": 59695, + "chrome": 59696, + "circle": 59697, + "clipboard": 59698, + "clock": 59699, + "cloud": 59700, + "cloud-drizzle": 59701, + "cloud-lightning": 59702, + "cloud-off": 59703, + "cloud-rain": 59704, + "cloud-snow": 59705, + "codepen": 59706, + "command": 59707, + "compass": 59708, + "copy": 59709, + "corner-down-left": 59710, + "corner-down-right": 59711, + "corner-left-down": 59712, + "corner-left-up": 59713, + "corner-right-down": 59714, + "corner-right-up": 59715, + "corner-up-left": 59716, + "corner-up-right": 59717, + "cpu": 59718, + "credit-card": 59719, + "crop": 59720, + "crosshair": 59721, + "delete": 59722, + "disc": 59723, + "download": 59724, + "download-cloud": 59725, + "droplet": 59726, + "edit": 59727, + "edit-2": 59728, + "edit-3": 59729, + "external-link": 59730, + "eye": 59731, + "eye-off": 59732, + "facebook": 59733, + "fast-forward": 59734, + "feather": 59735, + "file": 59736, + "file-minus": 59737, + "file-plus": 59738, + "file-text": 59739, + "film": 59740, + "filter": 59741, + "flag": 59742, + "folder": 59743, + "github": 59744, + "gitlab": 59745, + "globe": 59746, + "grid": 59747, + "hash": 59748, + "headphones": 59749, + "heart": 59750, + "help-circle": 59751, + "home": 59752, + "image": 59753, + "inbox": 59754, + "info": 59755, + "instagram": 59756, + "italic": 59757, + "layers": 59758, + "layout": 59759, + "life-buoy": 59760, + "link": 59761, + "link-2": 59762, + "list": 59763, + "loader": 59764, + "lock": 59765, + "log-in": 59766, + "log-out": 59767, + "mail": 59768, + "map": 59769, + "map-pin": 59770, + "maximize": 59771, + "maximize-2": 59772, + "menu": 59773, + "message-circle": 59774, + "message-square": 59775, + "mic": 59776, + "mic-off": 59777, + "minimize": 59778, + "minimize-2": 59779, + "minus": 59780, + "minus-circle": 59781, + "minus-square": 59782, + "monitor": 59783, + "moon": 59784, + "more-horizontal": 59785, + "more-vertical": 59786, + "move": 59787, + "music": 59788, + "navigation": 59789, + "navigation-2": 59790, + "octagon": 59791, + "package": 59792, + "paperclip": 59793, + "pause": 59794, + "pause-circle": 59795, + "percent": 59796, + "phone": 59797, + "phone-call": 59798, + "phone-forwarded": 59799, + "phone-incoming": 59800, + "phone-missed": 59801, + "phone-off": 59802, + "phone-outgoing": 59803, + "pie-chart": 59804, + "play": 59805, + "play-circle": 59806, + "plus": 59807, + "plus-circle": 59808, + "plus-square": 59809, + "pocket": 59810, + "power": 59811, + "printer": 59812, + "radio": 59813, + "refresh-ccw": 59814, + "refresh-cw": 59815, + "repeat": 59816, + "rewind": 59817, + "rotate-ccw": 59818, + "rotate-cw": 59819, + "save": 59820, + "scissors": 59821, + "search": 59822, + "server": 59823, + "settings": 59824, + "share": 59825, + "share-2": 59826, + "shield": 59827, + "shopping-cart": 59828, + "shuffle": 59829, + "sidebar": 59830, + "skip-back": 59831, + "skip-forward": 59832, + "slack": 59833, + "slash": 59834, + "sliders": 59835, + "smartphone": 59836, + "speaker": 59837, + "square": 59838, + "star": 59839, + "stop-circle": 59840, + "sun": 59841, + "sunrise": 59842, + "sunset": 59843, + "tablet": 59844, + "tag": 59845, + "target": 59846, + "thermometer": 59847, + "thumbs-down": 59848, + "thumbs-up": 59849, + "toggle-left": 59850, + "toggle-right": 59851, + "trash": 59852, + "trash-2": 59853, + "trending-down": 59854, + "trending-up": 59855, + "triangle": 59856, + "tv": 59857, + "twitter": 59858, + "type": 59859, + "umbrella": 59860, + "underline": 59861, + "unlock": 59862, + "upload": 59863, + "upload-cloud": 59864, + "user": 59865, + "user-check": 59866, + "user-minus": 59867, + "user-plus": 59868, + "user-x": 59869, + "users": 59870, + "video": 59871, + "video-off": 59872, + "voicemail": 59873, + "volume": 59874, + "volume-1": 59875, + "volume-2": 59876, + "volume-x": 59877, + "watch": 59878, + "wifi": 59879, + "wifi-off": 59880, + "wind": 59881, + "x": 59882, + "x-circle": 59883, + "x-square": 59884, + "zap": 59885, + "zoom-in": 59886, + "zoom-out": 59887 + }; +},608,[],"react-native-vector-icons/glyphmaps/Feather.json"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.AppNavigator = undefined; + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/component/AppNavigator.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _discover = require(_dependencyMap[1], "../page/discover"); + + var _discover2 = babelHelpers.interopRequireDefault(_discover); + + var _file = require(_dependencyMap[2], "../page/file"); + + var _file2 = babelHelpers.interopRequireDefault(_file); + + var _splash = require(_dependencyMap[3], "../page/splash"); + + var _splash2 = babelHelpers.interopRequireDefault(_splash); + + var _reactNavigation = require(_dependencyMap[4], "react-navigation"); + + var _reactRedux = require(_dependencyMap[5], "react-redux"); + + var _redux = require(_dependencyMap[6], "../utils/redux"); + + var _reactNative = require(_dependencyMap[7], "react-native"); + + var _Feather = require(_dependencyMap[8], "react-native-vector-icons/Feather"); + + var _Feather2 = babelHelpers.interopRequireDefault(_Feather); + + var _discover3 = require(_dependencyMap[9], "../styles/discover"); + + var _discover4 = babelHelpers.interopRequireDefault(_discover3); + + var discoverStack = (0, _reactNavigation.StackNavigator)({ + Discover: { + screen: _discover2.default, + navigationOptions: function navigationOptions(_ref) { + var navigation = _ref.navigation; + return { + title: 'Discover', + headerLeft: _react2.default.createElement(_Feather2.default, { + name: "menu", + size: 24, + style: _discover4.default.drawerHamburger, + onPress: function onPress() { + return navigation.navigate('DrawerOpen'); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 17 + } + }) + }; + } + }, + File: { + screen: _file2.default, + navigationOptions: { + header: null + } + } + }, { + headerMode: 'screen' + }); + var drawer = (0, _reactNavigation.DrawerNavigator)({ + Discover: { + screen: discoverStack + } + }, { + drawerWidth: 300, + headerMode: 'none' + }); + var AppNavigator = exports.AppNavigator = new _reactNavigation.StackNavigator({ + Splash: { + screen: _splash2.default + }, + Main: { + screen: drawer + } + }, { + headerMode: 'none' + }); + + var AppWithNavigationState = function (_React$Component) { + babelHelpers.inherits(AppWithNavigationState, _React$Component); + + function AppWithNavigationState() { + babelHelpers.classCallCheck(this, AppWithNavigationState); + return babelHelpers.possibleConstructorReturn(this, (AppWithNavigationState.__proto__ || Object.getPrototypeOf(AppWithNavigationState)).apply(this, arguments)); + } + + babelHelpers.createClass(AppWithNavigationState, [{ + key: "componentWillMount", + value: function componentWillMount() { + _reactNative.BackHandler.addEventListener('hardwareBackPress', function () { + var _props = this.props, + dispatch = _props.dispatch, + navigation = _props.navigation, + nav = _props.nav; + + if (nav.routes.length === 2 && nav.routes[1].routeName === 'Main') { + if (nav.routes[1].routes[0].routes[0].index > 0) { + dispatch({ + type: 'Navigation/BACK' + }); + return true; + } + } + + return false; + }.bind(this)); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + _reactNative.BackHandler.removeEventListener('hardwareBackPress'); + } + }, { + key: "render", + value: function render() { + var _props2 = this.props, + dispatch = _props2.dispatch, + nav = _props2.nav; + return _react2.default.createElement(AppNavigator, { + navigation: (0, _reactNavigation.addNavigationHelpers)({ + dispatch: dispatch, + state: nav, + addListener: _redux.addListener + }), + __source: { + fileName: _jsxFileName, + lineNumber: 69 + } + }); + } + }]); + return AppWithNavigationState; + }(_react2.default.Component); + + var mapStateToProps = function mapStateToProps(state) { + return { + nav: state.nav + }; + }; + + exports.default = (0, _reactRedux.connect)(mapStateToProps)(AppWithNavigationState); +},609,[12,61,610,613,376,22,616,66,455,454],"LBRYApp/src/component/AppNavigator.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _view = require(_dependencyMap[2], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state, props) { + var selectProps = { + uri: props.navigation.state.params.uri + }; + return { + claim: (0, _lbryRedux.makeSelectClaimForUri)(selectProps.uri)(state), + contentType: (0, _lbryRedux.makeSelectContentTypeForUri)(selectProps.uri)(state), + costInfo: (0, _lbryRedux.makeSelectCostInfoForUri)(selectProps.uri)(state), + metadata: (0, _lbryRedux.makeSelectMetadataForUri)(selectProps.uri)(state), + fileInfo: (0, _lbryRedux.makeSelectFileInfoForUri)(selectProps.uri)(state), + rewardedContentClaimIds: (0, _lbryRedux.selectRewardContentClaimIds)(state, selectProps) + }; + }; + + var perform = function perform(dispatch) { + return { + fetchFileInfo: function fetchFileInfo(uri) { + return dispatch((0, _lbryRedux.doFetchFileInfo)(uri)); + }, + fetchCostInfo: function fetchCostInfo(uri) { + return dispatch((0, _lbryRedux.doFetchCostInfoForUri)(uri)); + } + }; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},610,[22,62,611],"LBRYApp/src/page/file/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/page/file/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _reactNative = require(_dependencyMap[1], "react-native"); + + var _filePage = require(_dependencyMap[2], "../../styles/filePage"); + + var _filePage2 = babelHelpers.interopRequireDefault(_filePage); + + var _fileItemMedia = require(_dependencyMap[3], "../../component/fileItemMedia"); + + var _fileItemMedia2 = babelHelpers.interopRequireDefault(_fileItemMedia); + + var FilePage = function (_React$PureComponent) { + babelHelpers.inherits(FilePage, _React$PureComponent); + + function FilePage() { + babelHelpers.classCallCheck(this, FilePage); + return babelHelpers.possibleConstructorReturn(this, (FilePage.__proto__ || Object.getPrototypeOf(FilePage)).apply(this, arguments)); + } + + babelHelpers.createClass(FilePage, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.fetchFileInfo(this.props); + this.fetchCostInfo(this.props); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this.fetchFileInfo(nextProps); + } + }, { + key: "fetchFileInfo", + value: function fetchFileInfo(props) { + if (props.fileInfo === undefined) { + props.fetchFileInfo(props.navigation.state.params.uri); + } + } + }, { + key: "fetchCostInfo", + value: function fetchCostInfo(props) { + if (props.costInfo === undefined) { + props.fetchCostInfo(props.navigation.state.params.uri); + } + } + }, { + key: "render", + value: function render() { + var _props = this.props, + claim = _props.claim, + fileInfo = _props.fileInfo, + metadata = _props.metadata, + contentType = _props.contentType, + tab = _props.tab, + uri = _props.uri, + rewardedContentClaimIds = _props.rewardedContentClaimIds; + + if (!claim || !metadata) { + return _react2.default.createElement( + _reactNative.View, + { + style: _filePage2.default.container, + __source: { + fileName: _jsxFileName, + lineNumber: 45 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.emptyClaimText, + __source: { + fileName: _jsxFileName, + lineNumber: 46 + } + }, + "Empty claim or metadata info." + ) + ); + } + + var title = metadata.title; + var isRewardContent = rewardedContentClaimIds.includes(claim.claim_id); + var description = metadata.description ? metadata.description : null; + var height = claim.height, + channelName = claim.channel_name, + value = claim.value; + var channelClaimId = value && value.publisherSignature && value.publisherSignature.certificateId; + return _react2.default.createElement( + _reactNative.View, + { + style: _filePage2.default.pageContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 65 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: _filePage2.default.mediaContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 66 + } + }, + _react2.default.createElement(_fileItemMedia2.default, { + style: _filePage2.default.thumbnail, + title: title, + thumbnail: metadata.thumbnail, + __source: { + fileName: _jsxFileName, + lineNumber: 67 + } + }) + ), + _react2.default.createElement( + _reactNative.ScrollView, + { + style: _filePage2.default.scrollContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 69 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.title, + __source: { + fileName: _jsxFileName, + lineNumber: 70 + } + }, + title + ), + channelName && _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.channelName, + __source: { + fileName: _jsxFileName, + lineNumber: 71 + } + }, + channelName + ), + description && _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.description, + __source: { + fileName: _jsxFileName, + lineNumber: 72 + } + }, + description + ) + ) + ); + } + }]); + return FilePage; + }(_react2.default.PureComponent); + + FilePage.navigationOptions = { + title: '' + }; + exports.default = FilePage; +},611,[12,66,612,449],"LBRYApp/src/page/file/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var screenDimension = _reactNative.Dimensions.get('window'); + + var screenWidth = screenDimension.width; + + var filePageStyle = _reactNative.StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center' + }, + pageContainer: { + flex: 1 + }, + mediaContainer: { + backgroundColor: '#000000' + }, + emptyClaimText: { + textAlign: 'center', + fontSize: 20, + marginLeft: 16, + marginRight: 16 + }, + scrollContainer: { + flex: 1 + }, + title: { + fontSize: 24, + fontWeight: 'bold', + marginTop: 20, + marginLeft: 20, + marginRight: 20, + marginBottom: 12 + }, + channelName: { + fontSize: 20, + fontWeight: 'bold', + marginLeft: 20, + marginRight: 20, + marginBottom: 20, + color: '#9b9b9b' + }, + description: { + fontSize: 16, + marginLeft: 20, + marginRight: 20, + marginBottom: 20, + color: '#999999' + }, + thumbnail: { + width: screenWidth, + height: 200 + } + }); + + exports.default = filePageStyle; +},612,[66],"LBRYApp/src/styles/filePage.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _view = require(_dependencyMap[1], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state) { + return {}; + }; + + var perform = function perform(dispatch) { + return {}; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},613,[22,614],"LBRYApp/src/page/splash/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/page/splash/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _propTypes = require(_dependencyMap[3], "prop-types"); + + var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes); + + var _splash = require(_dependencyMap[4], "../../styles/splash"); + + var _splash2 = babelHelpers.interopRequireDefault(_splash); + + var SplashScreen = function (_React$PureComponent) { + babelHelpers.inherits(SplashScreen, _React$PureComponent); + + function SplashScreen() { + babelHelpers.classCallCheck(this, SplashScreen); + return babelHelpers.possibleConstructorReturn(this, (SplashScreen.__proto__ || Object.getPrototypeOf(SplashScreen)).apply(this, arguments)); + } + + babelHelpers.createClass(SplashScreen, [{ + key: "componentWillMount", + value: function componentWillMount() { + this.setState({ + details: 'Starting daemon', + message: 'Connecting', + isRunning: false, + isLagging: false + }); + } + }, { + key: "updateStatus", + value: function updateStatus() { + var _this2 = this; + + _lbryRedux.Lbry.status().then(function (status) { + _this2._updateStatusCallback(status); + }); + } + }, { + key: "_updateStatusCallback", + value: function _updateStatusCallback(status) { + var _this3 = this; + + var startupStatus = status.startup_status; + + if (startupStatus.code == 'started') { + this.setState({ + message: 'Testing Network', + details: 'Waiting for name resolution', + isLagging: false, + isRunning: true + }); + + _lbryRedux.Lbry.resolve({ + uri: 'lbry://one' + }).then(function () { + var navigation = _this3.props.navigation; + navigation.navigate('Main'); + }); + + return; + } + + if (status.blockchain_status && status.blockchain_status.blocks_behind > 0) { + var behind = status.blockchain_status.blocks_behind; + var behindText = behind + ' block' + (behind == 1 ? '' : 's') + ' behind'; + this.setState({ + message: 'Blockchain Sync', + details: behindText, + isLagging: startupStatus.is_lagging + }); + } else { + this.setState({ + message: 'Network Loading', + details: startupStatus.message + (startupStatus.is_lagging ? '' : '...'), + isLagging: startupStatus.is_lagging + }); + } + + setTimeout(function () { + _this3.updateStatus(); + }, 500); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + var _this4 = this; + + _lbryRedux.Lbry.connect().then(function () { + _this4.updateStatus(); + }).catch(function (e) { + _this4.setState({ + isLagging: true, + message: 'Connection Failure', + details: 'We could not establish a connection to the daemon. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.io if you think this is a software bug.' + }); + }); + } + }, { + key: "render", + value: function render() { + var _state = this.state, + message = _state.message, + details = _state.details, + isLagging = _state.isLagging, + isRunning = _state.isRunning; + return _react2.default.createElement( + _reactNative.View, + { + style: _splash2.default.container, + __source: { + fileName: _jsxFileName, + lineNumber: 88 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: _splash2.default.title, + __source: { + fileName: _jsxFileName, + lineNumber: 89 + } + }, + "Lbry." + ), + _react2.default.createElement( + _reactNative.Text, + { + style: _splash2.default.message, + __source: { + fileName: _jsxFileName, + lineNumber: 90 + } + }, + message + ), + _react2.default.createElement( + _reactNative.Text, + { + style: _splash2.default.details, + __source: { + fileName: _jsxFileName, + lineNumber: 91 + } + }, + details + ) + ); + } + }]); + return SplashScreen; + }(_react2.default.PureComponent); + + SplashScreen.navigationOptions = { + title: 'Splash' + }; + exports.default = SplashScreen; +},614,[12,62,66,24,615],"LBRYApp/src/page/splash/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactNative = require(_dependencyMap[0], "react-native"); + + var splashStyle = _reactNative.StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + backgroundColor: '#40b89a' + }, + title: { + fontSize: 64, + fontWeight: 'bold', + textAlign: 'center', + marginBottom: 48, + color: '#ffffff' + }, + details: { + fontSize: 14, + marginLeft: 16, + marginRight: 16, + color: '#ffffff', + textAlign: 'center' + }, + message: { + fontWeight: 'bold', + fontSize: 18, + color: '#ffffff', + marginLeft: 16, + marginRight: 16, + marginBottom: 4, + textAlign: 'center' + } + }); + + exports.default = splashStyle; +},615,[66],"LBRYApp/src/styles/splash.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.addListener = exports.reactNavigationMiddleware = undefined; + + var _reactNavigationReduxHelpers = require(_dependencyMap[0], "react-navigation-redux-helpers"); + + var reactNavigationMiddleware = (0, _reactNavigationReduxHelpers.createReactNavigationReduxMiddleware)("root", function (state) { + return state.nav; + }); + var addListener = (0, _reactNavigationReduxHelpers.createReduxBoundAddListener)("root"); + exports.reactNavigationMiddleware = reactNavigationMiddleware; + exports.addListener = addListener; +},616,[617],"LBRYApp/src/utils/redux.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.createNavigationReducer = undefined; + + var _types = require(_dependencyMap[0], "./types"); + + Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _types[key]; + } + }); + }); + + var _middleware = require(_dependencyMap[1], "./middleware"); + + Object.keys(_middleware).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _middleware[key]; + } + }); + }); + + var _reducer = require(_dependencyMap[2], "./reducer"); + + exports.createNavigationReducer = _reducer.createNavigationReducer; +},617,[618,619,620],"react-navigation-redux-helpers/src/index.js"); +__d(function (global, require, module, exports, _dependencyMap) {},618,[],"react-navigation-redux-helpers/src/types.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.initializeListeners = exports.createReduxBoundAddListener = exports.createReactNavigationReduxMiddleware = undefined; + + var _invariant = require(_dependencyMap[0], "invariant"); + + var _invariant2 = babelHelpers.interopRequireDefault(_invariant); + + var _reducer = require(_dependencyMap[1], "./reducer"); + + var reduxSubscribers = new Map(); + + function createReactNavigationReduxMiddleware(key, navStateSelector) { + reduxSubscribers.set(key, new Set()); + return function (store) { + return function (next) { + return function (action) { + var oldState = store.getState(); + var result = next(action); + var newState = store.getState(); + var subscribers = reduxSubscribers.get(key); + (0, _invariant2.default)(subscribers, "subscribers set should exist for " + key); + triggerAllSubscribers(subscribers, { + type: 'action', + action: action, + state: navStateSelector(newState), + lastState: navStateSelector(oldState) + }); + return result; + }; + }; + }; + } + + function triggerAllSubscribers(subscribers, payload) { + subscribers.forEach(function (subscriber) { + return subscriber(payload); + }); + } + + function createReduxBoundAddListener(key) { + (0, _invariant2.default)(reduxSubscribers.has(key), "Cannot listen for a key that isn't associated with a Redux store. " + "First call `createReactNavigationReduxMiddleware` so that we know " + "when to trigger your listener."); + return function (eventName, handler) { + if (eventName !== 'action') { + return { + remove: function remove() {} + }; + } + + var subscribers = reduxSubscribers.get(key); + (0, _invariant2.default)(subscribers, "subscribers set should exist for " + key); + subscribers.add(handler); + return { + remove: function remove() { + subscribers.delete(handler); + } + }; + }; + } + + function initializeListeners(key, state) { + var subscribers = reduxSubscribers.get(key); + (0, _invariant2.default)(subscribers, "Cannot initialize listeners for a key that isn't associated with a " + "Redux store. First call `createReactNavigationReduxMiddleware` so " + "that we know when to trigger your listener."); + triggerAllSubscribers(subscribers, { + type: 'action', + action: _reducer.initAction, + state: state, + lastState: null + }); + } + + exports.createReactNavigationReduxMiddleware = createReactNavigationReduxMiddleware; + exports.createReduxBoundAddListener = createReduxBoundAddListener; + exports.initializeListeners = initializeListeners; +},619,[31,620],"react-navigation-redux-helpers/src/middleware.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.initAction = exports.createNavigationReducer = undefined; + + var _reactNavigation = require(_dependencyMap[0], "react-navigation"); + + var initAction = _reactNavigation.NavigationActions.init(); + + function createNavigationReducer(navigator) { + var initialState = navigator.router.getStateForAction(initAction, null); + return function () { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; + var action = arguments[1]; + return navigator.router.getStateForAction(action, state); + }; + } + + ; + exports.createNavigationReducer = createNavigationReducer; + exports.initAction = initAction; +},620,[376],"react-navigation-redux-helpers/src/reducer.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.storages = exports.purgeStoredState = exports.persistStore = exports.getStoredState = exports.createTransform = exports.createPersistor = exports.autoRehydrate = undefined; + + var _autoRehydrate = require(_dependencyMap[0], './autoRehydrate'); + + var _autoRehydrate2 = _interopRequireDefault(_autoRehydrate); + + var _createPersistor = require(_dependencyMap[1], './createPersistor'); + + var _createPersistor2 = _interopRequireDefault(_createPersistor); + + var _createTransform = require(_dependencyMap[2], './createTransform'); + + var _createTransform2 = _interopRequireDefault(_createTransform); + + var _getStoredState = require(_dependencyMap[3], './getStoredState'); + + var _getStoredState2 = _interopRequireDefault(_getStoredState); + + var _persistStore = require(_dependencyMap[4], './persistStore'); + + var _persistStore2 = _interopRequireDefault(_persistStore); + + var _purgeStoredState = require(_dependencyMap[5], './purgeStoredState'); + + var _purgeStoredState2 = _interopRequireDefault(_purgeStoredState); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var deprecated = function deprecated(cb, cb2, cb3) { + console.error('redux-persist: this method of importing storages has been removed. instead use `import { asyncLocalStorage } from "redux-persist/storages"`'); + if (typeof cb === 'function') cb(); + if (typeof cb2 === 'function') cb2(); + if (typeof cb3 === 'function') cb3(); + }; + + var deprecatedStorage = { + getAllKeys: deprecated, + getItem: deprecated, + setItem: deprecated, + removeItem: deprecated + }; + var storages = { + asyncLocalStorage: deprecatedStorage, + asyncSessionStorage: deprecatedStorage + }; + exports.autoRehydrate = _autoRehydrate2.default; + exports.createPersistor = _createPersistor2.default; + exports.createTransform = _createTransform2.default; + exports.getStoredState = _getStoredState2.default; + exports.persistStore = _persistStore2.default; + exports.purgeStoredState = _purgeStoredState2.default; + exports.storages = storages; +},621,[622,625,630,631,632,628],"redux-persist/lib/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _typeof = typeof Symbol === "function" && typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + exports.default = autoRehydrate; + + var _constants = require(_dependencyMap[0], './constants'); + + var _isStatePlainEnough = require(_dependencyMap[1], './utils/isStatePlainEnough'); + + var _isStatePlainEnough2 = _interopRequireDefault(_isStatePlainEnough); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function autoRehydrate() { + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var stateReconciler = config.stateReconciler || defaultStateReconciler; + return function (next) { + return function (reducer, initialState, enhancer) { + var store = next(liftReducer(reducer), initialState, enhancer); + return _extends({}, store, { + replaceReducer: function replaceReducer(reducer) { + return store.replaceReducer(liftReducer(reducer)); + } + }); + }; + }; + + function liftReducer(reducer) { + var rehydrated = false; + var preRehydrateActions = []; + return function (state, action) { + if (action.type !== _constants.REHYDRATE) { + if (config.log && !rehydrated) preRehydrateActions.push(action); + return reducer(state, action); + } else { + if (config.log && !rehydrated) logPreRehydrate(preRehydrateActions); + rehydrated = true; + var inboundState = action.payload; + var reducedState = reducer(state, action); + return stateReconciler(state, inboundState, reducedState, config.log); + } + }; + } + } + + function logPreRehydrate(preRehydrateActions) { + var concernedActions = preRehydrateActions.slice(1); + + if (concernedActions.length > 0) { + console.log('\n redux-persist/autoRehydrate: %d actions were fired before rehydration completed. This can be a symptom of a race\n condition where the rehydrate action may overwrite the previously affected state. Consider running these actions\n after rehydration:\n ', concernedActions.length, concernedActions); + } + } + + function defaultStateReconciler(state, inboundState, reducedState, log) { + var newState = _extends({}, reducedState); + + Object.keys(inboundState).forEach(function (key) { + if (!state.hasOwnProperty(key)) return; + + if (_typeof(state[key]) === 'object' && !inboundState[key]) { + if (log) console.log('redux-persist/autoRehydrate: sub state for key `%s` is falsy but initial state is an object, skipping autoRehydrate.', key); + return; + } + + if (state[key] !== reducedState[key]) { + if (log) console.log('redux-persist/autoRehydrate: sub state for key `%s` modified, skipping autoRehydrate.', key); + newState[key] = reducedState[key]; + return; + } + + if ((0, _isStatePlainEnough2.default)(inboundState[key]) && (0, _isStatePlainEnough2.default)(state[key])) newState[key] = _extends({}, state[key], inboundState[key]);else newState[key] = inboundState[key]; + if (log) console.log('redux-persist/autoRehydrate: key `%s`, rehydrated to ', key, newState[key]); + }); + return newState; + } +},622,[623,624],"redux-persist/lib/autoRehydrate.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + var KEY_PREFIX = exports.KEY_PREFIX = 'reduxPersist:'; + var REHYDRATE = exports.REHYDRATE = 'persist/REHYDRATE'; +},623,[],"redux-persist/lib/constants.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _typeof = typeof Symbol === "function" && typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }; + + exports.default = isStatePlainEnough; + + var _isPlainObject = require(_dependencyMap[0], 'lodash/isPlainObject'); + + var _isPlainObject2 = _interopRequireDefault(_isPlainObject); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function isStatePlainEnough(a) { + if (!a) return false; + if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) !== 'object') return false; + if (typeof a.asMutable === 'function') return false; + if (!(0, _isPlainObject2.default)(a)) return false; + return true; + } +},624,[38],"redux-persist/lib/utils/isStatePlainEnough.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.default = createPersistor; + + var _constants = require(_dependencyMap[0], './constants'); + + var _asyncLocalStorage = require(_dependencyMap[1], './defaults/asyncLocalStorage'); + + var _asyncLocalStorage2 = _interopRequireDefault(_asyncLocalStorage); + + var _purgeStoredState = require(_dependencyMap[2], './purgeStoredState'); + + var _purgeStoredState2 = _interopRequireDefault(_purgeStoredState); + + var _jsonStringifySafe = require(_dependencyMap[3], 'json-stringify-safe'); + + var _jsonStringifySafe2 = _interopRequireDefault(_jsonStringifySafe); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function createPersistor(store, config) { + var serializer = config.serialize === false ? function (data) { + return data; + } : defaultSerializer; + var deserializer = config.serialize === false ? function (data) { + return data; + } : defaultDeserializer; + var blacklist = config.blacklist || []; + var whitelist = config.whitelist || false; + var transforms = config.transforms || []; + var debounce = config.debounce || false; + var keyPrefix = config.keyPrefix !== undefined ? config.keyPrefix : _constants.KEY_PREFIX; + var stateInit = config._stateInit || {}; + var stateIterator = config._stateIterator || defaultStateIterator; + var stateGetter = config._stateGetter || defaultStateGetter; + var stateSetter = config._stateSetter || defaultStateSetter; + var storage = config.storage || (0, _asyncLocalStorage2.default)('local'); + + if (storage.keys && !storage.getAllKeys) { + storage.getAllKeys = storage.keys; + } + + var lastState = stateInit; + var paused = false; + var storesToProcess = []; + var timeIterator = null; + store.subscribe(function () { + if (paused) return; + var state = store.getState(); + stateIterator(state, function (subState, key) { + if (!passWhitelistBlacklist(key)) return; + if (stateGetter(lastState, key) === stateGetter(state, key)) return; + if (storesToProcess.indexOf(key) !== -1) return; + storesToProcess.push(key); + }); + var len = storesToProcess.length; + + if (timeIterator === null) { + timeIterator = setInterval(function () { + if (paused && len === storesToProcess.length || storesToProcess.length === 0) { + clearInterval(timeIterator); + timeIterator = null; + return; + } + + var key = storesToProcess.shift(); + var storageKey = createStorageKey(key); + var endState = transforms.reduce(function (subState, transformer) { + return transformer.in(subState, key); + }, stateGetter(store.getState(), key)); + if (typeof endState !== 'undefined') storage.setItem(storageKey, serializer(endState), warnIfSetError(key)); + }, debounce); + } + + lastState = state; + }); + + function passWhitelistBlacklist(key) { + if (whitelist && whitelist.indexOf(key) === -1) return false; + if (blacklist.indexOf(key) !== -1) return false; + return true; + } + + function adhocRehydrate(incoming) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var state = {}; + + if (options.serial) { + stateIterator(incoming, function (subState, key) { + try { + var data = deserializer(subState); + var value = transforms.reduceRight(function (interState, transformer) { + return transformer.out(interState, key); + }, data); + state = stateSetter(state, key, value); + } catch (err) { + if (process.env.NODE_ENV !== 'production') console.warn('Error rehydrating data for key "' + key + '"', subState, err); + } + }); + } else state = incoming; + + store.dispatch(rehydrateAction(state)); + return state; + } + + function createStorageKey(key) { + return '' + keyPrefix + key; + } + + return { + rehydrate: adhocRehydrate, + pause: function pause() { + paused = true; + }, + resume: function resume() { + paused = false; + }, + purge: function purge(keys) { + return (0, _purgeStoredState2.default)({ + storage: storage, + keyPrefix: keyPrefix + }, keys); + } + }; + } + + function warnIfSetError(key) { + return function setError(err) { + if (err && process.env.NODE_ENV !== 'production') { + console.warn('Error storing data for key:', key, err); + } + }; + } + + function defaultSerializer(data) { + return (0, _jsonStringifySafe2.default)(data, null, null, function (k, v) { + if (process.env.NODE_ENV !== 'production') return null; + throw new Error('\n redux-persist: cannot process cyclical state.\n Consider changing your state structure to have no cycles.\n Alternatively blacklist the corresponding reducer key.\n Cycle encounted at key "' + k + '" with value "' + v + '".\n '); + }); + } + + function defaultDeserializer(serial) { + return JSON.parse(serial); + } + + function rehydrateAction(data) { + return { + type: _constants.REHYDRATE, + payload: data + }; + } + + function defaultStateIterator(collection, callback) { + return Object.keys(collection).forEach(function (key) { + return callback(collection[key], key); + }); + } + + function defaultStateGetter(state, key) { + return state[key]; + } + + function defaultStateSetter(state, key, value) { + state[key] = value; + return state; + } +},625,[623,626,628,629],"redux-persist/lib/createPersistor.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _typeof = typeof Symbol === "function" && typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }; + + exports.default = function (type, config) { + var storage = getStorage(type); + return { + getAllKeys: function getAllKeys(cb) { + return new Promise(function (resolve, reject) { + try { + var keys = []; + + for (var i = 0; i < storage.length; i++) { + keys.push(storage.key(i)); + } + + (0, _setImmediate2.default)(function () { + cb && cb(null, keys); + resolve(keys); + }); + } catch (e) { + cb && cb(e); + reject(e); + } + }); + }, + getItem: function getItem(key, cb) { + return new Promise(function (resolve, reject) { + try { + var s = storage.getItem(key); + (0, _setImmediate2.default)(function () { + cb && cb(null, s); + resolve(s); + }); + } catch (e) { + cb && cb(e); + reject(e); + } + }); + }, + setItem: function setItem(key, string, cb) { + return new Promise(function (resolve, reject) { + try { + storage.setItem(key, string); + (0, _setImmediate2.default)(function () { + cb && cb(null); + resolve(); + }); + } catch (e) { + cb && cb(e); + reject(e); + } + }); + }, + removeItem: function removeItem(key, cb) { + return new Promise(function (resolve, reject) { + try { + storage.removeItem(key); + (0, _setImmediate2.default)(function () { + cb && cb(null); + resolve(); + }); + } catch (e) { + cb && cb(e); + reject(e); + } + }); + } + }; + }; + + var _setImmediate = require(_dependencyMap[0], '../utils/setImmediate'); + + var _setImmediate2 = _interopRequireDefault(_setImmediate); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var noStorage = function noStorage() { + return null; + }; + + if (process.env.NODE_ENV !== 'production') { + noStorage = function noStorage() { + console.error('redux-persist asyncLocalStorage requires a global localStorage object. Either use a different storage backend or if this is a universal redux application you probably should conditionally persist like so: https://gist.github.com/rt2zz/ac9eb396793f95ff3c3b'); + return null; + }; + } + + function _hasStorage(storageType) { + if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !(storageType in window)) { + return false; + } + + try { + var storage = window[storageType]; + var testKey = 'redux-persist ' + storageType + ' test'; + storage.setItem(testKey, 'test'); + storage.getItem(testKey); + storage.removeItem(testKey); + } catch (e) { + if (process.env.NODE_ENV !== 'production') console.warn('redux-persist ' + storageType + ' test failed, persistence will be disabled.'); + return false; + } + + return true; + } + + function hasLocalStorage() { + return _hasStorage('localStorage'); + } + + function hasSessionStorage() { + return _hasStorage('sessionStorage'); + } + + function getStorage(type) { + if (type === 'local') { + return hasLocalStorage() ? window.localStorage : { + getItem: noStorage, + setItem: noStorage, + removeItem: noStorage, + getAllKeys: noStorage + }; + } + + if (type === 'session') { + return hasSessionStorage() ? window.sessionStorage : { + getItem: noStorage, + setItem: noStorage, + removeItem: noStorage, + getAllKeys: noStorage + }; + } + } +},626,[627],"redux-persist/lib/defaults/asyncLocalStorage.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + var hasNativeSupport = typeof global !== 'undefined' && typeof global.setImmediate !== 'undefined'; + var setImmediate = hasNativeSupport ? function (fn, ms) { + return global.setImmediate(fn, ms); + } : function (fn, ms) { + return setTimeout(fn, ms); + }; + exports.default = setImmediate; +},627,[],"redux-persist/lib/utils/setImmediate.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + exports.default = purgeStoredState; + + var _constants = require(_dependencyMap[0], './constants'); + + function purgeStoredState(config, keys) { + var storage = config.storage; + var keyPrefix = config.keyPrefix !== undefined ? config.keyPrefix : _constants.KEY_PREFIX; + if (Array.isArray(config)) throw new Error('redux-persist: purgeStoredState requires config as a first argument (found array). An array of keys is the optional second argument.'); + if (!storage) throw new Error('redux-persist: config.storage required in purgeStoredState'); + + if (typeof keys === 'undefined') { + return new Promise(function (resolve, reject) { + storage.getAllKeys(function (err, allKeys) { + if (err) { + if (process.env.NODE_ENV !== 'production') console.warn('redux-persist: error during purgeStoredState in storage.getAllKeys'); + reject(err); + } else { + resolve(purgeStoredState(config, allKeys.filter(function (key) { + return key.indexOf(keyPrefix) === 0; + }).map(function (key) { + return key.slice(keyPrefix.length); + }))); + } + }); + }); + } else { + return Promise.all(keys.map(function (key) { + return storage.removeItem('' + keyPrefix + key, warnIfRemoveError(key)); + })); + } + } + + function warnIfRemoveError(key) { + return function removeError(err) { + if (err && process.env.NODE_ENV !== 'production') { + console.warn('Error storing data for key:', key, err); + } + }; + } +},628,[623],"redux-persist/lib/purgeStoredState.js"); +__d(function (global, require, module, exports, _dependencyMap) { + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } + + function serializer(replacer, cycleReplacer) { + var stack = [], + keys = []; + if (cycleReplacer == null) cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) return "[Circular ~]"; + return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"; + }; + return function (key, value) { + if (stack.length > 0) { + var thisPos = stack.indexOf(this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value); + } else stack.push(value); + + return replacer == null ? value : replacer.call(this, key, value); + }; + } +},629,[],"json-stringify-safe/stringify.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + exports.__esModule = true; + + function createTransform(inbound, outbound) { + var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var whitelist = config.whitelist || null; + var blacklist = config.blacklist || null; + + function whitelistBlacklistCheck(key) { + if (whitelist && whitelist.indexOf(key) === -1) return true; + if (blacklist && blacklist.indexOf(key) !== -1) return true; + return false; + } + + return { + in: function _in(state, key) { + return !whitelistBlacklistCheck(key) && inbound ? inbound(state, key) : state; + }, + out: function out(state, key) { + return !whitelistBlacklistCheck(key) && outbound ? outbound(state, key) : state; + } + }; + } + + exports.default = createTransform; +},630,[],"redux-persist/lib/createTransform.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + exports.default = getStoredState; + + var _constants = require(_dependencyMap[0], './constants'); + + var _asyncLocalStorage = require(_dependencyMap[1], './defaults/asyncLocalStorage'); + + var _asyncLocalStorage2 = _interopRequireDefault(_asyncLocalStorage); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function getStoredState(config, onComplete) { + var storage = config.storage || (0, _asyncLocalStorage2.default)('local'); + var deserializer = config.serialize === false ? function (data) { + return data; + } : defaultDeserializer; + var blacklist = config.blacklist || []; + var whitelist = config.whitelist || false; + var transforms = config.transforms || []; + var keyPrefix = config.keyPrefix !== undefined ? config.keyPrefix : _constants.KEY_PREFIX; + if (storage.keys && !storage.getAllKeys) storage = _extends({}, storage, { + getAllKeys: storage.keys + }); + var restoredState = {}; + var completionCount = 0; + storage.getAllKeys(function (err, allKeys) { + if (err) { + if (process.env.NODE_ENV !== 'production') console.warn('redux-persist/getStoredState: Error in storage.getAllKeys'); + complete(err); + } + + var persistKeys = allKeys.filter(function (key) { + return key.indexOf(keyPrefix) === 0; + }).map(function (key) { + return key.slice(keyPrefix.length); + }); + var keysToRestore = persistKeys.filter(passWhitelistBlacklist); + var restoreCount = keysToRestore.length; + if (restoreCount === 0) complete(null, restoredState); + keysToRestore.forEach(function (key) { + storage.getItem(createStorageKey(key), function (err, serialized) { + if (err && process.env.NODE_ENV !== 'production') console.warn('redux-persist/getStoredState: Error restoring data for key:', key, err);else restoredState[key] = rehydrate(key, serialized); + completionCount += 1; + if (completionCount === restoreCount) complete(null, restoredState); + }); + }); + }); + + function rehydrate(key, serialized) { + var state = null; + + try { + var data = deserializer(serialized); + state = transforms.reduceRight(function (subState, transformer) { + return transformer.out(subState, key); + }, data); + } catch (err) { + if (process.env.NODE_ENV !== 'production') console.warn('redux-persist/getStoredState: Error restoring data for key:', key, err); + } + + return state; + } + + function complete(err, restoredState) { + onComplete(err, restoredState); + } + + function passWhitelistBlacklist(key) { + if (whitelist && whitelist.indexOf(key) === -1) return false; + if (blacklist.indexOf(key) !== -1) return false; + return true; + } + + function createStorageKey(key) { + return '' + keyPrefix + key; + } + + if (typeof onComplete !== 'function' && !!Promise) { + return new Promise(function (resolve, reject) { + onComplete = function onComplete(err, restoredState) { + if (err) reject(err);else resolve(restoredState); + }; + }); + } + } + + function defaultDeserializer(serial) { + return JSON.parse(serial); + } +},631,[623,626],"redux-persist/lib/getStoredState.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + exports.default = persistStore; + + var _constants = require(_dependencyMap[0], './constants'); + + var _getStoredState = require(_dependencyMap[1], './getStoredState'); + + var _getStoredState2 = _interopRequireDefault(_getStoredState); + + var _createPersistor = require(_dependencyMap[2], './createPersistor'); + + var _createPersistor2 = _interopRequireDefault(_createPersistor); + + var _setImmediate = require(_dependencyMap[3], './utils/setImmediate'); + + var _setImmediate2 = _interopRequireDefault(_setImmediate); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function persistStore(store) { + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var onComplete = arguments[2]; + var shouldRestore = !config.skipRestore; + if (process.env.NODE_ENV !== 'production' && config.skipRestore) console.warn('redux-persist: config.skipRestore has been deprecated. If you want to skip restoration use `createPersistor` instead'); + var purgeKeys = null; + var persistor = (0, _createPersistor2.default)(store, config); + persistor.pause(); + + if (shouldRestore) { + (0, _setImmediate2.default)(function () { + (0, _getStoredState2.default)(config, function (err, restoredState) { + if (err) { + complete(err); + return; + } + + if (purgeKeys) { + if (purgeKeys === '*') restoredState = {};else purgeKeys.forEach(function (key) { + return delete restoredState[key]; + }); + } + + try { + store.dispatch(rehydrateAction(restoredState, err)); + } finally { + complete(err, restoredState); + } + }); + }); + } else (0, _setImmediate2.default)(complete); + + function complete(err, restoredState) { + persistor.resume(); + onComplete && onComplete(err, restoredState); + } + + return _extends({}, persistor, { + purge: function purge(keys) { + purgeKeys = keys || '*'; + return persistor.purge(keys); + } + }); + } + + function rehydrateAction(payload) { + var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + return { + type: _constants.REHYDRATE, + payload: payload, + error: error + }; + } +},632,[623,631,625,627],"redux-persist/lib/persistStore.js"); +__d(function (global, require, module, exports, _dependencyMap) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = createTransformCompress; + + var _reduxPersist = require(_dependencyMap[0], "redux-persist"); + + var _lzString = require(_dependencyMap[1], "lz-string"); + + var _lzString2 = _interopRequireDefault(_lzString); + + var _jsonStringifySafe = require(_dependencyMap[2], "json-stringify-safe"); + + var _jsonStringifySafe2 = _interopRequireDefault(_jsonStringifySafe); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var NODE_ENV = typeof process !== "undefined" ? process.env.NODE_ENV : "production"; + + function createTransformCompress(config) { + return (0, _reduxPersist.createTransform)(function (state) { + return _lzString2.default.compressToUTF16((0, _jsonStringifySafe2.default)(state)); + }, function (state) { + if (typeof state !== "string") { + if (NODE_ENV !== "production") { + console.error("redux-persist-transform-compress: expected outbound state to be a string"); + } + + return state; + } + + try { + return JSON.parse(_lzString2.default.decompressFromUTF16(state)); + } catch (err) { + if (NODE_ENV !== "production") { + console.error("redux-persist-transform-compress: error while decompressing state", err); + } + + return null; + } + }, config); + } +},633,[621,634,629],"redux-persist-transform-compress/lib/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var LZString = function () { + var f = String.fromCharCode; + var keyStrBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var keyStrUriSafe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$"; + var baseReverseDic = {}; + + function getBaseValue(alphabet, character) { + if (!baseReverseDic[alphabet]) { + baseReverseDic[alphabet] = {}; + + for (var i = 0; i < alphabet.length; i++) { + baseReverseDic[alphabet][alphabet.charAt(i)] = i; + } + } + + return baseReverseDic[alphabet][character]; + } + + var LZString = { + compressToBase64: function compressToBase64(input) { + if (input == null) return ""; + + var res = LZString._compress(input, 6, function (a) { + return keyStrBase64.charAt(a); + }); + + switch (res.length % 4) { + default: + case 0: + return res; + + case 1: + return res + "==="; + + case 2: + return res + "=="; + + case 3: + return res + "="; + } + }, + decompressFromBase64: function decompressFromBase64(input) { + if (input == null) return ""; + if (input == "") return null; + return LZString._decompress(input.length, 32, function (index) { + return getBaseValue(keyStrBase64, input.charAt(index)); + }); + }, + compressToUTF16: function compressToUTF16(input) { + if (input == null) return ""; + return LZString._compress(input, 15, function (a) { + return f(a + 32); + }) + " "; + }, + decompressFromUTF16: function decompressFromUTF16(compressed) { + if (compressed == null) return ""; + if (compressed == "") return null; + return LZString._decompress(compressed.length, 16384, function (index) { + return compressed.charCodeAt(index) - 32; + }); + }, + compressToUint8Array: function compressToUint8Array(uncompressed) { + var compressed = LZString.compress(uncompressed); + var buf = new Uint8Array(compressed.length * 2); + + for (var i = 0, TotalLen = compressed.length; i < TotalLen; i++) { + var current_value = compressed.charCodeAt(i); + buf[i * 2] = current_value >>> 8; + buf[i * 2 + 1] = current_value % 256; + } + + return buf; + }, + decompressFromUint8Array: function decompressFromUint8Array(compressed) { + if (compressed === null || compressed === undefined) { + return LZString.decompress(compressed); + } else { + var buf = new Array(compressed.length / 2); + + for (var i = 0, TotalLen = buf.length; i < TotalLen; i++) { + buf[i] = compressed[i * 2] * 256 + compressed[i * 2 + 1]; + } + + var result = []; + buf.forEach(function (c) { + result.push(f(c)); + }); + return LZString.decompress(result.join('')); + } + }, + compressToEncodedURIComponent: function compressToEncodedURIComponent(input) { + if (input == null) return ""; + return LZString._compress(input, 6, function (a) { + return keyStrUriSafe.charAt(a); + }); + }, + decompressFromEncodedURIComponent: function decompressFromEncodedURIComponent(input) { + if (input == null) return ""; + if (input == "") return null; + input = input.replace(/ /g, "+"); + return LZString._decompress(input.length, 32, function (index) { + return getBaseValue(keyStrUriSafe, input.charAt(index)); + }); + }, + compress: function compress(uncompressed) { + return LZString._compress(uncompressed, 16, function (a) { + return f(a); + }); + }, + _compress: function _compress(uncompressed, bitsPerChar, getCharFromInt) { + if (uncompressed == null) return ""; + var i, + value, + context_dictionary = {}, + context_dictionaryToCreate = {}, + context_c = "", + context_wc = "", + context_w = "", + context_enlargeIn = 2, + context_dictSize = 3, + context_numBits = 2, + context_data = [], + context_data_val = 0, + context_data_position = 0, + ii; + + for (ii = 0; ii < uncompressed.length; ii += 1) { + context_c = uncompressed.charAt(ii); + + if (!Object.prototype.hasOwnProperty.call(context_dictionary, context_c)) { + context_dictionary[context_c] = context_dictSize++; + context_dictionaryToCreate[context_c] = true; + } + + context_wc = context_w + context_c; + + if (Object.prototype.hasOwnProperty.call(context_dictionary, context_wc)) { + context_w = context_wc; + } else { + if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) { + if (context_w.charCodeAt(0) < 256) { + for (i = 0; i < context_numBits; i++) { + context_data_val = context_data_val << 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + } + + value = context_w.charCodeAt(0); + + for (i = 0; i < 8; i++) { + context_data_val = context_data_val << 1 | value & 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = value >> 1; + } + } else { + value = 1; + + for (i = 0; i < context_numBits; i++) { + context_data_val = context_data_val << 1 | value; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = 0; + } + + value = context_w.charCodeAt(0); + + for (i = 0; i < 16; i++) { + context_data_val = context_data_val << 1 | value & 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = value >> 1; + } + } + + context_enlargeIn--; + + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + + delete context_dictionaryToCreate[context_w]; + } else { + value = context_dictionary[context_w]; + + for (i = 0; i < context_numBits; i++) { + context_data_val = context_data_val << 1 | value & 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = value >> 1; + } + } + + context_enlargeIn--; + + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + + context_dictionary[context_wc] = context_dictSize++; + context_w = String(context_c); + } + } + + if (context_w !== "") { + if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) { + if (context_w.charCodeAt(0) < 256) { + for (i = 0; i < context_numBits; i++) { + context_data_val = context_data_val << 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + } + + value = context_w.charCodeAt(0); + + for (i = 0; i < 8; i++) { + context_data_val = context_data_val << 1 | value & 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = value >> 1; + } + } else { + value = 1; + + for (i = 0; i < context_numBits; i++) { + context_data_val = context_data_val << 1 | value; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = 0; + } + + value = context_w.charCodeAt(0); + + for (i = 0; i < 16; i++) { + context_data_val = context_data_val << 1 | value & 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = value >> 1; + } + } + + context_enlargeIn--; + + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + + delete context_dictionaryToCreate[context_w]; + } else { + value = context_dictionary[context_w]; + + for (i = 0; i < context_numBits; i++) { + context_data_val = context_data_val << 1 | value & 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = value >> 1; + } + } + + context_enlargeIn--; + + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + } + + value = 2; + + for (i = 0; i < context_numBits; i++) { + context_data_val = context_data_val << 1 | value & 1; + + if (context_data_position == bitsPerChar - 1) { + context_data_position = 0; + context_data.push(getCharFromInt(context_data_val)); + context_data_val = 0; + } else { + context_data_position++; + } + + value = value >> 1; + } + + while (true) { + context_data_val = context_data_val << 1; + + if (context_data_position == bitsPerChar - 1) { + context_data.push(getCharFromInt(context_data_val)); + break; + } else context_data_position++; + } + + return context_data.join(''); + }, + decompress: function decompress(compressed) { + if (compressed == null) return ""; + if (compressed == "") return null; + return LZString._decompress(compressed.length, 32768, function (index) { + return compressed.charCodeAt(index); + }); + }, + _decompress: function _decompress(length, resetValue, getNextValue) { + var dictionary = [], + next, + enlargeIn = 4, + dictSize = 4, + numBits = 3, + entry = "", + result = [], + i, + w, + bits, + resb, + maxpower, + power, + c, + data = { + val: getNextValue(0), + position: resetValue, + index: 1 + }; + + for (i = 0; i < 3; i += 1) { + dictionary[i] = i; + } + + bits = 0; + maxpower = Math.pow(2, 2); + power = 1; + + while (power != maxpower) { + resb = data.val & data.position; + data.position >>= 1; + + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + + bits |= (resb > 0 ? 1 : 0) * power; + power <<= 1; + } + + switch (next = bits) { + case 0: + bits = 0; + maxpower = Math.pow(2, 8); + power = 1; + + while (power != maxpower) { + resb = data.val & data.position; + data.position >>= 1; + + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + + bits |= (resb > 0 ? 1 : 0) * power; + power <<= 1; + } + + c = f(bits); + break; + + case 1: + bits = 0; + maxpower = Math.pow(2, 16); + power = 1; + + while (power != maxpower) { + resb = data.val & data.position; + data.position >>= 1; + + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + + bits |= (resb > 0 ? 1 : 0) * power; + power <<= 1; + } + + c = f(bits); + break; + + case 2: + return ""; + } + + dictionary[3] = c; + w = c; + result.push(c); + + while (true) { + if (data.index > length) { + return ""; + } + + bits = 0; + maxpower = Math.pow(2, numBits); + power = 1; + + while (power != maxpower) { + resb = data.val & data.position; + data.position >>= 1; + + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + + bits |= (resb > 0 ? 1 : 0) * power; + power <<= 1; + } + + switch (c = bits) { + case 0: + bits = 0; + maxpower = Math.pow(2, 8); + power = 1; + + while (power != maxpower) { + resb = data.val & data.position; + data.position >>= 1; + + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + + bits |= (resb > 0 ? 1 : 0) * power; + power <<= 1; + } + + dictionary[dictSize++] = f(bits); + c = dictSize - 1; + enlargeIn--; + break; + + case 1: + bits = 0; + maxpower = Math.pow(2, 16); + power = 1; + + while (power != maxpower) { + resb = data.val & data.position; + data.position >>= 1; + + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + + bits |= (resb > 0 ? 1 : 0) * power; + power <<= 1; + } + + dictionary[dictSize++] = f(bits); + c = dictSize - 1; + enlargeIn--; + break; + + case 2: + return result.join(''); + } + + if (enlargeIn == 0) { + enlargeIn = Math.pow(2, numBits); + numBits++; + } + + if (dictionary[c]) { + entry = dictionary[c]; + } else { + if (c === dictSize) { + entry = w + w.charAt(0); + } else { + return null; + } + } + + result.push(entry); + dictionary[dictSize++] = w + entry.charAt(0); + enlargeIn--; + w = entry; + + if (enlargeIn == 0) { + enlargeIn = Math.pow(2, numBits); + numBits++; + } + } + } + }; + return LZString; + }(); + + if (typeof define === 'function' && define.amd) { + define(function () { + return LZString; + }); + } else if (typeof module !== 'undefined' && module != null) { + module.exports = LZString; + } +},634,[],"lz-string/libs/lz-string.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _typeof = typeof Symbol === "function" && typeof (typeof Symbol === "function" ? Symbol.iterator : "@@iterator") === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== (typeof Symbol === "function" ? Symbol.prototype : "@@prototype") ? "symbol" : typeof obj; + }; + + exports.default = createFilter; + exports.createWhitelistFilter = createWhitelistFilter; + exports.createBlacklistFilter = createBlacklistFilter; + exports.persistFilter = persistFilter; + + var _reduxPersist = require(_dependencyMap[0], 'redux-persist'); + + var _lodash = require(_dependencyMap[1], 'lodash.get'); + + var _lodash2 = _interopRequireDefault(_lodash); + + var _lodash3 = require(_dependencyMap[2], 'lodash.set'); + + var _lodash4 = _interopRequireDefault(_lodash3); + + var _lodash5 = require(_dependencyMap[3], 'lodash.unset'); + + var _lodash6 = _interopRequireDefault(_lodash5); + + var _lodash7 = require(_dependencyMap[4], 'lodash.pickby'); + + var _lodash8 = _interopRequireDefault(_lodash7); + + var _lodash9 = require(_dependencyMap[5], 'lodash.isempty'); + + var _lodash10 = _interopRequireDefault(_lodash9); + + var _lodash11 = require(_dependencyMap[6], 'lodash.forin'); + + var _lodash12 = _interopRequireDefault(_lodash11); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function createFilter(reducerName, inboundPaths, outboundPaths) { + var transformType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'whitelist'; + return (0, _reduxPersist.createTransform)(function (inboundState, key) { + return inboundPaths ? persistFilter(inboundState, inboundPaths, transformType) : inboundState; + }, function (outboundState, key) { + return outboundPaths ? persistFilter(outboundState, outboundPaths, transformType) : outboundState; + }, { + 'whitelist': [reducerName] + }); + } + + ; + + function createWhitelistFilter(reducerName, inboundPaths, outboundPaths) { + return createFilter(reducerName, inboundPaths, outboundPaths, 'whitelist'); + } + + function createBlacklistFilter(reducerName, inboundPaths, outboundPaths) { + return createFilter(reducerName, inboundPaths, outboundPaths, 'blacklist'); + } + + function filterObject(_ref, state) { + var path = _ref.path, + _ref$filterFunction = _ref.filterFunction, + filterFunction = _ref$filterFunction === undefined ? function () { + return true; + } : _ref$filterFunction; + var value = (0, _lodash2.default)(state, path); + return (0, _lodash8.default)(value, filterFunction); + } + + function persistFilter(state) { + var paths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + var transformType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'whitelist'; + var subset = {}; + + if (typeof paths === 'string') { + paths = [paths]; + } + + if (transformType === 'whitelist') { + paths.forEach(function (path) { + if ((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && !(path instanceof Array)) { + var value = filterObject(path, state); + + if (!(0, _lodash10.default)(value)) { + (0, _lodash4.default)(subset, path.path, value); + } + } else { + var _value = (0, _lodash2.default)(state, path); + + if (typeof _value !== 'undefined') { + (0, _lodash4.default)(subset, path, _value); + } + } + }); + } else if (transformType === 'blacklist') { + subset = babelHelpers.extends({}, state); + paths.forEach(function (path) { + if ((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && !(path instanceof Array)) { + var value = filterObject(path, state); + + if (!(0, _lodash10.default)(value)) { + (0, _lodash12.default)(value, function (value, key) { + (0, _lodash6.default)(subset, path.path + '.' + key); + }); + } + } else { + var _value2 = (0, _lodash2.default)(state, path); + + if (typeof _value2 !== 'undefined') { + (0, _lodash6.default)(subset, path); + } + } + }); + } else { + subset = state; + } + + return subset; + } +},635,[621,636,637,638,639,640,641],"redux-persist-transform-filter/dist/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var FUNC_ERROR_TEXT = 'Expected a function'; + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + var INFINITY = 1 / 0; + var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reEscapeChar = /\\(\\)?/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function('return this')(); + + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + function isHostObject(value) { + var result = false; + + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + + return result; + } + + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + var coreJsData = root['__core-js_shared__']; + + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + var Symbol = root.Symbol, + splice = arrayProto.splice; + var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + var symbolProto = Symbol ? typeof Symbol === "function" ? Symbol.prototype : "@@prototype" : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + function hashGet(key) { + var data = this.__data__; + + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); + } + + function hashSet(key, value) { + var data = this.__data__; + data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; + return this; + } + + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function listCacheClear() { + this.__data__ = []; + } + + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + + var lastIndex = data.length - 1; + + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + + return true; + } + + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + return index < 0 ? undefined : data[index][1]; + } + + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + + return this; + } + + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function mapCacheClear() { + this.__data__ = { + 'hash': new Hash(), + 'map': new (Map || ListCache)(), + 'string': new Hash() + }; + } + + function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); + } + + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + function assocIndexOf(array, key) { + var length = array.length; + + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + + return -1; + } + + function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + + return index && index == length ? object : undefined; + } + + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function castPath(value) { + return isArray(value) ? value : stringToPath(value); + } + + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; + } + + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + function isKey(value, object) { + if (isArray(value)) { + return false; + } + + var type = typeof value; + + if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { + return true; + } + + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); + } + + function isKeyable(value) { + var type = typeof value; + return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null; + } + + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + + var stringToPath = memoize(function (string) { + string = toString(string); + var result = []; + + if (reLeadingDot.test(string)) { + result.push(''); + } + + string.replace(rePropName, function (match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : number || match); + }); + return result; + }); + + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + + try { + return func + ''; + } catch (e) {} + } + + return ''; + } + + function memoize(func, resolver) { + if (typeof func != 'function' || resolver && typeof resolver != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + + var memoized = function memoized() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + + memoize.Cache = MapCache; + + function eq(value, other) { + return value === other || value !== value && other !== other; + } + + var isArray = Array.isArray; + + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + function isSymbol(value) { + return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + + function toString(value) { + return value == null ? '' : baseToString(value); + } + + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + module.exports = get; +},636,[],"lodash.get/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var FUNC_ERROR_TEXT = 'Expected a function'; + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; + var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reEscapeChar = /\\(\\)?/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function('return this')(); + + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + function isHostObject(value) { + var result = false; + + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + + return result; + } + + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + var coreJsData = root['__core-js_shared__']; + + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + var Symbol = root.Symbol, + splice = arrayProto.splice; + var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + var symbolProto = Symbol ? typeof Symbol === "function" ? Symbol.prototype : "@@prototype" : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + function hashGet(key) { + var data = this.__data__; + + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); + } + + function hashSet(key, value) { + var data = this.__data__; + data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; + return this; + } + + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function listCacheClear() { + this.__data__ = []; + } + + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + + var lastIndex = data.length - 1; + + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + + return true; + } + + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + return index < 0 ? undefined : data[index][1]; + } + + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + + return this; + } + + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function mapCacheClear() { + this.__data__ = { + 'hash': new Hash(), + 'map': new (Map || ListCache)(), + 'string': new Hash() + }; + } + + function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); + } + + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + function assignValue(object, key, value) { + var objValue = object[key]; + + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) { + object[key] = value; + } + } + + function assocIndexOf(array, key) { + var length = array.length; + + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + + return -1; + } + + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + + path = isKey(path, object) ? [path] : castPath(path); + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + + if (newValue === undefined) { + newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; + } + } + + assignValue(nested, key, newValue); + nested = nested[key]; + } + + return object; + } + + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function castPath(value) { + return isArray(value) ? value : stringToPath(value); + } + + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; + } + + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length; + } + + function isKey(value, object) { + if (isArray(value)) { + return false; + } + + var type = typeof value; + + if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { + return true; + } + + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); + } + + function isKeyable(value) { + var type = typeof value; + return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null; + } + + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + + var stringToPath = memoize(function (string) { + string = toString(string); + var result = []; + + if (reLeadingDot.test(string)) { + result.push(''); + } + + string.replace(rePropName, function (match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : number || match); + }); + return result; + }); + + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + + try { + return func + ''; + } catch (e) {} + } + + return ''; + } + + function memoize(func, resolver) { + if (typeof func != 'function' || resolver && typeof resolver != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + + var memoized = function memoized() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + + memoize.Cache = MapCache; + + function eq(value, other) { + return value === other || value !== value && other !== other; + } + + var isArray = Array.isArray; + + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + function isSymbol(value) { + return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + + function toString(value) { + return value == null ? '' : baseToString(value); + } + + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + module.exports = set; +},637,[],"lodash.set/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var FUNC_ERROR_TEXT = 'Expected a function'; + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + var INFINITY = 1 / 0; + var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reEscapeChar = /\\(\\)?/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function('return this')(); + + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + function isHostObject(value) { + var result = false; + + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + + return result; + } + + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + var coreJsData = root['__core-js_shared__']; + + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + var Symbol = root.Symbol, + splice = arrayProto.splice; + var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + var symbolProto = Symbol ? typeof Symbol === "function" ? Symbol.prototype : "@@prototype" : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + function hashGet(key) { + var data = this.__data__; + + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); + } + + function hashSet(key, value) { + var data = this.__data__; + data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; + return this; + } + + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function listCacheClear() { + this.__data__ = []; + } + + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + + var lastIndex = data.length - 1; + + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + + return true; + } + + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + return index < 0 ? undefined : data[index][1]; + } + + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + + return this; + } + + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function mapCacheClear() { + this.__data__ = { + 'hash': new Hash(), + 'map': new (Map || ListCache)(), + 'string': new Hash() + }; + } + + function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); + } + + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + function assocIndexOf(array, key) { + var length = array.length; + + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + + return -1; + } + + function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + + return index && index == length ? object : undefined; + } + + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : length + start; + } + + end = end > length ? length : end; + + if (end < 0) { + end += length; + } + + length = start > end ? 0 : end - start >>> 0; + start >>>= 0; + var result = Array(length); + + while (++index < length) { + result[index] = array[index + start]; + } + + return result; + } + + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function baseUnset(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + object = parent(object, path); + var key = toKey(last(path)); + return !(object != null && hasOwnProperty.call(object, key)) || delete object[key]; + } + + function castPath(value) { + return isArray(value) ? value : stringToPath(value); + } + + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; + } + + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + function isKey(value, object) { + if (isArray(value)) { + return false; + } + + var type = typeof value; + + if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { + return true; + } + + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); + } + + function isKeyable(value) { + var type = typeof value; + return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null; + } + + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + + function parent(object, path) { + return path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + var stringToPath = memoize(function (string) { + string = toString(string); + var result = []; + + if (reLeadingDot.test(string)) { + result.push(''); + } + + string.replace(rePropName, function (match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : number || match); + }); + return result; + }); + + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + + try { + return func + ''; + } catch (e) {} + } + + return ''; + } + + function last(array) { + var length = array ? array.length : 0; + return length ? array[length - 1] : undefined; + } + + function memoize(func, resolver) { + if (typeof func != 'function' || resolver && typeof resolver != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + + var memoized = function memoized() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + + memoize.Cache = MapCache; + + function eq(value, other) { + return value === other || value !== value && other !== other; + } + + var isArray = Array.isArray; + + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + function isSymbol(value) { + return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + + function toString(value) { + return value == null ? '' : baseToString(value); + } + + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + module.exports = unset; +},638,[],"lodash.unset/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var LARGE_ARRAY_SIZE = 200; + var FUNC_ERROR_TEXT = 'Expected a function'; + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + var UNORDERED_COMPARE_FLAG = 1, + PARTIAL_COMPARE_FLAG = 2; + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reEscapeChar = /\\(\\)?/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function('return this')(); + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + var moduleExports = freeModule && freeModule.exports === freeExports; + var freeProcess = moduleExports && freeGlobal.process; + + var nodeUtil = function () { + try { + return freeProcess && freeProcess.binding('util'); + } catch (e) {} + }(); + + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + + return array; + } + + function arraySome(array, predicate) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + + return false; + } + + function baseProperty(key) { + return function (object) { + return object == null ? undefined : object[key]; + }; + } + + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + + return result; + } + + function baseUnary(func) { + return function (value) { + return func(value); + }; + } + + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + function isHostObject(value) { + var result = false; + + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + + return result; + } + + function mapToArray(map) { + var index = -1, + result = Array(map.size); + map.forEach(function (value, key) { + result[++index] = [key, value]; + }); + return result; + } + + function overArg(func, transform) { + return function (arg) { + return func(transform(arg)); + }; + } + + function setToArray(set) { + var index = -1, + result = Array(set.size); + set.forEach(function (value) { + result[++index] = value; + }); + return result; + } + + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + var coreJsData = root['__core-js_shared__']; + + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + var Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + getPrototype = overArg(Object.getPrototypeOf, Object), + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; + var nativeGetSymbols = Object.getOwnPropertySymbols, + nativeKeys = overArg(Object.keys, Object); + var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + var symbolProto = Symbol ? typeof Symbol === "function" ? Symbol.prototype : "@@prototype" : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + function hashGet(key) { + var data = this.__data__; + + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); + } + + function hashSet(key, value) { + var data = this.__data__; + data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; + return this; + } + + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function listCacheClear() { + this.__data__ = []; + } + + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + + var lastIndex = data.length - 1; + + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + + return true; + } + + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + return index < 0 ? undefined : data[index][1]; + } + + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + + return this; + } + + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + function mapCacheClear() { + this.__data__ = { + 'hash': new Hash(), + 'map': new (Map || ListCache)(), + 'string': new Hash() + }; + } + + function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); + } + + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + function SetCache(values) { + var index = -1, + length = values ? values.length : 0; + this.__data__ = new MapCache(); + + while (++index < length) { + this.add(values[index]); + } + } + + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + + return this; + } + + function setCacheHas(value) { + return this.__data__.has(value); + } + + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + function Stack(entries) { + this.__data__ = new ListCache(entries); + } + + function stackClear() { + this.__data__ = new ListCache(); + } + + function stackDelete(key) { + return this.__data__['delete'](key); + } + + function stackGet(key) { + return this.__data__.get(key); + } + + function stackHas(key) { + return this.__data__.has(key); + } + + function stackSet(key, value) { + var cache = this.__data__; + + if (cache instanceof ListCache) { + var pairs = cache.__data__; + + if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) { + pairs.push([key, value]); + return this; + } + + cache = this.__data__ = new MapCache(pairs); + } + + cache.set(key, value); + return this; + } + + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + function arrayLikeKeys(value, inherited) { + var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : []; + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + + return result; + } + + function assocIndexOf(array, key) { + var length = array.length; + + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + + return -1; + } + + function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + + return index && index == length ? object : undefined; + } + + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + function baseGetTag(value) { + return objectToString.call(value); + } + + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + function baseIsEqual(value, other, customizer, bitmask, stack) { + if (value === other) { + return true; + } + + if (value == null || other == null || !isObject(value) && !isObjectLike(other)) { + return value !== value && other !== other; + } + + return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); + } + + function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = getTag(object); + objTag = objTag == argsTag ? objectTag : objTag; + } + + if (!othIsArr) { + othTag = getTag(other); + othTag = othTag == argsTag ? objectTag : othTag; + } + + var objIsObj = objTag == objectTag && !isHostObject(object), + othIsObj = othTag == objectTag && !isHostObject(other), + isSameTag = objTag == othTag; + + if (isSameTag && !objIsObj) { + stack || (stack = new Stack()); + return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); + } + + if (!(bitmask & PARTIAL_COMPARE_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + stack || (stack = new Stack()); + return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); + } + } + + if (!isSameTag) { + return false; + } + + stack || (stack = new Stack()); + return equalObjects(object, other, equalFunc, customizer, bitmask, stack); + } + + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + + object = Object(object); + + while (index--) { + var data = matchData[index]; + + if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) { + return false; + } + } + + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack(); + + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + + if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) { + return false; + } + } + } + + return true; + } + + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; + } + + function baseIteratee(value) { + if (typeof value == 'function') { + return value; + } + + if (value == null) { + return identity; + } + + if (typeof value == 'object') { + return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); + } + + return property(value); + } + + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + + var result = []; + + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + + return result; + } + + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + + return result; + } + + function baseMatches(source) { + var matchData = getMatchData(source); + + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + + return function (object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + + return function (object) { + var objValue = get(object, path); + return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); + }; + } + + function basePickBy(object, props, predicate) { + var index = -1, + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index], + value = object[key]; + + if (predicate(value, key)) { + result[key] = value; + } + } + + return result; + } + + function basePropertyDeep(path) { + return function (object) { + return baseGet(object, path); + }; + } + + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function castPath(value) { + return isArray(value) ? value : stringToPath(value); + } + + function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + + var stacked = stack.get(array); + + if (stacked && stack.get(other)) { + return stacked == other; + } + + var index = -1, + result = true, + seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : undefined; + stack.set(array, other); + stack.set(other, array); + + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); + } + + if (compared !== undefined) { + if (compared) { + continue; + } + + result = false; + break; + } + + if (seen) { + if (!arraySome(other, function (othValue, othIndex) { + if (!seen.has(othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + return seen.add(othIndex); + } + })) { + result = false; + break; + } + } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + result = false; + break; + } + } + + stack['delete'](array); + stack['delete'](other); + return result; + } + + function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { + switch (tag) { + case dataViewTag: + if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { + return false; + } + + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + + return true; + + case boolTag: + case dateTag: + case numberTag: + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + return object == other + ''; + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & PARTIAL_COMPARE_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + + var stacked = stack.get(object); + + if (stacked) { + return stacked == other; + } + + bitmask |= UNORDERED_COMPARE_FLAG; + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + + } + + return false; + } + + function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + + var index = objLength; + + while (index--) { + var key = objProps[index]; + + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + + var stacked = stack.get(object); + + if (stacked && stack.get(other)) { + return stacked == other; + } + + var result = true; + stack.set(object, other); + stack.set(other, object); + var skipCtor = isPartial; + + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); + } + + if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) { + result = false; + break; + } + + skipCtor || (skipCtor = key == 'constructor'); + } + + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + + stack['delete'](object); + stack['delete'](other); + return result; + } + + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; + } + + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + result[length] = [key, value, isStrictComparable(value)]; + } + + return result; + } + + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; + var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) { + var result = []; + + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + + return result; + }; + var getTag = baseGetTag; + + if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) { + getTag = function getTag(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag; + + case mapCtorString: + return mapTag; + + case promiseCtorString: + return promiseTag; + + case setCtorString: + return setTag; + + case weakMapCtorString: + return weakMapTag; + } + } + + return result; + }; + } + + function hasPath(object, path, hasFunc) { + path = isKey(path, object) ? [path] : castPath(path); + var result, + index = -1, + length = path.length; + + while (++index < length) { + var key = toKey(path[index]); + + if (!(result = object != null && hasFunc(object, key))) { + break; + } + + object = object[key]; + } + + if (result) { + return result; + } + + var length = object ? object.length : 0; + return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object)); + } + + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length; + } + + function isKey(value, object) { + if (isArray(value)) { + return false; + } + + var type = typeof value; + + if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { + return true; + } + + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); + } + + function isKeyable(value) { + var type = typeof value; + return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null; + } + + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = typeof Ctor == 'function' && Ctor.prototype || objectProto; + return value === proto; + } + + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + function matchesStrictComparable(key, srcValue) { + return function (object) { + if (object == null) { + return false; + } + + return object[key] === srcValue && (srcValue !== undefined || key in Object(object)); + }; + } + + function nativeKeysIn(object) { + var result = []; + + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + + return result; + } + + var stringToPath = memoize(function (string) { + string = toString(string); + var result = []; + + if (reLeadingDot.test(string)) { + result.push(''); + } + + string.replace(rePropName, function (match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : number || match); + }); + return result; + }); + + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; + } + + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + + try { + return func + ''; + } catch (e) {} + } + + return ''; + } + + function memoize(func, resolver) { + if (typeof func != 'function' || resolver && typeof resolver != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + + var memoized = function memoized() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + + memoize.Cache = MapCache; + + function eq(value, other) { + return value === other || value !== value && other !== other; + } + + function isArguments(value) { + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); + } + + var isArray = Array.isArray; + + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + function isSymbol(value) { + return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + function toString(value) { + return value == null ? '' : baseToString(value); + } + + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + function pickBy(object, predicate) { + return object == null ? {} : basePickBy(object, getAllKeysIn(object), baseIteratee(predicate)); + } + + function identity(value) { + return value; + } + + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + + function stubArray() { + return []; + } + + module.exports = pickBy; +},639,[],"lodash.pickby/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var MAX_SAFE_INTEGER = 9007199254740991; + var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + var dataViewTag = '[object DataView]'; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function('return this')(); + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + var moduleExports = freeModule && freeModule.exports === freeExports; + + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + function isHostObject(value) { + var result = false; + + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + + return result; + } + + function overArg(func, transform) { + return function (arg) { + return func(transform(arg)); + }; + } + + var funcProto = Function.prototype, + objectProto = Object.prototype; + var coreJsData = root['__core-js_shared__']; + + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + var Buffer = moduleExports ? root.Buffer : undefined, + propertyIsEnumerable = objectProto.propertyIsEnumerable; + var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeKeys = overArg(Object.keys, Object); + var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'); + var nonEnumShadows = !propertyIsEnumerable.call({ + 'valueOf': 1 + }, 'valueOf'); + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + function baseGetTag(value) { + return objectToString.call(value); + } + + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + var getTag = baseGetTag; + + if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) { + getTag = function getTag(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag; + + case mapCtorString: + return mapTag; + + case promiseCtorString: + return promiseTag; + + case setCtorString: + return setTag; + + case weakMapCtorString: + return weakMapTag; + } + } + + return result; + }; + } + + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = typeof Ctor == 'function' && Ctor.prototype || objectProto; + return value === proto; + } + + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + + try { + return func + ''; + } catch (e) {} + } + + return ''; + } + + function isArguments(value) { + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); + } + + var isArray = Array.isArray; + + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + var isBuffer = nativeIsBuffer || stubFalse; + + function isEmpty(value) { + if (isArrayLike(value) && (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) { + return !value.length; + } + + var tag = getTag(value); + + if (tag == mapTag || tag == setTag) { + return !value.size; + } + + if (nonEnumShadows || isPrototype(value)) { + return !nativeKeys(value).length; + } + + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + + return true; + } + + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + function stubFalse() { + return false; + } + + module.exports = isEmpty; +},640,[],"lodash.isempty/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + var MAX_SAFE_INTEGER = 9007199254740991; + var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + var reIsUint = /^(?:0|[1-9]\d*)$/; + + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + + return result; + } + + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + + function arrayLikeKeys(value, inherited) { + var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : []; + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + + return result; + } + + var baseFor = createBaseFor(); + + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + + return result; + } + + function createBaseFor(fromRight) { + return function (object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + + return object; + }; + } + + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length; + } + + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = typeof Ctor == 'function' && Ctor.prototype || objectProto; + return value === proto; + } + + function nativeKeysIn(object) { + var result = []; + + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + + return result; + } + + function isArguments(value) { + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); + } + + var isArray = Array.isArray; + + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + function forIn(object, iteratee) { + return object == null ? object : baseFor(object, typeof iteratee == 'function' ? iteratee : identity, keysIn); + } + + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + function identity(value) { + return value; + } + + module.exports = forIn; +},641,[],"lodash.forin/index.js"); +__d(function (global, require, module, exports, _dependencyMap) { + 'use strict'; + + exports.__esModule = true; + + function createThunkMiddleware(extraArgument) { + return function (_ref) { + var dispatch = _ref.dispatch, + getState = _ref.getState; + return function (next) { + return function (action) { + if (typeof action === 'function') { + return action(dispatch, getState, extraArgument); + } + + return next(action); + }; + }; + }; + } + + var thunk = createThunkMiddleware(); + thunk.withExtraArgument = createThunkMiddleware; + exports['default'] = thunk; +},642,[],"redux-thunk/lib/index.js"); +require(76); +require(11); \ No newline at end of file diff --git a/src/main/assets/index.android.bundle.meta b/src/main/assets/index.android.bundle.meta index 3e7e9b99..2563de6f 100644 --- a/src/main/assets/index.android.bundle.meta +++ b/src/main/assets/index.android.bundle.meta @@ -1 +1 @@ -fzv‚üê9©ö¥yFÓÏ}‘ܳè \ No newline at end of file +JR['jÎÉà™©²ua Z \ No newline at end of file diff --git a/src/main/java/io/lbry/lbrynet/MainActivity.java b/src/main/java/io/lbry/lbrynet/MainActivity.java index 43ce23c5..ed135d86 100644 --- a/src/main/java/io/lbry/lbrynet/MainActivity.java +++ b/src/main/java/io/lbry/lbrynet/MainActivity.java @@ -1,7 +1,13 @@ package io.lbry.lbrynet; +import android.os.Build; import android.os.Bundle; import android.app.Activity; +import android.app.ActivityManager; +import android.content.Intent; +import android.content.Context; +import android.net.Uri; +import android.provider.Settings; import com.facebook.react.common.LifecycleState; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; @@ -10,13 +16,35 @@ import com.facebook.react.ReactInstanceManager; import com.facebook.react.shell.MainReactPackage; public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { + private static final int OVERLAY_PERMISSION_REQ_CODE = 101; + private ReactRootView mReactRootView; private ReactInstanceManager mReactInstanceManager; + + /** + * Flag which indicates whether or not the service is running. Will be updated in the + * onResume method. + */ + private boolean serviceRunning; @Override protected void onCreate(Bundle savedInstanceState) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (!Settings.canDrawOverlays(this)) { + Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package:" + getPackageName())); + startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE); + } + } + super.onCreate(savedInstanceState); - + + // Start the daemon service if it is not started + serviceRunning = isServiceRunning(LbrynetService.class); + if (!serviceRunning) { + ServiceHelper.start(this, "", LbrynetService.class, "lbrynetservice"); + } + mReactRootView = new ReactRootView(this); mReactInstanceManager = ReactInstanceManager.builder() .setApplication(getApplication()) @@ -30,6 +58,17 @@ public class MainActivity extends Activity implements DefaultHardwareBackBtnHand setContentView(mReactRootView); } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == OVERLAY_PERMISSION_REQ_CODE) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (!Settings.canDrawOverlays(this)) { + // SYSTEM_ALERT_WINDOW permission not granted... + } + } + } + } @Override public void invokeDefaultOnBackPressed() { @@ -49,6 +88,11 @@ public class MainActivity extends Activity implements DefaultHardwareBackBtnHand protected void onResume() { super.onResume(); + serviceRunning = isServiceRunning(LbrynetService.class); + if (!serviceRunning) { + ServiceHelper.start(this, "", LbrynetService.class, "lbrynetservice"); + } + if (mReactInstanceManager != null) { mReactInstanceManager.onHostResume(this, this); } @@ -71,5 +115,15 @@ public class MainActivity extends Activity implements DefaultHardwareBackBtnHand super.onBackPressed(); } } -} + + private boolean isServiceRunning(Class serviceClass) { + ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); + for (ActivityManager.RunningServiceInfo serviceInfo : manager.getRunningServices(Integer.MAX_VALUE)) { + if (serviceClass.getName().equals(serviceInfo.service.getClassName())) { + return true; + } + } + return false; + } +} diff --git a/src/main/res/drawable-hdpi/node_modules_reactnavigation_src_views_assets_backicon.png b/src/main/res/drawable-hdpi/node_modules_reactnavigation_src_views_assets_backicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad03a63bf3caba175695f5acca85a690dda2d02c GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;ucwP+NCjiE#Ight69&c5o}c_J zydef`Jl72k0*^~vo0xKDg<-rzRAUa4zPx+8A(JzRA>d&TiI?LMHJ06c80_O27(hOisK<;$4-L98a4%?h*gM1h|l0tc*#HT z0w^GY5aOXfy1K?Qv}E0`TXoL4w`!`ptGc~! zU%=7Z+j}{q`r+KA&sQN%UxnA{R;W%^IB-t!L_JCxK?qk|t#m6$<*oEpsFkX&59zBU zWhj-eB2e7xByS0!I!hHn&S(T{d8o+vsQ$xMBE?^_r1eqxYCQ$7ek8!#Q1F3(poW2f zsD?g(PD24Wa-wT}Ip`?)0HP8F3UJ*c7hd;mHD>W2AQ8mP7czy<(4 ziQfBOZOn2YfEDPy3jkf`x%UVKun|Bn0d!RxPzJr}IL;*jxxZF%m|D#J#=gG34HchS z024HeIk%<~OW9apYHI4>!otF`5QW*q0*LrtMEp+}q3YKbn4FwEytK5GXl7C@R$zE| z_~^#Q#G?AN2u027{K>cr_Hk4MVRJyFx`*XBqx_EAjA-wfY1pkr?nLVLI|ND2%VC$sSOnn zLJ0i z2-Z0g34r`3ke}BfmNwb~ApZsAj|ouMY6)OKxj5reBk>VC$cUVeG7l$aE(0PnK;&Go za%E+Fgl2%q`E=J|%v=TrW`M}KF3+bWC%z&BM9v4^HXG#R@MVC=|Ade0W^0F=0V3xb z;FvY$GEpf5kQXtDnr)MlF9Y%!kUv-ra&kJ=Brge6D{|rGp3b9EsD>>KG9EY1Vfhrf z(PAp@5ZKYtaSNH8F(rw@`6e2cuI*U5#_lsk5vp~i48+;q-p&i$DJk2qz6^vA+l42w z12`t-G}f1a5ETlAag2$Tby{EsA~ZTWdTecNE$~H>w28BU83-t!&);rnXgDfm6B{W& zLJWKn-DP|sjO-$B#A9P)_ph$5{_XYYoX2J$ByDYNbB&FSIVtN}?F@u)W@hG|+1c3z zDaTpu41}n;xp^^{%N>$(oJ}l1!j_hn<))^lgK^}nHxeMQwY7CMo6R2JdDM}33{*1Q z5%=S^yRQ1BoLYcH5DDB?W}Ov*vPeUJfB!nfeBEwMfFiaI1j%48!M+#ASyu^gC=vKa zuoYV#VTsg50tk3N0{;Xybibf36Tp`9-Pm&e48gq`7GRveCL_RCGmDFh+_ZWzF2K0@ zJxySGdb(+Te*PMQ(%M6b3!e3Rl0f+e`xW$_(+Mg`o2n*&huiz`n9lvSr;-Gfq-|9a zC_kKigFv205{yY(s|nzq&t>+v=<&p_7fgaD#!3QM(H+6s^acVyXBvnpE>!|t_TW0s zz>VJ=nFcO6qXe)UaDqJ!lGOWn5{RiylmM5^xT^G^#~(5kw2jkB0NaBMxCehHZ3mE+ zFERo2cn5l%zi})32x)^2!UraR%V8IS=5O5kzG+YpX?(r}xK)QYgY0qZukzCb8HFt+ zfF9?Khc}?A?e|6nk*3Z;@E;&>zMTKx1<%B}5uW;)JWUU##X8s=c^unsGiixxg?A@0 zE}7l9WM0RJ81E(4A_+GE5y#^C46j5ew}`KvZAAhSEJlQ1@!mw)>I*vIw`D^U5CPm9 z3K)@__-VC@ubymd0upTbBW#XHUVQanwG)tF`6VSDr8y!6@zv5MPC$a?H}oqjD;$wj z9}WngsWnbO1o_b{COe;>&Wdj@ZR!LhSWI^Q3k1JDH~I)gc#>Lc35YQMrQ`wpwD@3{ z_){I>NMfxgAmX@cTSfOYzZC|7*iEN#5D?h^0@heR$QA-)7W?Dc!k Z{{<~VCVC7SUg`h<002ovPDHLkV1k11Wr+X) literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/node_modules_reactnavigation_src_views_assets_backicon.png b/src/main/res/drawable-xhdpi/node_modules_reactnavigation_src_views_assets_backicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6de0a1cbb365dfd5d9274890d243ca2321f32235 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tUr!gukP61P(+)Bo5D;KluXOkB z|6f;`Uoa>nrTyP5;4+Jm;dJDxe#>oP@r$y*#>rHDd13s5eN)8##R;WH*ZD4M;?i1i i;i&z7`QNqd4J-@3aX4v+{p181%;4$j=d#Wzp$P!F!7nZV literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png b/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png new file mode 100644 index 0000000000000000000000000000000000000000..15a983a67d97c9a6c39d91550a528c37c53a9e3e GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw@;qG}Ln;{G-aN{9*nr0&aBl6p z15q2fw>DO<$f$_t-m`#N(R0!@qfL6}is!BA-aP5mqcux*S)AYDzOuXc@WF!zU-mWw z!RNIrdq3B7GJgpV3USMNx+#Bt3lxOZSlm}!I$z&?|8f=2ODy@*gQAaCs?P@6%;4$j K=d#Wzp$P!X&_+4{ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png b/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png new file mode 100644 index 0000000000000000000000000000000000000000..17e52e8550e5668f7117bcb755beb70c3a21c9e9 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcgrg^$JhEy=Vy>(TP*-+rv1Kz7M z%I*XNJ!(VLzdH4Ge@o8ai4)e^3vK%P+bZq#{MQci z?P`C0d3kxcKa^1~`zt>B;jiLd|K_aKfAEz>edFmDy)D6SUw`+o@R*?B*u=sqq~bB* zgRIJrKN^lr3+tD}bFTI}~XjubmVU5CWQ(LZ;AgeuH{an^LB{Ts5E|^v% literal 0 HcmV?d00001