@jadamsbit/react-native-mapbox-navigation 1.0.19 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/.yarn/releases/yarn-3.6.1.cjs +0 -0
  3. package/android/.classpath +6 -0
  4. package/android/.project +34 -0
  5. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  6. package/android/.settings/org.eclipse.jdt.core.prefs +4 -0
  7. package/android/build.gradle +1 -1
  8. package/android/gradlew +0 -0
  9. package/android/src/main/java/com/jadamsbit/mapboxnavigation/MapboxNavigationModule.kt +47 -22
  10. package/android/src/main/java/com/jadamsbit/mapboxnavigation/MapboxNavigationView.kt +268 -406
  11. package/android/src/main/res/layout/navigation_view.xml +16 -6
  12. package/package.json +2 -2
  13. package/.github/actions/setup/action.yml +0 -27
  14. package/.github/workflows/ci.yml +0 -154
  15. package/.yarn/cache/@ampproject-remapping-npm-2.3.0-559c14eee4-d3ad7b89d9.zip +0 -0
  16. package/.yarn/cache/@babel-code-frame-npm-7.25.7-40a9f53f43-f235cdf9c5.zip +0 -0
  17. package/.yarn/cache/@babel-compat-data-npm-7.25.8-a7237f1519-7ac648b110.zip +0 -0
  18. package/.yarn/cache/@babel-core-npm-7.25.8-e5a00584a2-77ddf693fa.zip +0 -0
  19. package/.yarn/cache/@babel-generator-npm-7.25.7-68dd72ad91-f81cf9dc01.zip +0 -0
  20. package/.yarn/cache/@babel-helper-annotate-as-pure-npm-7.25.7-ca9a6263d0-4b3680b312.zip +0 -0
  21. package/.yarn/cache/@babel-helper-compilation-targets-npm-7.25.7-912ef98d47-5b57e7d4b9.zip +0 -0
  22. package/.yarn/cache/@babel-helper-create-class-features-plugin-npm-7.25.7-05f7eb9482-6b04760b40.zip +0 -0
  23. package/.yarn/cache/@babel-helper-create-regexp-features-plugin-npm-7.25.7-4d6f45051c-378a882dda.zip +0 -0
  24. package/.yarn/cache/@babel-helper-define-polyfill-provider-npm-0.6.2-554cbf22ae-2bba965ea9.zip +0 -0
  25. package/.yarn/cache/@babel-helper-environment-visitor-npm-7.24.7-9a965bf523-079d86e657.zip +0 -0
  26. package/.yarn/cache/@babel-helper-member-expression-to-functions-npm-7.25.7-698ee3f6e7-12141c17b9.zip +0 -0
  27. package/.yarn/cache/@babel-helper-module-imports-npm-7.25.7-f7b3a083a0-a7255755e9.zip +0 -0
  28. package/.yarn/cache/@babel-helper-module-transforms-npm-7.25.7-01310522f0-b1daeded78.zip +0 -0
  29. package/.yarn/cache/@babel-helper-optimise-call-expression-npm-7.25.7-9919661eaf-5555d2d3f1.zip +0 -0
  30. package/.yarn/cache/@babel-helper-plugin-utils-npm-7.25.7-0b7fcf14ca-eef4450361.zip +0 -0
  31. package/.yarn/cache/@babel-helper-remap-async-to-generator-npm-7.25.7-382b447d8f-f68b4a56d8.zip +0 -0
  32. package/.yarn/cache/@babel-helper-replace-supers-npm-7.25.7-035efbe67f-bbfb4de148.zip +0 -0
  33. package/.yarn/cache/@babel-helper-simple-access-npm-7.25.7-3a9e5cd6e8-684d0b0330.zip +0 -0
  34. package/.yarn/cache/@babel-helper-skip-transparent-expression-wrappers-npm-7.25.7-aa6cb16caf-2fbdcef036.zip +0 -0
  35. package/.yarn/cache/@babel-helper-string-parser-npm-7.25.7-352069de58-0835fda5ef.zip +0 -0
  36. package/.yarn/cache/@babel-helper-validator-identifier-npm-7.25.7-1c758f0472-062f55208d.zip +0 -0
  37. package/.yarn/cache/@babel-helper-validator-option-npm-7.25.7-8c969bf588-87b801fe7d.zip +0 -0
  38. package/.yarn/cache/@babel-helper-wrap-function-npm-7.25.7-cb241a714b-3da877ae06.zip +0 -0
  39. package/.yarn/cache/@babel-helpers-npm-7.25.7-267b4cec46-a732428509.zip +0 -0
  40. package/.yarn/cache/@babel-highlight-npm-7.25.7-308b20da71-b6aa45c5bf.zip +0 -0
  41. package/.yarn/cache/@babel-parser-npm-7.25.8-fda12195b5-c33f6d2654.zip +0 -0
  42. package/.yarn/cache/@babel-plugin-proposal-async-generator-functions-npm-7.20.7-14b8ab2230-111109ee11.zip +0 -0
  43. package/.yarn/cache/@babel-plugin-proposal-class-properties-npm-7.18.6-5f5c2d730f-49a78a2773.zip +0 -0
  44. package/.yarn/cache/@babel-plugin-proposal-export-default-from-npm-7.25.8-52df535b50-da0af4db51.zip +0 -0
  45. package/.yarn/cache/@babel-plugin-proposal-nullish-coalescing-operator-npm-7.18.6-cf22ea8526-949c9ddcde.zip +0 -0
  46. package/.yarn/cache/@babel-plugin-proposal-numeric-separator-npm-7.18.6-cfcd55888a-f370ea584c.zip +0 -0
  47. package/.yarn/cache/@babel-plugin-proposal-object-rest-spread-npm-7.20.7-0bc581aa09-1329db1700.zip +0 -0
  48. package/.yarn/cache/@babel-plugin-proposal-optional-catch-binding-npm-7.18.6-a4235a25be-7b5b39fb5d.zip +0 -0
  49. package/.yarn/cache/@babel-plugin-proposal-optional-chaining-npm-7.21.0-cdbb1b2888-11c5449e01.zip +0 -0
  50. package/.yarn/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-7ed1c1d9b9.zip +0 -0
  51. package/.yarn/cache/@babel-plugin-syntax-dynamic-import-npm-7.8.3-fb9ff5634a-ce307af83c.zip +0 -0
  52. package/.yarn/cache/@babel-plugin-syntax-export-default-from-npm-7.25.7-5c2b0b3b3d-919a767e4d.zip +0 -0
  53. package/.yarn/cache/@babel-plugin-syntax-flow-npm-7.25.7-899a71fdf8-486757900b.zip +0 -0
  54. package/.yarn/cache/@babel-plugin-syntax-jsx-npm-7.25.7-77bfb68a8c-3584566707.zip +0 -0
  55. package/.yarn/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-87aca49189.zip +0 -0
  56. package/.yarn/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-01ec5547bd.zip +0 -0
  57. package/.yarn/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-fddcf581a5.zip +0 -0
  58. package/.yarn/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-910d90e72b.zip +0 -0
  59. package/.yarn/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-eef94d53a1.zip +0 -0
  60. package/.yarn/cache/@babel-plugin-syntax-typescript-npm-7.25.7-56f702acc1-b347da4c68.zip +0 -0
  61. package/.yarn/cache/@babel-plugin-transform-arrow-functions-npm-7.25.7-e2ac27ef40-e3433df7f4.zip +0 -0
  62. package/.yarn/cache/@babel-plugin-transform-async-to-generator-npm-7.25.7-3be7e84807-86fa335fb8.zip +0 -0
  63. package/.yarn/cache/@babel-plugin-transform-block-scoping-npm-7.25.7-d1f50725cd-183b985bc1.zip +0 -0
  64. package/.yarn/cache/@babel-plugin-transform-classes-npm-7.25.7-7af44e2f1f-2793844dd4.zip +0 -0
  65. package/.yarn/cache/@babel-plugin-transform-computed-properties-npm-7.25.7-070bf3416e-9496e25e78.zip +0 -0
  66. package/.yarn/cache/@babel-plugin-transform-destructuring-npm-7.25.7-831a132d7f-8b4015ef0c.zip +0 -0
  67. package/.yarn/cache/@babel-plugin-transform-flow-strip-types-npm-7.25.7-55ec98c3d4-bf991041c1.zip +0 -0
  68. package/.yarn/cache/@babel-plugin-transform-function-name-npm-7.25.7-e24a985012-5153243f85.zip +0 -0
  69. package/.yarn/cache/@babel-plugin-transform-literals-npm-7.25.7-4d172a7752-da0cec1846.zip +0 -0
  70. package/.yarn/cache/@babel-plugin-transform-modules-commonjs-npm-7.25.7-fa24f371e3-440ba085e0.zip +0 -0
  71. package/.yarn/cache/@babel-plugin-transform-named-capturing-groups-regex-npm-7.25.7-aec44e6eae-7f7e0f3721.zip +0 -0
  72. package/.yarn/cache/@babel-plugin-transform-parameters-npm-7.25.7-7ae6740aba-cd139c3852.zip +0 -0
  73. package/.yarn/cache/@babel-plugin-transform-private-methods-npm-7.25.7-5f283a129a-c952adc58b.zip +0 -0
  74. package/.yarn/cache/@babel-plugin-transform-private-property-in-object-npm-7.25.8-9fb68195ff-ecb2519bfb.zip +0 -0
  75. package/.yarn/cache/@babel-plugin-transform-react-display-name-npm-7.25.7-48c7222c46-099c1d6866.zip +0 -0
  76. package/.yarn/cache/@babel-plugin-transform-react-jsx-npm-7.25.7-fe3244a843-d87dd44fca.zip +0 -0
  77. package/.yarn/cache/@babel-plugin-transform-react-jsx-self-npm-7.25.7-1a6e2e6ec0-bce354e287.zip +0 -0
  78. package/.yarn/cache/@babel-plugin-transform-react-jsx-source-npm-7.25.7-1f60cac636-1f87d8fa16.zip +0 -0
  79. package/.yarn/cache/@babel-plugin-transform-runtime-npm-7.25.7-fa10f42460-d2a0669597.zip +0 -0
  80. package/.yarn/cache/@babel-plugin-transform-shorthand-properties-npm-7.25.7-594114419c-62f4fbd1ae.zip +0 -0
  81. package/.yarn/cache/@babel-plugin-transform-spread-npm-7.25.7-5cf89c4e98-e1c61d71fc.zip +0 -0
  82. package/.yarn/cache/@babel-plugin-transform-sticky-regex-npm-7.25.7-026eb2117b-ea1f3d9bf9.zip +0 -0
  83. package/.yarn/cache/@babel-plugin-transform-typescript-npm-7.25.7-7e29b973d6-d3b419a05e.zip +0 -0
  84. package/.yarn/cache/@babel-plugin-transform-unicode-regex-npm-7.25.7-025121992f-ba7247dbd6.zip +0 -0
  85. package/.yarn/cache/@babel-preset-flow-npm-7.25.7-19365de1a5-555e1f55fd.zip +0 -0
  86. package/.yarn/cache/@babel-preset-typescript-npm-7.25.7-4c33c9d8aa-e482651092.zip +0 -0
  87. package/.yarn/cache/@babel-register-npm-7.25.7-522606426a-54b9cd7b43.zip +0 -0
  88. package/.yarn/cache/@babel-runtime-npm-7.25.7-67dab27f3f-1d6133ed1c.zip +0 -0
  89. package/.yarn/cache/@babel-template-npm-7.25.7-4db3590fa2-83f025a4a7.zip +0 -0
  90. package/.yarn/cache/@babel-traverse-npm-7.25.7-0ca7b771fb-4d329b6e7a.zip +0 -0
  91. package/.yarn/cache/@babel-types-npm-7.25.8-44acfff5f6-93d84858e8.zip +0 -0
  92. package/.yarn/cache/@hapi-hoek-npm-9.3.0-447eb8d274-4771c7a776.zip +0 -0
  93. package/.yarn/cache/@hapi-topo-npm-5.1.0-5e0b776809-604dfd5dde.zip +0 -0
  94. package/.yarn/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-4a473b9b32.zip +0 -0
  95. package/.yarn/cache/@isaacs-ttlcache-npm-1.4.1-1de33cdaab-b99f0918fa.zip +0 -0
  96. package/.yarn/cache/@jest-create-cache-key-function-npm-29.7.0-786396764f-681bc761fa.zip +0 -0
  97. package/.yarn/cache/@jest-environment-npm-29.7.0-97705658d0-6fb398143b.zip +0 -0
  98. package/.yarn/cache/@jest-fake-timers-npm-29.7.0-e4174d1b56-caf2bbd11f.zip +0 -0
  99. package/.yarn/cache/@jest-schemas-npm-29.6.3-292730e442-910040425f.zip +0 -0
  100. package/.yarn/cache/@jest-types-npm-26.6.2-fca9877d98-a0bd3d2f22.zip +0 -0
  101. package/.yarn/cache/@jest-types-npm-29.6.3-a584ca999d-a0bcf15dbb.zip +0 -0
  102. package/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.5-d8b85ebeaf-ff7a1764eb.zip +0 -0
  103. package/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.2-5bc4245992-83b85f72c5.zip +0 -0
  104. package/.yarn/cache/@jridgewell-set-array-npm-1.2.1-2312928209-832e513a85.zip +0 -0
  105. package/.yarn/cache/@jridgewell-source-map-npm-0.3.6-fe0849eb05-c9dc7d8993.zip +0 -0
  106. package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.5.0-dfd9126d71-05df4f2538.zip +0 -0
  107. package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.25-c076fd2279-9d3c40d225.zip +0 -0
  108. package/.yarn/cache/@npmcli-agent-npm-2.2.2-e2f559d6c0-67de7b88cc.zip +0 -0
  109. package/.yarn/cache/@npmcli-fs-npm-3.1.1-c19bd09f3c-d960cab4b9.zip +0 -0
  110. package/.yarn/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-6ad6a00fc4.zip +0 -0
  111. package/.yarn/cache/@react-native-assets-registry-npm-0.73.1-6ddee188d1-d9d09774d4.zip +0 -0
  112. package/.yarn/cache/@react-native-babel-plugin-codegen-npm-0.73.4-25ea23de17-b32651c29d.zip +0 -0
  113. package/.yarn/cache/@react-native-babel-preset-npm-0.73.21-4c33b7677a-111b09b211.zip +0 -0
  114. package/.yarn/cache/@react-native-codegen-npm-0.73.3-9f27c391b6-0898481300.zip +0 -0
  115. package/.yarn/cache/@react-native-community-cli-clean-npm-12.3.6-59c03f7445-bc0ae6d198.zip +0 -0
  116. package/.yarn/cache/@react-native-community-cli-config-npm-12.3.6-3737d075cc-1f372dac33.zip +0 -0
  117. package/.yarn/cache/@react-native-community-cli-debugger-ui-npm-12.3.6-481a7824f5-8ecb7a9ea8.zip +0 -0
  118. package/.yarn/cache/@react-native-community-cli-doctor-npm-12.3.6-ea25c2621a-9f2d4b5be2.zip +0 -0
  119. package/.yarn/cache/@react-native-community-cli-hermes-npm-12.3.6-e3399d982f-fcf5240323.zip +0 -0
  120. package/.yarn/cache/@react-native-community-cli-npm-12.3.6-6c09a023aa-0a410ddcd3.zip +0 -0
  121. package/.yarn/cache/@react-native-community-cli-platform-android-npm-12.3.6-a754ee893a-82e8939daa.zip +0 -0
  122. package/.yarn/cache/@react-native-community-cli-platform-ios-npm-12.3.6-208c3ad322-af0d53b271.zip +0 -0
  123. package/.yarn/cache/@react-native-community-cli-plugin-metro-npm-12.3.6-187aa99b86-e184bf230b.zip +0 -0
  124. package/.yarn/cache/@react-native-community-cli-plugin-npm-0.73.17-40635d295b-e5b3919465.zip +0 -0
  125. package/.yarn/cache/@react-native-community-cli-server-api-npm-12.3.6-ddd6f23701-bc5e0dcb84.zip +0 -0
  126. package/.yarn/cache/@react-native-community-cli-tools-npm-12.3.6-ef130e7260-b820e8822e.zip +0 -0
  127. package/.yarn/cache/@react-native-community-cli-types-npm-12.3.6-21a9b9ed17-f087c41d7b.zip +0 -0
  128. package/.yarn/cache/@react-native-debugger-frontend-npm-0.73.3-f481b7f8a9-71ecf6fdf3.zip +0 -0
  129. package/.yarn/cache/@react-native-dev-middleware-npm-0.73.8-2e5e293371-1b05cd4f36.zip +0 -0
  130. package/.yarn/cache/@react-native-gradle-plugin-npm-0.73.4-6535082666-f72e2a9fc4.zip +0 -0
  131. package/.yarn/cache/@react-native-js-polyfills-npm-0.73.1-2c6bf04429-ec5899c3f2.zip +0 -0
  132. package/.yarn/cache/@react-native-metro-babel-transformer-npm-0.73.15-27a357969d-49d2a5c191.zip +0 -0
  133. package/.yarn/cache/@react-native-normalize-colors-npm-0.73.2-5f230fc94d-ddf9384ad4.zip +0 -0
  134. package/.yarn/cache/@react-native-virtualized-lists-npm-0.73.4-b74fc29c28-59826b146c.zip +0 -0
  135. package/.yarn/cache/@sideway-address-npm-4.1.5-a3852745c8-3e3ea0f00b.zip +0 -0
  136. package/.yarn/cache/@sideway-formula-npm-3.0.1-ee371b2ddf-e4beeebc9d.zip +0 -0
  137. package/.yarn/cache/@sideway-pinpoint-npm-2.0.0-66d94e687e-0f4491e589.zip +0 -0
  138. package/.yarn/cache/@sinclair-typebox-npm-0.27.8-23e206d653-00bd7362a3.zip +0 -0
  139. package/.yarn/cache/@sinonjs-commons-npm-3.0.1-bffb9f5a53-a7c3e7cc61.zip +0 -0
  140. package/.yarn/cache/@sinonjs-fake-timers-npm-10.3.0-7417f876b4-614d30cb4d.zip +0 -0
  141. package/.yarn/cache/@types-istanbul-lib-coverage-npm-2.0.6-2ea31fda9c-3feac423fd.zip +0 -0
  142. package/.yarn/cache/@types-istanbul-lib-report-npm-3.0.3-a5c0ef4b88-b91e9b60f8.zip +0 -0
  143. package/.yarn/cache/@types-istanbul-reports-npm-3.0.4-1afa69db29-93eb188357.zip +0 -0
  144. package/.yarn/cache/@types-node-npm-22.7.5-0428b60a8c-1a8bbb504e.zip +0 -0
  145. package/.yarn/cache/@types-stack-utils-npm-2.0.3-48a0a03262-72576cc152.zip +0 -0
  146. package/.yarn/cache/@types-yargs-npm-15.0.19-6387136847-6a509db363.zip +0 -0
  147. package/.yarn/cache/@types-yargs-npm-17.0.33-1d6cca6a2e-ee013f2574.zip +0 -0
  148. package/.yarn/cache/@types-yargs-parser-npm-21.0.3-1d265246a1-ef236c27f9.zip +0 -0
  149. package/.yarn/cache/abbrev-npm-2.0.0-0eb38a17e5-0e994ad2aa.zip +0 -0
  150. package/.yarn/cache/abort-controller-npm-3.0.0-2f3a9a2bcb-170bdba9b4.zip +0 -0
  151. package/.yarn/cache/accepts-npm-1.3.8-9a812371c9-50c43d32e7.zip +0 -0
  152. package/.yarn/cache/acorn-npm-8.12.1-610871d57c-677880034a.zip +0 -0
  153. package/.yarn/cache/agent-base-npm-7.1.1-c9e1a4b59e-51c158769c.zip +0 -0
  154. package/.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip +0 -0
  155. package/.yarn/cache/anser-npm-1.4.10-3fa41e8526-3823c64f89.zip +0 -0
  156. package/.yarn/cache/ansi-fragments-npm-0.2.1-7617f2a498-22c3eb8a0a.zip +0 -0
  157. package/.yarn/cache/ansi-regex-npm-4.1.1-af0a582bb9-b1a6ee44cb.zip +0 -0
  158. package/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip +0 -0
  159. package/.yarn/cache/ansi-regex-npm-6.1.0-abe011aae4-495834a53b.zip +0 -0
  160. package/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip +0 -0
  161. package/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip +0 -0
  162. package/.yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-d7f4e97ce0.zip +0 -0
  163. package/.yarn/cache/ansi-styles-npm-6.2.1-d43647018c-ef940f2f0c.zip +0 -0
  164. package/.yarn/cache/anymatch-npm-3.1.3-bc81d103b1-3e044fd6d1.zip +0 -0
  165. package/.yarn/cache/appdirsjs-npm-1.2.7-fcd05e6058-3411b4e31e.zip +0 -0
  166. package/.yarn/cache/argparse-npm-1.0.10-528934e59d-7ca6e45583.zip +0 -0
  167. package/.yarn/cache/asap-npm-2.0.6-36714d439d-b296c92c4b.zip +0 -0
  168. package/.yarn/cache/ast-types-npm-0.15.2-a09d26e72b-24f0d86bf9.zip +0 -0
  169. package/.yarn/cache/astral-regex-npm-1.0.0-2df7c41332-93417fc087.zip +0 -0
  170. package/.yarn/cache/async-limiter-npm-1.0.1-7e6819bcdb-2b849695b4.zip +0 -0
  171. package/.yarn/cache/babel-core-npm-7.0.0-bridge.0-7fe146b78f-2a1cb87901.zip +0 -0
  172. package/.yarn/cache/babel-plugin-polyfill-corejs2-npm-0.4.11-77e1239277-f098353ce7.zip +0 -0
  173. package/.yarn/cache/babel-plugin-polyfill-corejs3-npm-0.10.6-066bf0a146-f762f29f7a.zip +0 -0
  174. package/.yarn/cache/babel-plugin-polyfill-regenerator-npm-0.6.2-c6dd64788f-1502335710.zip +0 -0
  175. package/.yarn/cache/babel-plugin-transform-flow-enums-npm-0.0.2-dbfa5d78ce-fd52aef544.zip +0 -0
  176. package/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip +0 -0
  177. package/.yarn/cache/base64-js-npm-1.5.1-b2f7275641-669632eb37.zip +0 -0
  178. package/.yarn/cache/bl-npm-4.1.0-7f94cdcf3f-9e8521fa7e.zip +0 -0
  179. package/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip +0 -0
  180. package/.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip +0 -0
  181. package/.yarn/cache/braces-npm-3.0.3-582c14023c-b95aa0b3bd.zip +0 -0
  182. package/.yarn/cache/browserslist-npm-4.24.0-6b67324c87-de200d3eb8.zip +0 -0
  183. package/.yarn/cache/bser-npm-2.1.1-cc902055ce-9ba4dc58ce.zip +0 -0
  184. package/.yarn/cache/buffer-from-npm-1.1.2-03d2f20d7e-0448524a56.zip +0 -0
  185. package/.yarn/cache/buffer-npm-5.7.1-513ef8259e-e2cf8429e1.zip +0 -0
  186. package/.yarn/cache/bytes-npm-3.0.0-19be09472d-a2b386dd81.zip +0 -0
  187. package/.yarn/cache/cacache-npm-18.0.4-3dc4edc849-b7422c113b.zip +0 -0
  188. package/.yarn/cache/caller-callsite-npm-2.0.0-9cf308d7bb-b685e9d126.zip +0 -0
  189. package/.yarn/cache/caller-path-npm-2.0.0-7ff6a26cb9-3e12ccd0c7.zip +0 -0
  190. package/.yarn/cache/callsites-npm-2.0.0-cc39942b7f-be2f67b247.zip +0 -0
  191. package/.yarn/cache/camelcase-npm-5.3.1-5db8af62c5-e6effce26b.zip +0 -0
  192. package/.yarn/cache/camelcase-npm-6.3.0-e5e42a0d15-8c96818a90.zip +0 -0
  193. package/.yarn/cache/caniuse-lite-npm-1.0.30001668-3790c91b54-ce6996901b.zip +0 -0
  194. package/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip +0 -0
  195. package/.yarn/cache/chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip +0 -0
  196. package/.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip +0 -0
  197. package/.yarn/cache/chrome-launcher-npm-0.15.2-bafd42e412-e1f8131b9f.zip +0 -0
  198. package/.yarn/cache/chromium-edge-launcher-npm-1.0.0-aa738bd0f5-77ce4fc03e.zip +0 -0
  199. package/.yarn/cache/ci-info-npm-2.0.0-78012236a1-3b374666a8.zip +0 -0
  200. package/.yarn/cache/ci-info-npm-3.9.0-646784ca0e-6b19dc9b29.zip +0 -0
  201. package/.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip +0 -0
  202. package/.yarn/cache/cli-cursor-npm-3.1.0-fee1e46b5e-2692784c6c.zip +0 -0
  203. package/.yarn/cache/cli-spinners-npm-2.9.2-be9c08efee-1bd588289b.zip +0 -0
  204. package/.yarn/cache/cliui-npm-6.0.0-488b2414c6-4fcfd26d29.zip +0 -0
  205. package/.yarn/cache/cliui-npm-8.0.1-3b029092cf-79648b3b00.zip +0 -0
  206. package/.yarn/cache/clone-deep-npm-4.0.1-70adab92c8-770f912fe4.zip +0 -0
  207. package/.yarn/cache/clone-npm-1.0.4-a610fcbcf9-d06418b733.zip +0 -0
  208. package/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip +0 -0
  209. package/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip +0 -0
  210. package/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip +0 -0
  211. package/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip +0 -0
  212. package/.yarn/cache/colorette-npm-1.4.0-7e94b44dc3-01c3c16058.zip +0 -0
  213. package/.yarn/cache/command-exists-npm-1.2.9-cc51a1f78a-729ae3d88a.zip +0 -0
  214. package/.yarn/cache/commander-npm-2.20.3-d8dcbaa39b-ab8c07884e.zip +0 -0
  215. package/.yarn/cache/commander-npm-9.5.0-993b3f2434-c7a3e27aa5.zip +0 -0
  216. package/.yarn/cache/commondir-npm-1.0.1-291b790340-59715f2fc4.zip +0 -0
  217. package/.yarn/cache/compressible-npm-2.0.18-ee5ab04d88-58321a85b3.zip +0 -0
  218. package/.yarn/cache/compression-npm-1.7.4-e0cd6afa69-35c0f2eb1f.zip +0 -0
  219. package/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip +0 -0
  220. package/.yarn/cache/connect-npm-3.7.0-25ccb085cc-96e1c4effc.zip +0 -0
  221. package/.yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-63ae9933be.zip +0 -0
  222. package/.yarn/cache/core-js-compat-npm-3.38.1-4114633af1-a0a5673bcd.zip +0 -0
  223. package/.yarn/cache/core-util-is-npm-1.0.3-ca74b76c90-9de8597363.zip +0 -0
  224. package/.yarn/cache/cosmiconfig-npm-5.2.1-4a84462a41-8b6f1d3c8a.zip +0 -0
  225. package/.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip +0 -0
  226. package/.yarn/cache/dayjs-npm-1.11.13-d478bb9479-f388db88a6.zip +0 -0
  227. package/.yarn/cache/debug-npm-2.6.9-7d4cb597dc-d2f51589ca.zip +0 -0
  228. package/.yarn/cache/debug-npm-4.3.7-385645adf9-822d74e209.zip +0 -0
  229. package/.yarn/cache/decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip +0 -0
  230. package/.yarn/cache/deepmerge-npm-4.3.1-4f751a0844-2024c6a980.zip +0 -0
  231. package/.yarn/cache/defaults-npm-1.0.4-f3fbaf2528-3a88b7a587.zip +0 -0
  232. package/.yarn/cache/denodeify-npm-1.2.1-ea99c72a1c-a85c8f7fce.zip +0 -0
  233. package/.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip +0 -0
  234. package/.yarn/cache/deprecated-react-native-prop-types-npm-5.0.0-8fa80db745-ccbd421473.zip +0 -0
  235. package/.yarn/cache/destroy-npm-1.2.0-6a511802e2-0acb300b74.zip +0 -0
  236. package/.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-7d00d7cd8e.zip +0 -0
  237. package/.yarn/cache/ee-first-npm-1.1.1-33f8535b39-1b4cac778d.zip +0 -0
  238. package/.yarn/cache/electron-to-chromium-npm-1.5.36-6e4a25fa19-1f83daebdf.zip +0 -0
  239. package/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip +0 -0
  240. package/.yarn/cache/emoji-regex-npm-9.2.2-e6fac8d058-8487182da7.zip +0 -0
  241. package/.yarn/cache/encodeurl-npm-1.0.2-f8c8454c41-e50e3d508c.zip +0 -0
  242. package/.yarn/cache/encodeurl-npm-2.0.0-3660bcc92a-abf5cd51b7.zip +0 -0
  243. package/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip +0 -0
  244. package/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip +0 -0
  245. package/.yarn/cache/envinfo-npm-7.14.0-624fecc5a5-137c1dd9a4.zip +0 -0
  246. package/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip +0 -0
  247. package/.yarn/cache/error-ex-npm-1.3.2-5654f80c0f-c1c2b8b65f.zip +0 -0
  248. package/.yarn/cache/error-stack-parser-npm-2.1.4-5b9f7fc0c2-3b916d2d14.zip +0 -0
  249. package/.yarn/cache/errorhandler-npm-1.5.1-bbeb9f9d1b-73b7abb08f.zip +0 -0
  250. package/.yarn/cache/escalade-npm-3.2.0-19b50dd48f-47b029c83d.zip +0 -0
  251. package/.yarn/cache/escape-html-npm-1.0.3-376c22ee74-6213ca9ae0.zip +0 -0
  252. package/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip +0 -0
  253. package/.yarn/cache/escape-string-regexp-npm-2.0.0-aef69d2a25-9f8a2d5743.zip +0 -0
  254. package/.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-98b48897d9.zip +0 -0
  255. package/.yarn/cache/esprima-npm-4.0.1-1084e98778-b45bc805a6.zip +0 -0
  256. package/.yarn/cache/etag-npm-1.8.1-54a3b989d9-571aeb3dbe.zip +0 -0
  257. package/.yarn/cache/event-target-shim-npm-5.0.1-cb48709025-1ffe3bb22a.zip +0 -0
  258. package/.yarn/cache/execa-npm-5.1.1-191347acf5-fba9022c8c.zip +0 -0
  259. package/.yarn/cache/exponential-backoff-npm-3.1.1-04df458b30-3d21519a4f.zip +0 -0
  260. package/.yarn/cache/fast-xml-parser-npm-4.5.0-353a57f69a-696dc98da4.zip +0 -0
  261. package/.yarn/cache/fb-watchman-npm-2.0.2-bcb6f8f831-b15a124cef.zip +0 -0
  262. package/.yarn/cache/fill-range-npm-7.1.1-bf491486db-b4abfbca38.zip +0 -0
  263. package/.yarn/cache/finalhandler-npm-1.1.2-55a75d6b53-617880460c.zip +0 -0
  264. package/.yarn/cache/find-cache-dir-npm-2.1.0-772aa82638-60ad475a6d.zip +0 -0
  265. package/.yarn/cache/find-up-npm-3.0.0-a2d4b1b317-38eba3fe7a.zip +0 -0
  266. package/.yarn/cache/find-up-npm-4.1.0-c3ccf8d855-4c172680e8.zip +0 -0
  267. package/.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip +0 -0
  268. package/.yarn/cache/flow-enums-runtime-npm-0.0.6-e57295284d-c60412ed6d.zip +0 -0
  269. package/.yarn/cache/flow-parser-npm-0.206.0-3034b89aaf-1b87d87b59.zip +0 -0
  270. package/.yarn/cache/flow-parser-npm-0.248.0-bf15b72821-683a587708.zip +0 -0
  271. package/.yarn/cache/foreground-child-npm-3.3.0-b8be745271-1989698488.zip +0 -0
  272. package/.yarn/cache/fresh-npm-0.5.2-ad2bb4c0a2-13ea8b08f9.zip +0 -0
  273. package/.yarn/cache/fs-extra-npm-8.1.0-197473387f-bf44f0e6ce.zip +0 -0
  274. package/.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip +0 -0
  275. package/.yarn/cache/fs-minipass-npm-3.0.3-d148d6ac19-8722a41109.zip +0 -0
  276. package/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip +0 -0
  277. package/.yarn/cache/fsevents-npm-2.3.3-ce9fb0ffae-11e6ea6fea.zip +0 -0
  278. package/.yarn/cache/fsevents-patch-21ad2b1333-8.zip +0 -0
  279. package/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip +0 -0
  280. package/.yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-a7437e58c6.zip +0 -0
  281. package/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-b9769a836d.zip +0 -0
  282. package/.yarn/cache/get-stream-npm-6.0.1-83e51a4642-e04ecece32.zip +0 -0
  283. package/.yarn/cache/glob-npm-10.4.5-8c63175f05-0bc725de5e.zip +0 -0
  284. package/.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip +0 -0
  285. package/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip +0 -0
  286. package/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip +0 -0
  287. package/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip +0 -0
  288. package/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip +0 -0
  289. package/.yarn/cache/hasown-npm-2.0.2-80fe6c9901-e8516f776a.zip +0 -0
  290. package/.yarn/cache/hermes-estree-npm-0.15.0-9bef2fbca9-227d7ac117.zip +0 -0
  291. package/.yarn/cache/hermes-estree-npm-0.23.1-b96541fb28-0f63edc365.zip +0 -0
  292. package/.yarn/cache/hermes-parser-npm-0.15.0-2e0dc714e4-6c06a57a39.zip +0 -0
  293. package/.yarn/cache/hermes-parser-npm-0.23.1-031eeefaa0-a08008928a.zip +0 -0
  294. package/.yarn/cache/hermes-profile-transformer-npm-0.0.6-80b3a74e21-b5f874eaa6.zip +0 -0
  295. package/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip +0 -0
  296. package/.yarn/cache/http-errors-npm-2.0.0-3f1c503428-9b0a378266.zip +0 -0
  297. package/.yarn/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-670858c8f8.zip +0 -0
  298. package/.yarn/cache/https-proxy-agent-npm-7.0.5-94c14d4619-2e1a28960f.zip +0 -0
  299. package/.yarn/cache/human-signals-npm-2.1.0-f75815481d-b87fd89fce.zip +0 -0
  300. package/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip +0 -0
  301. package/.yarn/cache/ieee754-npm-1.2.1-fb63b3caeb-5144c0c981.zip +0 -0
  302. package/.yarn/cache/image-size-npm-1.1.1-4e6d664667-23b3a515dd.zip +0 -0
  303. package/.yarn/cache/import-fresh-npm-2.0.0-8b4e6073aa-610255f975.zip +0 -0
  304. package/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip +0 -0
  305. package/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip +0 -0
  306. package/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip +0 -0
  307. package/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip +0 -0
  308. package/.yarn/cache/invariant-npm-2.2.4-717fbdb119-cc3182d793.zip +0 -0
  309. package/.yarn/cache/ip-address-npm-9.0.5-9fa024d42a-aa15f12cfd.zip +0 -0
  310. package/.yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-eef4417e3c.zip +0 -0
  311. package/.yarn/cache/is-core-module-npm-2.15.1-34c73a6cbd-df134c1681.zip +0 -0
  312. package/.yarn/cache/is-directory-npm-0.3.1-e835db28ed-dce9a9d398.zip +0 -0
  313. package/.yarn/cache/is-docker-npm-2.2.1-3f18a53aff-3fef7ddbf0.zip +0 -0
  314. package/.yarn/cache/is-fullwidth-code-point-npm-2.0.0-507f56ec71-eef9c6e15f.zip +0 -0
  315. package/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip +0 -0
  316. package/.yarn/cache/is-interactive-npm-1.0.0-7ff7c6e04a-824808776e.zip +0 -0
  317. package/.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip +0 -0
  318. package/.yarn/cache/is-number-npm-7.0.0-060086935c-456ac6f8e0.zip +0 -0
  319. package/.yarn/cache/is-plain-object-npm-2.0.4-da3265d804-2a401140cf.zip +0 -0
  320. package/.yarn/cache/is-stream-npm-2.0.1-c802db55e7-b8e05ccdf9.zip +0 -0
  321. package/.yarn/cache/is-unicode-supported-npm-0.1.0-0833e1bbfb-a2aab86ee7.zip +0 -0
  322. package/.yarn/cache/is-wsl-npm-1.1.0-136e2b7c74-ea157d2323.zip +0 -0
  323. package/.yarn/cache/is-wsl-npm-2.2.0-2ba10d6393-20849846ae.zip +0 -0
  324. package/.yarn/cache/isarray-npm-1.0.0-db4f547720-f032df8e02.zip +0 -0
  325. package/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip +0 -0
  326. package/.yarn/cache/isexe-npm-3.1.1-9c0061eead-7fe1931ee4.zip +0 -0
  327. package/.yarn/cache/isobject-npm-3.0.1-8145901fd2-db85c4c970.zip +0 -0
  328. package/.yarn/cache/jackspeak-npm-3.4.3-546bfad080-be31027fc7.zip +0 -0
  329. package/.yarn/cache/jest-environment-node-npm-29.7.0-860b5e25ec-501a996629.zip +0 -0
  330. package/.yarn/cache/jest-get-type-npm-29.6.3-500477292e-88ac9102d4.zip +0 -0
  331. package/.yarn/cache/jest-message-util-npm-29.7.0-7f88b6e8d1-a9d025b1c6.zip +0 -0
  332. package/.yarn/cache/jest-mock-npm-29.7.0-22c4769d06-81ba9b6868.zip +0 -0
  333. package/.yarn/cache/jest-util-npm-29.7.0-ff1d59714b-042ab4980f.zip +0 -0
  334. package/.yarn/cache/jest-validate-npm-29.7.0-795ac5ede8-191fcdc980.zip +0 -0
  335. package/.yarn/cache/jest-worker-npm-29.7.0-4d3567fed6-30fff60af4.zip +0 -0
  336. package/.yarn/cache/joi-npm-17.13.3-866dad5bc8-66ed454fee.zip +0 -0
  337. package/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip +0 -0
  338. package/.yarn/cache/js-yaml-npm-3.14.1-b968c6095e-bef146085f.zip +0 -0
  339. package/.yarn/cache/jsbn-npm-1.1.0-1da0181838-944f924f2b.zip +0 -0
  340. package/.yarn/cache/jsc-android-npm-250231.0.0-8322f50944-6c3f0f6f02.zip +0 -0
  341. package/.yarn/cache/jsc-safe-url-npm-0.2.4-4c5f8d6d7b-53b5741ba2.zip +0 -0
  342. package/.yarn/cache/jscodeshift-npm-0.14.0-76e38c9080-54ea6d6394.zip +0 -0
  343. package/.yarn/cache/jsesc-npm-3.0.2-3b3b74ec0d-a36d3ca405.zip +0 -0
  344. package/.yarn/cache/json-parse-better-errors-npm-1.0.2-7f37637d19-ff2b5ba2a7.zip +0 -0
  345. package/.yarn/cache/json5-npm-2.2.3-9962c55073-2a7436a933.zip +0 -0
  346. package/.yarn/cache/jsonfile-npm-4.0.0-10ce3aea15-6447d6224f.zip +0 -0
  347. package/.yarn/cache/kind-of-npm-6.0.3-ab15f36220-3ab01e7b1d.zip +0 -0
  348. package/.yarn/cache/kleur-npm-3.0.3-f6f53649a4-df82cd1e17.zip +0 -0
  349. package/.yarn/cache/leven-npm-3.1.0-b7697736a3-638401d534.zip +0 -0
  350. package/.yarn/cache/lighthouse-logger-npm-1.4.2-04e1728218-ba6b73d934.zip +0 -0
  351. package/.yarn/cache/locate-path-npm-3.0.0-991671ae9f-53db399667.zip +0 -0
  352. package/.yarn/cache/locate-path-npm-5.0.0-46580c43e4-83e51725e6.zip +0 -0
  353. package/.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip +0 -0
  354. package/.yarn/cache/lodash.debounce-npm-4.0.8-f1d6e09799-a3f527d22c.zip +0 -0
  355. package/.yarn/cache/lodash.throttle-npm-4.1.1-856641af92-129c0a28ce.zip +0 -0
  356. package/.yarn/cache/log-symbols-npm-4.1.0-0a13492d8b-fce1497b31.zip +0 -0
  357. package/.yarn/cache/logkitty-npm-0.7.1-222a2102c2-f1af990ff0.zip +0 -0
  358. package/.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip +0 -0
  359. package/.yarn/cache/lru-cache-npm-10.4.3-30c10b861a-6476138d21.zip +0 -0
  360. package/.yarn/cache/lru-cache-npm-5.1.1-f475882a51-c154ae1cbb.zip +0 -0
  361. package/.yarn/cache/make-dir-npm-2.1.0-1ddaf205e7-043548886b.zip +0 -0
  362. package/.yarn/cache/make-fetch-happen-npm-13.0.1-4180f2aaa8-5c9fad6955.zip +0 -0
  363. package/.yarn/cache/makeerror-npm-1.0.12-69abf085d7-b38a025a12.zip +0 -0
  364. package/.yarn/cache/marky-npm-1.2.5-007e6cc885-823b946677.zip +0 -0
  365. package/.yarn/cache/memoize-one-npm-5.2.1-ee0f8be979-a3cba7b824.zip +0 -0
  366. package/.yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-6fa4dcc8d8.zip +0 -0
  367. package/.yarn/cache/metro-babel-transformer-npm-0.80.12-181bafda20-1ea8bce0c1.zip +0 -0
  368. package/.yarn/cache/metro-cache-key-npm-0.80.12-38ad08be54-7a06601180.zip +0 -0
  369. package/.yarn/cache/metro-cache-npm-0.80.12-711aaffee1-724e33fdda.zip +0 -0
  370. package/.yarn/cache/metro-config-npm-0.80.12-2cfceb58bb-49496d2bc8.zip +0 -0
  371. package/.yarn/cache/metro-core-npm-0.80.12-ff30cce463-319f3965fa.zip +0 -0
  372. package/.yarn/cache/metro-file-map-npm-0.80.12-b1afc5df14-5e6eafcfaf.zip +0 -0
  373. package/.yarn/cache/metro-minify-terser-npm-0.80.12-7e0e86c5f6-ff527b3f04.zip +0 -0
  374. package/.yarn/cache/metro-npm-0.80.12-22fc2f7367-8016f7448e.zip +0 -0
  375. package/.yarn/cache/metro-resolver-npm-0.80.12-de2c2a6cdf-a520030a65.zip +0 -0
  376. package/.yarn/cache/metro-runtime-npm-0.80.12-8e7410ce37-11a6d36c7d.zip +0 -0
  377. package/.yarn/cache/metro-source-map-npm-0.80.12-be9e4ab885-39575bff86.zip +0 -0
  378. package/.yarn/cache/metro-symbolicate-npm-0.80.12-e606a89ac8-b775e4613d.zip +0 -0
  379. package/.yarn/cache/metro-transform-plugins-npm-0.80.12-07eb90f0b6-85c99c367d.zip +0 -0
  380. package/.yarn/cache/metro-transform-worker-npm-0.80.12-382c009c6c-90684b1f11.zip +0 -0
  381. package/.yarn/cache/micromatch-npm-4.0.8-c9570e4aca-79920eb634.zip +0 -0
  382. package/.yarn/cache/mime-db-npm-1.52.0-b5371d6fd2-0d99a03585.zip +0 -0
  383. package/.yarn/cache/mime-db-npm-1.53.0-14fcdba2be-3fd9380bdc.zip +0 -0
  384. package/.yarn/cache/mime-npm-1.6.0-60ae95038a-fef25e3926.zip +0 -0
  385. package/.yarn/cache/mime-npm-2.6.0-88b89d8de0-1497ba7b9f.zip +0 -0
  386. package/.yarn/cache/mime-types-npm-2.1.35-dd9ea9f3e2-89a5b7f1de.zip +0 -0
  387. package/.yarn/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-d2421a3444.zip +0 -0
  388. package/.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip +0 -0
  389. package/.yarn/cache/minimatch-npm-9.0.5-9aa93d97fa-2c035575ed.zip +0 -0
  390. package/.yarn/cache/minimist-npm-1.2.8-d7af7b1dce-75a6d645fb.zip +0 -0
  391. package/.yarn/cache/minipass-collect-npm-2.0.1-73d3907e40-b251bceea6.zip +0 -0
  392. package/.yarn/cache/minipass-fetch-npm-3.0.5-ed78529694-8047d27323.zip +0 -0
  393. package/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip +0 -0
  394. package/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip +0 -0
  395. package/.yarn/cache/minipass-npm-5.0.0-c64fb63c92-425dab2887.zip +0 -0
  396. package/.yarn/cache/minipass-npm-7.1.2-3a5327d36d-2bfd325b95.zip +0 -0
  397. package/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip +0 -0
  398. package/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip +0 -0
  399. package/.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip +0 -0
  400. package/.yarn/cache/mkdirp-npm-0.5.6-dcd5a6b97b-0c91b721bb.zip +0 -0
  401. package/.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip +0 -0
  402. package/.yarn/cache/ms-npm-2.0.0-9e1101a471-0e6a22b8b7.zip +0 -0
  403. package/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip +0 -0
  404. package/.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip +0 -0
  405. package/.yarn/cache/neo-async-npm-2.6.2-75d6902586-deac9f8d00.zip +0 -0
  406. package/.yarn/cache/nocache-npm-3.0.4-9393fdc373-6be9ee67eb.zip +0 -0
  407. package/.yarn/cache/node-abort-controller-npm-3.1.1-e246ed42cd-2c340916af.zip +0 -0
  408. package/.yarn/cache/node-dir-npm-0.1.17-e25963e120-29de9560e5.zip +0 -0
  409. package/.yarn/cache/node-fetch-npm-2.7.0-587d57004e-d76d2f5edb.zip +0 -0
  410. package/.yarn/cache/node-gyp-npm-10.2.0-cad1109948-0233759d8c.zip +0 -0
  411. package/.yarn/cache/node-int64-npm-0.4.0-0dc04ec3b2-d0b30b1ee6.zip +0 -0
  412. package/.yarn/cache/node-releases-npm-2.0.18-51abc46668-ef55a3d853.zip +0 -0
  413. package/.yarn/cache/node-stream-zip-npm-1.15.0-47adb9fcfb-0b73ffbb09.zip +0 -0
  414. package/.yarn/cache/nopt-npm-7.2.1-635b7da949-6fa729cc77.zip +0 -0
  415. package/.yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-88eeb4da89.zip +0 -0
  416. package/.yarn/cache/npm-run-path-npm-4.0.1-7aebd8bab3-5374c0cea4.zip +0 -0
  417. package/.yarn/cache/nullthrows-npm-1.1.1-3d1f817134-10806b9212.zip +0 -0
  418. package/.yarn/cache/ob1-npm-0.80.12-b815aaa055-c78af51d6e.zip +0 -0
  419. package/.yarn/cache/object-assign-npm-4.1.1-1004ad6dec-fcc6e4ea8c.zip +0 -0
  420. package/.yarn/cache/on-finished-npm-2.3.0-4ce92f72c6-1db595bd96.zip +0 -0
  421. package/.yarn/cache/on-finished-npm-2.4.1-907af70f88-d20929a25e.zip +0 -0
  422. package/.yarn/cache/on-headers-npm-1.0.2-e7cd3ea25e-2bf1346721.zip +0 -0
  423. package/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip +0 -0
  424. package/.yarn/cache/onetime-npm-5.1.2-3ed148fa42-2478859ef8.zip +0 -0
  425. package/.yarn/cache/open-npm-6.4.0-d2020c939f-e5037facf3.zip +0 -0
  426. package/.yarn/cache/open-npm-7.4.2-a378c23959-3333900ec0.zip +0 -0
  427. package/.yarn/cache/ora-npm-5.4.1-4f0343adb7-28d476ee6c.zip +0 -0
  428. package/.yarn/cache/p-limit-npm-2.3.0-94a0310039-84ff17f1a3.zip +0 -0
  429. package/.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip +0 -0
  430. package/.yarn/cache/p-locate-npm-3.0.0-74de74f952-83991734a9.zip +0 -0
  431. package/.yarn/cache/p-locate-npm-4.1.0-eec6872537-513bd14a45.zip +0 -0
  432. package/.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip +0 -0
  433. package/.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip +0 -0
  434. package/.yarn/cache/p-try-npm-2.2.0-e0390dbaf8-f8a8e9a769.zip +0 -0
  435. package/.yarn/cache/package-json-from-dist-npm-1.0.1-4631a88465-58ee9538f2.zip +0 -0
  436. package/.yarn/cache/parse-json-npm-4.0.0-a6f7771010-0fe227d410.zip +0 -0
  437. package/.yarn/cache/parseurl-npm-1.3.3-1542397e00-407cee8e0a.zip +0 -0
  438. package/.yarn/cache/path-exists-npm-3.0.0-e80371aa68-96e92643aa.zip +0 -0
  439. package/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip +0 -0
  440. package/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip +0 -0
  441. package/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip +0 -0
  442. package/.yarn/cache/path-parse-npm-1.0.7-09564527b7-49abf3d811.zip +0 -0
  443. package/.yarn/cache/path-scurry-npm-1.11.1-aaf8c339af-890d5abcd5.zip +0 -0
  444. package/.yarn/cache/picocolors-npm-1.1.0-ea12a640bd-a64d653d3a.zip +0 -0
  445. package/.yarn/cache/picomatch-npm-2.3.1-c782cfd986-050c865ce8.zip +0 -0
  446. package/.yarn/cache/pify-npm-4.0.1-062756097b-9c4e34278c.zip +0 -0
  447. package/.yarn/cache/pirates-npm-4.0.6-a8ec571a43-46a65fefaf.zip +0 -0
  448. package/.yarn/cache/pkg-dir-npm-3.0.0-16d8d93783-70c9476ffe.zip +0 -0
  449. package/.yarn/cache/pretty-format-npm-26.6.2-6edfcf7149-e3b808404d.zip +0 -0
  450. package/.yarn/cache/pretty-format-npm-29.7.0-7d330b2ea2-032c160238.zip +0 -0
  451. package/.yarn/cache/proc-log-npm-4.2.0-4d65296a9d-98f6cd012d.zip +0 -0
  452. package/.yarn/cache/process-nextick-args-npm-2.0.1-b8d7971609-1d38588e52.zip +0 -0
  453. package/.yarn/cache/promise-npm-8.3.0-fbfb957417-a69f0ddbdd.zip +0 -0
  454. package/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip +0 -0
  455. package/.yarn/cache/prompts-npm-2.4.2-f5d25d5eea-d8fd1fe638.zip +0 -0
  456. package/.yarn/cache/prop-types-npm-15.8.1-17c71ee7ee-c056d3f1c0.zip +0 -0
  457. package/.yarn/cache/queue-npm-6.0.2-ebbcf599cf-ebc2363924.zip +0 -0
  458. package/.yarn/cache/range-parser-npm-1.2.1-1a470fa390-0a268d4fea.zip +0 -0
  459. package/.yarn/cache/react-devtools-core-npm-4.28.5-064d121dfd-d8e4b32ffc.zip +0 -0
  460. package/.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-f7a19ac349.zip +0 -0
  461. package/.yarn/cache/react-is-npm-17.0.2-091bbb8db6-9d6d111d89.zip +0 -0
  462. package/.yarn/cache/react-is-npm-18.3.1-370a81e1e9-e20fe84c86.zip +0 -0
  463. package/.yarn/cache/react-native-npm-0.73.5-3b3628c526-107037a28b.zip +0 -0
  464. package/.yarn/cache/react-npm-18.2.0-1eae08fee2-88e38092da.zip +0 -0
  465. package/.yarn/cache/react-refresh-npm-0.14.2-95df341b4d-d80db4bd40.zip +0 -0
  466. package/.yarn/cache/react-shallow-renderer-npm-16.15.0-cf95219885-6052c7e3e9.zip +0 -0
  467. package/.yarn/cache/readable-stream-npm-2.3.8-67a94c2cb1-6564546703.zip +0 -0
  468. package/.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-bdcbe6c22e.zip +0 -0
  469. package/.yarn/cache/readline-npm-1.3.0-c1788eeabc-dfaf8e6ac2.zip +0 -0
  470. package/.yarn/cache/recast-npm-0.21.5-8dcd3e46d3-03cc7f5756.zip +0 -0
  471. package/.yarn/cache/regenerate-npm-1.4.2-b296c5b63a-3317a09b2f.zip +0 -0
  472. package/.yarn/cache/regenerate-unicode-properties-npm-10.2.0-3d662e6e17-d5c5fc13f8.zip +0 -0
  473. package/.yarn/cache/regenerator-runtime-npm-0.13.11-90bf536060-27481628d2.zip +0 -0
  474. package/.yarn/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-9f57c93277.zip +0 -0
  475. package/.yarn/cache/regexpu-core-npm-6.1.1-49d93c7373-ed8e3784e8.zip +0 -0
  476. package/.yarn/cache/regjsgen-npm-0.8.0-146d7cf052-a1d925ff14.zip +0 -0
  477. package/.yarn/cache/regjsparser-npm-0.11.1-ca5e88429a-231d60810c.zip +0 -0
  478. package/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-fb47e70bf0.zip +0 -0
  479. package/.yarn/cache/require-main-filename-npm-2.0.0-03eef65c84-e9e294695f.zip +0 -0
  480. package/.yarn/cache/resolve-from-npm-3.0.0-0bff35697e-fff9819254.zip +0 -0
  481. package/.yarn/cache/resolve-npm-1.22.8-098f379dfe-f8a26958aa.zip +0 -0
  482. package/.yarn/cache/resolve-patch-6603eace77-5479b7d431.zip +0 -0
  483. package/.yarn/cache/restore-cursor-npm-3.1.0-52c5a4c98f-f877dd8741.zip +0 -0
  484. package/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip +0 -0
  485. package/.yarn/cache/rimraf-npm-2.6.3-f34c6c72ec-3ea587b981.zip +0 -0
  486. package/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip +0 -0
  487. package/.yarn/cache/safe-buffer-npm-5.1.2-c27fedf6c4-f2f1f7943c.zip +0 -0
  488. package/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip +0 -0
  489. package/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip +0 -0
  490. package/.yarn/cache/scheduler-npm-0.24.0-canary-efb381bbf-20230505-6f74d88bd1-232149125c.zip +0 -0
  491. package/.yarn/cache/semver-npm-5.7.2-938ee91eaa-fb4ab5e0dd.zip +0 -0
  492. package/.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip +0 -0
  493. package/.yarn/cache/semver-npm-7.6.3-57e82c14d5-4110ec5d01.zip +0 -0
  494. package/.yarn/cache/send-npm-0.19.0-4297594770-5ae11bd900.zip +0 -0
  495. package/.yarn/cache/serialize-error-npm-2.1.0-51bc0e0932-28464a6f65.zip +0 -0
  496. package/.yarn/cache/serve-static-npm-1.16.2-5d8e560aec-dffc52feb4.zip +0 -0
  497. package/.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip +0 -0
  498. package/.yarn/cache/setprototypeof-npm-1.2.0-0fedbdcd3a-be18cbbf70.zip +0 -0
  499. package/.yarn/cache/shallow-clone-npm-3.0.1-dab5873d0d-39b3dd9630.zip +0 -0
  500. package/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip +0 -0
  501. package/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip +0 -0
  502. package/.yarn/cache/shell-quote-npm-1.8.1-fcccf06093-5f01201f4e.zip +0 -0
  503. package/.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip +0 -0
  504. package/.yarn/cache/signal-exit-npm-4.1.0-61fb957687-64c757b498.zip +0 -0
  505. package/.yarn/cache/sisteransi-npm-1.0.5-af60cc0cfa-aba6438f46.zip +0 -0
  506. package/.yarn/cache/slash-npm-3.0.0-b87de2279a-94a93fff61.zip +0 -0
  507. package/.yarn/cache/slice-ansi-npm-2.1.0-02505ccc06-4e82995aa5.zip +0 -0
  508. package/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip +0 -0
  509. package/.yarn/cache/socks-npm-2.8.3-3532b59899-7a6b7f6eed.zip +0 -0
  510. package/.yarn/cache/socks-proxy-agent-npm-8.0.4-991722041a-b2ec5051d8.zip +0 -0
  511. package/.yarn/cache/source-map-npm-0.5.7-7c3f035429-5dc2043b93.zip +0 -0
  512. package/.yarn/cache/source-map-npm-0.6.1-1a3621db16-59ce8640cf.zip +0 -0
  513. package/.yarn/cache/source-map-npm-0.7.4-bc8d018ab6-01cc5a74b1.zip +0 -0
  514. package/.yarn/cache/source-map-support-npm-0.5.21-09ca99e250-43e98d700d.zip +0 -0
  515. package/.yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-19d79aec21.zip +0 -0
  516. package/.yarn/cache/sprintf-js-npm-1.1.3-b99efd75b2-a3fdac7b49.zip +0 -0
  517. package/.yarn/cache/ssri-npm-10.0.6-6b8eaec5ce-4603d53a05.zip +0 -0
  518. package/.yarn/cache/stack-utils-npm-2.0.6-2be1099696-052bf4d25b.zip +0 -0
  519. package/.yarn/cache/stackframe-npm-1.3.4-bf4b7cc8fd-bae1596873.zip +0 -0
  520. package/.yarn/cache/stacktrace-parser-npm-0.1.10-36f3e571bd-f4fbddfc09.zip +0 -0
  521. package/.yarn/cache/statuses-npm-1.5.0-f88f91b2e9-c469b9519d.zip +0 -0
  522. package/.yarn/cache/statuses-npm-2.0.1-81d2b97fee-18c7623fdb.zip +0 -0
  523. package/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip +0 -0
  524. package/.yarn/cache/string-width-npm-5.1.2-bf60531341-7369deaa29.zip +0 -0
  525. package/.yarn/cache/string_decoder-npm-1.1.1-e46a6c1353-9ab7e56f9d.zip +0 -0
  526. package/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip +0 -0
  527. package/.yarn/cache/strip-ansi-npm-5.2.0-275214c316-bdb5f76ade.zip +0 -0
  528. package/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip +0 -0
  529. package/.yarn/cache/strip-ansi-npm-7.1.0-7453b80b79-859c73fcf2.zip +0 -0
  530. package/.yarn/cache/strip-final-newline-npm-2.0.0-340c4f7c66-69412b5e25.zip +0 -0
  531. package/.yarn/cache/strnum-npm-1.0.5-9ba11d2a0a-651b2031db.zip +0 -0
  532. package/.yarn/cache/sudo-prompt-npm-9.2.1-673cc9fe7b-50a29eec2f.zip +0 -0
  533. package/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip +0 -0
  534. package/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip +0 -0
  535. package/.yarn/cache/supports-color-npm-8.1.1-289e937149-c052193a7e.zip +0 -0
  536. package/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-53b1e247e6.zip +0 -0
  537. package/.yarn/cache/tar-npm-6.2.1-237800bb20-f1322768c9.zip +0 -0
  538. package/.yarn/cache/temp-dir-npm-2.0.0-e8af180805-cc4f0404bf.zip +0 -0
  539. package/.yarn/cache/temp-npm-0.8.4-d7c7d71d12-f35bed7856.zip +0 -0
  540. package/.yarn/cache/terser-npm-5.34.1-5a74f20db9-19a6710e17.zip +0 -0
  541. package/.yarn/cache/throat-npm-5.0.0-288ce6540a-031ff7f443.zip +0 -0
  542. package/.yarn/cache/through2-npm-2.0.5-77d90f13cd-beb0f338aa.zip +0 -0
  543. package/.yarn/cache/tmpl-npm-1.0.5-d399ba37e2-cd922d9b85.zip +0 -0
  544. package/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip +0 -0
  545. package/.yarn/cache/to-regex-range-npm-5.0.1-f1e8263b00-f76fa01b3d.zip +0 -0
  546. package/.yarn/cache/toidentifier-npm-1.0.1-f759712599-952c29e2a8.zip +0 -0
  547. package/.yarn/cache/tr46-npm-0.0.3-de53018915-726321c5ea.zip +0 -0
  548. package/.yarn/cache/tslib-npm-2.7.0-21668f5c21-1606d5c89f.zip +0 -0
  549. package/.yarn/cache/type-detect-npm-4.0.8-8d8127b901-62b5628bff.zip +0 -0
  550. package/.yarn/cache/type-fest-npm-0.7.1-7b37912923-5b1b113529.zip +0 -0
  551. package/.yarn/cache/typescript-npm-5.0.4-122f6a883a-82b94da3f4.zip +0 -0
  552. package/.yarn/cache/typescript-patch-ecf29fafbd-d26b6ba97b.zip +0 -0
  553. package/.yarn/cache/undici-types-npm-6.19.8-9f12285b7a-de51f1b447.zip +0 -0
  554. package/.yarn/cache/unicode-canonical-property-names-ecmascript-npm-2.0.1-80cef17f3b-3c3dabdb1d.zip +0 -0
  555. package/.yarn/cache/unicode-match-property-ecmascript-npm-2.0.0-97a00fd52c-1f34a7434a.zip +0 -0
  556. package/.yarn/cache/unicode-match-property-value-ecmascript-npm-2.2.0-011b10a684-9e3151e1d0.zip +0 -0
  557. package/.yarn/cache/unicode-property-aliases-ecmascript-npm-2.1.0-46779595f4-2435244318.zip +0 -0
  558. package/.yarn/cache/unique-filename-npm-3.0.0-77d68e0a45-8e2f59b356.zip +0 -0
  559. package/.yarn/cache/unique-slug-npm-4.0.0-e6b08f28aa-0884b58365.zip +0 -0
  560. package/.yarn/cache/universalify-npm-0.1.2-9b22d31d2d-40cdc60f6e.zip +0 -0
  561. package/.yarn/cache/unpipe-npm-1.0.0-2ed2a3c2bf-4fa18d8d8d.zip +0 -0
  562. package/.yarn/cache/update-browserslist-db-npm-1.1.1-16e34017b1-2ea11bd256.zip +0 -0
  563. package/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip +0 -0
  564. package/.yarn/cache/utils-merge-npm-1.0.1-363bbdfbca-c810954932.zip +0 -0
  565. package/.yarn/cache/vary-npm-1.1.2-b49f70ae63-ae0123222c.zip +0 -0
  566. package/.yarn/cache/vlq-npm-1.0.1-2ab4a14841-67ab6dd35c.zip +0 -0
  567. package/.yarn/cache/walker-npm-1.0.8-b0a05b9478-ad7a257ea1.zip +0 -0
  568. package/.yarn/cache/wcwidth-npm-1.0.1-05fa596453-814e9d1ddc.zip +0 -0
  569. package/.yarn/cache/webidl-conversions-npm-3.0.1-60310f6a2b-c92a0a6ab9.zip +0 -0
  570. package/.yarn/cache/whatwg-fetch-npm-3.6.20-a6f79b98c4-c58851ea2c.zip +0 -0
  571. package/.yarn/cache/whatwg-url-npm-5.0.0-374fb45e60-b8daed4ad3.zip +0 -0
  572. package/.yarn/cache/which-module-npm-2.0.1-90f889f6f6-1967b7ce17.zip +0 -0
  573. package/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip +0 -0
  574. package/.yarn/cache/which-npm-4.0.0-dd31cd4928-f17e84c042.zip +0 -0
  575. package/.yarn/cache/wrap-ansi-npm-6.2.0-439a7246d8-6cd96a4101.zip +0 -0
  576. package/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip +0 -0
  577. package/.yarn/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-371733296d.zip +0 -0
  578. package/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip +0 -0
  579. package/.yarn/cache/write-file-atomic-npm-2.4.3-f3fc725df3-2db81f92ae.zip +0 -0
  580. package/.yarn/cache/ws-npm-6.2.3-0647b230b5-bbc96ff562.zip +0 -0
  581. package/.yarn/cache/ws-npm-7.5.10-878ccb886b-f9bb062abf.zip +0 -0
  582. package/.yarn/cache/xtend-npm-4.0.2-7f2375736e-ac5dfa738b.zip +0 -0
  583. package/.yarn/cache/y18n-npm-4.0.3-ced95acdbc-014dfcd9b5.zip +0 -0
  584. package/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-54f0fb9562.zip +0 -0
  585. package/.yarn/cache/yallist-npm-3.1.1-a568a556b4-48f7bb00dc.zip +0 -0
  586. package/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip +0 -0
  587. package/.yarn/cache/yaml-npm-2.5.1-8b2871f510-3127522386.zip +0 -0
  588. package/.yarn/cache/yargs-npm-15.4.1-ca1c444de1-40b974f508.zip +0 -0
  589. package/.yarn/cache/yargs-npm-17.7.2-80b62638e1-73b572e863.zip +0 -0
  590. package/.yarn/cache/yargs-parser-npm-18.1.3-0ba9c4f088-60e8c7d1b8.zip +0 -0
  591. package/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-ed2d96a616.zip +0 -0
  592. package/.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip +0 -0
  593. package/.yarn/install-state.gz +0 -0
  594. package/example/.buckconfig +0 -6
  595. package/example/.bundle/config +0 -2
  596. package/example/.eslintrc.js +0 -4
  597. package/example/.flowconfig +0 -65
  598. package/example/.prettierrc.js +0 -7
  599. package/example/.watchmanconfig +0 -1
  600. package/example/Gemfile +0 -9
  601. package/example/NavigationComponent.js +0 -55
  602. package/example/README.md +0 -79
  603. package/example/android/app/build.gradle +0 -119
  604. package/example/android/app/debug.keystore +0 -0
  605. package/example/android/app/proguard-rules.pro +0 -10
  606. package/example/android/app/src/debug/AndroidManifest.xml +0 -9
  607. package/example/android/app/src/main/AndroidManifest.xml +0 -26
  608. package/example/android/app/src/main/java/com/mapboxnavigationexample/MainActivity.kt +0 -22
  609. package/example/android/app/src/main/java/com/mapboxnavigationexample/MainApplication.kt +0 -45
  610. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -36
  611. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  612. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  613. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  614. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  615. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  616. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  617. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  618. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  619. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  620. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  621. package/example/android/app/src/main/res/values/strings.xml +0 -3
  622. package/example/android/app/src/main/res/values/styles.xml +0 -9
  623. package/example/android/build.gradle +0 -39
  624. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  625. package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  626. package/example/android/gradle.properties +0 -46
  627. package/example/android/gradlew +0 -249
  628. package/example/android/gradlew.bat +0 -92
  629. package/example/android/settings.gradle +0 -6
  630. package/example/app.json +0 -4
  631. package/example/babel.config.js +0 -3
  632. package/example/index.js +0 -5
  633. package/example/ios/.xcode.env +0 -1
  634. package/example/ios/.xcode.env.local +0 -2
  635. package/example/ios/BasicApp/AppDelegate.h +0 -8
  636. package/example/ios/BasicApp/AppDelegate.m +0 -62
  637. package/example/ios/BasicApp/Images.xcassets/AppIcon.appiconset/Contents.json +0 -38
  638. package/example/ios/BasicApp/Images.xcassets/Contents.json +0 -6
  639. package/example/ios/BasicApp/Info.plist +0 -62
  640. package/example/ios/BasicApp/LaunchScreen.storyboard +0 -47
  641. package/example/ios/BasicApp/main.m +0 -9
  642. package/example/ios/BasicApp-Bridging-Header.h +0 -4
  643. package/example/ios/BasicApp.xcodeproj/project.pbxproj +0 -716
  644. package/example/ios/BasicApp.xcodeproj/xcshareddata/xcschemes/BasicApp.xcscheme +0 -88
  645. package/example/ios/BasicApp.xcworkspace/contents.xcworkspacedata +0 -10
  646. package/example/ios/BasicApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  647. package/example/ios/BasicAppTests/BasicAppTests.m +0 -65
  648. package/example/ios/BasicAppTests/Info.plist +0 -24
  649. package/example/ios/BridgeHeader.swift +0 -8
  650. package/example/ios/Podfile +0 -67
  651. package/example/ios/Podfile.lock +0 -1431
  652. package/example/jest.config.js +0 -3
  653. package/example/metro.config.js +0 -45
  654. package/example/package.json +0 -29
  655. package/example/react-native.config.js +0 -10
  656. package/example/src/App.js +0 -51
  657. package/example/yarn.lock +0 -6494
