@ray-js/robot-map-sdk 0.0.3-beta-23 → 0.0.3-beta-25

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 (793) hide show
  1. package/dist/index.d.ts +1 -311
  2. package/dist/index.js +1 -1
  3. package/dist/rjs/_virtual/_commonjsHelpers.js +1 -0
  4. package/dist/rjs/_virtual/deinterlace.js +1 -0
  5. package/dist/rjs/_virtual/gif.js +1 -0
  6. package/dist/rjs/_virtual/index.js +1 -0
  7. package/dist/rjs/_virtual/index10.js +1 -0
  8. package/dist/rjs/_virtual/index2.js +1 -0
  9. package/dist/rjs/_virtual/index3.js +1 -0
  10. package/dist/rjs/_virtual/index4.js +1 -0
  11. package/dist/rjs/_virtual/index5.js +1 -0
  12. package/dist/rjs/_virtual/index6.js +1 -0
  13. package/dist/rjs/_virtual/index7.js +1 -0
  14. package/dist/rjs/_virtual/index8.js +1 -0
  15. package/dist/rjs/_virtual/index9.js +1 -0
  16. package/dist/rjs/_virtual/lzw.js +1 -0
  17. package/dist/rjs/_virtual/uint8.js +1 -0
  18. package/dist/rjs/index.js +1 -0
  19. package/dist/rjs/node_modules/@pixi/colord/index.js +1 -0
  20. package/dist/rjs/node_modules/@pixi/colord/plugins/names.js +1 -0
  21. package/dist/rjs/node_modules/@ray-js/robot-protocol/dist/index.js +1 -0
  22. package/dist/rjs/node_modules/base64-js/index.js +1 -0
  23. package/dist/rjs/node_modules/buffer/index.js +1 -0
  24. package/dist/rjs/node_modules/earcut/src/earcut.js +1 -0
  25. package/dist/rjs/node_modules/eventemitter3/index.js +1 -0
  26. package/dist/rjs/node_modules/eventemitter3/index2.js +1 -0
  27. package/dist/rjs/node_modules/gifuct-js/lib/deinterlace.js +1 -0
  28. package/dist/rjs/node_modules/gifuct-js/lib/index.js +1 -0
  29. package/dist/rjs/node_modules/gifuct-js/lib/lzw.js +1 -0
  30. package/dist/rjs/node_modules/ieee754/index.js +1 -0
  31. package/dist/rjs/node_modules/ismobilejs/esm/isMobile.js +1 -0
  32. package/dist/rjs/node_modules/js-binary-schema-parser/lib/index.js +1 -0
  33. package/dist/rjs/node_modules/js-binary-schema-parser/lib/parsers/uint8.js +1 -0
  34. package/dist/rjs/node_modules/js-binary-schema-parser/lib/schemas/gif.js +1 -0
  35. package/dist/rjs/node_modules/lodash-es/_DataView.js +1 -0
  36. package/dist/rjs/node_modules/lodash-es/_Hash.js +1 -0
  37. package/dist/rjs/node_modules/lodash-es/_ListCache.js +1 -0
  38. package/dist/rjs/node_modules/lodash-es/_Map.js +1 -0
  39. package/dist/rjs/node_modules/lodash-es/_MapCache.js +1 -0
  40. package/dist/rjs/node_modules/lodash-es/_Promise.js +1 -0
  41. package/dist/rjs/node_modules/lodash-es/_Set.js +1 -0
  42. package/dist/rjs/node_modules/lodash-es/_SetCache.js +1 -0
  43. package/dist/rjs/node_modules/lodash-es/_Stack.js +1 -0
  44. package/dist/rjs/node_modules/lodash-es/_Symbol.js +1 -0
  45. package/dist/rjs/node_modules/lodash-es/_Uint8Array.js +1 -0
  46. package/dist/rjs/node_modules/lodash-es/_WeakMap.js +1 -0
  47. package/dist/rjs/node_modules/lodash-es/_apply.js +1 -0
  48. package/dist/rjs/node_modules/lodash-es/_arrayFilter.js +1 -0
  49. package/dist/rjs/node_modules/lodash-es/_arrayLikeKeys.js +1 -0
  50. package/dist/rjs/node_modules/lodash-es/_arrayPush.js +1 -0
  51. package/dist/rjs/node_modules/lodash-es/_arraySome.js +1 -0
  52. package/dist/rjs/node_modules/lodash-es/_assignMergeValue.js +1 -0
  53. package/dist/rjs/node_modules/lodash-es/_assignValue.js +1 -0
  54. package/dist/rjs/node_modules/lodash-es/_assocIndexOf.js +1 -0
  55. package/dist/rjs/node_modules/lodash-es/_baseAssignValue.js +1 -0
  56. package/dist/rjs/node_modules/lodash-es/_baseCreate.js +1 -0
  57. package/dist/rjs/node_modules/lodash-es/_baseFor.js +1 -0
  58. package/dist/rjs/node_modules/lodash-es/_baseGetAllKeys.js +1 -0
  59. package/dist/rjs/node_modules/lodash-es/_baseGetTag.js +1 -0
  60. package/dist/rjs/node_modules/lodash-es/_baseIsArguments.js +1 -0
  61. package/dist/rjs/node_modules/lodash-es/_baseIsEqual.js +1 -0
  62. package/dist/rjs/node_modules/lodash-es/_baseIsEqualDeep.js +1 -0
  63. package/dist/rjs/node_modules/lodash-es/_baseIsNative.js +1 -0
  64. package/dist/rjs/node_modules/lodash-es/_baseIsTypedArray.js +1 -0
  65. package/dist/rjs/node_modules/lodash-es/_baseKeys.js +1 -0
  66. package/dist/rjs/node_modules/lodash-es/_baseKeysIn.js +1 -0
  67. package/dist/rjs/node_modules/lodash-es/_baseMerge.js +1 -0
  68. package/dist/rjs/node_modules/lodash-es/_baseMergeDeep.js +1 -0
  69. package/dist/rjs/node_modules/lodash-es/_baseRest.js +1 -0
  70. package/dist/rjs/node_modules/lodash-es/_baseSetToString.js +1 -0
  71. package/dist/rjs/node_modules/lodash-es/_baseSlice.js +1 -0
  72. package/dist/rjs/node_modules/lodash-es/_baseTimes.js +1 -0
  73. package/dist/rjs/node_modules/lodash-es/_baseTrim.js +1 -0
  74. package/dist/rjs/node_modules/lodash-es/_baseUnary.js +1 -0
  75. package/dist/rjs/node_modules/lodash-es/_cacheHas.js +1 -0
  76. package/dist/rjs/node_modules/lodash-es/_cloneArrayBuffer.js +1 -0
  77. package/dist/rjs/node_modules/lodash-es/_cloneBuffer.js +1 -0
  78. package/dist/rjs/node_modules/lodash-es/_cloneTypedArray.js +1 -0
  79. package/dist/rjs/node_modules/lodash-es/_copyArray.js +1 -0
  80. package/dist/rjs/node_modules/lodash-es/_copyObject.js +1 -0
  81. package/dist/rjs/node_modules/lodash-es/_coreJsData.js +1 -0
  82. package/dist/rjs/node_modules/lodash-es/_createAssigner.js +1 -0
  83. package/dist/rjs/node_modules/lodash-es/_createBaseFor.js +1 -0
  84. package/dist/rjs/node_modules/lodash-es/_defineProperty.js +1 -0
  85. package/dist/rjs/node_modules/lodash-es/_equalArrays.js +1 -0
  86. package/dist/rjs/node_modules/lodash-es/_equalByTag.js +1 -0
  87. package/dist/rjs/node_modules/lodash-es/_equalObjects.js +1 -0
  88. package/dist/rjs/node_modules/lodash-es/_freeGlobal.js +1 -0
  89. package/dist/rjs/node_modules/lodash-es/_getAllKeys.js +1 -0
  90. package/dist/rjs/node_modules/lodash-es/_getMapData.js +1 -0
  91. package/dist/rjs/node_modules/lodash-es/_getNative.js +1 -0
  92. package/dist/rjs/node_modules/lodash-es/_getPrototype.js +1 -0
  93. package/dist/rjs/node_modules/lodash-es/_getRawTag.js +1 -0
  94. package/dist/rjs/node_modules/lodash-es/_getSymbols.js +1 -0
  95. package/dist/rjs/node_modules/lodash-es/_getTag.js +1 -0
  96. package/dist/rjs/node_modules/lodash-es/_getValue.js +1 -0
  97. package/dist/rjs/node_modules/lodash-es/_hashClear.js +1 -0
  98. package/dist/rjs/node_modules/lodash-es/_hashDelete.js +1 -0
  99. package/dist/rjs/node_modules/lodash-es/_hashGet.js +1 -0
  100. package/dist/rjs/node_modules/lodash-es/_hashHas.js +1 -0
  101. package/dist/rjs/node_modules/lodash-es/_hashSet.js +1 -0
  102. package/dist/rjs/node_modules/lodash-es/_initCloneObject.js +1 -0
  103. package/dist/rjs/node_modules/lodash-es/_isIndex.js +1 -0
  104. package/dist/rjs/node_modules/lodash-es/_isIterateeCall.js +1 -0
  105. package/dist/rjs/node_modules/lodash-es/_isKeyable.js +1 -0
  106. package/dist/rjs/node_modules/lodash-es/_isMasked.js +1 -0
  107. package/dist/rjs/node_modules/lodash-es/_isPrototype.js +1 -0
  108. package/dist/rjs/node_modules/lodash-es/_listCacheClear.js +1 -0
  109. package/dist/rjs/node_modules/lodash-es/_listCacheDelete.js +1 -0
  110. package/dist/rjs/node_modules/lodash-es/_listCacheGet.js +1 -0
  111. package/dist/rjs/node_modules/lodash-es/_listCacheHas.js +1 -0
  112. package/dist/rjs/node_modules/lodash-es/_listCacheSet.js +1 -0
  113. package/dist/rjs/node_modules/lodash-es/_mapCacheClear.js +1 -0
  114. package/dist/rjs/node_modules/lodash-es/_mapCacheDelete.js +1 -0
  115. package/dist/rjs/node_modules/lodash-es/_mapCacheGet.js +1 -0
  116. package/dist/rjs/node_modules/lodash-es/_mapCacheHas.js +1 -0
  117. package/dist/rjs/node_modules/lodash-es/_mapCacheSet.js +1 -0
  118. package/dist/rjs/node_modules/lodash-es/_mapToArray.js +1 -0
  119. package/dist/rjs/node_modules/lodash-es/_nativeCreate.js +1 -0
  120. package/dist/rjs/node_modules/lodash-es/_nativeKeys.js +1 -0
  121. package/dist/rjs/node_modules/lodash-es/_nativeKeysIn.js +1 -0
  122. package/dist/rjs/node_modules/lodash-es/_nodeUtil.js +1 -0
  123. package/dist/rjs/node_modules/lodash-es/_objectToString.js +1 -0
  124. package/dist/rjs/node_modules/lodash-es/_overArg.js +1 -0
  125. package/dist/rjs/node_modules/lodash-es/_overRest.js +1 -0
  126. package/dist/rjs/node_modules/lodash-es/_root.js +1 -0
  127. package/dist/rjs/node_modules/lodash-es/_safeGet.js +1 -0
  128. package/dist/rjs/node_modules/lodash-es/_setCacheAdd.js +1 -0
  129. package/dist/rjs/node_modules/lodash-es/_setCacheHas.js +1 -0
  130. package/dist/rjs/node_modules/lodash-es/_setToArray.js +1 -0
  131. package/dist/rjs/node_modules/lodash-es/_setToString.js +1 -0
  132. package/dist/rjs/node_modules/lodash-es/_shortOut.js +1 -0
  133. package/dist/rjs/node_modules/lodash-es/_stackClear.js +1 -0
  134. package/dist/rjs/node_modules/lodash-es/_stackDelete.js +1 -0
  135. package/dist/rjs/node_modules/lodash-es/_stackGet.js +1 -0
  136. package/dist/rjs/node_modules/lodash-es/_stackHas.js +1 -0
  137. package/dist/rjs/node_modules/lodash-es/_stackSet.js +1 -0
  138. package/dist/rjs/node_modules/lodash-es/_toSource.js +1 -0
  139. package/dist/rjs/node_modules/lodash-es/_trimmedEndIndex.js +1 -0
  140. package/dist/rjs/node_modules/lodash-es/chunk.js +1 -0
  141. package/dist/rjs/node_modules/lodash-es/constant.js +1 -0
  142. package/dist/rjs/node_modules/lodash-es/debounce.js +1 -0
  143. package/dist/rjs/node_modules/lodash-es/eq.js +1 -0
  144. package/dist/rjs/node_modules/lodash-es/identity.js +1 -0
  145. package/dist/rjs/node_modules/lodash-es/isArguments.js +1 -0
  146. package/dist/rjs/node_modules/lodash-es/isArray.js +1 -0
  147. package/dist/rjs/node_modules/lodash-es/isArrayLike.js +1 -0
  148. package/dist/rjs/node_modules/lodash-es/isArrayLikeObject.js +1 -0
  149. package/dist/rjs/node_modules/lodash-es/isBuffer.js +1 -0
  150. package/dist/rjs/node_modules/lodash-es/isEqual.js +1 -0
  151. package/dist/rjs/node_modules/lodash-es/isFunction.js +1 -0
  152. package/dist/rjs/node_modules/lodash-es/isLength.js +1 -0
  153. package/dist/rjs/node_modules/lodash-es/isObject.js +1 -0
  154. package/dist/rjs/node_modules/lodash-es/isObjectLike.js +1 -0
  155. package/dist/rjs/node_modules/lodash-es/isPlainObject.js +1 -0
  156. package/dist/rjs/node_modules/lodash-es/isSymbol.js +1 -0
  157. package/dist/rjs/node_modules/lodash-es/isTypedArray.js +1 -0
  158. package/dist/rjs/node_modules/lodash-es/keys.js +1 -0
  159. package/dist/rjs/node_modules/lodash-es/keysIn.js +1 -0
  160. package/dist/rjs/node_modules/lodash-es/mergeWith.js +1 -0
  161. package/dist/rjs/node_modules/lodash-es/now.js +1 -0
  162. package/dist/rjs/node_modules/lodash-es/stubArray.js +1 -0
  163. package/dist/rjs/node_modules/lodash-es/stubFalse.js +1 -0
  164. package/dist/rjs/node_modules/lodash-es/throttle.js +1 -0
  165. package/dist/rjs/node_modules/lodash-es/toFinite.js +1 -0
  166. package/dist/rjs/node_modules/lodash-es/toInteger.js +1 -0
  167. package/dist/rjs/node_modules/lodash-es/toNumber.js +1 -0
  168. package/dist/rjs/node_modules/lodash-es/toPlainObject.js +1 -0
  169. package/dist/rjs/node_modules/mitt/dist/mitt.js +1 -0
  170. package/dist/rjs/node_modules/nanoid/non-secure/index.js +1 -0
  171. package/dist/rjs/node_modules/parse-svg-path/index.js +1 -0
  172. package/dist/rjs/node_modules/pixi.js/lib/_virtual/checkImageBitmap.worker.js +1 -0
  173. package/dist/rjs/node_modules/pixi.js/lib/_virtual/loadImageBitmap.worker.js +1 -0
  174. package/dist/rjs/node_modules/pixi.js/lib/accessibility/AccessibilitySystem.js +1 -0
  175. package/dist/rjs/node_modules/pixi.js/lib/accessibility/accessibilityTarget.js +1 -0
  176. package/dist/rjs/node_modules/pixi.js/lib/accessibility/init.js +1 -0
  177. package/dist/rjs/node_modules/pixi.js/lib/app/Application.js +1 -0
  178. package/dist/rjs/node_modules/pixi.js/lib/app/ResizePlugin.js +1 -0
  179. package/dist/rjs/node_modules/pixi.js/lib/app/TickerPlugin.js +1 -0
  180. package/dist/rjs/node_modules/pixi.js/lib/app/init.js +1 -0
  181. package/dist/rjs/node_modules/pixi.js/lib/assets/Assets.js +1 -0
  182. package/dist/rjs/node_modules/pixi.js/lib/assets/BackgroundLoader.js +1 -0
  183. package/dist/rjs/node_modules/pixi.js/lib/assets/cache/Cache.js +1 -0
  184. package/dist/rjs/node_modules/pixi.js/lib/assets/cache/parsers/cacheTextureArray.js +1 -0
  185. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/parsers/detectAvif.js +1 -0
  186. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/parsers/detectDefaults.js +1 -0
  187. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/parsers/detectMp4.js +1 -0
  188. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/parsers/detectOgv.js +1 -0
  189. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/parsers/detectWebm.js +1 -0
  190. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/parsers/detectWebp.js +1 -0
  191. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/utils/testImageFormat.js +1 -0
  192. package/dist/rjs/node_modules/pixi.js/lib/assets/detections/utils/testVideoFormat.js +1 -0
  193. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/Loader.js +1 -0
  194. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/LoaderParser.js +1 -0
  195. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/loadJson.js +1 -0
  196. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/loadTxt.js +1 -0
  197. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/loadWebFont.js +1 -0
  198. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/textures/loadSVG.js +1 -0
  199. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/textures/loadTextures.js +1 -0
  200. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/textures/loadVideoTextures.js +1 -0
  201. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/parsers/textures/utils/createTexture.js +1 -0
  202. package/dist/rjs/node_modules/pixi.js/lib/assets/loader/workers/WorkerManager.js +1 -0
  203. package/dist/rjs/node_modules/pixi.js/lib/assets/resolver/Resolver.js +1 -0
  204. package/dist/rjs/node_modules/pixi.js/lib/assets/resolver/parsers/resolveJsonUrl.js +1 -0
  205. package/dist/rjs/node_modules/pixi.js/lib/assets/resolver/parsers/resolveTextureUrl.js +1 -0
  206. package/dist/rjs/node_modules/pixi.js/lib/assets/utils/checkDataUrl.js +1 -0
  207. package/dist/rjs/node_modules/pixi.js/lib/assets/utils/checkExtension.js +1 -0
  208. package/dist/rjs/node_modules/pixi.js/lib/assets/utils/convertToList.js +1 -0
  209. package/dist/rjs/node_modules/pixi.js/lib/assets/utils/copySearchParams.js +1 -0
  210. package/dist/rjs/node_modules/pixi.js/lib/assets/utils/createStringVariations.js +1 -0
  211. package/dist/rjs/node_modules/pixi.js/lib/assets/utils/isSingleItem.js +1 -0
  212. package/dist/rjs/node_modules/pixi.js/lib/color/Color.js +1 -0
  213. package/dist/rjs/node_modules/pixi.js/lib/culling/cullingMixin.js +1 -0
  214. package/dist/rjs/node_modules/pixi.js/lib/dom/CanvasObserver.js +1 -0
  215. package/dist/rjs/node_modules/pixi.js/lib/dom/DOMContainer.js +1 -0
  216. package/dist/rjs/node_modules/pixi.js/lib/dom/DOMPipe.js +1 -0
  217. package/dist/rjs/node_modules/pixi.js/lib/dom/init.js +1 -0
  218. package/dist/rjs/node_modules/pixi.js/lib/environment/adapter.js +1 -0
  219. package/dist/rjs/node_modules/pixi.js/lib/environment/autoDetectEnvironment.js +1 -0
  220. package/dist/rjs/node_modules/pixi.js/lib/environment-browser/BrowserAdapter.js +1 -0
  221. package/dist/rjs/node_modules/pixi.js/lib/environment-browser/browserAll.js +1 -0
  222. package/dist/rjs/node_modules/pixi.js/lib/environment-browser/browserExt.js +1 -0
  223. package/dist/rjs/node_modules/pixi.js/lib/environment-webworker/webworkerAll.js +1 -0
  224. package/dist/rjs/node_modules/pixi.js/lib/environment-webworker/webworkerExt.js +1 -0
  225. package/dist/rjs/node_modules/pixi.js/lib/events/EventBoundary.js +1 -0
  226. package/dist/rjs/node_modules/pixi.js/lib/events/EventSystem.js +1 -0
  227. package/dist/rjs/node_modules/pixi.js/lib/events/EventTicker.js +1 -0
  228. package/dist/rjs/node_modules/pixi.js/lib/events/FederatedEvent.js +1 -0
  229. package/dist/rjs/node_modules/pixi.js/lib/events/FederatedEventTarget.js +1 -0
  230. package/dist/rjs/node_modules/pixi.js/lib/events/FederatedMouseEvent.js +1 -0
  231. package/dist/rjs/node_modules/pixi.js/lib/events/FederatedPointerEvent.js +1 -0
  232. package/dist/rjs/node_modules/pixi.js/lib/events/FederatedWheelEvent.js +1 -0
  233. package/dist/rjs/node_modules/pixi.js/lib/events/init.js +1 -0
  234. package/dist/rjs/node_modules/pixi.js/lib/extensions/Extensions.js +1 -0
  235. package/dist/rjs/node_modules/pixi.js/lib/filters/Filter.js +1 -0
  236. package/dist/rjs/node_modules/pixi.js/lib/filters/FilterEffect.js +1 -0
  237. package/dist/rjs/node_modules/pixi.js/lib/filters/FilterPipe.js +1 -0
  238. package/dist/rjs/node_modules/pixi.js/lib/filters/FilterSystem.js +1 -0
  239. package/dist/rjs/node_modules/pixi.js/lib/filters/defaults/defaultFilter.vert.js +1 -0
  240. package/dist/rjs/node_modules/pixi.js/lib/filters/defaults/passthrough/PassthroughFilter.js +1 -0
  241. package/dist/rjs/node_modules/pixi.js/lib/filters/defaults/passthrough/passthrough.frag.js +1 -0
  242. package/dist/rjs/node_modules/pixi.js/lib/filters/defaults/passthrough/passthrough.wgsl.js +1 -0
  243. package/dist/rjs/node_modules/pixi.js/lib/filters/init.js +1 -0
  244. package/dist/rjs/node_modules/pixi.js/lib/filters/mask/MaskFilter.js +1 -0
  245. package/dist/rjs/node_modules/pixi.js/lib/filters/mask/mask.frag.js +1 -0
  246. package/dist/rjs/node_modules/pixi.js/lib/filters/mask/mask.vert.js +1 -0
  247. package/dist/rjs/node_modules/pixi.js/lib/filters/mask/mask.wgsl.js +1 -0
  248. package/dist/rjs/node_modules/pixi.js/lib/gif/GifAsset.js +1 -0
  249. package/dist/rjs/node_modules/pixi.js/lib/gif/GifSource.js +1 -0
  250. package/dist/rjs/node_modules/pixi.js/lib/gif/GifSprite.js +1 -0
  251. package/dist/rjs/node_modules/pixi.js/lib/gif/init.js +1 -0
  252. package/dist/rjs/node_modules/pixi.js/lib/index.js +1 -0
  253. package/dist/rjs/node_modules/pixi.js/lib/maths/matrix/Matrix.js +1 -0
  254. package/dist/rjs/node_modules/pixi.js/lib/maths/matrix/groupD8.js +1 -0
  255. package/dist/rjs/node_modules/pixi.js/lib/maths/misc/const.js +1 -0
  256. package/dist/rjs/node_modules/pixi.js/lib/maths/misc/pow2.js +1 -0
  257. package/dist/rjs/node_modules/pixi.js/lib/maths/misc/squaredDistanceToLineSegment.js +1 -0
  258. package/dist/rjs/node_modules/pixi.js/lib/maths/point/ObservablePoint.js +1 -0
  259. package/dist/rjs/node_modules/pixi.js/lib/maths/point/Point.js +1 -0
  260. package/dist/rjs/node_modules/pixi.js/lib/maths/point/pointInTriangle.js +1 -0
  261. package/dist/rjs/node_modules/pixi.js/lib/maths/shapes/Circle.js +1 -0
  262. package/dist/rjs/node_modules/pixi.js/lib/maths/shapes/Ellipse.js +1 -0
  263. package/dist/rjs/node_modules/pixi.js/lib/maths/shapes/Polygon.js +1 -0
  264. package/dist/rjs/node_modules/pixi.js/lib/maths/shapes/Rectangle.js +1 -0
  265. package/dist/rjs/node_modules/pixi.js/lib/maths/shapes/RoundedRectangle.js +1 -0
  266. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/gl/GlBatchAdaptor.js +1 -0
  267. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/gl/utils/checkMaxIfStatementsInShader.js +1 -0
  268. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/gl/utils/maxRecommendedTextures.js +1 -0
  269. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.js +1 -0
  270. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/gpu/getTextureBatchBindGroup.js +1 -0
  271. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/shared/BatchGeometry.js +1 -0
  272. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/shared/BatchTextureArray.js +1 -0
  273. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/shared/Batcher.js +1 -0
  274. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/shared/BatcherPipe.js +1 -0
  275. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/shared/DefaultBatcher.js +1 -0
  276. package/dist/rjs/node_modules/pixi.js/lib/rendering/batcher/shared/DefaultShader.js +1 -0
  277. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/compileHighShaderToProgram.js +1 -0
  278. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/compiler/compileHighShader.js +1 -0
  279. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/addBits.js +1 -0
  280. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileHooks.js +1 -0
  281. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileInputs.js +1 -0
  282. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/compileOutputs.js +1 -0
  283. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/compiler/utils/injectBits.js +1 -0
  284. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/defaultProgramTemplate.js +1 -0
  285. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/colorBit.js +1 -0
  286. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/generateTextureBatchBit.js +1 -0
  287. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/globalUniformsBit.js +1 -0
  288. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/localUniformBit.js +1 -0
  289. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/roundPixelsBit.js +1 -0
  290. package/dist/rjs/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/textureBit.js +1 -0
  291. package/dist/rjs/node_modules/pixi.js/lib/rendering/init.js +1 -0
  292. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/MaskEffectManager.js +1 -0
  293. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMask.js +1 -0
  294. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMaskPipe.js +1 -0
  295. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/color/ColorMask.js +1 -0
  296. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/color/ColorMaskPipe.js +1 -0
  297. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/stencil/StencilMask.js +1 -0
  298. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/stencil/StencilMaskPipe.js +1 -0
  299. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/utils/addMaskBounds.js +1 -0
  300. package/dist/rjs/node_modules/pixi.js/lib/rendering/mask/utils/addMaskLocalBounds.js +1 -0
  301. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/autoDetectRenderer.js +1 -0
  302. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/GlBackBufferSystem.js +1 -0
  303. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/GlColorMaskSystem.js +1 -0
  304. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/GlEncoderSystem.js +1 -0
  305. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/GlLimitsSystem.js +1 -0
  306. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/GlRenderTarget.js +1 -0
  307. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/GlStencilSystem.js +1 -0
  308. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/GlUboSystem.js +1 -0
  309. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/WebGLRenderer.js +1 -0
  310. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBuffer.js +1 -0
  311. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBufferSystem.js +1 -0
  312. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/const.js +1 -0
  313. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/const.js +1 -0
  314. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/context/GlContextSystem.js +1 -0
  315. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/GlGeometrySystem.js +1 -0
  316. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.js +1 -0
  317. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.js +1 -0
  318. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetSystem.js +1 -0
  319. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/GenerateShaderSyncCode.js +1 -0
  320. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgram.js +1 -0
  321. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgramData.js +1 -0
  322. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlShaderSystem.js +1 -0
  323. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlUniformGroupSystem.js +1 -0
  324. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/getBatchSamplersUniformGroup.js +1 -0
  325. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/compileShader.js +1 -0
  326. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/defaultValue.js +1 -0
  327. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.js +1 -0
  328. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/extractAttributesFromGlProgram.js +1 -0
  329. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/generateProgram.js +1 -0
  330. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getMaxFragmentPrecision.js +1 -0
  331. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getTestContext.js +1 -0
  332. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUboData.js +1 -0
  333. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUniformData.js +1 -0
  334. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/logProgramError.js +1 -0
  335. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/mapType.js +1 -0
  336. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/addProgramDefines.js +1 -0
  337. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/ensurePrecision.js +1 -0
  338. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/insertVersion.js +1 -0
  339. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/setProgramName.js +1 -0
  340. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/stripVersion.js +1 -0
  341. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboElementsSTD40.js +1 -0
  342. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboSyncSTD40.js +1 -0
  343. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateArraySyncSTD40.js +1 -0
  344. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSync.js +1 -0
  345. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSyncTypes.js +1 -0
  346. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/state/GlStateSystem.js +1 -0
  347. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.js +1 -0
  348. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTexture.js +1 -0
  349. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTextureSystem.js +1 -0
  350. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/const.js +1 -0
  351. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.js +1 -0
  352. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.js +1 -0
  353. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadImageResource.js +1 -0
  354. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadVideoResource.js +1 -0
  355. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/applyStyleParams.js +1 -0
  356. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.js +1 -0
  357. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.js +1 -0
  358. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlType.js +1 -0
  359. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/pixiToGlMaps.js +1 -0
  360. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.js +1 -0
  361. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.js +1 -0
  362. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.js +1 -0
  363. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.js +1 -0
  364. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuLimitsSystem.js +1 -0
  365. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.js +1 -0
  366. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUboSystem.js +1 -0
  367. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.js +1 -0
  368. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.js +1 -0
  369. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.js +1 -0
  370. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.js +1 -0
  371. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.js +1 -0
  372. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.js +1 -0
  373. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.js +1 -0
  374. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.js +1 -0
  375. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.js +1 -0
  376. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/BindGroup.js +1 -0
  377. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuProgram.js +1 -0
  378. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.js +1 -0
  379. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboElementsWGSL.js +1 -0
  380. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/createUboSyncFunctionWGSL.js +1 -0
  381. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractAttributesFromGpuProgram.js +1 -0
  382. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractStructAndGroups.js +1 -0
  383. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateArraySyncWGSL.js +1 -0
  384. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateGpuLayoutGroups.js +1 -0
  385. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateLayoutHash.js +1 -0
  386. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/removeStructAndGroupDuplicates.js +1 -0
  387. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.js +1 -0
  388. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.js +1 -0
  389. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.js +1 -0
  390. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.js +1 -0
  391. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.js +1 -0
  392. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.js +1 -0
  393. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.js +1 -0
  394. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.js +1 -0
  395. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.js +1 -0
  396. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/SchedulerSystem.js +1 -0
  397. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/background/BackgroundSystem.js +1 -0
  398. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/blendModes/BlendModePipe.js +1 -0
  399. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.js +1 -0
  400. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/buffer/BufferResource.js +1 -0
  401. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/buffer/const.js +1 -0
  402. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/buffer/utils/fastCopy.js +1 -0
  403. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/extract/ExtractSystem.js +1 -0
  404. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/extract/GenerateTextureSystem.js +1 -0
  405. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/geometry/Geometry.js +1 -0
  406. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/buildUvs.js +1 -0
  407. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/ensureIsBuffer.js +1 -0
  408. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.js +1 -0
  409. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getGeometryBounds.js +1 -0
  410. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/transformVertices.js +1 -0
  411. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/instructions/InstructionSet.js +1 -0
  412. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/GlobalUniformSystem.js +1 -0
  413. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTarget.js +1 -0
  414. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.js +1 -0
  415. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.js +1 -0
  416. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/Shader.js +1 -0
  417. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/UboSystem.js +1 -0
  418. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/UniformGroup.js +1 -0
  419. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/const.js +1 -0
  420. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/types.js +1 -0
  421. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/createUboSyncFunction.js +1 -0
  422. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/getDefaultUniformValue.js +1 -0
  423. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/uboSyncFunctions.js +1 -0
  424. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/uniformParsers.js +1 -0
  425. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.js +1 -0
  426. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/state/State.js +1 -0
  427. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/state/const.js +1 -0
  428. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/state/getAdjustedBlendModeBlend.js +1 -0
  429. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/system/AbstractRenderer.js +1 -0
  430. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.js +1 -0
  431. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/system/SystemRunner.js +1 -0
  432. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.js +1 -0
  433. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderTexture.js +1 -0
  434. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderableGCSystem.js +1 -0
  435. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/Texture.js +1 -0
  436. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.js +1 -0
  437. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureMatrix.js +1 -0
  438. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TexturePool.js +1 -0
  439. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureStyle.js +1 -0
  440. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/BufferImageSource.js +1 -0
  441. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/CanvasSource.js +1 -0
  442. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/ImageSource.js +1 -0
  443. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/TextureSource.js +1 -0
  444. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/sources/VideoSource.js +1 -0
  445. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/getCanvasTexture.js +1 -0
  446. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/textureFrom.js +1 -0
  447. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/utils/createIdFromString.js +1 -0
  448. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/shared/view/ViewSystem.js +1 -0
  449. package/dist/rjs/node_modules/pixi.js/lib/rendering/renderers/types.js +1 -0
  450. package/dist/rjs/node_modules/pixi.js/lib/scene/container/Container.js +1 -0
  451. package/dist/rjs/node_modules/pixi.js/lib/scene/container/CustomRenderPipe.js +1 -0
  452. package/dist/rjs/node_modules/pixi.js/lib/scene/container/RenderGroup.js +1 -0
  453. package/dist/rjs/node_modules/pixi.js/lib/scene/container/RenderGroupPipe.js +1 -0
  454. package/dist/rjs/node_modules/pixi.js/lib/scene/container/RenderGroupSystem.js +1 -0
  455. package/dist/rjs/node_modules/pixi.js/lib/scene/container/bounds/Bounds.js +1 -0
  456. package/dist/rjs/node_modules/pixi.js/lib/scene/container/bounds/getGlobalBounds.js +1 -0
  457. package/dist/rjs/node_modules/pixi.js/lib/scene/container/bounds/getLocalBounds.js +1 -0
  458. package/dist/rjs/node_modules/pixi.js/lib/scene/container/bounds/getRenderableBounds.js +1 -0
  459. package/dist/rjs/node_modules/pixi.js/lib/scene/container/bounds/utils/matrixAndBoundsPool.js +1 -0
  460. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/cacheAsTextureMixin.js +1 -0
  461. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/childrenHelperMixin.js +1 -0
  462. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/collectRenderablesMixin.js +1 -0
  463. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/effectsMixin.js +1 -0
  464. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/findMixin.js +1 -0
  465. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/getFastGlobalBoundsMixin.js +1 -0
  466. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/getGlobalMixin.js +1 -0
  467. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/measureMixin.js +1 -0
  468. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/onRenderMixin.js +1 -0
  469. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/sortMixin.js +1 -0
  470. package/dist/rjs/node_modules/pixi.js/lib/scene/container/container-mixins/toLocalGlobalMixin.js +1 -0
  471. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/assignWithIgnore.js +1 -0
  472. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/checkChildrenDidChange.js +1 -0
  473. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/clearList.js +1 -0
  474. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/definedProps.js +1 -0
  475. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/executeInstructions.js +1 -0
  476. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/multiplyColors.js +1 -0
  477. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/multiplyHexColors.js +1 -0
  478. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.js +1 -0
  479. package/dist/rjs/node_modules/pixi.js/lib/scene/container/utils/validateRenderables.js +1 -0
  480. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/gl/GlGraphicsAdaptor.js +1 -0
  481. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.js +1 -0
  482. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/gpu/colorToUniform.js +1 -0
  483. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/init.js +1 -0
  484. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/BatchableGraphics.js +1 -0
  485. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/Graphics.js +1 -0
  486. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/GraphicsContext.js +1 -0
  487. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/GraphicsContextSystem.js +1 -0
  488. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/GraphicsPipe.js +1 -0
  489. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildAdaptiveBezier.js +1 -0
  490. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildAdaptiveQuadratic.js +1 -0
  491. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildArc.js +1 -0
  492. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildArcTo.js +1 -0
  493. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildArcToSvg.js +1 -0
  494. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildCircle.js +1 -0
  495. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildLine.js +1 -0
  496. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildPixelLine.js +1 -0
  497. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildPolygon.js +1 -0
  498. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildRectangle.js +1 -0
  499. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/buildCommands/buildTriangle.js +1 -0
  500. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/const.js +1 -0
  501. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/fill/FillGradient.js +1 -0
  502. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/fill/FillPattern.js +1 -0
  503. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/path/GraphicsPath.js +1 -0
  504. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/path/ShapePath.js +1 -0
  505. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/path/roundShape.js +1 -0
  506. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/SVGParser.js +1 -0
  507. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGDefinitions.js +1 -0
  508. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGFloatAttribute.js +1 -0
  509. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGPath.js +1 -0
  510. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/parseSVGStyle.js +1 -0
  511. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/utils/extractSvgUrlId.js +1 -0
  512. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/utils/fillOperations.js +1 -0
  513. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/svg/utils/pathOperations.js +1 -0
  514. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/utils/buildContextBatches.js +1 -0
  515. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/utils/convertFillInputToFillStyle.js +1 -0
  516. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/utils/generateTextureFillMatrix.js +1 -0
  517. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/utils/getOrientationOfPoints.js +1 -0
  518. package/dist/rjs/node_modules/pixi.js/lib/scene/graphics/shared/utils/triangulateWithHoles.js +1 -0
  519. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh/gl/GlMeshAdaptor.js +1 -0
  520. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.js +1 -0
  521. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh/init.js +1 -0
  522. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh/shared/BatchableMesh.js +1 -0
  523. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh/shared/Mesh.js +1 -0
  524. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh/shared/MeshGeometry.js +1 -0
  525. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh/shared/MeshPipe.js +1 -0
  526. package/dist/rjs/node_modules/pixi.js/lib/scene/mesh-plane/PlaneGeometry.js +1 -0
  527. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/gl/GlParticleContainerAdaptor.js +1 -0
  528. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/gpu/GpuParticleContainerAdaptor.js +1 -0
  529. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/init.js +1 -0
  530. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/GlParticleContainerPipe.js +1 -0
  531. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/GpuParticleContainerPipe.js +1 -0
  532. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/ParticleBuffer.js +1 -0
  533. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/ParticleContainerPipe.js +1 -0
  534. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/shader/ParticleShader.js +1 -0
  535. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/shader/particles.frag.js +1 -0
  536. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/shader/particles.vert.js +1 -0
  537. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/shader/particles.wgsl.js +1 -0
  538. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/utils/createIndicesForQuads.js +1 -0
  539. package/dist/rjs/node_modules/pixi.js/lib/scene/particle-container/shared/utils/generateParticleUpdateFunction.js +1 -0
  540. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite/BatchableSprite.js +1 -0
  541. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite/Sprite.js +1 -0
  542. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite/SpritePipe.js +1 -0
  543. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-animated/AnimatedSprite.js +1 -0
  544. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceGeometry.js +1 -0
  545. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceSpritePipe.js +1 -0
  546. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-nine-slice/init.js +1 -0
  547. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/TilingSprite.js +1 -0
  548. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/TilingSpritePipe.js +1 -0
  549. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/init.js +1 -0
  550. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/shader/TilingSpriteShader.js +1 -0
  551. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/shader/tilingBit.js +1 -0
  552. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/utils/QuadGeometry.js +1 -0
  553. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/utils/applyMatrix.js +1 -0
  554. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setPositions.js +1 -0
  555. package/dist/rjs/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setUvs.js +1 -0
  556. package/dist/rjs/node_modules/pixi.js/lib/scene/text/AbstractText.js +1 -0
  557. package/dist/rjs/node_modules/pixi.js/lib/scene/text/Text.js +1 -0
  558. package/dist/rjs/node_modules/pixi.js/lib/scene/text/TextStyle.js +1 -0
  559. package/dist/rjs/node_modules/pixi.js/lib/scene/text/canvas/BatchableText.js +1 -0
  560. package/dist/rjs/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextGenerator.js +1 -0
  561. package/dist/rjs/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextMetrics.js +1 -0
  562. package/dist/rjs/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextPipe.js +1 -0
  563. package/dist/rjs/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextSystem.js +1 -0
  564. package/dist/rjs/node_modules/pixi.js/lib/scene/text/canvas/utils/fontStringFromTextStyle.js +1 -0
  565. package/dist/rjs/node_modules/pixi.js/lib/scene/text/canvas/utils/getCanvasFillStyle.js +1 -0
  566. package/dist/rjs/node_modules/pixi.js/lib/scene/text/init.js +1 -0
  567. package/dist/rjs/node_modules/pixi.js/lib/scene/text/sdfShader/SdfShader.js +1 -0
  568. package/dist/rjs/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/localUniformMSDFBit.js +1 -0
  569. package/dist/rjs/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/mSDFBit.js +1 -0
  570. package/dist/rjs/node_modules/pixi.js/lib/scene/text/utils/getPo2TextureFromSource.js +1 -0
  571. package/dist/rjs/node_modules/pixi.js/lib/scene/text/utils/updateTextBounds.js +1 -0
  572. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/AbstractBitmapFont.js +1 -0
  573. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFont.js +1 -0
  574. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFontManager.js +1 -0
  575. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/BitmapTextPipe.js +1 -0
  576. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/DynamicBitmapFont.js +1 -0
  577. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontTextParser.js +1 -0
  578. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLParser.js +1 -0
  579. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLStringParser.js +1 -0
  580. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/asset/loadBitmapFont.js +1 -0
  581. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/init.js +1 -0
  582. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/utils/getBitmapTextLayout.js +1 -0
  583. package/dist/rjs/node_modules/pixi.js/lib/scene/text-bitmap/utils/resolveCharacters.js +1 -0
  584. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/BatchableHTMLText.js +1 -0
  585. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/HTMLTextPipe.js +1 -0
  586. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/HTMLTextRenderData.js +1 -0
  587. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/HTMLTextSystem.js +1 -0
  588. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/init.js +1 -0
  589. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/extractFontFamilies.js +1 -0
  590. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/getFontCss.js +1 -0
  591. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/getSVGUrl.js +1 -0
  592. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/getTemporaryCanvasFromImage.js +1 -0
  593. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/loadFontAsBase64.js +1 -0
  594. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/loadFontCSS.js +1 -0
  595. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/loadSVGImage.js +1 -0
  596. package/dist/rjs/node_modules/pixi.js/lib/scene/text-html/utils/measureHtmlText.js +1 -0
  597. package/dist/rjs/node_modules/pixi.js/lib/scene/view/ViewContainer.js +1 -0
  598. package/dist/rjs/node_modules/pixi.js/lib/spritesheet/Spritesheet.js +1 -0
  599. package/dist/rjs/node_modules/pixi.js/lib/spritesheet/init.js +1 -0
  600. package/dist/rjs/node_modules/pixi.js/lib/spritesheet/spritesheetAsset.js +1 -0
  601. package/dist/rjs/node_modules/pixi.js/lib/ticker/Ticker.js +1 -0
  602. package/dist/rjs/node_modules/pixi.js/lib/ticker/TickerListener.js +1 -0
  603. package/dist/rjs/node_modules/pixi.js/lib/ticker/const.js +1 -0
  604. package/dist/rjs/node_modules/pixi.js/lib/utils/browser/detectVideoAlphaMode.js +1 -0
  605. package/dist/rjs/node_modules/pixi.js/lib/utils/browser/isMobile.js +1 -0
  606. package/dist/rjs/node_modules/pixi.js/lib/utils/browser/isSafari.js +1 -0
  607. package/dist/rjs/node_modules/pixi.js/lib/utils/browser/isWebGLSupported.js +1 -0
  608. package/dist/rjs/node_modules/pixi.js/lib/utils/browser/isWebGPUSupported.js +1 -0
  609. package/dist/rjs/node_modules/pixi.js/lib/utils/browser/unsafeEvalSupported.js +1 -0
  610. package/dist/rjs/node_modules/pixi.js/lib/utils/canvas/getCanvasBoundingBox.js +1 -0
  611. package/dist/rjs/node_modules/pixi.js/lib/utils/const.js +1 -0
  612. package/dist/rjs/node_modules/pixi.js/lib/utils/data/ViewableBuffer.js +1 -0
  613. package/dist/rjs/node_modules/pixi.js/lib/utils/data/clean.js +1 -0
  614. package/dist/rjs/node_modules/pixi.js/lib/utils/data/removeItems.js +1 -0
  615. package/dist/rjs/node_modules/pixi.js/lib/utils/data/uid.js +1 -0
  616. package/dist/rjs/node_modules/pixi.js/lib/utils/data/updateQuadBounds.js +1 -0
  617. package/dist/rjs/node_modules/pixi.js/lib/utils/global/globalHooks.js +1 -0
  618. package/dist/rjs/node_modules/pixi.js/lib/utils/logging/deprecation.js +1 -0
  619. package/dist/rjs/node_modules/pixi.js/lib/utils/logging/warn.js +1 -0
  620. package/dist/rjs/node_modules/pixi.js/lib/utils/misc/NOOP.js +1 -0
  621. package/dist/rjs/node_modules/pixi.js/lib/utils/misc/Transform.js +1 -0
  622. package/dist/rjs/node_modules/pixi.js/lib/utils/network/getResolutionOfUrl.js +1 -0
  623. package/dist/rjs/node_modules/pixi.js/lib/utils/path.js +1 -0
  624. package/dist/rjs/node_modules/pixi.js/lib/utils/pool/GlobalResourceRegistry.js +1 -0
  625. package/dist/rjs/node_modules/pixi.js/lib/utils/pool/Pool.js +1 -0
  626. package/dist/rjs/node_modules/pixi.js/lib/utils/pool/PoolGroup.js +1 -0
  627. package/dist/rjs/node_modules/pixi.js/lib/utils/sayHello.js +1 -0
  628. package/dist/rjs/node_modules/pixi.js/lib/utils/utils.js +1 -0
  629. package/dist/rjs/node_modules/proxy-compare/dist/index.js +1 -0
  630. package/dist/rjs/node_modules/tiny-lru/dist/tiny-lru.js +1 -0
  631. package/dist/rjs/node_modules/tinycolor2/esm/tinycolor.js +1 -0
  632. package/dist/rjs/node_modules/valtio/esm/vanilla/utils.js +1 -0
  633. package/dist/rjs/node_modules/valtio/esm/vanilla.js +1 -0
  634. package/dist/rjs/src/core/application/AppContainer.js +1 -0
  635. package/dist/rjs/src/core/application/AppService.js +1 -0
  636. package/dist/rjs/src/core/application/Interaction.js +1 -0
  637. package/dist/rjs/src/core/application/MapApplication.js +1 -0
  638. package/dist/rjs/src/core/application/ViewportContainer.js +1 -0
  639. package/dist/rjs/src/core/components/Base/BaseControlButton.js +1 -0
  640. package/dist/rjs/src/core/components/Base/Border.js +1 -0
  641. package/dist/rjs/src/core/components/Base/ControlFill.js +1 -0
  642. package/dist/rjs/src/core/components/Base/DashLine.js +1 -0
  643. package/dist/rjs/src/core/components/Base/EndPoint.js +1 -0
  644. package/dist/rjs/src/core/components/Base/EnhancedAnimatedSprite.js +1 -0
  645. package/dist/rjs/src/core/components/Base/EnhancedGifSprite.js +1 -0
  646. package/dist/rjs/src/core/components/Base/EnhancedSprite.js +1 -0
  647. package/dist/rjs/src/core/components/Base/FixedSizeContainer.js +1 -0
  648. package/dist/{components → rjs/src/core/components}/Base/FixedSizeDOMContainer.js +1 -1
  649. package/dist/rjs/src/core/components/Base/FixedSizeText.js +1 -0
  650. package/dist/rjs/src/core/components/Base/Ring.js +1 -0
  651. package/dist/rjs/src/core/components/Base/Zone.js +1 -0
  652. package/dist/rjs/src/core/components/ChargingStation/index.js +1 -0
  653. package/dist/rjs/src/core/components/Controls/Divider.js +1 -0
  654. package/dist/rjs/src/core/components/Controls/Spot.js +1 -0
  655. package/dist/rjs/src/core/components/Controls/VirtualWall.js +1 -0
  656. package/dist/rjs/src/core/components/Heatmap/index.js +1 -0
  657. package/dist/rjs/src/core/components/Map/Carpet.js +1 -0
  658. package/dist/rjs/src/core/components/Map/Free.js +1 -0
  659. package/dist/rjs/src/core/components/Map/Obstacle.js +1 -0
  660. package/dist/rjs/src/core/components/Map/RoomFill.js +1 -0
  661. package/dist/rjs/src/core/components/Path/index.js +1 -0
  662. package/dist/rjs/src/core/components/Robot/SleepAnimation.js +1 -0
  663. package/dist/rjs/src/core/components/Robot/index.js +1 -0
  664. package/dist/rjs/src/core/components/RoomFloorType/index.js +1 -0
  665. package/dist/rjs/src/core/components/RoomInfo/RoomName.js +1 -0
  666. package/dist/rjs/src/core/components/RoomInfo/RoomProperty.js +1 -0
  667. package/dist/rjs/src/core/components/RoomInfo/RoomSelectionIndicator.js +1 -0
  668. package/dist/rjs/src/core/constant/config.js +1 -0
  669. package/dist/rjs/src/core/constant/methods.js +1 -0
  670. package/dist/rjs/src/core/managers/ControlsManager.js +1 -0
  671. package/dist/rjs/src/core/managers/CustomElementsManager.js +1 -0
  672. package/dist/rjs/src/core/managers/MapManager.js +1 -0
  673. package/dist/rjs/src/core/managers/PathManager.js +1 -0
  674. package/dist/rjs/src/core/managers/RoomManager.js +1 -0
  675. package/dist/rjs/src/core/utils/browser.js +1 -0
  676. package/dist/rjs/src/core/utils/index.js +1 -0
  677. package/dist/utils/index.js +1 -1
  678. package/dist-docs/404.html +2 -2
  679. package/dist-docs/assets/{app.DKcv5ocC.js → app.DFCBjZzz.js} +1 -1
  680. package/dist-docs/assets/chunks/@localSearchIndexroot.BRrKBG3E.js +1 -0
  681. package/dist-docs/assets/chunks/{VPLocalSearchBox.Ry2KicD5.js → VPLocalSearchBox.DA9tFqkT.js} +1 -1
  682. package/dist-docs/assets/chunks/{theme.D-vPQmyU.js → theme.DLVtiTEc.js} +2 -2
  683. package/dist-docs/assets/{guide_advanced-usage.md.BquC67D7.js → guide_advanced-usage.md.BrZgx45A.js} +3 -1
  684. package/dist-docs/assets/{guide_advanced-usage.md.BquC67D7.lean.js → guide_advanced-usage.md.BrZgx45A.lean.js} +1 -1
  685. package/dist-docs/assets/{guide_getting-started.md.zACqR2O5.js → guide_getting-started.md.FCeGzF_5.js} +1 -1
  686. package/dist-docs/assets/reference_config.md.CfEp0H9c.js +61 -0
  687. package/dist-docs/assets/reference_config.md.CfEp0H9c.lean.js +1 -0
  688. package/dist-docs/guide/advanced-usage.html +7 -5
  689. package/dist-docs/guide/concepts.html +3 -3
  690. package/dist-docs/guide/getting-started.html +5 -5
  691. package/dist-docs/hashmap.json +1 -1
  692. package/dist-docs/index.html +3 -3
  693. package/dist-docs/reference/callbacks.html +3 -3
  694. package/dist-docs/reference/config.html +14 -8
  695. package/dist-docs/reference/data.html +3 -3
  696. package/dist-docs/reference/methods.html +3 -3
  697. package/dist-docs/reference/runtime.html +3 -3
  698. package/dist-docs/reference/types.html +3 -3
  699. package/dist-docs/reference/utils.html +3 -3
  700. package/package.json +2 -2
  701. package/dist/application/AppContainer.js +0 -1
  702. package/dist/application/AppService.js +0 -1
  703. package/dist/application/Interaction.js +0 -1
  704. package/dist/application/MapApplication.js +0 -1
  705. package/dist/application/ViewportContainer.js +0 -1
  706. package/dist/components/Base/BaseControlButton.js +0 -1
  707. package/dist/components/Base/Border.js +0 -1
  708. package/dist/components/Base/ControlFill.js +0 -1
  709. package/dist/components/Base/DashLine.js +0 -1
  710. package/dist/components/Base/EndPoint.js +0 -1
  711. package/dist/components/Base/EnhancedAnimatedSprite.js +0 -1
  712. package/dist/components/Base/EnhancedGifSprite.js +0 -1
  713. package/dist/components/Base/EnhancedSprite.js +0 -1
  714. package/dist/components/Base/FixedSizeContainer.js +0 -1
  715. package/dist/components/Base/FixedSizeText.js +0 -1
  716. package/dist/components/Base/Ring.js +0 -1
  717. package/dist/components/Base/Zone.js +0 -1
  718. package/dist/components/ChargingStation/index.js +0 -1
  719. package/dist/components/Controls/Divider.js +0 -1
  720. package/dist/components/Controls/Spot.js +0 -1
  721. package/dist/components/Controls/VirtualWall.js +0 -1
  722. package/dist/components/Heatmap/index.js +0 -1
  723. package/dist/components/Map/Carpet.js +0 -1
  724. package/dist/components/Map/Free.js +0 -1
  725. package/dist/components/Map/Obstacle.js +0 -1
  726. package/dist/components/Map/RoomFill.js +0 -1
  727. package/dist/components/Path/index.js +0 -1
  728. package/dist/components/Robot/SleepAnimation.js +0 -1
  729. package/dist/components/Robot/index.js +0 -1
  730. package/dist/components/RoomFloorType/index.js +0 -1
  731. package/dist/components/RoomInfo/RoomName.js +0 -1
  732. package/dist/components/RoomInfo/RoomProperty.js +0 -1
  733. package/dist/components/RoomInfo/RoomSelectionIndicator.js +0 -1
  734. package/dist/constant/config.js +0 -1
  735. package/dist/index.rjs.js +0 -1
  736. package/dist/managers/ControlsManager.js +0 -1
  737. package/dist/managers/CustomElementsManager.js +0 -1
  738. package/dist/managers/MapManager.js +0 -1
  739. package/dist/managers/PathManager.js +0 -1
  740. package/dist/managers/RoomManager.js +0 -1
  741. package/dist/utils/browser.js +0 -1
  742. package/dist-docs/assets/chunks/@localSearchIndexroot.C-cF3iZs.js +0 -1
  743. package/dist-docs/assets/reference_config.md.CRlb96P2.js +0 -55
  744. package/dist-docs/assets/reference_config.md.CRlb96P2.lean.js +0 -1
  745. /package/dist/{assets → rjs/src/core/assets}/carpet.png.js +0 -0
  746. /package/dist/{assets → rjs/src/core/assets}/chargingStation.png.js +0 -0
  747. /package/dist/{assets → rjs/src/core/assets}/checkmark.png.js +0 -0
  748. /package/dist/{assets → rjs/src/core/assets}/cleanMode0.png.js +0 -0
  749. /package/dist/{assets → rjs/src/core/assets}/cleanMode1.png.js +0 -0
  750. /package/dist/{assets → rjs/src/core/assets}/cleanMode2.png.js +0 -0
  751. /package/dist/{assets → rjs/src/core/assets}/cleanMode3.png.js +0 -0
  752. /package/dist/{assets → rjs/src/core/assets}/cleanTimes1.png.js +0 -0
  753. /package/dist/{assets → rjs/src/core/assets}/cleanTimes2.png.js +0 -0
  754. /package/dist/{assets → rjs/src/core/assets}/controlDelete.png.js +0 -0
  755. /package/dist/{assets → rjs/src/core/assets}/controlMove.png.js +0 -0
  756. /package/dist/{assets → rjs/src/core/assets}/controlRotate.png.js +0 -0
  757. /package/dist/{assets → rjs/src/core/assets}/controlScale.png.js +0 -0
  758. /package/dist/{assets → rjs/src/core/assets}/fan0.png.js +0 -0
  759. /package/dist/{assets → rjs/src/core/assets}/fan1.png.js +0 -0
  760. /package/dist/{assets → rjs/src/core/assets}/fan2.png.js +0 -0
  761. /package/dist/{assets → rjs/src/core/assets}/fan3.png.js +0 -0
  762. /package/dist/{assets → rjs/src/core/assets}/fan4.png.js +0 -0
  763. /package/dist/{assets → rjs/src/core/assets}/floorType1.png.js +0 -0
  764. /package/dist/{assets → rjs/src/core/assets}/floorType2.png.js +0 -0
  765. /package/dist/{assets → rjs/src/core/assets}/floorType3.png.js +0 -0
  766. /package/dist/{assets → rjs/src/core/assets}/robot.png.js +0 -0
  767. /package/dist/{assets → rjs/src/core/assets}/sleep.json.js +0 -0
  768. /package/dist/{assets → rjs/src/core/assets}/spot.png.js +0 -0
  769. /package/dist/{assets → rjs/src/core/assets}/water0.png.js +0 -0
  770. /package/dist/{assets → rjs/src/core/assets}/water1.png.js +0 -0
  771. /package/dist/{assets → rjs/src/core/assets}/water2.png.js +0 -0
  772. /package/dist/{assets → rjs/src/core/assets}/water3.png.js +0 -0
  773. /package/dist/{components → rjs/src/core/components}/Base/MoveControlButton.js +0 -0
  774. /package/dist/{components → rjs/src/core/components}/Base/RemoveControlButton.js +0 -0
  775. /package/dist/{components → rjs/src/core/components}/Base/RotateControlButton.js +0 -0
  776. /package/dist/{components → rjs/src/core/components}/Base/ScaleControlButton.js +0 -0
  777. /package/dist/{components → rjs/src/core/components}/ChargingStation/ChargingStationIcon.js +0 -0
  778. /package/dist/{components → rjs/src/core/components}/Controls/CleanZone.js +0 -0
  779. /package/dist/{components → rjs/src/core/components}/Controls/ForbiddenMopZone.js +0 -0
  780. /package/dist/{components → rjs/src/core/components}/Controls/ForbiddenSweepZone.js +0 -0
  781. /package/dist/{components → rjs/src/core/components}/CustomElements/CustomGif.js +0 -0
  782. /package/dist/{components → rjs/src/core/components}/CustomElements/CustomHTML.js +0 -0
  783. /package/dist/{components → rjs/src/core/components}/CustomElements/CustomImage.js +0 -0
  784. /package/dist/{components → rjs/src/core/components}/DetectedObject/index.js +0 -0
  785. /package/dist/{components → rjs/src/core/components}/Robot/RobotIcon.js +0 -0
  786. /package/dist/{components → rjs/src/core/components}/RoomInfo/index.js +0 -0
  787. /package/dist/{constant → rjs/src/core/constant}/index.js +0 -0
  788. /package/dist/{managers → rjs/src/core/managers}/DetectedObjectManager.js +0 -0
  789. /package/dist/{managers → rjs/src/core/managers}/HeatmapManager.js +0 -0
  790. /package/dist/{mixins → rjs/src/core/mixins}/ClickHandler.js +0 -0
  791. /package/dist/{utils → rjs/src/core/utils}/algorithm.js +0 -0
  792. /package/dist/{utils → rjs/src/core/utils}/logger.js +0 -0
  793. /package/dist-docs/assets/{guide_getting-started.md.zACqR2O5.lean.js → guide_getting-started.md.FCeGzF_5.lean.js} +0 -0
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DFCBjZzz.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.DLVtiTEc.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_data.md.B8JfrRhl.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -174,7 +174,7 @@
174
174
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
175
175
  <span class="line"></span>