@@ -12,12 +12,18 @@ import android.widget.Toast
12
12
  import androidx.core.content.ContextCompat
13
13
  import com.facebook.react.bridge.Arguments
14
14
  import com.facebook.react.uimanager.ThemedReactContext
15
+ import com.facebook.react.uimanager.events.RCTEventEmitter
16
+ import com.jadamsbit.mapboxnavigation.databinding.NavigationViewBinding
17
+ import com.mapbox.api.directions.v5.DirectionsCriteria
15
18
  import com.mapbox.api.directions.v5.models.DirectionsRoute
16
19
  import com.mapbox.api.directions.v5.models.RouteOptions
17
20
  import com.mapbox.bindgen.Expected
21
+ import com.mapbox.geojson.Feature
22
+ import com.mapbox.geojson.FeatureCollection
23
+ import com.mapbox.geojson.LineString
18
24
  import com.mapbox.geojson.Point
25
+ import com.mapbox.geojson.utils.PolylineUtils
19
26
  import com.mapbox.maps.EdgeInsets
20
- import com.mapbox.maps.MapView
21
27
  import com.mapbox.maps.MapboxMap
22
28
  import com.mapbox.maps.Style
23
29
  import com.mapbox.maps.plugin.LocationPuck2D
@@ -30,9 +36,11 @@ import com.mapbox.navigation.base.options.NavigationOptions
30
36
  import com.mapbox.navigation.base.route.RouterCallback