176
176
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RobotMap</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> customElements</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{customElements} /&gt;</span></span></code></pre></div><p><strong>类型</strong>: <a href="/reference/types.html#customelementparam"><code>CustomElementParam[]</code></a></p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-09T07:01:12.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><!----></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/config.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>配置</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
177
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
177
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"FCeGzF_5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
178
178
 
179
179
  </body>
180
180
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DFCBjZzz.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.DLVtiTEc.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_methods.md.D1VYgciC.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -80,7 +80,7 @@
80
80
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
81
81
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> runtime</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DeepPartialRuntimeConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
82
82
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Promise</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span></code></pre></div><p><strong>参数</strong>:</p><ul><li><code>data</code> - 地图数据对象</li><li><code>data.map</code>: <code>string</code> - 地图字符串数据</li><li><code>data.path</code>: <code>string</code> - 可选的路径数据</li><li><code>data.roomProperties</code>: <code>RoomProperty[]</code> - 可选的房间属性数据</li><li><code>data.customElements</code>: <code>CustomElementParam[]</code> - 可选的自定义元素数据</li><li><code>data.forbiddenSweepZones</code>: <code>ZoneParam[]</code> - 可选的禁扫区域数据</li><li><code>data.forbiddenMopZones</code>: <code>ZoneParam[]</code> - 可选的禁拖区域数据</li><li><code>data.virtualWalls</code>: <code>VirtualWallParam[]</code> - 可选的虚拟墙数据</li><li><code>data.detectedObjects</code>: <code>DetectedObjectParam[]</code> - 可选的检测物体数据</li><li><code>runtime</code> - 可选的运行时配置</li></ul><p><strong>返回值</strong>: <a href="/reference/types.html#string"><code>Promise&lt;string&gt;</code></a></p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-20T09:49:40.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/callbacks.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>地图事件回调</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/utils.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>工具方法</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
83
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
83
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"FCeGzF_5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
84
84
 