31
37
  import com.mapbox.navigation.base.route.RouterFailure
32
38
  import com.mapbox.navigation.base.route.RouterOrigin
39
+ import com.mapbox.navigation.base.trip.model.RouteLegProgress
40
+ import com.mapbox.navigation.base.trip.model.RouteProgress
33
41
  import com.mapbox.navigation.core.MapboxNavigation
34
42
  import com.mapbox.navigation.core.MapboxNavigationProvider
35
- import com.mapbox.navigation.core.directions.session.RoutesObserver
43
+ import com.mapbox.navigation.core.arrival.ArrivalObserver
36
44
  import com.mapbox.navigation.core.formatter.MapboxDistanceFormatter
37
45
  import com.mapbox.navigation.core.replay.MapboxReplayer
38
46
  import com.mapbox.navigation.core.replay.ReplayLocationEngine
@@ -42,14 +50,9 @@ import com.mapbox.navigation.core.trip.session.LocationMatcherResult
42
50
  import com.mapbox.navigation.core.trip.session.LocationObserver
43
51
  import com.mapbox.navigation.core.trip.session.RouteProgressObserver
44
52
  import com.mapbox.navigation.core.trip.session.VoiceInstructionsObserver
45
- import com.jadamsbit.mapboxnavigation.databinding.NavigationViewBinding
46
- import com.mapbox.api.directions.v5.DirectionsCriteria
47
- import com.mapbox.navigation.base.trip.model.RouteLegProgress
48
- import com.mapbox.navigation.base.trip.model.RouteProgress
49
- import com.mapbox.navigation.core.arrival.ArrivalObserver
53
+ import com.mapbox.navigation.core.directions.session.RoutesObserver
50
54
  import com.mapbox.navigation.ui.base.util.MapboxNavigationConsumer