85
85
  </body>
86
86
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DFCBjZzz.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.DLVtiTEc.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_runtime.md.UJkdf65W.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -37,7 +37,7 @@
37
37
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span>
38
38
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> )</span></span>
39
39
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="dividingroomid" tabindex="-1">dividingRoomId <a class="header-anchor" href="#dividingroomid" aria-label="Permalink to &quot;dividingRoomId&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number</code> | <code>null</code></li><li><strong>默认值</strong>: <code>null</code></li></ul><p>正在分割的房间ID。</p><h2 id="enableroomselection" tabindex="-1">enableRoomSelection <a class="header-anchor" href="#enableroomselection" aria-label="Permalink to &quot;enableRoomSelection&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用房间选择功能</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>当 <code>enableRoomSelection</code> 为 <code>false</code> 时,房间会始终处于高亮状态。</p><p>当 <code>enableRoomSelection</code> 为 <code>true</code> 时,房间是否高亮取决于 <code>selectRoomIds</code> 是否包含该房间ID。</p></div><h2 id="editingforbiddensweepzoneids" tabindex="-1">editingForbiddenSweepZoneIds <a class="header-anchor" href="#editingforbiddensweepzoneids" aria-label="Permalink to &quot;editingForbiddenSweepZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁扫区域ID列表。</p><h2 id="editingforbiddenmopzoneids" tabindex="-1">editingForbiddenMopZoneIds <a class="header-anchor" href="#editingforbiddenmopzoneids" aria-label="Permalink to &quot;editingForbiddenMopZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁拖区域ID列表。</p><h2 id="editingcleanzoneids" tabindex="-1">editingCleanZoneIds <a class="header-anchor" href="#editingcleanzoneids" aria-label="Permalink to &quot;editingCleanZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的清扫区域ID列表。</p><h2 id="editingvirtualwallids" tabindex="-1">editingVirtualWallIds <a class="header-anchor" href="#editingvirtualwallids" aria-label="Permalink to &quot;editingVirtualWallIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的虚拟墙ID列表。</p><h2 id="editingspotids" tabindex="-1">editingSpotIds <a class="header-anchor" href="#editingspotids" aria-label="Permalink to &quot;editingSpotIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的定点清扫ID列表。</p><h2 id="roompropertyfoldids" tabindex="-1">roomPropertyFoldIds <a class="header-anchor" href="#roompropertyfoldids" aria-label="Permalink to &quot;roomPropertyFoldIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>处于折叠状态的房间ID列表。</p><h2 id="roomselectionmode" tabindex="-1">roomSelectionMode <a class="header-anchor" href="#roomselectionmode" aria-label="Permalink to &quot;roomSelectionMode&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>&#39;checkmark&#39; | &#39;order&#39;</code></li><li><strong>默认值</strong>: <code>&#39;checkmark&#39;</code></li></ul><p>房间选中的指示方式。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;checkmark&#39;</code> 时,房间选中后会显示选择指示器。</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;order&#39;</code> 时,房间选中后会显示清扫顺序数字。</p></div><h2 id="selectroomids" tabindex="-1">selectRoomIds <a class="header-anchor" href="#selectroomids" aria-label="Permalink to &quot;selectRoomIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>选中的房间ID列表。只有当 <code>enableRoomSelection</code> 为 <code>true</code> 时,这个值才会生效。</p><h2 id="showroomproperty" tabindex="-1">showRoomProperty <a class="header-anchor" href="#showroomproperty" aria-label="Permalink to &quot;showRoomProperty&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示房间属性。</p><h2 id="showroomorder" tabindex="-1">showRoomOrder <a class="header-anchor" href="#showroomorder" aria-label="Permalink to &quot;showRoomOrder&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间清扫顺序。</p><h2 id="showroomname" tabindex="-1">showRoomName <a class="header-anchor" href="#showroomname" aria-label="Permalink to &quot;showRoomName&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间名称。</p><h2 id="showpath" tabindex="-1">showPath <a class="header-anchor" href="#showpath" aria-label="Permalink to &quot;showPath&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示机器人路径。</p><h2 id="showchargingstation" tabindex="-1">showChargingStation <a class="header-anchor" href="#showchargingstation" aria-label="Permalink to &quot;showChargingStation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示充电桩。</p><h2 id="showroomfloortype" tabindex="-1">showRoomFloorType <a class="header-anchor" href="#showroomfloortype" aria-label="Permalink to &quot;showRoomFloorType&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间地板材质。</p><h2 id="showcarpet" tabindex="-1">showCarpet <a class="header-anchor" href="#showcarpet" aria-label="Permalink to &quot;showCarpet&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示地毯。</p><h2 id="showchargingstationring" tabindex="-1">showChargingStationRing <a class="header-anchor" href="#showchargingstationring" aria-label="Permalink to &quot;showChargingStationRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示充电桩预警圈。</p><h2 id="showrobotring" tabindex="-1">showRobotRing <a class="header-anchor" href="#showrobotring" aria-label="Permalink to &quot;showRobotRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人预警圈。</p><h2 id="showrobotsleepanimation" tabindex="-1">showRobotSleepAnimation <a class="header-anchor" href="#showrobotsleepanimation" aria-label="Permalink to &quot;showRobotSleepAnimation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人睡眠动画。</p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-09T07:25:35.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/config.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>配置</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/callbacks.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>地图事件回调</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
40
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
40
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"FCeGzF_5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
41
41
 
42
42
  </body>
43
43
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DFCBjZzz.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.DLVtiTEc.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_types.md.DkIhhJD0.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -190,7 +190,7 @@
190
190
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 自定义数据 */</span></span>
191
191
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> customData</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
192
192
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-21T11:12:05.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/utils.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>工具方法</span><!--]--></a></div><div class="pager" data-v-e257564d><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
193
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
193
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"FCeGzF_5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
194
194
 
195
195
  </body>
196
196
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DFCBjZzz.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.DLVtiTEc.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_utils.md.CSshxnp0.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -34,7 +34,7 @@
34
34
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> existingPointsArray</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[][],</span></span>
35
35
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> maxAttempts</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
36
36
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[]</span></span></code></pre></div><p><strong>参数</strong></p><ul><li><code>points</code>: 需要偏移的点位数组</li><li><code>existingPointsArray</code>: 已存在的点位数组</li><li><code>maxAttempts</code>: 最大尝试次数,默认20次(最多偏移100个单位)</li></ul><p><strong>返回值</strong></p><ul><li><code>Point[]</code>: 偏移后的点位数组</li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-21T11:12:05.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/methods.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>地图方法</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/types.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>类型定义</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
37
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
37
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"FCeGzF_5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
38
38
 
39
39
  </body>
40
40
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/robot-map-sdk",
3
- "version": "0.0.3-beta-23",
3
+ "version": "0.0.3-beta-25",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "./rjs": {
15
15
  "types": "./dist/index.d.ts",
16
- "import": "./dist/index.rjs.js"
16
+ "import": "./dist/rjs/index.js"
17
17
  }
18
18
  },
19
19
  "engines": {
@@ -1 +0,0 @@
1
- import{Logger as e}from"../utils/logger.js";import{Container as t}from"pixi.js";import{useAppService as r}from"./AppService.js";const i="interaction",o="roomFill",s="free",n="roomFloorType",a="carpet",l="obstacle",c="heatmap",h="path",d="controls",p="roomInfo",y="detectedObject",m="customElement",u="customElementGif",g="chargingStation",b="robot",v=[i,o,s,n,a,l,c,h,p,y,m,u,g,b,d];class L extends t{layers=new Map;constructor(){super();const e=r().getApp().getViewportBounds();this.position.set(Math.round(e.width/2),Math.round(e.height/2)),this.initializeLayers()}initializeLayers(){Object.values(v).forEach(e=>{const r=new t;r.label=e,e===d&&(r.isRenderGroup=!0),e!==n&&e!==a||(r.eventMode="none"),this.layers.set(e,r),this.addChild(r)})}getLayer(e){return this.layers.get(e)}addToLayer(t,r,i){const o=this.layers.get(t);return o?(void 0!==i&&(r.zIndex=i),o.addChild(r),!0):(e.warn("[AppContainer Debug] Layer not found:",t),!1)}removeFromLayer(e,t){const r=this.layers.get(e);return!!r&&t.parent===r&&(r.removeChild(t),!0)}clearLayer(e){const t=this.layers.get(e);return!!t&&(t.removeChildren(),!0)}setLayerVisibility(e,t){const r=this.layers.get(e);return!!r&&(r.visible=t,!0)}getLayerVisibility(e){const t=this.layers.get(e);return!!t&&t.visible}}export{L as AppContainer,v as LAYERS,a as LAYER_CARPET,g as LAYER_CHARGING_STATION,d as LAYER_CONTROLS,m as LAYER_CUSTOM_ELEMENT,u as LAYER_CUSTOM_ELEMENT_GIF,y as LAYER_DETECTED_OBJECT,s as LAYER_FREE,c as LAYER_HEATMAP,i as LAYER_INTERACTION,l as LAYER_OBSTACLE,h as LAYER_PATH,b as LAYER_ROBOT,o as LAYER_ROOM_FILL,n as LAYER_ROOM_FLOOR_TYPE,p as LAYER_ROOM_INFO};
@@ -1 +0,0 @@
1
- function t(){return r.getService()}import{snapshot as e}from"valtio/vanilla";import{MAIN_INSTANCE_KEY as n}from"../constant/index.js";class r{static contextStack=[];static instanceMap=new Map;static serviceCache=new WeakMap;static registerInstance(t,e){this.instanceMap.set(t,e)}static unregisterInstance(t){this.instanceMap.delete(t)}static getService(){const t=this.useContext();let e=this.serviceCache.get(t);return e||(e=new a,this.serviceCache.set(t,e)),e}static provide(t,e){this.contextStack.push(t);try{return e()}finally{this.contextStack.pop()}}static async provideAsync(t,e){this.contextStack.push(t);try{return await e()}finally{this.contextStack.pop()}}static useContext(){const t=this.contextStack[this.contextStack.length-1];if(!t){const t=this.instanceMap.get(n);if(!t)throw new Error("No MapApplication context found. Make sure you are calling useAppService() within a MapApplication context.");return t}return t}static hasContext(){return this.contextStack.length>0||this.instanceMap.has(n)}static clear(){this.contextStack.length=0,this.instanceMap.clear()}}class a{getApp(){return r.useContext()}getConfig(){return this.getApp().config}getRoomData(t){return this.getApp().managers.roomsManager.getRoomPropertyById(t)}metersToPixels(t){return this.getApp().metersToPixels(t)}pixelsToMeters(t){return this.getApp().pixelsToMeters(t)}get ticker(){return this.getApp().ticker}get mapState(){return this.getApp().mapState}get gloalConfig(){return this.getConfig().global}get mapConfig(){return this.getConfig().map}get roomConfig(){return this.getConfig().room}get heatMapConfig(){return this.getConfig().heatmap}get pathConfig(){return this.getConfig().path}get carpetConfig(){return this.getConfig().carpet}get robotConfig(){return this.getConfig().robot}get chargingStationConfig(){return this.getConfig().chargingStation}get interactionConfig(){return this.getConfig().interaction}get controlsConfig(){return this.getConfig().controls}get dividerConfig(){return this.getConfig().divider}get detectedObjectConfig(){return this.getConfig().detectedObject}get snapshotConfig(){return this.getConfig().snapshot}get appContainer(){return this.getApp().components.appContainer}get interaction(){return this.getApp().components.interaction}get viewportContainer(){return this.getApp().components.viewportContainer}get mapManager(){return this.getApp().managers.mapManager}get pathManager(){return this.getApp().managers.pathManager}get heatmapManager(){return this.getApp().managers.heatmapManager}get controlsManager(){return this.getApp().managers.controlsManager}get detectedObjectManager(){return this.getApp().managers.detectedObjectManager}get customElementsManager(){return this.getApp().managers.customElementsManager}get roomsManager(){return this.getApp().managers.roomsManager}get runtime(){return this.getApp().runtime}get runtimeSnapshot(){return e(this.getApp().runtime)}get events(){return this.getApp().events}get baseScale(){return this.getApp().components.interaction.targetScale.x}get currentScale(){return this.getApp().components.appContainer.scale.x}get emitter(){return this.getApp().emitter}}export{r as AppContext,t as useAppService};
@@ -1 +0,0 @@
1
- import{Container as t,Graphics as i}from"pixi.js";import{easeInOutCubic as e}from"../utils/index.js";import{getDistance as s}from"../utils/algorithm.js";import{Logger as n}from"../utils/logger.js";import{throttle as a,debounce as o}from"lodash-es";import{useAppService as h}from"./AppService.js";class r extends t{dragStart=null;initialTouchDistance=null;initialScale=null;activeTouches=new Map;firstTouchId=null;secondTouchId=null;zoomFactor=.8;scaleMin=.2;scaleMax=5;originalPosition={x:0,y:0};targetPosition={x:0,y:0};centerPosition={x:0,y:0};originalScale={x:1,y:1};targetScale={x:1,y:1};defaultScale={x:1,y:1};transitionDuration=500;transitionStartTime=null;initialPinchCenter=null;isGestureValid=!0;lastTapTime=0;doubleTapDelay=300;doubleTapZoomFactor=1.5;lastTapPosition=null;tapDistanceThreshold=20;tapDetectionEnabled=!0;isGestureHijacked=!1;hijackedPointerId=null;isHijackPaused=!1;interactionGraphics;viewportBounds;boundResetAnimation;debouncedStopWheelRender;interactionState={isInteracting:!1,isAnimating:!1,interactionTimer:null,renderReasons:new Set};throttledAntiScale;constructor(){super();const t=h().getApp();this.viewportBounds=t.getViewportBounds(),this.eventMode="static",this.interactionGraphics=new i,this.interactionGraphics.rect(0,0,this.viewportBounds.width,this.viewportBounds.height).fill({color:"#ffffff",alpha:0}),this.addChild(this.interactionGraphics),this.scaleMax=t.scaleMax,this.scaleMin=t.scaleMin,this.centerPosition={x:Math.round(this.viewportBounds.width/2),y:Math.round(this.viewportBounds.height/2)},this.originalPosition={x:Math.round(this.viewportBounds.width/2),y:Math.round(this.viewportBounds.height/2)},this.targetPosition={x:Math.round(this.viewportBounds.width/2),y:Math.round(this.viewportBounds.height/2)},this.throttledAntiScale=a(t=>{h().emitter.emit("antiScale",t)},16,{leading:!0,trailing:!0}),this.boundResetAnimation=this.resetAnimation.bind(this),this.debouncedStopWheelRender=o(()=>{t.stopRender("wheel")},300),this.setupInteraction()}setupInteraction(){this.on("pointerdown",t=>this.onPointerDown(t)),this.on("pointerup",t=>this.onPointerUp(t)),this.on("pointerupoutside",t=>this.onPointerUp(t)),this.on("pointermove",t=>this.onPointerMove(t)),this.on("wheel",t=>this.onWheel(t)),h().emitter.on("gestureHijackStart",this.handleGestureHijacked),document.addEventListener("pointercancel",()=>{this.clearTouches()})}resetPan(t){const i=h(),e=i.getApp(),s=i.appContainer;null!==this.transitionStartTime&&(e.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null);const n=this.centerPosition.x-t.x*s.scale.x,a=this.centerPosition.y-t.y*s.scale.y;this.originalPosition={x:s.x,y:s.y},this.targetPosition={x:n,y:a},this.originalScale={x:s.scale.x,y:s.scale.y},this.targetScale={x:s.scale.x,y:s.scale.y};const o=(r=Math.sqrt((s.x-n)**2+(s.y-a)**2),Math.pow(Math.min(1,r/1e3),.5));var r;this.transitionDuration=500+1e3*Math.min(1,Math.pow(o,2)),this.transitionStartTime=e.ticker.lastTime,e.ticker.add(this.boundResetAnimation)}setPanZoom({targetPosition:t,targetScale:i,setCenter:e=!1,setScale:s=!1}={},a=!0){const o=h(),r=o.getApp(),c=o.appContainer;if(e&&t&&(this.centerPosition={x:t.x,y:t.y},n.debug("[Interaction] Set center position:",this.centerPosition)),s&&i&&(this.defaultScale={x:i.x,y:i.y},n.debug("[Interaction] Set scale:",this.defaultScale)),this.originalPosition={x:c.x,y:c.y},this.originalScale={x:c.scale.x,y:c.scale.y},this.targetPosition=t||{x:this.centerPosition.x,y:this.centerPosition.y},this.targetScale=i||this.defaultScale,!a)return c.position.set(this.targetPosition.x,this.targetPosition.y),c.scale.set(this.targetScale.x,this.targetScale.y),this.antiScale(this.targetScale.x),void(null!==this.transitionStartTime&&(r.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null));var l,u,d;const p=.8*(l=Math.sqrt((c.x-this.targetPosition.x)**2+(c.y-this.targetPosition.y)**2),Math.pow(Math.min(1,l/1e3),.5))+.2*(u=c.scale.x,d=this.targetScale.x,Math.pow(Math.min(1,Math.abs(u-d)/Math.abs(-.8)),.5));this.transitionDuration=500+1e3*Math.min(1,Math.pow(p,2)),null!==this.transitionStartTime&&(r.ticker.remove(this.boundResetAnimation),this.interactionState.isAnimating=!1,r.stopRender("animation")),this.interactionState.isAnimating=!0,r.requestRender("animation",!0),this.transitionStartTime=r.ticker.lastTime,r.ticker.add(this.boundResetAnimation)}clearTouches(){const t=h().getApp();this.activeTouches.clear(),this.firstTouchId=null,this.secondTouchId=null,this.dragStart=null,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.isGestureValid=!0,null!==this.transitionStartTime&&(t.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null),this.interactionState.isInteracting=!1,t.stopRender("interaction")}checkEventListeners(){return{wheel:this.listenerCount("wheel"),pointerdown:this.listenerCount("pointerdown"),pointerup:this.listenerCount("pointerup"),pointerupoutside:this.listenerCount("pointerupoutside"),pointermove:this.listenerCount("pointermove")}}destroy(){this.checkEventListeners(),this.interactionState.interactionTimer&&clearTimeout(this.interactionState.interactionTimer),this.interactionState.renderReasons.clear(),this.interactionState.isInteracting=!1,this.interactionState.isAnimating=!1,this.debouncedStopWheelRender.cancel(),h().emitter.off("gestureHijackStart",this.handleGestureHijacked),super.destroy()}handleGestureHijacked=t=>{this.isGestureHijacked=!0,this.hijackedPointerId=t.pointerId,this.isHijackPaused=!1,this.clearTouches();const i=t.global.x-this.viewportBounds.x,e=t.global.y-this.viewportBounds.y;this.activeTouches.set(t.pointerId,{x:i,y:e}),this.firstTouchId=t.pointerId,this.dragStart={x:i,y:e}};exitGestureHijacked(){null===this.hijackedPointerId||this.isHijackPaused||(this.activeTouches.delete(this.hijackedPointerId),this.firstTouchId===this.hijackedPointerId&&(this.firstTouchId=null,this.dragStart=null),this.secondTouchId===this.hijackedPointerId&&(this.secondTouchId=null)),this.isGestureHijacked=!1,this.hijackedPointerId=null,this.isHijackPaused=!1}pauseGestureHijack(){this.isHijackPaused=!0}resumeGestureHijack(){this.isHijackPaused=!1}antiScale(t){this.throttledAntiScale(t)}resetAnimation(){const t=h(),i=t.getApp(),s=t.appContainer;if(null===this.transitionStartTime)return;const{targetPosition:n,targetScale:a}=this,o=i.ticker.lastTime,r=Math.min(1,(o-this.transitionStartTime)/this.transitionDuration);if(r>=1)s.position.set(n.x,n.y),s.scale.set(a.x,a.y),this.antiScale(a.x),i.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null,this.interactionState.isAnimating=!1,i.stopRender("animation");else{const t=e(r),i=this.originalPosition.x+(n.x-this.originalPosition.x)*t,o=this.originalPosition.y+(n.y-this.originalPosition.y)*t,h=this.originalScale.x+(a.x-this.originalScale.x)*t,c=this.originalScale.y+(a.y-this.originalScale.y)*t;s.position.set(i,o),s.scale.set(h,c),this.antiScale(h)}}onWheel(t){const i=h();if(this.isGestureHijacked)return void n.warn("⚠️ [onWheel] 被手势劫持阻止执行",{isGestureHijacked:this.isGestureHijacked,hijackedPointerId:this.hijackedPointerId,isHijackPaused:this.isHijackPaused});i.getApp().requestRender("wheel",!0),this.debouncedStopWheelRender();const{scaleMin:e,scaleMax:s}=this,a=i.appContainer;t.preventDefault();const o=t.global.x-this.viewportBounds.x,r=t.global.y-this.viewportBounds.y,c=(o-a.x)/a.scale.x,l=(r-a.y)/a.scale.y,u=t.deltaY>0?.95:1.05;let d=a.scale.x*u,p=a.scale.y*u;if(d=Math.max(e,Math.min(s,d)),p=Math.max(e,Math.min(s,p)),d===a.scale.x&&p===a.scale.y)return;const x=o-c*d,m=r-l*p;try{a.scale.set(d,p),a.position.set(x,m),this.antiScale(d)}catch(t){n.error("❌ [onWheel] 应用缩放时发生错误:",t)}}onPointerDown(t){const i=h();this.interactionState.isInteracting=!0,i.getApp().requestRender("interaction",!0),this.isGestureHijacked&&(t.pointerId===this.hijackedPointerId||this.isHijackPaused||this.pauseGestureHijack());const e=i.getApp(),s=i.appContainer;null!==this.transitionStartTime&&(e.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null),this.activeTouches.has(t.pointerId-2)&&this.activeTouches.delete(t.pointerId-2),0===this.activeTouches.size&&(this.isGestureValid=!0,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.dragStart=null,this.firstTouchId=null,this.secondTouchId=null),this.activeTouches.has(t.pointerId)&&1===this.activeTouches.size&&(this.isGestureValid=!0);const n=t.global.x-this.viewportBounds.x,a=t.global.y-this.viewportBounds.y;if(this.activeTouches.set(t.pointerId,{x:n,y:a}),1===this.activeTouches.size)this.firstTouchId=t.pointerId,this.dragStart={x:n,y:a};else if(2===this.activeTouches.size){const i=Array.from(this.activeTouches.keys());this.secondTouchId=i.find(t=>t!==this.firstTouchId)||t.pointerId,this.setInitialScaleAndDistance(s),this.tapDetectionEnabled=!1}}onPointerUp(t){const i=h();if(this.isGestureHijacked){if(t.pointerId===this.hijackedPointerId)return i.emitter.emit("gestureHijackPointerUp",t),void this.exitGestureHijacked();this.isHijackPaused}if(!this.activeTouches.has(t.pointerId))return;const e=null!==this.initialTouchDistance&&null!==this.initialScale;this.activeTouches.delete(t.pointerId),e&&1===this.activeTouches.size&&(this.isGestureValid=!1,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null),t.pointerId===this.firstTouchId?(this.firstTouchId=null,this.dragStart=null,0===this.activeTouches.size&&this.tapDetectionEnabled&&this.detectDoubleTap(t)):t.pointerId===this.secondTouchId&&(this.secondTouchId=null),this.isGestureHijacked&&this.isHijackPaused&&1===this.activeTouches.size&&Array.from(this.activeTouches.keys())[0]===this.hijackedPointerId&&this.resumeGestureHijack(),0===this.activeTouches.size&&(this.isGestureValid=!0,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.firstTouchId=null,this.secondTouchId=null,this.dragStart=null,this.tapDetectionEnabled=!0,this.interactionState.isInteracting=!1,i.getApp().stopRender("interaction"))}detectDoubleTap(t){const i=h(),{interactionConfig:e}=i;if(!e.enableDoubleTapZoom)return;const n=performance.now(),a={x:t.global.x-this.viewportBounds.x,y:t.global.y-this.viewportBounds.y};n-this.lastTapTime<this.doubleTapDelay&&this.lastTapPosition&&s(a,this.lastTapPosition)<this.tapDistanceThreshold?(this.handleDoubleTap(a),this.lastTapTime=0,this.lastTapPosition=null):(this.lastTapTime=n,this.lastTapPosition=a)}handleDoubleTap(t){const i=h(),e=i.getApp(),s=i.appContainer,{scaleMin:n,scaleMax:a,doubleTapZoomFactor:o}=this,r=t.x,c=t.y,l=(r-s.x)/s.scale.x,u=(c-s.y)/s.scale.y;let d=s.scale.x*o,p=s.scale.y*o;d=Math.max(n,Math.min(a,d)),p=Math.max(n,Math.min(a,p)),this.originalPosition={x:s.x,y:s.y},this.originalScale={x:s.scale.x,y:s.scale.y};const x=r-l*d,m=c-u*p;this.targetPosition={x:x,y:m},this.targetScale={x:d,y:p},this.interactionState.isAnimating=!0,e.requestRender("animation",!0),this.transitionDuration=300,this.transitionStartTime=e.ticker.lastTime,e.ticker.add(this.boundResetAnimation)}onPointerMove(t){if(this.isGestureHijacked&&!this.isHijackPaused){if(t.pointerId===this.hijackedPointerId){const i=t.global.x-this.viewportBounds.x,e=t.global.y-this.viewportBounds.y;return this.activeTouches.set(t.pointerId,{x:i,y:e}),void h().emitter.emit("gestureHijackPointerMove",t)}return}if(!this.activeTouches.has(t.pointerId)||!this.isGestureValid)return;const i=t.global.x-this.viewportBounds.x,e=t.global.y-this.viewportBounds.y;this.activeTouches.set(t.pointerId,{x:i,y:e}),2===this.activeTouches.size&&null!==this.initialTouchDistance&&null!==this.initialScale&&this.applyPinchZoom(),1!==this.activeTouches.size||null===this.initialTouchDistance&&null===this.initialScale||(this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.secondTouchId=null),1===this.activeTouches.size&&t.pointerId===this.firstTouchId&&null!==this.dragStart&&this.applyPan(t)}applyPan(t){const i=h(),e=this.activeTouches.get(t.pointerId),s=i.appContainer,{x:n,y:a}=this.dragStart;s.position.set(s.x+e.x-n,s.y+e.y-a),this.dragStart={x:e.x,y:e.y}}applyPinchZoom(){const t=h().appContainer,i=Array.from(this.activeTouches.values());if(i.length<2||!this.initialTouchDistance||!this.initialScale||!this.initialPinchCenter)return;const e=s(i[0],i[1]),n={x:(i[0].x+i[1].x)/2,y:(i[0].y+i[1].y)/2},a=(n.x-t.position.x)/t.scale.x,o=(n.y-t.position.y)/t.scale.y,r=(e/this.initialTouchDistance)**this.zoomFactor,c=Math.max(this.scaleMin,Math.min(this.scaleMax,this.initialScale.x*r)),l=Math.max(this.scaleMin,Math.min(this.scaleMax,this.initialScale.y*r));t.scale.set(c,l);let u=n.x-a*c,d=n.y-o*l;u+=n.x-this.initialPinchCenter.x,d+=n.y-this.initialPinchCenter.y,t.position.set(u,d),this.antiScale(c),this.initialPinchCenter=n}setInitialScaleAndDistance(t){const i=Array.from(this.activeTouches.values());i.length<2||(this.initialTouchDistance=s(i[0],i[1]),this.initialScale={x:t.scale.x,y:t.scale.y},this.initialPinchCenter={x:(i[0].x+i[1].x)/2,y:(i[0].y+i[1].y)/2})}}export{r as Interaction};
@@ -1 +0,0 @@
1
- import{Application as t,isMobile as e,Assets as n}from"pixi.js";import{Interaction as a}from"./Interaction.js";import{mergeWith as r}from"lodash-es";import{proxy as i}from"valtio/vanilla";import{MAIN_INSTANCE_KEY as o}from"../constant/index.js";import s from"mitt";import{Logger as c}from"../utils/logger.js";import{AppContext as h}from"./AppService.js";import{nanoid as m}from"nanoid/non-secure";import{calculateLineEndpoints as p,isPointInPolygon as d,binarySearch as l,areStructuredRoomsAdjacent as g,areMultipleRoomsConnected as u,areRasterRoomsAdjacent as w}from"../utils/algorithm.js";import{ViewportContainer as f}from"./ViewportContainer.js";import{AppContainer as y}from"./AppContainer.js";import{MapManager as M}from"../managers/MapManager.js";import{PathManager as S}from"../managers/PathManager.js";import{HeatmapManager as x}from"../managers/HeatmapManager.js";import{ControlsManager as P}from"../managers/ControlsManager.js";import{DetectedObjectManager as b}from"../managers/DetectedObjectManager.js";import{CustomElementsManager as v}from"../managers/CustomElementsManager.js";import{RoomManager as R}from"../managers/RoomManager.js";import{getOptimalAntialiasingStrategy as C}from"../utils/browser.js";import{DEFAULT_CONFIG as I,DEFAULT_RUNTIME_CONFIG as O}from"../constant/config.js";class j extends t{mapState=null;components={};managers={};config=I;runtime;scaleMin=.5;scaleMax=5;events={};instanceKey;containerElement;emitter=s();tickerState={renderReasons:new Set,renderTimer:null};pendingAsyncRender=!1;isFirstMapDraw=!0;constructor(t=o){super(),this.instanceKey=t,h.registerInstance(t,this),globalThis.__PIXI_APP__=this}async initialize(t){return h.provideAsync(this,async()=>{const{resizeTo:n,events:a,config:s,runtime:h={},...m}=t;this.config=r(this.config,s??{},(t,e)=>{if(Array.isArray(e))return e}),c.log("Applying config",this.config,s),this.runtime=i(Object.assign({},O,h));const p=this.instanceKey===o;this.containerElement=n;const d=p?{textureGCMaxIdle:e.any?180:3600,textureGCCheckCountMax:e.any?100:50,autoStart:!1,eventFeatures:{move:!0,globalMove:!1,click:!0,wheel:!0}}:{textureGCMaxIdle:60,textureGCCheckCountMax:10,autoStart:!1,eventFeatures:{move:!1,globalMove:!1,click:!1,wheel:!1}};await this.init({resizeTo:p?n:void 0,preferWebGLVersion:2,resolution:window.devicePixelRatio||1,antialias:C(),autoDensity:!0,backgroundColor:this.config.global.backgroundColor,...d,...m}),this.preloadAssets(),this.scaleMax=this.config.interaction.zoomRange.max,this.scaleMin=this.config.interaction.zoomRange.min,this.events=a,this.initializeViewportContainer(),this.initializeInteraction(),this.initializeAppContainer(),this.managers.mapManager=new M,this.managers.heatmapManager=new x,this.managers.pathManager=new S,this.managers.controlsManager=new P,this.managers.detectedObjectManager=new b,this.managers.customElementsManager=new v,this.managers.roomsManager=new R,document.addEventListener("visibilitychange",this.onVisibilityChange)})}async drawMap(t){return h.provideAsync(this,async()=>{c.log("[Map] drawMap",t);const{size:e,resolution:n,origin:a}=t;a[0]===this.mapState?.origin.x&&a[1]===this.mapState?.origin.y||(this.managers.pathManager.updatePositionByOrigin(...a),this.managers.controlsManager.updatePositionByOrigin(...a),this.managers.detectedObjectManager.updatePositionByOrigin(...a),this.managers.customElementsManager.updatePositionByOrigin(...a)),this.mapState={id:t.id,status:1===t.status,origin:{x:a[0],y:a[1]},charger:{x:t.charger.coordinate[0],y:t.charger.coordinate[1]},chargerDirection:t.charger.angle??0,resolution:n,width:e[0],height:e[1],mapType:"structured"},this.isFirstMapDraw&&(this.isFirstMapDraw=!1,this.events?.onMapFirstDrawed?.(this.mapState)),this.events?.onMapDrawed?.(this.mapState),await this.managers.mapManager.drawMap(t),this.renderOnce()})}async drawRasterMap(t){return h.provideAsync(this,async()=>{c.log("[Map] drawRasterMap",t);const{mapHeader:e,mapData:n}=t,{originX:a,originY:r}=e;a===this.mapState?.origin.x&&r===this.mapState?.origin.y||(this.managers.pathManager.updatePositionByOrigin(a,r),this.managers.controlsManager.updatePositionByOrigin(a,r),this.managers.detectedObjectManager.updatePositionByOrigin(a,r),this.managers.customElementsManager.updatePositionByOrigin(a,r)),this.mapState={id:e.id,status:e.mapStable,origin:{x:a,y:r},charger:{x:e.chargeX,y:e.chargeY},chargerDirection:e.chargeDirection??0,resolution:100*e.mapResolution,width:e.mapWidth,height:e.mapHeight,version:e.version,mapType:"raster"},this.isFirstMapDraw&&(this.isFirstMapDraw=!1,this.events?.onMapFirstDrawed?.(this.mapState)),this.events?.onMapDrawed?.(this.mapState),await this.managers.mapManager.drawRasterMap(n.parsed,this.mapState),this.renderOnce()})}drawPath(t){return h.provide(this,()=>{c.log("[Path] drawPath",t),this.events?.onPathDrawed?.({id:t.pathHeader.pathId,type:t.pathHeader.type,direction:t.pathHeader.direction,count:t.pathHeader.count,initFlag:t.pathHeader.initFlag,robotPosition:t.pathPoints[t.pathPoints.length-1]??null}),this.managers.pathManager.draw(t),this.renderOnce()})}async drawRoomProperty(t){return h.provide(this,()=>{c.log("[Room] drawRoomProperty",t),this.events?.onRoomPropertiesDrawed?.(t),this.managers.roomsManager.drawRoomProperty(t),this.renderOnceNextFrame()})}drawHeatmap({mapData:t,heatmapPoints:e,useGradient:n=!0}){return h.provide(this,()=>{c.log("[Heatmap] drawHeatmap",e),this.managers.heatmapManager.draw({mapData:t,heatmapPoints:e,useGradient:n}),this.renderOnce()})}drawForbiddenSweepZones(t){return h.provide(this,()=>{c.log("[Controls] drawForbiddenSweepZones",t),this.managers.controlsManager.drawForbiddenSweepZones(t),this.renderOnceNextFrame()})}drawForbiddenMopZones(t){return h.provide(this,()=>{c.log("[Controls] drawForbiddenMopZones",t),this.managers.controlsManager.drawForbiddenMopZones(t),this.renderOnceNextFrame()})}drawCleanZones(t){return h.provide(this,()=>{c.log("[Controls] drawCleanZones",t),this.managers.controlsManager.drawCleanZones(t),this.renderOnceNextFrame()})}drawVirtualWalls(t){return h.provide(this,()=>{c.log("[Controls] drawVirtualWalls",t),this.managers.controlsManager.drawVirtualWalls(t),this.renderOnceNextFrame()})}drawSpots(t){return h.provide(this,()=>{c.log("[Controls] drawSpots",t),this.managers.controlsManager.drawSpots(t),this.renderOnceNextFrame()})}async drawDetectedObjects(t){return h.provideAsync(this,async()=>{c.log("[DetectedObject] drawDetectedObjects",t),await this.managers.detectedObjectManager.drawDetectedObjects(t),this.renderOnceNextFrame()})}async drawCustomElements(t){return h.provideAsync(this,async()=>{c.log("[CustomElements] drawCustomElements",t),await this.managers.customElementsManager.drawCustomElements(t),this.renderOnceNextFrame()})}getForbiddenSweepZones(){return this.managers.controlsManager.getForbiddenSweepZones()}getForbiddenMopZones(){return this.managers.controlsManager.getForbiddenMopZones()}getCleanZones(){return this.managers.controlsManager.getCleanZones()}getVirtualWalls(){return this.managers.controlsManager.getVirtualWalls()}getSpots(){return this.managers.controlsManager.getSpots()}getEffectiveDividerPoints(){return this.managers.controlsManager.getEffectiveDividerPoints()}getDividerEndPoints(){return this.managers.controlsManager.getDividerEndPoints()}resetPanZoom(){this.components.interaction.setPanZoom()}fitMapToView(t,e=!1){return h.provide(this,()=>{if(!t||t.minX===t.maxX||t.minY===t.maxY)return void c.warn("地图边界无效,无法自动适配视图");const n=this.config.map.autoPaddingPercent||.1,a=this.getViewportBounds(),r=t.maxX-t.minX,i=t.maxY-t.minY,o=a.width,s=a.height,h=o*(1-2*n)/r,m=s*(1-2*n)/i,p=Math.min(h,m),d=Math.max(this.config.interaction.fitMinScale,this.scaleMin),l=Math.min(this.config.interaction.fitMaxScale,this.scaleMax),g=Math.max(d,Math.min(l,p)),u=o/2-(t.minX+r/2)*g,w=s/2-(t.minY+i/2)*g;this.components.interaction.setPanZoom({targetPosition:{x:u,y:w},targetScale:{x:g,y:g},setCenter:!0,setScale:!0},e)})}getViewportBounds(){return this.components.viewportContainer?.getViewportBounds()||{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}updateRuntime(t){Object.assign(this.runtime,t),this.renderOnceNextFrame()}metersToPixels(t){return this.mapState?.resolution?t*(1/(this.mapState.resolution/100)):(c.warn("Map resolution not available, using default resolution (5cm/pixel)"),20*t)}pixelsToMeters(t){return this.mapState?.resolution?t*(this.mapState.resolution/100):(c.warn("Map resolution not available, using default resolution (5cm/pixel)"),.05*t)}toFixedSize(t,e){return t/(e??this.components.appContainer.scale.x)}fromFixedSize(t,e){return t*(e??this.components.appContainer.scale.x)}getViewportCenterPoint(){if(!this.mapState)return c.warn("Map state not available, cannot calculate center point"),null;const t=this.getViewportBounds(),e=t.x+t.width/2,n=t.y+t.height/2,a=this.components.appContainer,r=a.scale.x,i=(e-a.x)/r,o=(n-a.y)/r;return{x:i-this.mapState.origin.x,y:o-this.mapState.origin.y}}getMapCenterPoint(){if(!this.mapState)return c.warn("Map state not available, cannot calculate map center point"),null;const t=this.managers.mapManager.mapBounds;if(t.minX===1/0||t.minY===1/0||t.maxX===-1/0||t.maxY===-1/0)return c.warn("Invalid map bounds, cannot calculate map center point"),null;const e=(t.minX+t.maxX)/2,n=(t.minY+t.maxY)/2;return{x:e-this.mapState.origin.x,y:n-this.mapState.origin.y}}getWallPointsByViewportCenter(t){const{width:e=this.config.controls.virtualWall.minWidth,direction:n="horizontal",offsetX:a=0,offsetY:r=0}=t||{},i=this.getViewportCenterPoint()||{x:0,y:0},o=this.metersToPixels(e);return p(i.x,i.y,o,n).map(t=>({x:t.x+a,y:t.y+r}))}getForbiddenSweepZonePointsByViewportCenter(t){const e=this.config.controls.forbiddenSweepZone,{size:n=e.minSize,offsetX:a=0,offsetY:r=0}=t||{};return this.generateZonePoints(n,a,r)}getForbiddenMopZonePointsByViewportCenter(t){const e=this.config.controls.forbiddenMopZone,{size:n=e.minSize,offsetX:a=0,offsetY:r=0}=t||{};return this.generateZonePoints(n,a,r)}getCleanZonePointsByViewportCenter(t){const e=this.config.controls.cleanZone,{size:n=e.minSize,offsetX:a=0,offsetY:r=0}=t||{};return this.generateZonePoints(n,a,r)}getSpotPointByViewportCenter(t){const{offsetX:e=0,offsetY:n=0}=t||{},a=this.getViewportCenterPoint()||{x:0,y:0};return{x:a.x+e,y:a.y+n}}areRoomsAdjacent(t){const e=this.config.map.adjacencyThreshold;return h.provide(this,()=>{if(!t||0===t.length)return c.warn("[Room] No room IDs provided"),!1;if(1===t.length)return!0;const n=Array.from(new Set(t));return 1===n.length||("raster"===(this.mapState?.mapType??"structured")?this.areRasterRoomsAdjacentInternal(n,e):this.areStructuredRoomsAdjacentInternal(n,e))})}isPointInAnyRoom(t){return h.provide(this,()=>t&&"number"==typeof t.x&&"number"==typeof t.y?"raster"===(this.mapState?.mapType??"structured")?this.isPointInAnyRoomRasterInternal(t):this.isPointInAnyRoomStructuredInternal(t):(c.warn("[Room] Invalid point provided"),null))}isPointInAnyRoomStructuredInternal(t){if(!this.mapState)return c.warn("[Room] Map state not available"),null;const e={x:t.x+this.mapState.origin.x,y:t.y+this.mapState.origin.y},n=this.managers.mapManager.getAllRooms();for(const t of n)if(t.outlinePoints&&t.outlinePoints.length>=3&&d(e,t.outlinePoints))return this.managers.roomsManager.getRoomPropertyById(t.id)||(c.warn(`[Room] Room ${t.id} found in geometry but not in RoomManager`),null);return null}isPointInAnyRoomRasterInternal(t){if(!this.mapState)return c.warn("[Room] Map state not available"),null;const e=this.mapState.width,n=this.mapState.height,a=t.x+this.mapState.origin.x,r=t.y+this.mapState.origin.y,i=Math.round(a),o=Math.round(r);if(i<0||i>=e||o<0||o>=n)return c.warn(`[Room] Point (${i}, ${o}) is out of map bounds (${e}x${n})`),null;const s=o*e+i,h=this.managers.mapManager.getAllRooms();for(const t of h){const e=this.managers.mapManager.getRasterRoomPixels(t.id);if(e&&e.length>0&&l(e,s))return this.managers.roomsManager.getRoomPropertyById(t.id)||(c.warn(`[Room] Room ${t.id} found in geometry but not in RoomManager`),null)}return null}areStructuredRoomsAdjacentInternal(t,e){const n=[];for(const e of t){const t=this.managers.mapManager.getRoomById(e);if(!t)return c.warn(`[Room] Room ${e} not found in map`),!1;if(!t.outlinePoints||0===t.outlinePoints.length)return c.warn(`[Room] Room ${e} has no outline points`),!1;n.push({id:e,points:t.outlinePoints})}const a=[];for(let t=0;t<n.length;t++)for(let r=t+1;r<n.length;r++){const i=n[t],o=n[r];g(i.points,o.points,e)&&a.push([t,r])}return u(n.length,a)}areRasterRoomsAdjacentInternal(t,e){if(!this.mapState)return c.warn("[Room] Map state not available"),!1;const n=this.mapState.width,a=[];for(const e of t){const t=this.managers.mapManager.getRasterRoomPixels(e);if(!t)return c.warn(`[Room] Room ${e} pixel data not found in raster map`),!1;a.push({id:e,pixels:t})}const r=[];for(let t=0;t<a.length;t++)for(let i=t+1;i<a.length;i++){const o=a[t],s=a[i];w(o.pixels,s.pixels,n,e)&&r.push([t,i])}return u(a.length,r)}async snapshot(){this.render(),await new Promise(t=>setTimeout(t,0));const{snapshot:t}=this.config;return await this.renderer.extract.base64({target:this.components.appContainer,format:t.format,quality:t.quality,resolution:t.resolution,antialias:t.antialias})}async snapshotByData({map:t,path:e,roomProperties:n,customElements:a,forbiddenSweepZones:r,forbiddenMopZones:i,virtualWalls:o,detectedObjects:s},h={}){const p=`SNAPSHOT_${m()}`;c.log(`[MapApplication] ${p} snapshot start`);const d=new j(p);try{if(await d.initialize({config:this.config,runtime:h}),!t)throw new Error("Map data is required");if(t.startsWith("7b22")){const{decodeMapStructured:e}=await import("@ray-js/robot-protocol"),n=e(t);await d.drawMap(n)}else{const{decodeMap:e}=await import("@ray-js/robot-protocol"),n=e(t);if(!n)throw new Error("Failed to decode raster map data");await d.drawRasterMap(n)}if(e){const{decodePath:t}=await import("@ray-js/robot-protocol"),n=t(e);d.drawPath(n)}n&&n.length>0&&d.drawRoomProperty(n),r&&r.length>0&&d.drawForbiddenSweepZones(r),i&&i.length>0&&d.drawForbiddenMopZones(i),o&&o.length>0&&d.drawVirtualWalls(o),s&&s.length>0&&await d.drawDetectedObjects(s),a&&a.length>0&&await d.drawCustomElements(a);const m=await d.snapshot();return c.log(`[MapApplication] ${p} snapshot completed successfully`),m}catch(t){throw c.error(`[MapApplication] ${p} snapshot other map failed:`,t),t}finally{c.log(`[MapApplication] ${p} destroy`),d.destroy()}}renderOnce(){c.log("[Pixi] renderOnce"),this.render()}renderOnceNextFrame(){this.pendingAsyncRender||(this.pendingAsyncRender=!0,requestAnimationFrame(()=>{c.log("[Pixi] renderOnceNextFrame"),this.render(),this.pendingAsyncRender=!1}))}requestRender(t,e=!1){e?(this.tickerState.renderReasons.add(t),this.ticker.started||(c.debug(`🎬 [Ticker] START: ${t}`),this.ticker.start())):this.renderOnceNextFrame()}stopRender(t){this.tickerState.renderReasons.delete(t),0===this.tickerState.renderReasons.size&&this.scheduleStopRender("final",100)}destroy(){h.unregisterInstance(this.instanceKey),this.tickerState.renderTimer&&clearTimeout(this.tickerState.renderTimer),this.tickerState.renderReasons.clear(),this.emitter.all.clear(),document.removeEventListener("visibilitychange",this.onVisibilityChange),this.managers.pathManager.destroy(),this.managers.mapManager.destroy(),this.managers.controlsManager.destroy(),this.managers.detectedObjectManager.destroy(),this.managers.customElementsManager.destroy(),this.managers.roomsManager.destroy(),this.components.interaction.destroy(),this.components.viewportContainer.destroy(),this.components.appContainer.destroy(),super.destroy()}initializeViewportContainer(){this.components.viewportContainer=new f(this.config,this.containerElement),this.stage.addChild(this.components.viewportContainer)}initializeAppContainer(){this.components.appContainer=new y,this.components.interaction.addChild(this.components.appContainer)}initializeInteraction(){this.components.interaction=new a,this.components.viewportContainer.addChild(this.components.interaction)}scheduleStopRender(t,e){this.tickerState.renderTimer&&clearTimeout(this.tickerState.renderTimer),this.tickerState.renderTimer=setTimeout(()=>{this.tickerState.renderReasons.delete(t),0===this.tickerState.renderReasons.size&&(c.debug("⏸️ [Ticker] STOP"),this.ticker.stop())},e)}generateZonePoints(t,e,n){const a=this.getViewportCenterPoint()||{x:0,y:0},r=this.metersToPixels(t)/2,i=a.x+e,o=a.y+n;return[{x:i-r,y:o-r},{x:i+r,y:o-r},{x:i+r,y:o+r},{x:i-r,y:o+r}]}preloadAssets(){const t=this.config.robot.icon.src,e=this.config.chargingStation.icon.src,a=[];n.add({alias:"robot",src:t}),a.push("robot"),n.add({alias:"chargingStation",src:e}),a.push("chargingStation"),n.add({alias:"deleteIcon",src:this.config.controls.deleteIconSrc}),a.push("deleteIcon"),n.add({alias:"rotateIcon",src:this.config.controls.rotateIconSrc}),a.push("rotateIcon"),n.add({alias:"scaleIcon",src:this.config.controls.scaleIconSrc}),a.push("scaleIcon"),n.add({alias:"moveIcon",src:this.config.controls.moveIconSrc}),a.push("moveIcon"),n.add({alias:"checkmark",src:this.config.room.selectionIndicator.iconSrc}),a.push("checkmark"),n.add({alias:"spotIcon",src:this.config.controls.spot.iconSrc}),a.push("spotIcon"),this.config.room.property.cleanMode.assets.forEach((t,e)=>{const r=`cleanMode_${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.suction.assets.forEach((t,e)=>{const r=`fan_${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.cistern.assets.forEach((t,e)=>{const r=`water_${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.cleanTimes.assets.forEach((t,e)=>{const r=`cleanTimes${e+1}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.floorType.assets.forEach((t,e)=>{if(!t)return;const r=`floorType${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.customAssets&&Object.entries(this.config.room.property.customAssets).forEach(([t,e])=>{e.forEach((e,r)=>{const i=`custom_${t}_${r}`;n.add({alias:i,src:e}),a.push(i)})}),n.backgroundLoad(a)}onVisibilityChange=()=>{"visible"===document.visibilityState||this.components.interaction?.clearTouches()}}export{j as MapApplication};
@@ -1 +0,0 @@
1
- import{Container as i,Graphics as t}from"pixi.js";import{Logger as e}from"../utils/logger.js";class n extends i{viewportBounds={x:0,y:0,width:0,height:0};maskGraphics=null;containerElement=null;constructor(i,t){super(),this.containerElement=t||window,this.calculateViewportBounds(i.global),this.position.set(this.viewportBounds.x,this.viewportBounds.y),this.createMask()}calculateViewportBounds(i){const{containerTop:t,containerLeft:e,containerWidth:n,containerHeight:s}=i,{width:r,height:h}=this.getContainerSize(),o=this.parseSize(e,r),a=this.parseSize(t,h),d=this.parseSize(n,r),w=this.parseSize(s,h);this.viewportBounds={x:o,y:a,width:d,height:w}}getContainerSize(){if(!this.containerElement)return{width:window.innerWidth,height:window.innerHeight};if(this.containerElement===window)return{width:window.innerWidth,height:window.innerHeight};const i=this.containerElement;return{width:i.clientWidth||window.innerWidth,height:i.clientHeight||window.innerHeight}}createMask(){this.maskGraphics=new t,this.maskGraphics.rect(0,0,this.viewportBounds.width,this.viewportBounds.height).fill(16777215),this.addChild(this.maskGraphics),this.mask=this.maskGraphics}parseSize(i,t){if(!isNaN(Number(i)))return Number(i);if((i=i.trim()).endsWith("%"))return t*(parseFloat(i)/100);if(i.endsWith("vw")){const t=parseFloat(i)/100;return window.innerWidth*t}if(i.endsWith("vh")){const t=parseFloat(i)/100;return window.innerHeight*t}return i.endsWith("rpx")?parseFloat(i)*(window.innerWidth/750):i.endsWith("px")||!isNaN(parseFloat(i))?parseFloat(i):(e.warn(`Cannot parse size value: ${i}`),0)}getViewportBounds(){return{...this.viewportBounds}}updateViewport(i){this.calculateViewportBounds(i.global),this.position.set(this.viewportBounds.x,this.viewportBounds.y),this.maskGraphics?.clear(),this.maskGraphics?.rect(0,0,this.viewportBounds.width,this.viewportBounds.height).fill(16777215)}addContent(i){this.addChild(i)}}export{n as ViewportContainer};
@@ -1 +0,0 @@
1
- import{Graphics as i,Rectangle as o}from"pixi.js";import{FixedSizeContainer as t}from"./FixedSizeContainer.js";import{Logger as r}from"../../utils/logger.js";import{EnhancedSprite as e}from"./EnhancedSprite.js";import{useAppService as n}from"../../application/AppService.js";class s extends t{background;icon;options;constructor(o){super(),this.options=o,this.background=new i,this.addChild(this.background),this.icon=new e,this.addChild(this.icon),this.eventMode="static",this.render(),this.setupHitArea(),this.setupEvents()}setupHitArea(){const i=n().controlsConfig,t=i.iconWrapperWidth+16,r=i.iconWrapperHeight+16;this.hitArea=new o(-t/2,-r/2,t,r)}async render(){this.renderBackground(),this.renderIcon()}renderBackground(){const i=n().controlsConfig;this.background.clear(),this.background.roundRect(-i.iconWrapperWidth/2,-i.iconWrapperHeight/2,i.iconWrapperWidth,i.iconWrapperHeight,i.iconWrapperBorderRadius).fill(this.options.backgroundColor)}async renderIcon(){try{const i=n().controlsConfig;await this.icon.loadTextureAndSetSize(this.options.iconAlias,{width:i.iconWidth,height:i.iconHeight,sizeFixed:!1}),this.icon.visible=!0}catch(i){r.error(`Failed to load icon: ${this.options.iconAlias}`,i)}}destroy(){super.destroy()}}export{s as BaseControlButton};
@@ -1 +0,0 @@
1
- import{Container as t,Graphics as i}from"pixi.js";import{Logger as s}from"../../utils/logger.js";import{useAppService as e}from"../../application/AppService.js";class r extends t{borderOptions;solidLine=null;dashGraphics=null;fillGraphics=null;constructor(t){super(),this.borderOptions={...t},this.drawBorder(),this.setupAntiScaleListener(),this.eventMode="none"}setupAntiScaleListener(){e().emitter.on("antiScale",this.handleAntiScale)}handleAntiScale=()=>{this.drawBorder()};drawBorder(){const{points:t=[],closePath:i=!1,style:s}=this.borderOptions;t.length<2||(this.clearBorder(),void 0!==s.fillColor&&i&&this.drawFill(t,s),s.isDashed?this.drawContinuousDashedBorder(t,i,s):this.drawSolidBorder(t,i,s))}drawFill(t,s){if(s.fillColor&&!(t.length<3)){this.fillGraphics&&(this.removeChild(this.fillGraphics),this.fillGraphics.destroy()),this.fillGraphics=new i,this.fillGraphics.setFillStyle({color:s.fillColor}),this.fillGraphics.moveTo(t[0].x,t[0].y);for(let i=1;i<t.length;i++)this.fillGraphics.lineTo(t[i].x,t[i].y);this.fillGraphics.closePath(),this.fillGraphics.fill(),this.addChild(this.fillGraphics)}}drawSolidBorder(t,s,r){const h=e();this.solidLine&&(this.removeChild(this.solidLine),this.solidLine.destroy()),this.solidLine=new i;const o=h.getApp().toFixedSize(r.width);this.solidLine.setStrokeStyle({color:r.color,width:o}),this.solidLine.moveTo(t[0].x,t[0].y);for(let i=1;i<t.length;i++)this.solidLine.lineTo(t[i].x,t[i].y);s&&this.solidLine.lineTo(t[0].x,t[0].y),this.solidLine.stroke(),this.addChild(this.solidLine)}drawContinuousDashedBorder(t,r,h){if(t.length<2)return;if(!h.dashArray||2!==h.dashArray.length||h.dashArray[0]<=0||h.dashArray[1]<=0)return void s.warn("Invalid dashArray:",h.dashArray);const o=e();this.dashGraphics=new i;const l=o.getApp().toFixedSize(h.width);this.dashGraphics.setStrokeStyle({color:h.color,width:l});const a=Math.max(o.getApp().toFixedSize(h.dashArray[0]),1),n=Math.max(o.getApp().toFixedSize(h.dashArray[1]),1),d=r?[...t,t[0]]:t;this.drawContinuousPathDashes(this.dashGraphics,d,a,n),this.dashGraphics.stroke(),this.addChild(this.dashGraphics)}drawContinuousPathDashes(t,i,e,r){if(i.length<2)return;if(e<=0||r<=0)return void s.warn("Invalid dash parameters:",{dashLength:e,gapLength:r});const h=this.calculatePathSegments(i),o=h.reduce((t,i)=>t+i.length,0);if(0===o)return;const l=e+r;let a=0;for(;a<o;){const i=a+e;i<=o?this.drawContinuousDashSegment(t,h,a,i):this.drawContinuousDashSegment(t,h,a,o),a+=l}}calculatePathSegments(t){const i=[];for(let s=0;s<t.length-1;s++){const e=t[s],r=t[s+1],h=r.x-e.x,o=r.y-e.y,l=Math.sqrt(h*h+o*o);i.push({start:e,end:r,length:l})}return i}drawContinuousDashSegment(t,i,s,e){if(s>=e)return;let r=0,h=!1,o=null;for(const l of i){const i=r,a=r+l.length;if(a>s&&i<e){const r=Math.max(s,i),n=Math.min(e,a),d=(r-i)/l.length,c=(n-i)/l.length,p={x:l.start.x+(l.end.x-l.start.x)*d,y:l.start.y+(l.end.y-l.start.y)*d},y={x:l.start.x+(l.end.x-l.start.x)*c,y:l.start.y+(l.end.y-l.start.y)*c};h?o&&Math.sqrt(Math.pow(p.x-o.x,2)+Math.pow(p.y-o.y,2))>.1&&t.lineTo(p.x,p.y):(t.moveTo(p.x,p.y),h=!0),t.lineTo(y.x,y.y),o=y}if(r+=l.length,r>=e)break}}clearBorder(){this.fillGraphics&&(this.removeChild(this.fillGraphics),this.fillGraphics.destroy(),this.fillGraphics=null),this.solidLine&&(this.removeChild(this.solidLine),this.solidLine.destroy(),this.solidLine=null),this.dashGraphics&&(this.removeChild(this.dashGraphics),this.dashGraphics.destroy(),this.dashGraphics=null)}updateStyle(t){this.borderOptions.style={...this.borderOptions.style,...t},this.drawBorder()}updatePoints(t){this.borderOptions.points=t,this.drawBorder()}setClosePath(t){this.borderOptions.closePath=t,this.drawBorder()}getOptions(){return{...this.borderOptions}}destroy(){e().emitter.off("antiScale",this.handleAntiScale),this.clearBorder(),super.destroy()}}export{r as Border};
@@ -1 +0,0 @@
1
- import{Graphics as t}from"pixi.js";import{useAppService as i}from"../../application/AppService.js";class n extends t{fillOptions;isDragging=!1;dragStartPosition=null;constructor(t){super(),this.fillOptions=t,this.setupInteraction(),this.setupDragEventListeners(),this.draw()}setupInteraction(){this.fillOptions.enableInteraction&&(this.eventMode="static",this.on("pointerdown",this.handlePointerDown))}setupDragEventListeners(){const{emitter:t}=i();t.on("gestureHijackPointerMove",this.handleDragPointerMove),t.on("gestureHijackPointerUp",this.handleDragPointerUp),t.on("gestureHijackCancel",this.handleDragCancel)}cleanupDragEventListeners(){const{emitter:t}=i();t.off("gestureHijackPointerMove",this.handleDragPointerMove),t.off("gestureHijackPointerUp",this.handleDragPointerUp),t.off("gestureHijackCancel",this.handleDragCancel)}handlePointerDown=t=>{t.stopPropagation(),this.startDragging(t)};startDragging(t){this.isDragging=!0;const n=this.parent.toLocal(t.global);this.dragStartPosition={x:n.x,y:n.y},this.fillOptions.onDragStart?.(t),i().emitter.emit("gestureHijackStart",t)}handleDragPointerMove=t=>{this.isDragging&&this.dragStartPosition&&this.fillOptions.onDragMove?.(t)};handleDragPointerUp=()=>{this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null,this.fillOptions.onDragEnd?.())};handleDragCancel=()=>{this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null,this.fillOptions.onDragEnd?.())};draw(){const{points:t,fillColor:i}=this.fillOptions;if(t.length<3)return;this.clear();const n=t.flatMap(t=>[t.x,t.y]);this.setFillStyle({color:i}).poly(n).fill()}getDragStartPosition(){return this.dragStartPosition}updateOptions(t){this.fillOptions={...this.fillOptions,...t},void 0!==t.enableInteraction&&(this.off("pointerdown",this.handlePointerDown),this.setupInteraction()),this.draw()}updatePoints(t){this.fillOptions.points=t,this.draw()}updateFillColor(t){this.fillOptions.fillColor=t,this.draw()}stopDragging(){this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null)}isCurrentlyDragging(){return this.isDragging}setInteractionEnabled(t){this.fillOptions.enableInteraction=t,t?(this.eventMode="static",this.on("pointerdown",this.handlePointerDown)):(this.eventMode="auto",this.off("pointerdown",this.handlePointerDown),this.isDragging&&this.stopDragging())}destroy(){this.stopDragging(),this.cleanupDragEventListeners(),this.off("pointerdown",this.handlePointerDown),super.destroy()}}export{n as ControlFill};
@@ -1 +0,0 @@
1
- import{Graphics as t,GraphicsContext as e}from"pixi.js";import{useAppService as s}from"../../application/AppService.js";class i extends t{lineOptions;strokeContext=null;constructor(t){super(),this.lineOptions={...t},this.eventMode="static",this.drawDashLine(),this.setupAntiScaleListener()}setupAntiScaleListener(){s().emitter.on("antiScale",this.drawDashLine)}drawDashLine=()=>{const{start:t,end:i,style:o}=this.lineOptions;this.clear(),this.strokeContext&&this.strokeContext.destroy();const n=s();this.strokeContext=new e;const r=n.getApp().toFixedSize(o.width);this.strokeContext.setStrokeStyle({color:o.color,width:r}),this.drawDashedLineToContext(this.strokeContext,t.x,t.y,i.x,i.y,o.dashArray[0],o.dashArray[1]),this.strokeContext.stroke(),this.context=this.strokeContext};drawDashedLineToContext(t,e,i,o,n,r,h){const a=o-e,d=n-i,p=Math.sqrt(a*a+d*d);if(0===p)return;const l=s(),c=l.getApp().toFixedSize(r),x=c+l.getApp().toFixedSize(h),k=p/x,y=Math.round(k);if(0===y)return t.moveTo(e,i),void t.lineTo(o,n);const u=p/y,C=u*(c/x),w=a/p,S=d/p;for(let s=0;s<y;s++){const o=s*u,n=o+C;if(o>=p)break;const r=Math.min(n,p),h=e+o*w,a=i+o*S,d=e+r*w,l=i+r*S;t.moveTo(h,a),t.lineTo(d,l)}}updatePoints(t,e){this.lineOptions.start=t,this.lineOptions.end=e,this.drawDashLine()}updateStyle(t){this.lineOptions.style={...this.lineOptions.style,...t},this.drawDashLine()}getOptions(){return{...this.lineOptions}}destroy(){s().emitter.off("antiScale",this.drawDashLine),this.strokeContext&&this.strokeContext.destroy(),super.destroy()}}export{i as DashLine};
@@ -1 +0,0 @@
1
- import{Graphics as t,Circle as i}from"pixi.js";import{useAppService as n}from"../../application/AppService.js";class o extends t{constructor(t){super(),this.options=t,this.initialPosition={...t.position},this.position.set(t.position.x,t.position.y),this.eventMode="static",this.cursor="pointer",this.setupEvents(),this.draw(),this.setupDragEventListeners()}isDragging=!1;dragStartPosition=null;initialPosition;draw(){const t=n(),{config:i}=this.options,o=t.getApp().toFixedSize(i.endPointSize),s=t.getApp().toFixedSize(i.endPointStrokeWidth);this.clear(),this.circle(0,0,o/2),this.fill({color:i.endPointColor}),this.stroke({color:i.endPointStrokeColor,width:s}),this.setupHitArea()}setupHitArea(){const t=n(),{config:o}=this.options,s=Math.max(o.endPointSize/2+10,20),e=t.getApp().toFixedSize(s);this.hitArea=new i(0,0,e)}setupEvents(){this.on("pointerdown",this.handlePointerDown.bind(this))}setupDragEventListeners(){const{emitter:t}=n();t.on("gestureHijackPointerMove",this.handleDragPointerMove),t.on("gestureHijackPointerUp",this.handleDragPointerUp),t.on("gestureHijackCancel",this.handleDragCancel)}cleanupDragEventListeners(){const{emitter:t}=n();t.off("gestureHijackPointerMove",this.handleDragPointerMove),t.off("gestureHijackPointerUp",this.handleDragPointerUp),t.off("gestureHijackCancel",this.handleDragCancel)}handlePointerDown(t){t.stopPropagation(),this.startDragging(t)}startDragging(t){const i=n();this.isDragging=!0,this.dragStartPosition=this.parent.toLocal(t.global),this.initialPosition={x:this.x,y:this.y},this.options.onDragStart?.(),i.getApp().requestRender("endpoint-drag",!0),n().emitter.emit("gestureHijackStart",t)}handleDragPointerMove=t=>{if(!this.isDragging||!this.dragStartPosition)return;const i=this.parent.toLocal(t.global),n=i.x-this.dragStartPosition.x,o=i.y-this.dragStartPosition.y,s={x:this.initialPosition.x+n,y:this.initialPosition.y+o};this.position.set(s.x,s.y),this.options.onDragMove?.(s)};handleDragPointerUp=()=>{if(!this.isDragging)return;const t=n();this.isDragging=!1,this.dragStartPosition=null,t.getApp().stopRender("endpoint-drag"),this.options.onDragEnd?.()};handleDragCancel=()=>{if(!this.isDragging)return;const t=n();this.isDragging=!1,this.dragStartPosition=null,t.getApp().stopRender("endpoint-drag"),this.options.onDragEnd?.()};updatePosition(t){this.position.set(t.x,t.y),this.initialPosition={...t}}getPosition(){return{x:this.x,y:this.y}}redraw(){this.draw()}destroy(){this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null),this.cleanupDragEventListeners(),this.off("pointerdown",this.handlePointerDown),super.destroy()}}export{o as EndPoint};
@@ -1 +0,0 @@
1
- import{AnimatedSprite as i,Assets as t,Texture as e,Ticker as s}from"pixi.js";import{throttle as a}from"lodash-es";import{Logger as r}from"../../utils/logger.js";import{useAppService as n}from"../../application/AppService.js";class h extends i{throttledUpdateScale;fixedWidth=0;fixedHeight=0;isFixedSizeSet=!1;sizeFixed=!0;baselineScale=1;static animationTicker=null;static animatedSprites=new Set;constructor(i){super(i||[]),this.anchor.set(.5),this.visible=!1,this.throttledUpdateScale=a(this.updateScale.bind(this),30,{leading:!0,trailing:!0}),this.registerScaleListener()}setFixedSize(i,t){this.fixedWidth=i,this.fixedHeight=t,this.isFixedSizeSet=!0,this.applySize()}setSizeFixed(i){this.sizeFixed=i,this.baselineScale=1,(i&&this.isFixedSizeSet||!i&&this.isFixedSizeSet)&&this.applySize()}set width(i){this.isFixedSizeSet||this.setFixedSize(i,this.fixedHeight||i)}set height(i){this.isFixedSizeSet||this.setFixedSize(this.fixedWidth||i,i)}get width(){return this.fixedWidth||super.width}get height(){return this.fixedHeight||super.height}registerScaleListener(){n().emitter.on("antiScale",this.throttledUpdateScale)}applySize(){if(!this.isFixedSizeSet||!this.textures||0===this.textures.length||!this.textures[0]||0===this.textures[0].width||0===this.textures[0].height)return;const i=n(),t=this.textures[0],e=this.fixedWidth/t.width,s=this.fixedHeight/t.height;if(this.sizeFixed){const t=i.currentScale;if(0===t||!isFinite(t)){const i=e,t=s;return void super.scale.set(i,t)}const a=e/t,r=s/t;super.scale.set(a,r)}else super.scale.set(e/this.baselineScale,s/this.baselineScale)}updateScale(i){this.sizeFixed&&(this.isFixedSizeSet?this.applySize():0!==i&&super.scale.set(1/i))}static async loadAnimationTextures(i,s="sleep_",a=96){try{await t.load(i);const r=[];for(let i=0;i<a;i++){const t=`${s}${i.toString().padStart(3,"0")}.png`,a=e.from(t);a&&r.push(a)}return r}catch(i){return[]}}setupAnimation(i){void 0!==i.sizeFixed&&this.setSizeFixed(i.sizeFixed),this.setFixedSize(i.width,i.height),this.animationSpeed=.5,this.loop=!0,r.log(`Animation setup complete, visible=${this.visible}, scale=(${this.scale.x.toFixed(3)}, ${this.scale.y.toFixed(3)})`)}draw(i,t){const{x:e,y:s,rotation:a=0}=i;t&&!this.visible?this.visible=t():t||this.visible||(this.visible=!0),this.rotation=a,this.position.set(e,s)}play(){this.textures&&this.textures.length>0&&(super.play(),h.animatedSprites.add(this),h.startAnimationTicker())}stop(){super.stop(),h.animatedSprites.delete(this),h.updateAnimationTicker()}set textures(i){super.textures=i,this.isFixedSizeSet&&i&&i.length>0&&i[0]&&i[0].width>0&&i[0].height>0&&this.applySize()}get textures(){return super.textures}static startAnimationTicker(){h.animationTicker?.started||(h.animationTicker||(h.animationTicker=new s,h.animationTicker.maxFPS=24,h.animationTicker.add(()=>{h.updateAnimations()})),h.animationTicker.start(),r.log("🎬 [AnimationTicker] Started animation ticker"))}static updateAnimationTicker(){h.animatedSprites.size>0?h.startAnimationTicker():h.stopAnimationTicker()}static stopAnimationTicker(){h.animationTicker?.started&&(r.log("⏸️ [AnimationTicker] Stopped animation ticker"),h.animationTicker.stop())}static updateAnimations(){if(0===h.animatedSprites.size)return;const i=n().getApp();i.renderer.render(i.stage)}destroy(i){h.animatedSprites.delete(this),h.updateAnimationTicker(),n().emitter.off("antiScale",this.throttledUpdateScale),super.destroy(i)}}export{h as EnhancedAnimatedSprite};
@@ -1 +0,0 @@
1
- import{Assets as e}from"pixi.js";import{GifSprite as i}from"pixi.js/gif";import{throttle as t}from"lodash-es";import{Logger as s}from"../../utils/logger.js";import{useAppService as h}from"../../application/AppService.js";class r extends i{throttledUpdateScale;fixedWidth=0;fixedHeight=0;isFixedSizeSet=!1;sizeFixed=!0;baselineScale=1;constructor(e){super(e),this.anchor.set(.5),this.visible=!1,this.throttledUpdateScale=t(this.updateScale.bind(this),30,{leading:!0,trailing:!0}),this.registerScaleListener()}setFixedSize(e,i){this.fixedWidth=e,this.fixedHeight=i,this.isFixedSizeSet=!0,this.applySize()}setSizeFixed(e){this.sizeFixed=e,this.baselineScale=1,(e&&this.isFixedSizeSet||!e&&this.isFixedSizeSet)&&this.applySize()}set width(e){this.isFixedSizeSet?s.warn("EnhancedGifSprite: 使用 setFixedSize() 方法来设置宽度"):this.setFixedSize(e,this.fixedHeight||e)}set height(e){this.isFixedSizeSet?s.warn("EnhancedGifSprite: 使用 setFixedSize() 方法来设置高度"):this.setFixedSize(this.fixedWidth||e,e)}get width(){return this.fixedWidth||super.width}get height(){return this.fixedHeight||super.height}registerScaleListener(){h().emitter.on("antiScale",this.throttledUpdateScale)}applySize(){if(!this.isFixedSizeSet||!this.texture||0===this.texture.width||0===this.texture.height)return;const e=h(),i=this.fixedWidth/this.texture.width,t=this.fixedHeight/this.texture.height;if(this.sizeFixed){const s=e.currentScale;if(0===s)return;const h=i/s,r=t/s;super.scale.set(h,r)}else super.scale.set(i/this.baselineScale,t/this.baselineScale)}updateScale(e){this.sizeFixed&&(this.isFixedSizeSet?this.applySize():0!==e&&super.scale.set(1/e))}static async createFromSrc(i,t){try{const s=await e.load(i),h=new r({source:s});return void 0!==t.sizeFixed&&h.setSizeFixed(t.sizeFixed),h.setFixedSize(t.width,t.height),h}catch(e){throw s.error(`Failed to load GIF "${i}":`,e),e}}draw(e,i){const{x:t,y:s,rotation:h=0}=e;i&&!this.visible?this.visible=i():i||this.visible||(this.visible=!0),this.rotation=h,this.position.set(t,s)}destroy(e){h().emitter.off("antiScale",this.throttledUpdateScale),super.destroy(e)}}export{r as EnhancedGifSprite};
@@ -1 +0,0 @@
1
- import{Sprite as e,Assets as i}from"pixi.js";import{throttle as t}from"lodash-es";import{Logger as s}from"../../utils/logger.js";import{useAppService as h}from"../../application/AppService.js";class r extends e{throttledUpdateScale;fixedWidth=0;fixedHeight=0;isFixedSizeSet=!1;sizeFixed=!0;baselineScale=1;constructor(e){super(e),this.anchor.set(.5),this.visible=!1,this.throttledUpdateScale=t(this.updateScale.bind(this),30,{leading:!0,trailing:!0}),this.registerScaleListener()}setFixedSize(e,i){this.fixedWidth=e,this.fixedHeight=i,this.isFixedSizeSet=!0,this.applySize()}setSizeFixed(e){this.sizeFixed=e,this.baselineScale=1,(e&&this.isFixedSizeSet||!e&&this.isFixedSizeSet)&&this.applySize()}set width(e){this.isFixedSizeSet?s.warn("EnhancedSprite: 使用 setFixedSize() 方法来设置宽度"):this.setFixedSize(e,this.fixedHeight||e)}set height(e){this.isFixedSizeSet?s.warn("EnhancedSprite: 使用 setFixedSize() 方法来设置高度"):this.setFixedSize(this.fixedWidth||e,e)}get width(){return this.fixedWidth||super.width}get height(){return this.fixedHeight||super.height}registerScaleListener(){h().emitter.on("antiScale",this.throttledUpdateScale)}applySize(){if(!this.isFixedSizeSet||!this.texture||0===this.texture.width||0===this.texture.height)return;const e=h(),i=this.fixedWidth/this.texture.width,t=this.fixedHeight/this.texture.height;if(this.sizeFixed){const s=e.currentScale;if(0===s)return;const h=i/s,r=t/s;super.scale.set(h,r)}else super.scale.set(i/this.baselineScale,t/this.baselineScale)}updateScale(e){this.sizeFixed&&(this.isFixedSizeSet?this.applySize():0!==e&&super.scale.set(1/e))}async loadTextureAndSetSize(e,t){try{const s=h(),r=await i.load(e);this.texture=r,void 0!==t.sizeFixed&&this.setSizeFixed(t.sizeFixed),this.setFixedSize(t.width,t.height),s.getApp().renderOnceNextFrame()}catch(i){s.error(`Failed to load texture "${e}":`,i)}}draw(e,i){const{x:t,y:s,rotation:h=0}=e;i&&!this.visible?this.visible=i():i||this.visible||(this.visible=!0),this.rotation=h,this.position.set(t,s)}set texture(e){super.texture=e,this.isFixedSizeSet&&e&&e.width>0&&e.height>0&&this.applySize()}get texture(){return super.texture}destroy(e){h().emitter.off("antiScale",this.throttledUpdateScale),super.destroy(e)}}export{r as EnhancedSprite};
@@ -1 +0,0 @@
1
- import{Container as t}from"pixi.js";import{throttle as e}from"lodash-es";import{useAppService as r}from"../../application/AppService.js";class a extends t{throttledUpdateScale;constructor(){super(),this.throttledUpdateScale=e(this.updateScale.bind(this),30,{leading:!0,trailing:!0});const t=r();this.updateScale(t.currentScale),this.registerScaleListener()}registerScaleListener(){r().emitter.on("antiScale",this.throttledUpdateScale)}updateScale(t){0!==t&&this.scale.set(1/t)}destroy(t){r().emitter.off("antiScale",this.throttledUpdateScale),super.destroy(t)}}export{a as FixedSizeContainer};
@@ -1 +0,0 @@
1
- import{Text as t}from"pixi.js";import{throttle as e}from"lodash-es";import{useAppService as s}from"../../application/AppService.js";class i extends t{throttledUpdateScale;constructor({text:t,style:i}){super({text:t,style:i}),this.throttledUpdateScale=e(this.updateScale.bind(this),20,{leading:!0,trailing:!0}),this.registerScaleListener(),this.updateScale(s().currentScale)}registerScaleListener(){s().emitter.on("antiScale",this.throttledUpdateScale)}updateScale(t){t<=0||this.scale.set(1/t)}setBaseFontSize(t){this.style.fontSize=t}updateText(t){this.text=t}destroy(t){s().emitter.off("antiScale",this.throttledUpdateScale),super.destroy(t)}}export{i as FixedSizeText};
@@ -1 +0,0 @@
1
- import{Graphics as t}from"pixi.js";import{useAppService as i}from"../../application/AppService.js";class e extends t{currentPosition=null;config;constructor(t){super(),this.setupAntiScaleListener(),this.config=t.config}setupAntiScaleListener(){i().emitter.on("antiScale",this.handleScaleChange)}handleScaleChange=()=>{this.redraw()};draw(t){const e=i();this.currentPosition=t;const{ringSize:o,ringColor:r,ringStrokeWidth:s,ringStrokeColor:n,ringStrokeDashed:c,ringStrokeDashArray:a}=this.config;this.clear();const h=e.metersToPixels(o),l=e.getApp().toFixedSize(s);this.setFillStyle({color:r}),c&&a.length>=2?this.drawDashedCircle(t,h,n,l,a):this.circle(t.x,t.y,h).fill().stroke({color:n,width:l,cap:"round",join:"round"})}drawDashedCircle(t,e,o,r,s){const n=i();this.circle(t.x,t.y,e).fill();const c=n.getApp().toFixedSize(s[0]),a=n.getApp().toFixedSize(s[1]),h=2*Math.PI*e,l=c+a,d=Math.floor(h/l);if(0===d)return void this.circle(t.x,t.y,e).stroke({color:o,width:r,cap:"round",join:"round"});const p=h/d,g=p*(c/l);for(let i=0;i<d;i++){const o=i*p/e,r=(i*p+g)/e,s=Math.max(4,Math.ceil(Math.abs(r-o)*e/2)),n=(r-o)/s;for(let i=0;i<=s;i++){const r=o+n*i,s=t.x+e*Math.cos(r),c=t.y+e*Math.sin(r);0===i?this.moveTo(s,c):this.lineTo(s,c)}}this.stroke({color:o,width:r,cap:"round",join:"round"})}redraw(){this.currentPosition&&this.draw(this.currentPosition)}destroy(){i().emitter.off("antiScale",this.handleScaleChange),super.destroy()}}export{e as Ring};
@@ -1 +0,0 @@
1
- import{Container as t}from"pixi.js";import{RotateControlButton as o}from"./RotateControlButton.js";import{RemoveControlButton as e}from"./RemoveControlButton.js";import{ScaleControlButton as i}from"./ScaleControlButton.js";import{MoveControlButton as n}from"./MoveControlButton.js";import{ControlFill as s}from"./ControlFill.js";import{normalizeToRectangle as a,getDistance as r,calculateCenter as l,normalizeVector as h,createVector as d,calculatePolygonOutline as u,calculateUprightLineAngle as c,calculateCornerExtension as p,rotatePointsAroundCenter as g,getVectorLength as C,calculateScaleRatio as y}from"../../utils/algorithm.js";import{ClickHandler as x}from"../../mixins/ClickHandler.js";import{throttle as z}from"lodash-es";import{Border as B}from"./Border.js";import{FixedSizeText as S}from"./FixedSizeText.js";import{useAppService as f}from"../../application/AppService.js";class v extends t{static BUTTON_INDICES={REMOVE:0,ROTATE:1,SCALE:2,MOVE:3,FIXED:0};zoneData;zoneType;zoneConfig;controlsConfig;zoneEvents;controlFill;zoneBorder;outlineBorder;moveLine;sizeText;controlButtons;deleteButton=null;rotateButton=null;scaleButton=null;moveButton=null;totalRotationAngle=0;rotationCenter=null;initialZonePoints=[];clickHandler=null;throttledUpdateOutline;constructor(t){super();const{zoneData:o,zoneType:e,events:i={}}=t;this.zoneType=e,this.zoneEvents=i,this.zoneConfig=this.getZoneConfig(),this.controlsConfig=this.getControlsConfig();const n=this.validateAndCorrectZoneSize(o.points),s=a(n);this.zoneData={...o,points:s},this.throttledUpdateOutline=z(this.updateOutlineForScale.bind(this),30,{leading:!0,trailing:!0}),this.initializeComponents(),this.createControlButtons(),this.updateEditState(),this.setupClickHandler(),this.registerScaleListener()}registerScaleListener(){f().emitter.on("antiScale",this.throttledUpdateOutline)}updateOutlineForScale(){this.isEditingEnabled()&&(this.updateOutlineBorder(),this.updateMoveLine(),this.updateControlButtonsPosition(),this.updateSizeTextPosition())}getZoneConfig(){const t=f(),{controls:o}=t.getConfig();return o[this.zoneType]}getControlsConfig(){const t=f(),{controls:o}=t.getConfig();return o}validateAndCorrectZoneSize(t){const o=f();if(t.length<4)return t;const e=o.metersToPixels(this.zoneConfig.minSize),[i,n,,s]=t,a=r(i,n),u=r(i,s);if(a>=e&&u>=e)return t;const c=l(t),p=h(d(i,n)),g=h(d(i,s)),C=Math.max(a,e)/2,y=Math.max(u,e)/2;return[{x:c.x-p.x*C-g.x*y,y:c.y-p.y*C-g.y*y},{x:c.x+p.x*C-g.x*y,y:c.y+p.y*C-g.y*y},{x:c.x+p.x*C+g.x*y,y:c.y+p.y*C+g.y*y},{x:c.x-p.x*C+g.x*y,y:c.y-p.y*C+g.y*y}]}getEditingIdsKey(){switch(this.zoneType){case"forbiddenSweepZone":default:return"editingForbiddenSweepZoneIds";case"forbiddenMopZone":return"editingForbiddenMopZoneIds";case"cleanZone":return"editingCleanZoneIds"}}isEditingEnabled(){const t=this.getEditingIdsKey();return f().runtimeSnapshot[t].includes(this.zoneData.id)}initializeComponents(){this.outlineBorder=this.createOutlineBorder(),this.addChild(this.outlineBorder),this.controlFill=this.createControlFill(),this.addChild(this.controlFill),this.zoneBorder=this.createBorder(),this.addChild(this.zoneBorder),this.moveLine=this.createMoveLine(),this.addChild(this.moveLine),this.sizeText=this.createSizeText(),this.addChild(this.sizeText),this.controlButtons=new t,this.controlButtons.visible=this.isEditingEnabled(),this.addChild(this.controlButtons),this.drawZone()}createControlButtons(){const t=this.calculateOutlinePoints();if(t.length<4)return;this.deleteButton=new e({iconAlias:"deleteIcon",backgroundColor:this.zoneConfig.iconWrapperFillColor,onClick:this.handleDelete}),this.deleteButton.position.set(t[v.BUTTON_INDICES.REMOVE].x,t[v.BUTTON_INDICES.REMOVE].y),this.zoneConfig.showRotateButton&&(this.rotateButton=new o({iconAlias:"rotateIcon",backgroundColor:this.zoneConfig.iconWrapperFillColor,getTargetPoints:()=>this.zoneData.points,onRotationStart:this.handleRotationStart,onRotationMove:this.handleRotationMove,onRotationEnd:this.handleRotationEnd}),this.rotateButton.position.set(t[v.BUTTON_INDICES.ROTATE].x,t[v.BUTTON_INDICES.ROTATE].y)),this.scaleButton=new i({iconAlias:"scaleIcon",backgroundColor:this.zoneConfig.iconWrapperFillColor,getTargetPoints:()=>this.zoneData.points,getButtonIndex:()=>v.BUTTON_INDICES.SCALE,onScaleStart:this.handleScaleStart,onScaleMove:this.handleScaleMove,onScaleEnd:this.handleScaleEnd}),this.scaleButton.position.set(t[v.BUTTON_INDICES.SCALE].x,t[v.BUTTON_INDICES.SCALE].y);const s=this.calculateMoveButtonPosition();this.moveButton=new n({iconAlias:"moveIcon",backgroundColor:this.zoneConfig.iconWrapperFillColor,onMoveStart:this.handleMoveStart,onMoveMove:this.handleMove,onMoveEnd:this.handleMoveEnd}),this.moveButton.position.set(s.x,s.y),this.controlButtons.addChild(this.deleteButton),this.rotateButton&&this.controlButtons.addChild(this.rotateButton),this.controlButtons.addChild(this.scaleButton),this.controlButtons.addChild(this.moveButton)}createControlFill(){const t=this.isEditingEnabled();return new s({points:this.zoneData.points,fillColor:this.zoneConfig.fillColor,enableInteraction:t,onDragStart:this.handleDragStart,onDragMove:this.handleDragMove,onDragEnd:this.handleDragEnd})}createBorder(){const t=this.isEditingEnabled()?this.zoneConfig.editing:this.zoneConfig.normal;return new B({points:this.zoneData.points,closePath:!0,style:{color:this.zoneConfig.strokeColor,width:this.zoneConfig.strokeWidth,isDashed:t.isDashed,dashArray:t.dashArray}})}createOutlineBorder(){const t=this.calculateOutlinePoints();return new B({points:t,closePath:!0,style:{color:this.zoneConfig.outlineStrokeColor,width:this.zoneConfig.outlineStrokeWidth,isDashed:this.zoneConfig.outlineDashed,dashArray:this.zoneConfig.outlineDashArray,fillColor:this.zoneConfig.outlineFillColor}})}createMoveLine(){const t=this.calculateOutlinePoints(),o=this.calculateMoveLinePoints(t);return new B({points:o,closePath:!1,style:{color:this.zoneConfig.outlineStrokeColor,width:this.zoneConfig.outlineStrokeWidth,isDashed:this.zoneConfig.outlineDashed,dashArray:this.zoneConfig.outlineDashArray}})}calculateOutlinePoints(){const{points:t}=this.zoneData;if(t.length<4)return t;const o=f().getApp().toFixedSize(this.zoneConfig.outlineOffset);return u(t,o)}calculateMoveLinePoints(t){return t.length<4?[]:[t[v.BUTTON_INDICES.MOVE],this.calculateMoveButtonPosition()]}createSizeText(){const t=this.calculateZoneSizeText(),o=new S({text:t,style:{fontSize:this.controlsConfig.textFontSize,fontFamily:this.controlsConfig.textFontFamily,fontWeight:this.controlsConfig.textFontWeight,fill:this.zoneConfig.textColor,align:"center"}});o.anchor.set(.5);const e=this.calculateSizeTextPosition();o.position.set(e.x,e.y);const i=this.calculateSizeTextRotation();return o.rotation=i,o.eventMode="none",o}calculateZoneSizeText(){const{points:t}=this.zoneData;if(t.length<4)return"0m*0m";const[o,e,,i]=t,n=r(o,e),s=r(o,i),a=f(),l=a.pixelsToMeters(n),h=a.pixelsToMeters(s);return`${l.toFixed(1)}${this.controlsConfig.unitLabel}*${h.toFixed(1)}${this.controlsConfig.unitLabel}`}calculateSizeTextPosition(){const{points:t}=this.zoneData;if(t.length<4)return{x:0,y:0};const[o,e,i,n]=t,{textPosition:s,textOffset:a}=this.zoneConfig,r=f().getApp().toFixedSize(a);let l,u;switch(s){case"top":{l={x:(o.x+e.x)/2,y:(o.y+e.y)/2};const t=h(d(e,o)),i={x:t.y,y:-t.x};u={x:i.x*r,y:i.y*r};break}case"right":{l={x:(e.x+i.x)/2,y:(e.y+i.y)/2};const t=h(d(e,i)),o={x:t.y,y:-t.x};u={x:o.x*r,y:o.y*r};break}case"bottom":{l={x:(n.x+i.x)/2,y:(n.y+i.y)/2};const t=h(d(n,i)),o={x:-t.y,y:t.x};u={x:o.x*r,y:o.y*r};break}case"left":{l={x:(o.x+n.x)/2,y:(o.y+n.y)/2};const t=h(d(n,o)),e={x:t.y,y:-t.x};u={x:e.x*r,y:e.y*r};break}default:l={x:(o.x+e.x)/2,y:(o.y+e.y)/2},u={x:0,y:r}}return{x:l.x+u.x,y:l.y+u.y}}calculateSizeTextRotation(){const{points:t}=this.zoneData;if(t.length<4)return 0;const[o,e,i,n]=t,{textPosition:s}=this.zoneConfig;let a,r;switch(s){case"top":default:a=o,r=e;break;case"right":a=e,r=i;break;case"bottom":a=i,r=n;break;case"left":a=n,r=o}return c(a,r)}calculateMoveButtonPosition(){const t=this.calculateOutlinePoints();if(t.length<4)return{x:0,y:0};const o=f(),{controls:e}=o.getConfig(),i=t[v.BUTTON_INDICES.MOVE],n=t[2],s=t[0],a=o.getApp().toFixedSize(e.moveButtonOffset);return p(i,n,s,a)}handleDragStart=()=>{if(!this.isEditingEnabled())return;const t=f();this.initialZonePoints=this.zoneData.points.map(t=>({...t})),t.getApp().requestRender("zone-drag",!0)};handleDragMove=t=>{if(!this.isEditingEnabled()||0===this.initialZonePoints.length)return;const o=this.parent.toLocal(t.global),e=this.controlFill.getDragStartPosition();if(!e)return;const i=o.x-e.x,n=o.y-e.y;this.applyTranslation(i,n)};handleDragEnd=()=>{const t=f();this.initialZonePoints=[],t.getApp().stopRender("zone-drag"),this.zoneEvents.onUpdate?.(this.getZoneData())};applyTranslation(t,o){this.zoneData.points=this.initialZonePoints.map(e=>({x:e.x+t,y:e.y+o})),this.drawZone(),this.updateControlButtonsPosition()}handleRotationStart=t=>{const o=f();this.totalRotationAngle=0,this.rotationCenter=t,this.initialZonePoints=this.zoneData.points.map(t=>({...t})),o.getApp().requestRender("zone-rotate",!0)};handleRotationMove=t=>{this.totalRotationAngle+=t,this.applyRotation(t)};handleRotationEnd=()=>{const t=f();this.rotationCenter=null,this.totalRotationAngle=0,this.initialZonePoints=[],t.getApp().stopRender("zone-rotate"),this.zoneEvents.onUpdate?.(this.getZoneData())};applyRotation(t){this.rotationCenter&&(this.zoneData.points=g(this.zoneData.points,this.rotationCenter,t),this.drawZone(),this.updateControlButtonsPosition())}handleScaleStart=()=>{const t=f();this.initialZonePoints=this.zoneData.points.map(t=>({...t})),t.getApp().requestRender("zone-scale",!0)};handleScaleMove=t=>{0!==this.initialZonePoints.length&&this.applyEdgeBasedScale(t)};handleScaleEnd=()=>{const t=f();this.initialZonePoints=[],t.getApp().stopRender("zone-scale"),this.zoneEvents.onUpdate?.(this.getZoneData())};applyEdgeBasedScale(t){if(this.initialZonePoints.length<4)return;const o=f(),{FIXED:e}=v.BUTTON_INDICES,{x:i,y:n}=this.initialZonePoints[e],[,s,,a]=this.initialZonePoints,r={x:i,y:n},l=d(r,s),h=d(r,a),u=d(r,t),c=C(l),p=C(h);if(0===c||0===p)return;const g=o.metersToPixels(this.zoneConfig.minSize),[x,z]=[y(u,l,c,g),y(u,h,p,g)];this.zoneData.points=[r,{x:i+l.x*x,y:n+l.y*x},{x:i+l.x*x+h.x*z,y:n+l.y*x+h.y*z},{x:i+h.x*z,y:n+h.y*z}],this.drawZone(),this.updateControlButtonsPosition()}handleMoveStart=()=>{const t=f();this.initialZonePoints=this.zoneData.points.map(t=>({...t})),t.getApp().requestRender("zone-move",!0)};handleMove=t=>{if(!this.isEditingEnabled()||0===this.initialZonePoints.length)return;const o=this.parent.toLocal(t.global),e=this.moveButton?.getDragStartPosition();if(!e)return;const i=o.x-e.x,n=o.y-e.y;this.applyTranslation(i,n)};handleMoveEnd=()=>{const t=f();this.initialZonePoints=[],t.getApp().stopRender("zone-move"),this.zoneEvents.onUpdate?.(this.getZoneData())};handleDelete=()=>{this.zoneEvents.onRemove?.(this.zoneData.id)};setupClickHandler(){this.clickHandler=new x(this,{onClick:()=>{this.isEditingEnabled()||this.zoneEvents?.onClick?.(this.getZoneData())},stopPropagation:!1})}drawZone(){const{points:t}=this.zoneData;t.length<4||(this.controlFill.updatePoints(t),this.zoneBorder.updatePoints(t),this.updateOutlineBorder(),this.updateMoveLine(),this.updateSizeText())}updateOutlineBorder(){const t=this.calculateOutlinePoints();this.outlineBorder.updatePoints(t)}updateMoveLine(){const t=this.calculateOutlinePoints(),o=this.calculateMoveLinePoints(t);this.moveLine.updatePoints(o)}updateSizeText(){if(!this.sizeText)return;const t=this.calculateZoneSizeText();this.sizeText.updateText(t),this.updateSizeTextPosition()}updateSizeTextPosition(){if(!this.sizeText)return;const t=this.calculateSizeTextPosition();this.sizeText.position.set(t.x,t.y);const o=this.calculateSizeTextRotation();this.sizeText.rotation=o}updateControlButtonsPosition(){if(!this.deleteButton||!this.scaleButton||!this.moveButton)return;const t=this.calculateOutlinePoints();if(t.length<4)return;const{REMOVE:o,ROTATE:e,SCALE:i}=v.BUTTON_INDICES,n=this.calculateMoveButtonPosition(),s=[{button:this.deleteButton,point:t[o]},{button:this.scaleButton,point:t[i]},{button:this.moveButton,point:n}];this.rotateButton&&s.push({button:this.rotateButton,point:t[e]}),s.forEach(({button:t,point:o})=>t.position.set(o.x,o.y))}updateEditState(){const t=this.isEditingEnabled();this.controlButtons.visible=t,!t&&this.getCurrentOperationState().hasAnyOperation&&this.stopAllOperations(),this.outlineBorder.visible=t,this.moveLine.visible=t,this.sizeText&&(this.sizeText.visible=t),t&&(this.updateOutlineBorder(),this.updateMoveLine(),this.updateControlButtonsPosition(),this.updateSizeTextPosition()),this.controlFill.setInteractionEnabled(t),this.updateBorderStyle(t?this.zoneConfig.editing:this.zoneConfig.normal),this.zIndex=t?1e3:0}updateBorderStyle(t){this.zoneBorder.updateStyle({isDashed:t.isDashed,dashArray:t.dashArray})}getCurrentOperationState(){const t=this.controlFill.isCurrentlyDragging(),o=this.scaleButton?.isCurrentlyScaling()||!1,e=this.rotateButton?.isCurrentlyRotating()||!1,i=this.moveButton?.isCurrentlyMoving()||!1;return{isDragging:t,isScaling:o,isRotating:e,isMoving:i,hasAnyOperation:t||o||e||i}}stopAllOperations(){this.controlFill.stopDragging(),this.scaleButton?.stopScaling(),this.rotateButton?.stopRotation(),this.moveButton?.stopMoving()}stopDragging(){this.controlFill.stopDragging()}stopScaling(){this.scaleButton?.stopScaling()}stopRotating(){this.rotateButton?.stopRotation()}stopMoving(){this.moveButton?.stopMoving()}isCurrentlyDragging(){return this.controlFill.isCurrentlyDragging()}isCurrentlyScaling(){return this.scaleButton?.isCurrentlyScaling()||!1}isCurrentlyRotating(){return this.rotateButton?.isCurrentlyRotating()||!1}isCurrentlyMoving(){return this.moveButton?.isCurrentlyMoving()||!1}updateZoneData(t){const o=this.validateAndCorrectZoneSize(t.points),e=a(o);this.zoneData={...t,points:e},this.drawZone(),this.updateControlButtonsPosition(),this.updateEditState()}getZoneData(){return{...this.zoneData}}destroy(){f().emitter.off("antiScale",this.throttledUpdateOutline),this.clickHandler?.destroy(),this.clickHandler=null,this.deleteButton?.destroy(),this.rotateButton?.destroy(),this.scaleButton?.destroy(),this.moveButton?.destroy(),this.deleteButton=null,this.rotateButton=null,this.scaleButton=null,this.moveButton=null,this.zoneBorder?.destroy(),this.outlineBorder?.destroy(),this.moveLine?.destroy(),this.sizeText?.destroy(),this.controlFill?.destroy(),this.controlButtons?.destroy(),super.destroy()}}export{v as Zone};
@@ -1 +0,0 @@
1
- import{Container as i}from"pixi.js";import{ChargingStationIcon as t}from"./ChargingStationIcon.js";import{LAYER_CHARGING_STATION as n}from"../../application/AppContainer.js";import{subscribeKey as r}from"valtio/vanilla/utils";import{Ring as s}from"../Base/Ring.js";import{Logger as o}from"../../utils/logger.js";import{useAppService as a}from"../../application/AppService.js";class g extends i{chargingStation;ring;unsubscribeFns=[];constructor(){super();const i=a();i.appContainer.addToLayer(n,this),this.ring=new s({config:i.chargingStationConfig}),this.ring.visible=i.runtimeSnapshot.showChargingStationRing,this.addChild(this.ring),this.chargingStation=new t,this.addChild(this.chargingStation);const g=r(i.runtime,"showChargingStationRing",i=>{o.log(`[runtime] showChargingStationRing: ${i}`),this.ring.visible=i});this.unsubscribeFns.push(g)}async draw({x:i,y:t,rotation:n}){0===i&&0===t||(this.ring.draw({x:i,y:t}),await this.chargingStation.draw({x:i,y:t,rotation:n}))}destroy(){this.unsubscribeFns.forEach(i=>i()),this.unsubscribeFns=[],this.ring.destroy(),super.destroy()}}export{g as ChargingStation};
@@ -1 +0,0 @@
1
- import{Container as i,Polygon as t,Graphics as e}from"pixi.js";import{DashLine as n}from"../Base/DashLine.js";import{EndPoint as s}from"../Base/EndPoint.js";import{calculateLineEndpoints as o,calculateLineSegmentHitArea as r,sampleLinePoints as d,getDistance as a,extendLineSegment as h,isPointInPolygon as l,lineIntersectsBox as g}from"../../utils/algorithm.js";import{throttle as c}from"lodash-es";import{Logger as u}from"../../utils/logger.js";import{useAppService as p}from"../../application/AppService.js";class P extends i{endPoints;dividerConfig;dividerEvents;roomId;roomGeometry=null;dashLine;solidLine=null;startEndPoint;endEndPoint;solidLinePoints=null;initialDividerPoints=[];isDragging=!1;dragStartPosition=null;throttledHandleScaleChange;constructor(i){super();const{endPoints:t,roomId:e,events:n={}}=i;this.dividerEvents=n,this.roomId=e;const s=p();this.dividerConfig=s.dividerConfig,this.roomGeometry=s.mapManager.getRoomById(this.roomId)||null,this.endPoints=t?this.validateDividerPoints(t):this.createDefaultdividerPoints(),this.throttledHandleScaleChange=c(this.handleScaleChange.bind(this),30,{leading:!0,trailing:!0}),this.initializeComponents(),this.calculateAndCreateSolidLine(),this.registerScaleListener(),this.setupDragEventListeners()}validateDividerPoints(i){if(i.length>=2)return i.slice(0,2);const t=i[0]||{x:0,y:0};return[t,{x:t.x+50,y:t.y}]}createDefaultdividerPoints(){if(!this.roomGeometry)return u.warn("Room geometry not available, creating fallback divider"),[{x:0,y:0},{x:100,y:0}];const i=p(),t=i.getApp().mapState;if(!t)return u.warn("Map state not available, creating fallback divider"),[{x:0,y:0},{x:100,y:0}];const{boundingBox:e}=this.roomGeometry,n=i.getApp().toFixedSize(this.dividerConfig.defaultExtension),s=this.dividerConfig.defaultDirection,r=e.x+e.width/2,d=e.y+e.height/2,a="horizontal"===s?e.width+2*n:e.height+2*n;return o(r,d,a,s).map(i=>({x:i.x-t.origin.x,y:i.y-t.origin.y}))}initializeComponents(){this.createDashLine(),this.addChild(this.dashLine),this.createEndPoints(),this.addChild(this.startEndPoint),this.addChild(this.endEndPoint),this.setupDashLineInteraction()}createDashLine(){const i=this.endPoints;if(i.length<2)return;const{dashLineWidth:t,dashLineDashArray:e,lineColor:s}=this.dividerConfig;this.dashLine=new n({start:i[0],end:i[1],style:{color:s.toString(),width:t,dashArray:e}})}createEndPoints(){const i=this.endPoints;this.startEndPoint=new s({position:i[0],config:this.dividerConfig,onDragStart:this.handleEndPointDragStart,onDragMove:i=>this.handleEndPointDragMove(0,i),onDragEnd:this.handleEndPointDragEnd}),this.endEndPoint=new s({position:i[1],config:this.dividerConfig,onDragStart:this.handleEndPointDragStart,onDragMove:i=>this.handleEndPointDragMove(1,i),onDragEnd:this.handleEndPointDragEnd})}setupDashLineInteraction(){this.dashLine&&(this.setupDashLineHitArea(),this.dashLine.off("pointerdown",this.handleDashLinePointerDown),this.dashLine.on("pointerdown",this.handleDashLinePointerDown))}setupDashLineHitArea(){const i=p();if(!this.dashLine)return;const e=this.endPoints;if(e.length<2)return;const{hitAreaThickness:n}=this.dividerConfig,s=i.getApp().toFixedSize(n),o=r(e[0],e[1],s);if(0===o.length)return;const d=new t(o);this.dashLine.hitArea=d}handleEndPointDragStart=()=>{const i=p();this.initialDividerPoints=this.endPoints.map(i=>({...i})),this.clearSolidLine(),i.getApp().requestRender("divider-endpoint-drag",!0)};handleEndPointDragMove=(i,t)=>{0!==this.initialDividerPoints.length&&(this.endPoints[i]=t,this.updateDashLine(),this.updateSolidLine(),this.setupDashLineHitArea())};handleEndPointDragEnd=()=>{const i=p();this.initialDividerPoints=[],i.getApp().stopRender("divider-endpoint-drag"),this.calculateAndCreateSolidLine(),this.checkAndResetIfOutOfRoom(),this.dividerEvents.onUpdate?.(this.getDividerEndPoints())};handleDashLinePointerDown=i=>{i.stopPropagation(),this.startDragging(i)};startDragging(i){const t=p();this.isDragging=!0;const e=this.parent.toLocal(i.global);this.dragStartPosition={x:e.x,y:e.y},this.initialDividerPoints=this.endPoints.map(i=>({...i})),this.clearSolidLine(),t.getApp().requestRender("divider-drag",!0),p().emitter.emit("gestureHijackStart",i)}setupDragEventListeners(){const{emitter:i}=p();i.on("gestureHijackPointerMove",this.handleDragPointerMove),i.on("gestureHijackPointerUp",this.handleDragPointerUp),i.on("gestureHijackCancel",this.handleDragCancel)}cleanupDragEventListeners(){const{emitter:i}=p();i.off("gestureHijackPointerMove",this.handleDragPointerMove),i.off("gestureHijackPointerUp",this.handleDragPointerUp),i.off("gestureHijackCancel",this.handleDragCancel)}handleDragPointerMove=i=>{if(!this.isDragging||!this.dragStartPosition||0===this.initialDividerPoints.length)return;const t=this.parent.toLocal(i.global),e=t.x-this.dragStartPosition.x,n=t.y-this.dragStartPosition.y;this.endPoints=this.initialDividerPoints.map(i=>({x:i.x+e,y:i.y+n})),this.updateAllComponents()};handleDragPointerUp=()=>{const i=p();this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null,this.initialDividerPoints=[],i.getApp().stopRender("divider-drag"),this.calculateAndCreateSolidLine(),this.checkAndResetIfOutOfRoom(),this.dividerEvents.onUpdate?.(this.getDividerEndPoints()))};handleDragCancel=()=>{const i=p();this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null,this.initialDividerPoints=[],i.getApp().stopRender("divider-drag"),this.calculateAndCreateSolidLine(),this.checkAndResetIfOutOfRoom(),this.dividerEvents.onUpdate?.(this.getDividerEndPoints()))};updateAllComponents(){this.updateDashLine(),this.updateSolidLine(),this.updateEndPoints(),this.setupDashLineHitArea()}updateDashLine(){const i=this.endPoints;i.length<2||!this.dashLine||this.dashLine.updatePoints(i[0],i[1])}updateSolidLine(){if(!this.solidLine||!this.solidLinePoints)return;const{solidLineWidth:i,lineColor:t}=this.dividerConfig,e=p().getApp().toFixedSize(i);this.solidLine.clear(),this.solidLine.setStrokeStyle({color:t.toString(),width:e}).moveTo(this.solidLinePoints[0].x,this.solidLinePoints[0].y).lineTo(this.solidLinePoints[1].x,this.solidLinePoints[1].y).stroke()}updateEndPoints(){const i=this.endPoints;this.startEndPoint&&this.startEndPoint.updatePosition(i[0]),this.endEndPoint&&this.endEndPoint.updatePosition(i[1])}registerScaleListener(){const{emitter:i}=p();i.on("antiScale",this.throttledHandleScaleChange)}handleScaleChange=()=>{this.startEndPoint?.redraw(),this.endEndPoint?.redraw(),this.updateSolidLine(),this.setupDashLineHitArea()};getDividerEndPoints(){return[...this.endPoints]}getEffectiveDividerPoints(){return this.solidLinePoints?[...this.solidLinePoints]:null}calculateAndCreateSolidLine(){if(this.clearSolidLine(),!this.roomId)return;if(!this.getRoomGraphics())return;const i=this.calculateLineRoomIntersection();i&&i.length>=2&&(this.solidLinePoints=[i[0],i[i.length-1]],this.createSolidLine())}getRoomGraphics(){const i=p().mapManager.roomFill;return i&&this.roomId&&i.getRoomGraphicsMap().get(this.roomId)||null}calculateLineRoomIntersection(){const i=this.endPoints;if(i.length<2)return null;if(!this.roomId)return null;const[t,e]=i,n=this.isPointInRoomFill(t),s=this.isPointInRoomFill(e);if(n||s)return null;const o=d(t,e),r=[];for(const i of o)this.isPointInRoomFill(i)&&r.push(i);if(0===r.length)return null;const l=r[0],g=r[r.length-1];return a(l,g)<3?null:h(l,g,.5)}isPointInRoomFill(i){if(!this.roomId)return!1;const t=p().getApp().mapState;if(!t)return!1;const e={x:i.x+t.origin.x,y:i.y+t.origin.y};return"raster"===t.mapType?this.isPointInRasterRoomFill(e):this.isPointInStructuredRoomFill(e)}isPointInRasterRoomFill(i){i.x-=.5,i.y-=.5;const t=p(),e=t.getApp().mapState,n=t.mapManager.roomFill;if(!e||!n)return!1;const s=n.getRasterRoomData(this.roomId);if(!s)return!1;const o=n.getMapWidth();if(0===o)return!1;const r=Math.round(i.y)*o+Math.round(i.x);for(let i=0;i<s.pixelIndices.length;i++)if(s.pixelIndices[i]===r)return!0;return!1}isPointInStructuredRoomFill(i){const t={x:Math.round(i.x),y:Math.round(i.y)},e=p(),n=e.getApp().mapState,s=e.mapManager.getRoomById(this.roomId);return!!(n&&s&&s.outlinePoints)&&l(t,s.outlinePoints,!0)}isDividerCompletelyOutOfRoom(){if(!this.roomGeometry)return!1;const{boundingBox:i}=this.roomGeometry,t=this.endPoints;if(t.length<2)return!1;const e=p().getApp().mapState;if(!e)return!1;const n={x:t[0].x+e.origin.x,y:t[0].y+e.origin.y},s={x:t[1].x+e.origin.x,y:t[1].y+e.origin.y};return!g(n,s,i.x,i.y,i.width,i.height)}checkAndResetIfOutOfRoom(){const i=p(),{resetDividerWhenOutOfRoom:t}=i.dividerConfig;t&&this.isDividerCompletelyOutOfRoom()&&this.resetToDefaultState()}resetToDefaultState(){this.endPoints=this.createDefaultdividerPoints(),this.calculateAndCreateSolidLine(),this.updateComponents(),this.dividerEvents.onUpdate?.(this.endPoints)}updateComponents(){const i=this.endPoints;i.length>=2&&(this.dashLine.updatePoints(i[0],i[1]),this.startEndPoint.position.set(i[0].x,i[0].y),this.endEndPoint.position.set(i[1].x,i[1].y),this.setupDashLineInteraction())}createSolidLine(){if(!this.solidLinePoints)return;const{solidLineWidth:i,lineColor:t}=this.dividerConfig,n=p();this.solidLine=new e,this.solidLine.eventMode="none";const s=n.getApp().toFixedSize(i);this.solidLine.setStrokeStyle({color:t.toString(),width:s}).moveTo(this.solidLinePoints[0].x,this.solidLinePoints[0].y).lineTo(this.solidLinePoints[1].x,this.solidLinePoints[1].y).stroke(),this.addChildAt(this.solidLine,0)}clearSolidLine(){this.solidLine&&(this.removeChild(this.solidLine),this.solidLine.destroy(),this.solidLine=null),this.solidLinePoints=null}updatedividerPoints(i){this.endPoints=this.validateDividerPoints(i),this.updateAllComponents(),this.calculateAndCreateSolidLine()}destroy(){p().emitter.off("antiScale",this.throttledHandleScaleChange),this.cleanupDragEventListeners(),this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null,this.initialDividerPoints=[]),this.dashLine&&this.dashLine.off("pointerdown",this.handleDashLinePointerDown),this.clearSolidLine(),this.dashLine?.destroy(),this.startEndPoint?.destroy(),this.endEndPoint?.destroy(),super.destroy()}}export{P as Divider};
@@ -1 +0,0 @@
1
- import{Container as t}from"pixi.js";import{ControlFill as i}from"../Base/ControlFill.js";import{Border as e}from"../Base/Border.js";import{FixedSizeText as s}from"../Base/FixedSizeText.js";import{ClickHandler as o}from"../../mixins/ClickHandler.js";import{throttle as n}from"lodash-es";import{EnhancedSprite as a}from"../Base/EnhancedSprite.js";import{useAppService as r}from"../../application/AppService.js";class l extends t{spotData;spotConfig;controlsConfig;spotEvents;controlFill;spotBorder;centerIcon;sizeText;clickHandler=null;initialSpotPoint=null;throttledUpdateScale;constructor(t){super();const{spotData:i,events:e={}}=t,s=r();this.spotData=i,this.spotEvents=e,this.controlsConfig=s.controlsConfig,this.spotConfig=s.controlsConfig.spot,this.throttledUpdateScale=n(this.updateScale.bind(this),30,{leading:!0,trailing:!0}),this.initializeComponents(),this.updateEditState(),this.setupClickHandler(),this.registerScaleListener()}registerScaleListener(){r().emitter.on("antiScale",this.throttledUpdateScale)}updateScale(){this.isEditingEnabled()&&this.updateSizeTextPosition()}isEditingEnabled(){return r().runtimeSnapshot.editingSpotIds.includes(this.spotData.id)}calculateRectanglePoints(){const t=r(),{point:i}=this.spotData,{size:e}=this.spotConfig,s=t.metersToPixels(e)/2;return[{x:i.x-s,y:i.y-s},{x:i.x+s,y:i.y-s},{x:i.x+s,y:i.y+s},{x:i.x-s,y:i.y+s}]}initializeComponents(){const t=this.calculateRectanglePoints();this.controlFill=this.createControlFill(t),this.addChild(this.controlFill),this.spotBorder=this.createBorder(t),this.addChild(this.spotBorder),this.centerIcon=this.createCenterIcon(),this.addChild(this.centerIcon),this.sizeText=this.createSizeText(),this.addChild(this.sizeText),this.drawSpot()}createControlFill(t){const e=this.isEditingEnabled();return new i({points:t,fillColor:this.spotConfig.fillColor,enableInteraction:e,onDragStart:this.handleDragStart,onDragMove:this.handleDragMove,onDragEnd:this.handleDragEnd})}createBorder(t){const i=this.isEditingEnabled()?this.spotConfig.editing:this.spotConfig.normal;return new e({points:t,closePath:!0,style:{color:this.spotConfig.strokeColor,width:this.spotConfig.strokeWidth,isDashed:i.isDashed,dashArray:i.dashArray}})}createCenterIcon(){const t=new a;return this.loadIconTexture(t),t.position.set(this.spotData.point.x,this.spotData.point.y),t.eventMode="none",t.visible=!1,t}async loadIconTexture(t){const{iconSize:i}=this.spotConfig;await t.loadTextureAndSetSize("spotIcon",{width:i,height:i,sizeFixed:!1}),t.visible=this.isEditingEnabled()}createSizeText(){const t=this.calculateSpotSizeText(),i=new s({text:t,style:{fontSize:this.controlsConfig.textFontSize,fontFamily:this.controlsConfig.textFontFamily,fontWeight:this.controlsConfig.textFontWeight,fill:this.spotConfig.textColor,align:"center"}});i.anchor.set(.5);const e=this.calculateSizeTextPosition();return i.position.set(e.x,e.y),i.eventMode="none",i}calculateSpotSizeText(){const{size:t}=this.spotConfig;return`${t.toFixed(1)}${this.controlsConfig.unitLabel}*${t.toFixed(1)}${this.controlsConfig.unitLabel}`}calculateSizeTextPosition(){const t=r(),i=this.calculateRectanglePoints();if(i.length<4)return{x:0,y:0};const[e,s,o,n]=i,{textPosition:a,textOffset:l}=this.spotConfig,h=t.getApp().toFixedSize(l);let c,d;switch(a){case"top":default:c={x:(e.x+s.x)/2,y:(e.y+s.y)/2},d={x:c.x,y:c.y+h};break;case"right":c={x:(s.x+o.x)/2,y:(s.y+o.y)/2},d={x:c.x+h,y:c.y};break;case"bottom":c={x:(n.x+o.x)/2,y:(n.y+o.y)/2},d={x:c.x,y:c.y+h};break;case"left":c={x:(e.x+n.x)/2,y:(e.y+n.y)/2},d={x:c.x-h,y:c.y}}return d}handleDragStart=()=>{const t=r();this.isEditingEnabled()&&(this.initialSpotPoint={...this.spotData.point},t.getApp().requestRender("spot-drag",!0))};handleDragMove=t=>{if(!this.isEditingEnabled()||!this.initialSpotPoint)return;const i=this.parent.toLocal(t.global),e=this.controlFill.getDragStartPosition();if(!e)return;const s=i.x-e.x,o=i.y-e.y;this.applyTranslation(s,o)};handleDragEnd=()=>{const t=r();this.initialSpotPoint=null,t.getApp().stopRender("spot-drag"),this.spotEvents.onUpdate?.(this.getSpotData())};applyTranslation(t,i){this.initialSpotPoint&&(this.spotData.point={x:this.initialSpotPoint.x+t,y:this.initialSpotPoint.y+i},this.drawSpot())}setupClickHandler(){this.clickHandler=new o(this,{onClick:()=>{this.isEditingEnabled()||this.spotEvents?.onClick?.(this.getSpotData())},stopPropagation:!1})}drawSpot(){const t=this.calculateRectanglePoints();this.controlFill.updatePoints(t),this.spotBorder.updatePoints(t),this.centerIcon.position.set(this.spotData.point.x,this.spotData.point.y),this.updateSizeText()}updateSizeText(){if(!this.sizeText)return;const t=this.calculateSpotSizeText();this.sizeText.updateText(t),this.updateSizeTextPosition()}updateSizeTextPosition(){if(!this.sizeText)return;const t=this.calculateSizeTextPosition();this.sizeText.position.set(t.x,t.y)}updateEditState(){const t=this.isEditingEnabled();if(this.sizeText&&(this.sizeText.visible=t),this.centerIcon&&(this.centerIcon.visible=t),this.controlFill&&this.controlFill.setInteractionEnabled(t),this.spotBorder){const i=t?this.spotConfig.editing:this.spotConfig.normal;this.spotBorder.updateStyle({isDashed:i.isDashed,dashArray:i.dashArray})}this.zIndex=t?1e3:0}updateSpotData(t){this.spotData={...t},this.drawSpot(),this.updateEditState()}getSpotData(){return{...this.spotData}}destroy(){r().emitter.off("antiScale",this.throttledUpdateScale),this.clickHandler?.destroy(),this.clickHandler=null,this.controlFill?.destroy(),this.spotBorder?.destroy(),this.centerIcon?.destroy(),this.sizeText?.destroy(),super.destroy()}static create(t){const i=r();return new l({spotData:t,events:{onUpdate:t=>{i.events?.onUpdateSpot?.(t)},onClick:t=>{i.events?.onClickSpot?.(t)}}})}}export{l as Spot};
@@ -1 +0,0 @@
1
- import{Container as t,Graphics as i,Polygon as e}from"pixi.js";import{getDistance as n,normalizeVector as l,createVector as o,calculateLineMidpointOffset as s,calculateUprightLineAngle as a,calculateLineSegmentOutline as r,calculateCornerExtension as h,calculateLineSegmentHitArea as d}from"../../utils/algorithm.js";import{throttle as c}from"lodash-es";import{ClickHandler as u}from"../../mixins/ClickHandler.js";import{Border as g}from"../Base/Border.js";import{DashLine as p}from"../Base/DashLine.js";import{FixedSizeText as w}from"../Base/FixedSizeText.js";import{MoveControlButton as C}from"../Base/MoveControlButton.js";import{RemoveControlButton as f}from"../Base/RemoveControlButton.js";import{ScaleControlButton as L}from"../Base/ScaleControlButton.js";import{useAppService as v}from"../../application/AppService.js";class m extends t{static BUTTON_INDICES={REMOVE:0,SCALE:2,MOVE:3};wallData;wallConfig;controlsConfig;wallEvents;wallLine;outlineBorder;moveLine;lengthText;controlButtons;removeButton=null;scaleButton=null;moveButton=null;initialWallPoints=[];isDragging=!1;dragStartPosition=null;throttledUpdateOutline;throttledHandleScaleChange;wallLineClickHandler=null;constructor(t){super();const{wallData:i,events:e={}}=t;this.wallEvents=e;const n=v();this.wallConfig=n.controlsConfig.virtualWall,this.controlsConfig=n.controlsConfig,this.wallData={...i,points:this.validateAndCorrectWallLength(i.points)},this.throttledHandleScaleChange=c(this.handleScaleChange.bind(this),30,{leading:!0,trailing:!0}),this.throttledUpdateOutline=c(this.updateOutlineForScale.bind(this),30,{leading:!0,trailing:!0}),this.initializeComponents(),this.updateEditState(),this.registerScaleListener(),this.setupDragEventListeners()}validateAndCorrectWallLength(t){const i=v();if(t.length<2)return t;const[e,s]=t,a=i.metersToPixels(this.wallConfig.minWidth),r=n(e,s);if(r>=a)return t;if(0===r)return[e,{x:e.x+a,y:e.y}];const h=l(o(e,s));return[e,{x:e.x+h.x*a,y:e.y+h.y*a}]}isEditingEnabled(){return v().runtimeSnapshot.editingVirtualWallIds.includes(this.wallData.id)}updateOutlineForScale(){this.isEditingEnabled()&&(this.updateOutlineComponents(),this.updateControlButtonsPosition(),this.updateLengthTextPosition())}initializeComponents(){this.outlineBorder=this.createOutlineBorder(),this.addChild(this.outlineBorder),this.createWallLine(!1),this.addChild(this.wallLine),this.lengthText=this.createLengthText(),this.addChild(this.lengthText),this.moveLine=this.createMoveLine(),this.addChild(this.moveLine),this.controlButtons=new t,this.controlButtons.visible=this.isEditingEnabled(),this.addChild(this.controlButtons),this.createControlButtons()}createWallLine(t=!0){const{points:i}=this.wallData;if(i.length<2)return;const{lineWidth:e,lineColor:n,editing:l,normal:o}=this.wallConfig,s=this.isEditingEnabled()?l:o;s.isDashed?this.wallLine=new p({start:i[0],end:i[1],style:{color:n.toString(),width:e,dashArray:s.dashArray}}):this.wallLine=this.createSolidLine(i[0],i[1],e,n.toString()),t&&this.setupWallLineInteraction()}createLengthText(){const t=this.calculateWallLengthInMeters(),i=this.formatLengthText(t),e=new w({text:i,style:{fontSize:this.controlsConfig.textFontSize,fontFamily:this.controlsConfig.textFontFamily,fontWeight:this.controlsConfig.textFontWeight,fill:this.wallConfig.textColor,align:"center"}});e.anchor.set(.5);const n=this.calculateTextPosition();e.position.set(n.x,n.y);const l=this.calculateTextRotation();return e.rotation=l,e.eventMode="none",e}calculateWallLengthInMeters(){const t=v(),{points:i}=this.wallData;if(i.length<2)return 0;const e=n(i[0],i[1]);return t.pixelsToMeters(e)}formatLengthText(t){return`${t.toFixed(1)}${this.controlsConfig.unitLabel}`}calculateTextPosition(){const t=v(),{points:i}=this.wallData;if(i.length<2)return{x:0,y:0};const[e,n]=i,l=t.getApp().toFixedSize(this.wallConfig.textOffset);return s(e,n,l)}calculateTextRotation(){const{points:t}=this.wallData;if(t.length<2)return 0;const[i,e]=t;return a(i,e)}getOutlineStyle(){return{color:this.wallConfig.outlineStrokeColor,width:this.wallConfig.outlineStrokeWidth,isDashed:this.wallConfig.outlineDashed,dashArray:this.wallConfig.outlineDashArray,fillColor:this.wallConfig.outlineFillColor}}createOutlineBorder(){const t=this.calculateOutlinePoints();return new g({points:t,closePath:!0,style:this.getOutlineStyle()})}createMoveLine(){const t=this.calculateOutlinePoints(),i=this.calculateMoveLinePoints(t);return new g({points:i,closePath:!1,style:this.getOutlineStyle()})}calculateOutlinePoints(t){const i=v(),e=t||this.wallData.points;if(e.length<2)return e;const n=i.getApp().toFixedSize(this.wallConfig.outlineOffset),l=r(e[0],e[1],n);return[l[3],l[2],l[1],l[0]]}calculateMoveLinePoints(t){if(t.length<4)return[];const{MOVE:i}=m.BUTTON_INDICES;return[t[i],this.calculateMoveButtonPosition()]}calculateMoveButtonPosition(){const t=v(),{moveButtonOffset:i}=this.controlsConfig,e=this.calculateOutlinePoints();if(e.length<4)return{x:0,y:0};const{MOVE:n}=m.BUTTON_INDICES,l=e[n],o=e[(n+3)%4],s=e[(n+1)%4],a=t.getApp().toFixedSize(i);return h(l,s,o,a)}createControlButtons(){const t=this.calculateOutlinePoints();if(t.length<4)return;const{REMOVE:i,SCALE:e}=m.BUTTON_INDICES;this.removeButton=new f({iconAlias:"deleteIcon",backgroundColor:this.wallConfig.iconWrapperFillColor,onClick:this.handleRemove}),this.removeButton.position.set(t[i].x,t[i].y),this.scaleButton=new L({iconAlias:"scaleIcon",backgroundColor:this.wallConfig.iconWrapperFillColor,getTargetPoints:()=>this.calculateOutlinePoints(),getButtonIndex:()=>e,onScaleStart:this.handleScaleStart,onScaleMove:this.handleScaleMove,onScaleEnd:this.handleScaleEnd}),this.scaleButton.position.set(t[e].x,t[e].y);const n=this.calculateMoveButtonPosition();this.moveButton=new C({iconAlias:"moveIcon",backgroundColor:this.wallConfig.iconWrapperFillColor,onMoveStart:this.handleMoveStart,onMoveMove:this.handleMove,onMoveEnd:this.handleMoveEnd}),this.moveButton.position.set(n.x,n.y),this.controlButtons.addChild(this.removeButton),this.controlButtons.addChild(this.scaleButton),this.controlButtons.addChild(this.moveButton)}handleRemove=()=>{this.wallEvents.onRemove?.(this.wallData.id)};initializeOperation=()=>{this.initialWallPoints=this.wallData.points.map(t=>({...t}))};finalizeOperation=()=>{this.initialWallPoints=[],this.wallEvents.onUpdate?.(this.getWallData())};handleScaleStart=()=>{const t=v();this.initializeOperation(),t.getApp().requestRender("virtualwall-scale",!0)};handleScaleMove=t=>{0!==this.initialWallPoints.length&&this.applyScaleAndRotation(t)};handleScaleEnd=()=>{const t=v();this.finalizeOperation(),t.getApp().stopRender("virtualwall-scale")};handleMoveStart=()=>{const t=v();this.initializeOperation(),t.getApp().requestRender("virtualwall-move",!0)};handleMove=t=>{if(0===this.initialWallPoints.length)return;const i=this.parent.toLocal(t.global),e=this.getDragStartPosition()||this.moveButton?.getDragStartPosition();if(!e)return;const n=i.x-e.x,l=i.y-e.y;this.applyTranslation(n,l)};handleMoveEnd=()=>{const t=v();this.finalizeOperation(),t.getApp().stopRender("virtualwall-move")};applyScaleAndRotation(t){const i=v();if(this.initialWallPoints.length<2)return;const[e,s]=this.initialWallPoints,a=e,r=this.calculateOutlinePoints(this.initialWallPoints);if(r.length<4)return;const h=r[m.BUTTON_INDICES.SCALE],d=o(s,h),c={x:t.x-d.x,y:t.y-d.y},u=o(a,c),g=n(a,c),p=i.metersToPixels(this.wallConfig.minWidth);let w;if(g<p)if(0===g)w={x:a.x+p,y:a.y};else{const t=l(u);w={x:a.x+t.x*p,y:a.y+t.y*p}}else w=c;this.wallData.points=[a,w],this.updateAllComponents(),this.updateControlButtonsPosition()}applyTranslation(t,i){this.wallData.points=this.initialWallPoints.map(e=>({x:e.x+t,y:e.y+i})),this.updateAllComponents(),this.updateControlButtonsPosition()}updateAllComponents(){this.updateWallLine(),this.updateLengthText(),this.updateOutlineComponents()}updateWallLine(){const{points:t}=this.wallData;t.length<2||(this.wallLine instanceof p?this.wallLine.updatePoints(t[0],t[1]):this.redrawSolidLine(),this.setupWallLineHitArea())}updateLengthText(){if(!this.lengthText)return;const t=this.calculateWallLengthInMeters(),i=this.formatLengthText(t);this.lengthText.updateText(i),this.updateLengthTextPosition()}updateLengthTextPosition(){if(!this.lengthText)return;const t=this.calculateTextPosition();this.lengthText.position.set(t.x,t.y);const i=this.calculateTextRotation();this.lengthText.rotation=i}updateOutlineComponents(){const t=this.calculateOutlinePoints();this.outlineBorder.updatePoints(t);const i=this.calculateMoveLinePoints(t);this.moveLine.updatePoints(i)}updateControlButtonsPosition(){if(!this.removeButton||!this.scaleButton||!this.moveButton)return;const t=this.calculateOutlinePoints();if(t.length<4)return;const{REMOVE:i,SCALE:e}=m.BUTTON_INDICES,n=this.calculateMoveButtonPosition();this.removeButton.position.set(t[i].x,t[i].y),this.scaleButton.position.set(t[e].x,t[e].y),this.moveButton.position.set(n.x,n.y)}updateEditState(){const t=this.isEditingEnabled();this.controlButtons.visible=t,this.outlineBorder.visible=t,this.moveLine.visible=t,this.lengthText&&(this.lengthText.visible=t),t&&(this.updateOutlineComponents(),this.updateControlButtonsPosition(),this.updateLengthTextPosition()),this.updateWallLineStyle(),this.setupWallLineInteraction(),this.zIndex=t?1e3:0}createSolidLine(t,e,n,l){const o=v(),s=new i;s.eventMode="static";const a=o.getApp().toFixedSize(n);return s.moveTo(t.x,t.y),s.lineTo(e.x,e.y),s.stroke({color:l,width:a}),s}updateWallLineStyle(){const t=this.isEditingEnabled(),{editing:i,normal:e,lineWidth:n,lineColor:l}=this.wallConfig,o=t?i:e;this.wallLine instanceof p!==o.isDashed?(this.removeChild(this.wallLine),this.wallLine.destroy(),this.createWallLine(!1),this.addChild(this.wallLine)):this.wallLine instanceof p?this.wallLine.updateStyle({color:l.toString(),width:n,dashArray:o.dashArray}):this.redrawSolidLine()}registerScaleListener(){const{emitter:t}=v();t.on("antiScale",this.throttledUpdateOutline),t.on("antiScale",this.throttledHandleScaleChange)}redrawSolidLine(){const t=v();if(!this.wallLine||this.wallLine instanceof p)return;const{points:i}=this.wallData;if(i.length<2)return;const{lineWidth:e,lineColor:n}=this.wallConfig,l=t.getApp().toFixedSize(e);this.wallLine.clear(),this.wallLine.setStrokeStyle({color:n.toString(),width:l}).moveTo(i[0].x,i[0].y).lineTo(i[1].x,i[1].y).stroke()}handleScaleChange=()=>{this.redrawSolidLine(),this.setupWallLineHitArea()};setupWallLineInteraction(){if(!this.wallLine)return;this.setupWallLineHitArea();const t=this.isEditingEnabled();this.wallLineClickHandler?.destroy(),this.wallLineClickHandler=null,this.wallLine.off("pointerdown",this.handleWallLinePointerDown),t?this.wallLine.on("pointerdown",this.handleWallLinePointerDown):this.wallLineClickHandler=new u(this.wallLine,{onClick:()=>{this.wallEvents?.onClick?.(this.getWallData())},stopPropagation:!1})}setupDragEventListeners(){const{emitter:t}=v();t.on("gestureHijackPointerMove",this.handleDragPointerMove),t.on("gestureHijackPointerUp",this.handleDragPointerUp),t.on("gestureHijackCancel",this.handleDragCancel)}cleanupDragEventListeners(){const{emitter:t}=v();t.off("gestureHijackPointerMove",this.handleDragPointerMove),t.off("gestureHijackPointerUp",this.handleDragPointerUp),t.off("gestureHijackCancel",this.handleDragCancel)}handleWallLinePointerDown=t=>{this.isEditingEnabled()&&(t.stopPropagation(),this.startDragging(t))};startDragging(t){const i=v();this.isDragging=!0;const e=this.parent.toLocal(t.global);this.dragStartPosition={x:e.x,y:e.y},this.initializeOperation(),i.getApp().requestRender("virtualwall-drag",!0),v().emitter.emit("gestureHijackStart",t)}handleDragPointerMove=t=>{this.isDragging&&this.dragStartPosition&&this.handleMove(t)};handleDragPointerUp=()=>{const t=v();this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null,t.getApp().stopRender("virtualwall-drag"),this.finalizeOperation())};handleDragCancel=()=>{const t=v();this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null,t.getApp().stopRender("virtualwall-drag"),this.handleMoveEnd())};getDragStartPosition(){return this.dragStartPosition}setupWallLineHitArea(){const t=v();if(!this.wallLine)return;const{points:i}=this.wallData;if(i.length<2)return;const{hitAreaThickness:n}=this.wallConfig,l=t.getApp().toFixedSize(n),o=d(i[0],i[1],l);if(0===o.length)return;const s=new e(o);this.wallLine.hitArea=s}getWallData(){return{...this.wallData}}updateWallData(t){this.wallData={...t,points:this.validateAndCorrectWallLength(t.points)},this.updateAllComponents(),this.updateControlButtonsPosition()}updateEditingState(){this.updateEditState()}destroy(){v().emitter.off("antiScale",this.throttledUpdateOutline),v().emitter.off("antiScale",this.throttledHandleScaleChange),this.cleanupDragEventListeners(),this.isDragging&&(this.isDragging=!1,this.dragStartPosition=null),this.wallLine&&this.wallLine.off("pointerdown",this.handleWallLinePointerDown),this.wallLineClickHandler?.destroy(),this.wallLineClickHandler=null,this.wallLine?.destroy(),this.lengthText?.destroy(),this.outlineBorder?.destroy(),this.moveLine?.destroy(),this.controlButtons?.destroy(),this.removeButton?.destroy(),this.scaleButton?.destroy(),this.moveButton?.destroy(),this.removeButton=null,this.scaleButton=null,this.moveButton=null,super.destroy()}}export{m as VirtualWall};