51
55
  import com.mapbox.navigation.ui.maneuver.api.MapboxManeuverApi
52
- import com.mapbox.navigation.ui.maneuver.view.MapboxManeuverView
53
56
  import com.mapbox.navigation.ui.maps.camera.NavigationCamera
54
57
  import com.mapbox.navigation.ui.maps.camera.data.MapboxNavigationViewportDataSource
55
58
  import com.mapbox.navigation.ui.maps.camera.lifecycle.NavigationBasicGesturesHandler
@@ -59,229 +62,126 @@ import com.mapbox.navigation.ui.maps.location.NavigationLocationProvider
59
62
  import com.mapbox.navigation.ui.maps.route.arrow.api.MapboxRouteArrowApi
60
63
  import com.mapbox.navigation.ui.maps.route.arrow.api.MapboxRouteArrowView
61
64
  import com.mapbox.navigation.ui.maps.route.arrow.model.RouteArrowOptions
62
- import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineApi
63
- import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineView
64
- import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineOptions
65
- import com.mapbox.navigation.ui.maps.route.line.model.RouteLine
66
65
  import com.mapbox.navigation.ui.tripprogress.api.MapboxTripProgressApi
67
66
  import com.mapbox.navigation.ui.tripprogress.model.DistanceRemainingFormatter
68
67
  import com.mapbox.navigation.ui.tripprogress.model.EstimatedTimeToArrivalFormatter
69
68
  import com.mapbox.navigation.ui.tripprogress.model.PercentDistanceTraveledFormatter
70
69
  import com.mapbox.navigation.ui.tripprogress.model.TimeRemainingFormatter
71
70
  import com.mapbox.navigation.ui.tripprogress.model.TripProgressUpdateFormatter
72
- import com.mapbox.navigation.ui.tripprogress.view.MapboxTripProgressView
73
71
  import com.mapbox.navigation.ui.voice.api.MapboxSpeechApi
74
72
  import com.mapbox.navigation.ui.voice.api.MapboxVoiceInstructionsPlayer
75
73
  import com.mapbox.navigation.ui.voice.model.SpeechAnnouncement
76
74
  import com.mapbox.navigation.ui.voice.model.SpeechError
77
75
  import com.mapbox.navigation.ui.voice.model.SpeechValue
78
76
  import com.mapbox.navigation.ui.voice.model.SpeechVolume
77
+ import com.mapbox.maps.extension.style.layers.addLayer
78
+ import com.mapbox.maps.extension.style.layers.addLayerBelow
79
+ import com.mapbox.maps.extension.style.layers.generated.lineLayer
80
+ import com.mapbox.maps.extension.style.layers.properties.generated.LineCap
81
+ import com.mapbox.maps.extension.style.layers.properties.generated.LineJoin
82
+ import com.mapbox.maps.extension.style.sources.addSource
83
+ import com.mapbox.maps.extension.style.sources.generated.geoJsonSource
84
+ import com.mapbox.maps.extension.style.sources.getSourceAs
79
85
  import java.util.Locale
80
- import com.facebook.react.uimanager.events.RCTEventEmitter
81
86
 
82
- class MapboxNavigationView(private val context: ThemedReactContext, private val accessToken: String?) :
83
- FrameLayout(context.baseContext) {
87
+ class MapboxNavigationView(
88
+ private val reactContext: ThemedReactContext,
89
+ private val accessToken: String?
90
+ ) : FrameLayout(reactContext.baseContext) {
84
91
 
85
92
  private companion object {
86
93
  private const val BUTTON_ANIMATION_DURATION = 1500L
94
+
95
+ // Our stable route line IDs (Maps v10)
96
+ private const val ROUTE_SOURCE_ID = "jadams_route_source"
97
+ private const val ROUTE_LAYER_ID = "jadams_route_layer"
87
98
  }
88
99
 
89
100
  private var origin: Point? = null
90
101
  private var destination: Point? = null
91
102
  private var shouldSimulateRoute = false
92
103
  private var showsEndOfRouteFeedback = false
93
- /**
94
- * Debug tool used to play, pause and seek route progress events that can be used to produce mocked location updates along the route.
95
- */
96
- private val mapboxReplayer = MapboxReplayer()
97
104
 
98
- /**
99
- * Debug tool that mocks location updates with an input from the [mapboxReplayer].
100
- */
105
+ private val mapboxReplayer = MapboxReplayer()
101
106
  private val replayLocationEngine = ReplayLocationEngine(mapboxReplayer)
102
-
103
- /**
104
- * Debug observer that makes sure the replayer has always an up-to-date information to generate mock updates.
105
- */
106
107
  private val replayProgressObserver = ReplayProgressObserver(mapboxReplayer)
107
108
 
108
- /**
109
- * Bindings to the example layout.
110
- */
111
109
  private var binding: NavigationViewBinding =
112
- NavigationViewBinding.inflate(LayoutInflater.from(context), this, true)
110
+ NavigationViewBinding.inflate(LayoutInflater.from(reactContext), this, true)
113
111
 
114
- /**
115
- * Mapbox Maps entry point obtained from the [MapView].
116
- * You need to get a new reference to this object whenever the [MapView] is recreated.
117
- */
118
112
  private lateinit var mapboxMap: MapboxMap
119
-
120
- /**
121
- * Mapbox Navigation entry point. There should only be one instance of this object for the app.
122
- * You can use [MapboxNavigationProvider] to help create and obtain that instance.
123
- */
124
113
  private lateinit var mapboxNavigation: MapboxNavigation
125
-
126
- /**
127
- * Used to execute camera transitions based on the data generated by the [viewportDataSource].
128
- * This includes transitions from route overview to route following and continuously updating the camera as the location changes.
129
- */
130
114
  private lateinit var navigationCamera: NavigationCamera
131
-
132
- /**
133
- * Produces the camera frames based on the location and routing data for the [navigationCamera] to execute.
134
- */
135
115
  private lateinit var viewportDataSource: MapboxNavigationViewportDataSource
136
116
 
137
- /*
138
- * Below are generated camera padding values to ensure that the route fits well on screen while
139
- * other elements are overlaid on top of the map (including instruction view, buttons, etc.)
140
- */
117
+ private lateinit var maneuverApi: MapboxManeuverApi
118
+ private lateinit var tripProgressApi: MapboxTripProgressApi
119
+
120
+ // We KEEP arrows (they are not your crash)
121
+ private val routeArrowApi: MapboxRouteArrowApi = MapboxRouteArrowApi()
122
+ private lateinit var routeArrowView: MapboxRouteArrowView
123
+
124
+ private lateinit var speechApi: MapboxSpeechApi
125
+ private lateinit var voiceInstructionsPlayer: MapboxVoiceInstructionsPlayer
126
+
127
+ private val navigationLocationProvider = NavigationLocationProvider()
128
+
129
+ // style state (we wait for style load before drawing route line)
130
+ private var styleReady = false
131
+ private var pendingRoute: DirectionsRoute? = null
132
+
133
+ // prevent double requesting routes
134
+ private var routeRequestInFlight = false
135
+
141
136
  private val pixelDensity = Resources.getSystem().displayMetrics.density
142
137
  private val overviewPadding: EdgeInsets by lazy {
143
- EdgeInsets(
144
- 140.0 * pixelDensity,
145
- 40.0 * pixelDensity,
146
- 120.0 * pixelDensity,
147
- 40.0 * pixelDensity
148
- )
138
+ EdgeInsets(140.0 * pixelDensity, 40.0 * pixelDensity, 120.0 * pixelDensity, 40.0 * pixelDensity)
149
139
  }
150
140
  private val landscapeOverviewPadding: EdgeInsets by lazy {
151
- EdgeInsets(
152
- 30.0 * pixelDensity,
153
- 380.0 * pixelDensity,
154
- 110.0 * pixelDensity,
155
- 20.0 * pixelDensity
156
- )
141
+ EdgeInsets(30.0 * pixelDensity, 380.0 * pixelDensity, 110.0 * pixelDensity, 20.0 * pixelDensity)
157
142
  }
158
143
  private val followingPadding: EdgeInsets by lazy {
159
- EdgeInsets(
160
- 180.0 * pixelDensity,
161
- 40.0 * pixelDensity,
162
- 150.0 * pixelDensity,
163
- 40.0 * pixelDensity
164
- )
144
+ EdgeInsets(180.0 * pixelDensity, 40.0 * pixelDensity, 150.0 * pixelDensity, 40.0 * pixelDensity)
165
145
  }
166
146
  private val landscapeFollowingPadding: EdgeInsets by lazy {
167
- EdgeInsets(
168
- 30.0 * pixelDensity,
169
- 380.0 * pixelDensity,
170
- 110.0 * pixelDensity,
171
- 40.0 * pixelDensity
172
- )
147
+ EdgeInsets(30.0 * pixelDensity, 380.0 * pixelDensity, 110.0 * pixelDensity, 40.0 * pixelDensity)
173
148
  }
174
149
 
175
- /**
176
- * Generates updates for the [MapboxManeuverView] to display the upcoming maneuver instructions
177
- * and remaining distance to the maneuver point.
178
- */
179
- private lateinit var maneuverApi: MapboxManeuverApi
180
-
181
- /**
182
- * Generates updates for the [MapboxTripProgressView] that include remaining time and distance to the destination.
183
- */
184
- private lateinit var tripProgressApi: MapboxTripProgressApi
185
-
186
- /**
187
- * Generates updates for the [routeLineView] with the geometries and properties of the routes that should be drawn on the map.
188
- */
189
- private lateinit var routeLineApi: MapboxRouteLineApi
190
-
191
- /**
192
- * Draws route lines on the map based on the data from the [routeLineApi]
193
- */
194
- private lateinit var routeLineView: MapboxRouteLineView
195
-
196
- /**
197
- * Generates updates for the [routeArrowView] with the geometries and properties of maneuver arrows that should be drawn on the map.
198
- */
199
- private val routeArrowApi: MapboxRouteArrowApi = MapboxRouteArrowApi()
200
-
201
- /**
202
- * Draws maneuver arrows on the map based on the data [routeArrowApi].
203
- */
204
- private lateinit var routeArrowView: MapboxRouteArrowView
205
-
206
- /**
207
- * Stores and updates the state of whether the voice instructions should be played as they come or muted.
208
- */
209
150
  private var isVoiceInstructionsMuted = false
210
151
  set(value) {
211
152
  field = value
212
- if (value) {
213
- binding.soundButton.muteAndExtend(BUTTON_ANIMATION_DURATION)
214
- voiceInstructionsPlayer.volume(SpeechVolume(0f))
215
- } else {
216
- binding.soundButton.unmuteAndExtend(BUTTON_ANIMATION_DURATION)
217
- voiceInstructionsPlayer.volume(SpeechVolume(1f))
153
+ if (::voiceInstructionsPlayer.isInitialized) {
154
+ if (value) {
155
+ binding.soundButton.muteAndExtend(BUTTON_ANIMATION_DURATION)
156
+ voiceInstructionsPlayer.volume(SpeechVolume(0f))
157
+ } else {
158
+ binding.soundButton.unmuteAndExtend(BUTTON_ANIMATION_DURATION)
159
+ voiceInstructionsPlayer.volume(SpeechVolume(1f))
160
+ }
218
161
  }
219
162
  }
220
163
 
221
- /**
222
- * Extracts message that should be communicated to the driver about the upcoming maneuver.
223
- * When possible, downloads a synthesized audio file that can be played back to the driver.
224
- */
225
- private lateinit var speechApi: MapboxSpeechApi
226
-
227
- /**
228
- * Plays the synthesized audio files with upcoming maneuver instructions
229
- * or uses an on-device Text-To-Speech engine to communicate the message to the driver.
230
- */
231
- private lateinit var voiceInstructionsPlayer: MapboxVoiceInstructionsPlayer
232
-
233
- /**
234
- * Observes when a new voice instruction should be played.
235
- */
236
164
  private val voiceInstructionsObserver = VoiceInstructionsObserver { voiceInstructions ->
237
165
  speechApi.generate(voiceInstructions, speechCallback)
238
166
  }
239
167
 
240
- /**
241
- * Based on whether the synthesized audio file is available, the callback plays the file
242
- * or uses the fall back which is played back using the on-device Text-To-Speech engine.
243
- */
244
168
  private val speechCallback =
245
169
  MapboxNavigationConsumer<Expected<SpeechError, SpeechValue>> { expected ->
246
170
  expected.fold(
247
171
  { error ->
248
- // play the instruction via fallback text-to-speech engine
249
- voiceInstructionsPlayer.play(
250
- error.fallback,
251
- voiceInstructionsPlayerCallback
252
- )
172
+ voiceInstructionsPlayer.play(error.fallback, voiceInstructionsPlayerCallback)
253
173
  },
254
174
  { value ->
255
- // play the sound file from the external generator
256
- voiceInstructionsPlayer.play(
257
- value.announcement,
258
- voiceInstructionsPlayerCallback
259
- )
175
+ voiceInstructionsPlayer.play(value.announcement, voiceInstructionsPlayerCallback)
260
176
  }
261
177
  )
262
178
  }
263
179
 
264
- /**
265
- * When a synthesized audio file was downloaded, this callback cleans up the disk after it was played.
266
- */
267
180
  private val voiceInstructionsPlayerCallback =
268
181
  MapboxNavigationConsumer<SpeechAnnouncement> { value ->
269
- // remove already consumed file to free-up space
270
182
  speechApi.clean(value)
271
183
  }
272
184
 
273
- /**
274
- * [NavigationLocationProvider] is a utility class that helps to provide location updates generated by the Navigation SDK
275
- * to the Maps SDK in order to update the user location indicator on the map.
276
- */
277
- private val navigationLocationProvider = NavigationLocationProvider()
278
-
279
- /**
280
- * Gets notified with location updates.
281
- *
282
- * Exposes raw updates coming directly from the location services
283
- * and the updates enhanced by the Navigation SDK (cleaned up and matched to the road).
284
- */
285
185
  private val locationObserver = object : LocationObserver {
286
186
  override fun onNewRawLocation(rawLocation: Location) {
287
187
  // not handled
@@ -289,49 +189,40 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
289
189
 
290
190
  override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) {
291
191
  val enhancedLocation = locationMatcherResult.enhancedLocation
292
- // update location puck's position on the map
192
+
293
193
  navigationLocationProvider.changePosition(
294
194
  location = enhancedLocation,
295
195
  keyPoints = locationMatcherResult.keyPoints,
296
196
  )
297
197
 
298
- // update camera position to account for new location
299
198
  viewportDataSource.onLocationChanged(enhancedLocation)
300
199
  viewportDataSource.evaluate()
301
200
 
302
- val event = Arguments.createMap()
303
- event.putDouble("longitude", enhancedLocation.longitude)
304
- event.putDouble("latitude", enhancedLocation.latitude)
305
- context
201
+ val event = Arguments.createMap().apply {
202
+ putDouble("longitude", enhancedLocation.longitude)
203
+ putDouble("latitude", enhancedLocation.latitude)
204
+ }
205
+
206
+ reactContext
306
207
  .getJSModule(RCTEventEmitter::class.java)
307
208
  .receiveEvent(id, "onLocationChange", event)
308
209
  }
309
210
  }
310
211
 
311
- /**
312
- * Gets notified with progress along the currently active route.
313
- */
314
212
  private val routeProgressObserver = RouteProgressObserver { routeProgress ->
315
- // update the camera position to account for the progressed fragment of the route
316
213
  viewportDataSource.onRouteProgressChanged(routeProgress)
317
214
  viewportDataSource.evaluate()
318
215
 
319
- // draw the upcoming maneuver arrow on the map
320
- val style = mapboxMap.getStyle()
321
- if (style != null) {
216
+ // arrow rendering is OK
217
+ mapboxMap.getStyle()?.let { style ->
322
218
  val maneuverArrowResult = routeArrowApi.addUpcomingManeuverArrow(routeProgress)
323
219
  routeArrowView.renderManeuverUpdate(style, maneuverArrowResult)
324
220
  }
325
221
 
326
- // update top banner with maneuver instructions
327
222
  val maneuvers = maneuverApi.getManeuvers(routeProgress)
328
223
  maneuvers.fold(
329
224
  { error ->
330
- Toast.makeText(
331
- context,
332
- error.errorMessage,
333
- Toast.LENGTH_SHORT
334
- ).show()
225
+ Toast.makeText(reactContext, error.errorMessage, Toast.LENGTH_SHORT).show()
335
226
  },
336
227
  {
337
228
  binding.maneuverView.visibility = View.VISIBLE
@@ -343,84 +234,59 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
343
234
  }
344
235
  )
345
236
 
346
- // update bottom trip progress summary
347
- binding.tripProgressView.render(
348
- tripProgressApi.getTripProgress(routeProgress)
349
- )
237
+ binding.tripProgressView.render(tripProgressApi.getTripProgress(routeProgress))
350
238
 
351
- val event = Arguments.createMap()
352
- event.putDouble("distanceTraveled", routeProgress.distanceTraveled.toDouble())
353
- event.putDouble("durationRemaining", routeProgress.durationRemaining.toDouble())
354
- event.putDouble("fractionTraveled", routeProgress.fractionTraveled.toDouble())
355
- event.putDouble("distanceRemaining", routeProgress.distanceRemaining.toDouble())
356
- context
239
+ val event = Arguments.createMap().apply {
240
+ putDouble("distanceTraveled", routeProgress.distanceTraveled.toDouble())
241
+ putDouble("durationRemaining", routeProgress.durationRemaining.toDouble())
242
+ putDouble("fractionTraveled", routeProgress.fractionTraveled.toDouble())
243
+ putDouble("distanceRemaining", routeProgress.distanceRemaining.toDouble())
244
+ }
245
+
246
+ reactContext
357
247
  .getJSModule(RCTEventEmitter::class.java)
358
248
  .receiveEvent(id, "onRouteProgressChange", event)
359
249
  }
360
250
 
361
- /**
362
- * Gets notified whenever the tracked routes change.
363
- *
364
- * A change can mean:
365
- * - routes get changed with [MapboxNavigation.setRoutes]
366
- * - routes annotations get refreshed (for example, congestion annotation that indicate the live traffic along the route)
367
- * - driver got off route and a reroute was executed
368
- */
251
+ // ✅ routes observer now draws route via GeoJson + LineLayer (no RouteLineView => no native crash)
369
252
  private val routesObserver = RoutesObserver { routeUpdateResult ->
370
- if (routeUpdateResult.routes.isNotEmpty()) {
371
- // generate route geometries asynchronously and render them
372
- val routeLines = routeUpdateResult.routes.map { RouteLine(it, null) }
373
-
374
- routeLineApi.setRoutes(
375
- routeLines
376
- ) { value ->
377
- mapboxMap.getStyle()?.apply {
378
- routeLineView.renderRouteDrawData(this, value)
379
- }
380
- }
253
+ if (!isAttachedToWindow) return@RoutesObserver
254
+
255
+ val primary = routeUpdateResult.routes.firstOrNull()
381
256
 
382
- // update the camera position to account for the new route
383
- viewportDataSource.onRouteChanged(routeUpdateResult.routes.first())
257
+ // camera updates
258
+ if (primary != null) {
259
+ viewportDataSource.onRouteChanged(primary)
384
260
  viewportDataSource.evaluate()
385
261
  } else {
386
- // remove the route line and route arrow from the map
387
- val style = mapboxMap.getStyle()
388
- if (style != null) {
389
- routeLineApi.clearRouteLine { value ->
390
- routeLineView.renderClearRouteLineValue(
391
- style,
392
- value
393
- )
394
- }
395
- routeArrowView.render(style, routeArrowApi.clearArrows())
396
- }
397
-
398
- // remove the route reference from camera position evaluations
399
262
  viewportDataSource.clearRouteData()
400
263
  viewportDataSource.evaluate()
401
264
  }
402
- }
403
265
 
404
- private val arrivalObserver = object : ArrivalObserver {
405
-
406
- override fun onWaypointArrival(routeProgress: RouteProgress) {
407
- // do something when the user arrives at a waypoint
266
+ // draw the route line safely
267
+ binding.mapView.post {
268
+ if (!isAttachedToWindow) return@post
269
+ val style = mapboxMap.getStyle()
270
+ if (style == null || !styleReady) {
271
+ pendingRoute = primary
272
+ return@post
273
+ }
274
+ renderRouteLine(style, primary)
408
275
  }
276
+ }
409
277
 
410
- override fun onNextRouteLegStart(routeLegProgress: RouteLegProgress) {
411
- // do something when the user starts a new leg
412
- }
278
+ private val arrivalObserver = object : ArrivalObserver {
279
+ override fun onWaypointArrival(routeProgress: RouteProgress) {}
280
+ override fun onNextRouteLegStart(routeLegProgress: RouteLegProgress) {}
413
281
 
414
282
  override fun onFinalDestinationArrival(routeProgress: RouteProgress) {
415
- val event = Arguments.createMap()
416
- event.putString("onArrive", "")
417
- context
283
+ val event = Arguments.createMap().apply { putString("message", "Arrived") }
284
+ reactContext
418
285
  .getJSModule(RCTEventEmitter::class.java)
419
- .receiveEvent(id, "onRouteProgressChange", event)
286
+ .receiveEvent(id, "onArrive", event) // ✅ correct event name
420
287
  }
421
288
  }
422
289
 
423
-
424
290
  override fun onAttachedToWindow() {
425
291
  super.onAttachedToWindow()
426
292
  onCreate()
@@ -432,20 +298,79 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
432
298
  }
433
299
 
434
300
  private val measureAndLayout = Runnable {
435
- measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
436
- MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY))
301
+ measure(
302
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
303
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
304
+ )
437
305
  layout(left, top, right, bottom)
438
306
  }
439
307
 
308
+ private fun sendErrorToReact(error: String?) {
309
+ val event = Arguments.createMap().apply { putString("error", error) }
310
+ reactContext
311
+ .getJSModule(RCTEventEmitter::class.java)
312
+ .receiveEvent(id, "onError", event)
313
+ }
314
+
315
+ private fun ensureStyleHasRouteLine(style: Style) {
316
+ if (!style.styleSourceExists(ROUTE_SOURCE_ID)) {
317
+ style.addSource(
318
+ geoJsonSource(ROUTE_SOURCE_ID) {
319
+ featureCollection(FeatureCollection.fromFeatures(emptyArray()))
320
+ }
321
+ )
322
+ }
323
+
324
+ if (!style.styleLayerExists(ROUTE_LAYER_ID)) {
325
+ val routeLayer = lineLayer(ROUTE_LAYER_ID, ROUTE_SOURCE_ID) {
326
+ lineJoin(LineJoin.ROUND)
327
+ lineCap(LineCap.ROUND)
328
+ lineWidth(12.0)
329
+ lineColor("#1E88E5")
330
+ }
331
+
332
+ // Find first location layer
333
+ val locationLayerId = style.styleLayers
334
+ .firstOrNull { it.id.contains("mapbox-location") }
335
+ ?.id
336
+
337
+ if (locationLayerId != null) {
338
+ style.addLayerBelow(routeLayer, locationLayerId)
339
+ } else {
340
+ // fallback
341
+ style.addLayer(routeLayer)
342
+ }
343
+ }
344
+ }
345
+
346
+ private fun renderRouteLine(style: Style, route: DirectionsRoute?) {
347
+ // clear
348
+ if (route?.geometry().isNullOrEmpty()) {
349
+ val src = style.getSourceAs<com.mapbox.maps.extension.style.sources.generated.GeoJsonSource>(ROUTE_SOURCE_ID)
350
+ src?.featureCollection(FeatureCollection.fromFeatures(emptyArray()))
351
+ return
352
+ }
353
+
354
+ val points = PolylineUtils.decode(route!!.geometry()!!, 6) // polyline6
355
+ val lineString = LineString.fromLngLats(points)
356
+ val feature = Feature.fromGeometry(lineString)
357
+ val fc = FeatureCollection.fromFeature(feature)
358
+
359
+ val src = style.getSourceAs<com.mapbox.maps.extension.style.sources.generated.GeoJsonSource>(ROUTE_SOURCE_ID)
360
+ src?.featureCollection(fc)
361
+ }
362
+
440
363
  private fun setCameraPositionToOrigin() {
441
- val startingLocation = Location(LocationManager.GPS_PROVIDER)
442
- startingLocation.latitude = origin!!.latitude()
443
- startingLocation.longitude = origin!!.longitude()
364
+ val o = origin ?: return
365
+ val startingLocation = Location(LocationManager.GPS_PROVIDER).apply {
366
+ latitude = o.latitude()
367
+ longitude = o.longitude()
368
+ }
444
369
  viewportDataSource.onLocationChanged(startingLocation)
445
370
 
446
371
  navigationCamera.requestNavigationCameraToFollowing(
447
372
  stateTransitionOptions = NavigationCameraTransitionOptions.Builder()
448
- .maxDuration(0) // instant transition
373
+ .maxDuration(0)
449
374
  .build()
450
375
  )
451
376
  }
@@ -456,7 +381,6 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
456
381
  sendErrorToReact("Mapbox access token is not set")
457
382
  return
458
383
  }
459
-
460
384
  if (origin == null || destination == null) {
461
385
  sendErrorToReact("origin and destination are required")
462
386
  return
@@ -464,53 +388,46 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
464
388
 
465
389
  mapboxMap = binding.mapView.getMapboxMap()
466
390
 
467
- // initialize the location puck
391
+ // location puck
468
392
  binding.mapView.location.apply {
469
393
  this.locationPuck = LocationPuck2D(
470
394
  bearingImage = ContextCompat.getDrawable(
471
- context,
395
+ reactContext,
472
396
  com.mapbox.navigation.ui.maps.R.drawable.mapbox_navigation_puck_icon
473
-
474
397
  )
475
398
  )
476
399
  setLocationProvider(navigationLocationProvider)
477
400
  enabled = true
478
401
  }
479
402
 
480
- // initialize Mapbox Navigation
403
+ // Mapbox Navigation
481
404
  mapboxNavigation = if (MapboxNavigationProvider.isCreated()) {
482
405
  MapboxNavigationProvider.retrieve()
483
406
  } else if (shouldSimulateRoute) {
484
407
  MapboxNavigationProvider.create(
485
- NavigationOptions.Builder(context)
408
+ NavigationOptions.Builder(reactContext)
486
409
  .accessToken(accessToken)
487
410
  .locationEngine(replayLocationEngine)
488
411
  .build()
489
412
  )
490
413
  } else {
491
414
  MapboxNavigationProvider.create(
492
- NavigationOptions.Builder(context)
415
+ NavigationOptions.Builder(reactContext)
493
416
  .accessToken(accessToken)
494
417
  .build()
495
418
  )
496
419
  }
497
420
 
498
- // initialize Navigation Camera
421
+ // camera setup
499
422
  viewportDataSource = MapboxNavigationViewportDataSource(mapboxMap)
423
+ navigationCamera = NavigationCamera(mapboxMap, binding.mapView.camera, viewportDataSource)
500
424
 
501
- navigationCamera = NavigationCamera(
502
- mapboxMap,
503
- binding.mapView.camera,
504
- viewportDataSource
505
- )
506
- // set the animations lifecycle listener to ensure the NavigationCamera stops
507
- // automatically following the user location when the map is interacted with
508
425
  binding.mapView.camera.addCameraAnimationsLifecycleListener(
509
426
  NavigationBasicGesturesHandler(navigationCamera)
510
427
  )
511
- navigationCamera.registerNavigationCameraStateChangeObserver { navigationCameraState ->
512
- // shows/hide the recenter button depending on the camera state
513
- when (navigationCameraState) {
428
+
429
+ navigationCamera.registerNavigationCameraStateChangeObserver { state ->
430
+ when (state) {
514
431
  NavigationCameraState.TRANSITION_TO_FOLLOWING,
515
432
  NavigationCameraState.FOLLOWING -> binding.recenter.visibility = View.INVISIBLE
516
433
  NavigationCameraState.TRANSITION_TO_OVERVIEW,
@@ -518,109 +435,76 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
518
435
  NavigationCameraState.IDLE -> binding.recenter.visibility = View.VISIBLE
519
436
  }
520
437
  }
521
- // set the padding values depending on screen orientation and visible view layout
522
- if (this.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
438
+
439
+ if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
523
440
  viewportDataSource.overviewPadding = landscapeOverviewPadding
524
- } else {
525
- viewportDataSource.overviewPadding = overviewPadding
526
- }
527
- if (this.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
528
441
  viewportDataSource.followingPadding = landscapeFollowingPadding
529
442
  } else {
443
+ viewportDataSource.overviewPadding = overviewPadding
530
444
  viewportDataSource.followingPadding = followingPadding
531
445
  }
532
446
 
533
- // make sure to use the same DistanceFormatterOptions across different features
534
447
  val distanceFormatterOptions = mapboxNavigation.navigationOptions.distanceFormatterOptions
535
448
 
536
- // initialize maneuver api that feeds the data to the top banner maneuver view
537
- maneuverApi = MapboxManeuverApi(
538
- MapboxDistanceFormatter(distanceFormatterOptions)
539
- )
540
-
541
- // initialize bottom progress view
449
+ maneuverApi = MapboxManeuverApi(MapboxDistanceFormatter(distanceFormatterOptions))
542
450
  tripProgressApi = MapboxTripProgressApi(
543
- TripProgressUpdateFormatter.Builder(context)
544
- .distanceRemainingFormatter(
545
- DistanceRemainingFormatter(distanceFormatterOptions)
546
- )
547
- .timeRemainingFormatter(
548
- TimeRemainingFormatter(context)
549
- )
550
- .percentRouteTraveledFormatter(
551
- PercentDistanceTraveledFormatter()
552
- )
451
+ TripProgressUpdateFormatter.Builder(reactContext)
452
+ .distanceRemainingFormatter(DistanceRemainingFormatter(distanceFormatterOptions))
453
+ .timeRemainingFormatter(TimeRemainingFormatter(reactContext))
454
+ .percentRouteTraveledFormatter(PercentDistanceTraveledFormatter())
553
455
  .estimatedTimeToArrivalFormatter(
554
- EstimatedTimeToArrivalFormatter(context, TimeFormat.NONE_SPECIFIED)
456
+ EstimatedTimeToArrivalFormatter(reactContext, TimeFormat.NONE_SPECIFIED)
555
457
  )
556
458
  .build()
557
459
  )
558
460
 
559
- // initialize voice instructions api and the voice instruction player
560
- speechApi = MapboxSpeechApi(
561
- context,
562
- accessToken,
563
- Locale.US.language
564
- )
565
- voiceInstructionsPlayer = MapboxVoiceInstructionsPlayer(
566
- context,
567
- accessToken,
568
- Locale.US.language
569
- )
461
+ speechApi = MapboxSpeechApi(reactContext, accessToken, Locale.US.language)
462
+ voiceInstructionsPlayer = MapboxVoiceInstructionsPlayer(reactContext, accessToken, Locale.US.language)
570
463
 
571
- // initialize route line, the withRouteLineBelowLayerId is specified to place
572
- // the route line below road labels layer on the map
573
- // the value of this option will depend on the style that you are using
574
- // and under which layer the route line should be placed on the map layers stack
575
- val mapboxRouteLineOptions = MapboxRouteLineOptions.Builder(context)
576
- .withRouteLineBelowLayerId("road-label")
577
- .build()
578
- routeLineApi = MapboxRouteLineApi(mapboxRouteLineOptions)
579
- routeLineView = MapboxRouteLineView(mapboxRouteLineOptions)
580
-
581
- // initialize maneuver arrow view to draw arrows on the map
582
- val routeArrowOptions = RouteArrowOptions.Builder(context).build()
464
+ val routeArrowOptions = RouteArrowOptions.Builder(reactContext).build()
583
465
  routeArrowView = MapboxRouteArrowView(routeArrowOptions)
584
466
 
467
+ // load style and install our stable route line layer
468
+ styleReady = false
469
+ mapboxMap.loadStyleUri(Style.MAPBOX_STREETS) { style ->
470
+ styleReady = true
471
+ ensureStyleHasRouteLine(style)
472
+ pendingRoute?.let {
473
+ renderRouteLine(style, it)
474
+ pendingRoute = null
475
+ }
476
+ }
477
+
585
478
  setCameraPositionToOrigin()
586
- // load map style
587
- mapboxMap.loadStyleUri(
588
- Style.MAPBOX_STREETS
589
- )
590
479
 
591
- // initialize view interactions
480
+ // UI interactions
592
481
  binding.stop.setOnClickListener {
593
- // clearRouteAndStopNavigation() // TODO: figure out how we want to address this since a user cannot reinitialize a route once it is canceled.
594
- val event = Arguments.createMap()
595
- event.putString("onCancelNavigation", "Navigation Closed")
596
- context
597
- .getJSModule(RCTEventEmitter::class.java)
598
- .receiveEvent(id, "onCancelNavigation", event)
482
+ val event = Arguments.createMap().apply { putString("onCancelNavigation", "Navigation Closed") }
483
+ reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, "onCancelNavigation", event)
599
484
  }
485
+
600
486
  binding.recenter.setOnClickListener {
601
487
  navigationCamera.requestNavigationCameraToFollowing()
602
488
  binding.routeOverview.showTextAndExtend(BUTTON_ANIMATION_DURATION)
603
489
  }
490
+
604
491
  binding.routeOverview.setOnClickListener {
605
492
  navigationCamera.requestNavigationCameraToOverview()
606
493
  binding.recenter.showTextAndExtend(BUTTON_ANIMATION_DURATION)
607
494
  }
495
+
608
496
  binding.soundButton.setOnClickListener {
609
- // mute/unmute voice instructions
610
497
  isVoiceInstructionsMuted = !isVoiceInstructionsMuted
611
498
  }
612
499
 
613
- // set initial sounds button state
614
500
  binding.soundButton.unmute()
615
501
 
616
- // start the trip session to being receiving location updates in free drive
617
- // and later when a route is set also receiving route progress updates
502
+ // start trip session + route
618
503
  mapboxNavigation.startTripSession()
619
504
  startRoute()
620
505
  }
621
506
 
622
507
  private fun startRoute() {
623
- // register event listeners
624
508
  mapboxNavigation.registerRoutesObserver(routesObserver)
625
509
  mapboxNavigation.registerArrivalObserver(arrivalObserver)
626
510
  mapboxNavigation.registerRouteProgressObserver(routeProgressObserver)
@@ -628,109 +512,62 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
628
512
  mapboxNavigation.registerVoiceInstructionsObserver(voiceInstructionsObserver)
629
513
  mapboxNavigation.registerRouteProgressObserver(replayProgressObserver)
630
514
 
631
- this.origin?.let { this.destination?.let { it1 -> this.findRoute(it, it1) } }
632
- }
633
-
634
- override fun onDetachedFromWindow() {
635
- super.onDetachedFromWindow()
636
- mapboxNavigation.unregisterRoutesObserver(routesObserver)
637
- mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver)
638
- mapboxNavigation.unregisterLocationObserver(locationObserver)
639
- mapboxNavigation.unregisterVoiceInstructionsObserver(voiceInstructionsObserver)
640
- mapboxNavigation.unregisterRouteProgressObserver(replayProgressObserver)
641
- }
642
-
643
- private fun onDestroy() {
644
- MapboxNavigationProvider.destroy()
645
- mapboxReplayer.finish()
646
- maneuverApi.cancel()
647
- routeLineApi.cancel()
648
- routeLineView.cancel()
649
- speechApi.cancel()
650
- voiceInstructionsPlayer.shutdown()
515
+ val o = origin
516
+ val d = destination
517
+ if (o != null && d != null) {
518
+ findRouteOnce(o, d)
519
+ }
651
520
  }
652
521
 
653
- private fun findRoute(origin: Point, destination: Point) {
654
- try {
655
- mapboxNavigation.requestRoutes(
656
- RouteOptions.builder()
657
- .applyDefaultNavigationOptions()
658
- .applyLanguageAndVoiceUnitOptions(context)
659
- .coordinatesList(listOf(origin, destination))
660
- .profile(DirectionsCriteria.PROFILE_DRIVING)
661
- .steps(true)
662
- .build(),
663
- object : RouterCallback {
664
- override fun onRoutesReady(
665
- routes: List<DirectionsRoute>,
666
- routerOrigin: RouterOrigin
667
- ) {
668
- setRouteAndStartNavigation(routes)
669
- }
670
-
671
- override fun onFailure(
672
- reasons: List<RouterFailure>,
673
- routeOptions: RouteOptions
674
- ) {
675
- sendErrorToReact("Error finding route $reasons")
676
- }
677
-
678
- override fun onCanceled(routeOptions: RouteOptions, routerOrigin: RouterOrigin) {
679
- // no impl
680
- }
522
+ private fun findRouteOnce(o: Point, d: Point) {
523
+ if (routeRequestInFlight) return
524
+ routeRequestInFlight = true
525
+
526
+ mapboxNavigation.requestRoutes(
527
+ RouteOptions.builder()
528
+ .applyDefaultNavigationOptions()
529
+ .applyLanguageAndVoiceUnitOptions(reactContext)
530
+ .coordinatesList(listOf(o, d))
531
+ .profile(DirectionsCriteria.PROFILE_DRIVING)
532
+ .steps(true)
533
+ .build(),
534
+ object : RouterCallback {
535
+ override fun onRoutesReady(routes: List<DirectionsRoute>, routerOrigin: RouterOrigin) {
536
+ routeRequestInFlight = false
537
+ setRouteAndStartNavigation(routes)
681
538
  }
682
- )
683
- } catch (ex: Exception) {
684
- sendErrorToReact(ex.toString())
685
- }
686
539
 
687
- }
540
+ override fun onFailure(reasons: List<RouterFailure>, routeOptions: RouteOptions) {
541
+ routeRequestInFlight = false
542
+ sendErrorToReact("Error finding route $reasons")
543
+ }
688
544
 
689
- private fun sendErrorToReact(error: String?) {
690
- val event = Arguments.createMap()
691
- event.putString("error", error)
692
- context
693
- .getJSModule(RCTEventEmitter::class.java)
694
- .receiveEvent(id, "onError", event)
545
+ override fun onCanceled(routeOptions: RouteOptions, routerOrigin: RouterOrigin) {
546
+ routeRequestInFlight = false
547
+ }
548
+ }
549
+ )
695
550
  }
696
551
 
697
552
  private fun setRouteAndStartNavigation(routes: List<DirectionsRoute>) {
698
553
  if (routes.isEmpty()) {
699
554
  sendErrorToReact("No route found")
700
- return;
555
+ return
701
556
  }
702
- // set routes, where the first route in the list is the primary route that
703
- // will be used for active guidance
557
+
704
558
  mapboxNavigation.setRoutes(routes)
705
559
 
706
- // start location simulation along the primary route
707
560
  if (shouldSimulateRoute) {
708
561
  startSimulation(routes.first())
709
562
  }
710
563
 
711
- // show UI elements
712
564
  binding.soundButton.visibility = View.VISIBLE
713
565
  binding.routeOverview.visibility = View.VISIBLE
714
566
  binding.tripProgressCard.visibility = View.VISIBLE
715
567
 
716
- // move the camera to overview when new route is available
717
568
  navigationCamera.requestNavigationCameraToFollowing()
718
569
  }
719
570
 
720
- private fun clearRouteAndStopNavigation() {
721
- // clear
722
- mapboxNavigation.setRoutes(listOf())
723
-
724
- // stop simulation
725
- mapboxReplayer.stop()
726
-
727
- // hide UI elements
728
- binding.soundButton.visibility = View.INVISIBLE
729
- binding.maneuverView.visibility = View.INVISIBLE
730
- binding.routeOverview.visibility = View.INVISIBLE
731
- binding.tripProgressCard.visibility = View.INVISIBLE
732
- }
733
-
734
571
  private fun startSimulation(route: DirectionsRoute) {
735
572
  mapboxReplayer.run {
736
573
  stop()
@@ -742,8 +579,33 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
742
579
  }
743
580
  }
744
581
 
582
+ override fun onDetachedFromWindow() {
583
+ super.onDetachedFromWindow()
584
+ try {
585
+ mapboxNavigation.unregisterRoutesObserver(routesObserver)
586
+ mapboxNavigation.unregisterArrivalObserver(arrivalObserver)
587
+ mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver)
588
+ mapboxNavigation.unregisterLocationObserver(locationObserver)
589
+ mapboxNavigation.unregisterVoiceInstructionsObserver(voiceInstructionsObserver)
590
+ mapboxNavigation.unregisterRouteProgressObserver(replayProgressObserver)
591
+ } catch (_: Throwable) {
592
+ // ignore
593
+ }
594
+ }
595
+
596
+ private fun onDestroy() {
597
+ try {
598
+ MapboxNavigationProvider.destroy()
599
+ } catch (_: Throwable) {}
600
+
601
+ try { mapboxReplayer.finish() } catch (_: Throwable) {}
602
+ try { maneuverApi.cancel() } catch (_: Throwable) {}
603
+ try { speechApi.cancel() } catch (_: Throwable) {}
604
+ try { voiceInstructionsPlayer.shutdown() } catch (_: Throwable) {}
605
+ }
606
+
745
607
  fun onDropViewInstance() {
746
- this.onDestroy()
608
+ onDestroy()
747
609
  }
748
610
 
749
611
  fun setOrigin(origin: Point?) {
@@ -765,4 +627,4 @@ class MapboxNavigationView(private val context: ThemedReactContext, private val
765
627
  fun setMute(mute: Boolean) {
766
628
  this.isVoiceInstructionsMuted = mute
767
629
  }
768
- }
630
+ }