@swf2es/player-hosts 0.0.0-stage → 0.1.1

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 (405) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +759 -0
  3. package/README.md +43 -2
  4. package/dist/indexeddb.d.ts +27 -0
  5. package/dist/indexeddb.d.ts.map +1 -0
  6. package/dist/indexeddb.js +170 -0
  7. package/dist/indexeddb.js.map +1 -0
  8. package/dist/node-worker.d.ts +2 -0
  9. package/dist/node-worker.d.ts.map +1 -0
  10. package/dist/node-worker.js +12 -0
  11. package/dist/node-worker.js.map +1 -0
  12. package/dist/node.d.ts +8 -0
  13. package/dist/node.d.ts.map +1 -0
  14. package/dist/node.js +43 -0
  15. package/dist/node.js.map +1 -0
  16. package/dist/precompiled.d.ts +31 -0
  17. package/dist/precompiled.d.ts.map +1 -0
  18. package/dist/precompiled.js +125 -0
  19. package/dist/precompiled.js.map +1 -0
  20. package/dist/stage3d.d.ts +13 -0
  21. package/dist/stage3d.d.ts.map +1 -0
  22. package/dist/stage3d.js +61 -0
  23. package/dist/stage3d.js.map +1 -0
  24. package/dist/thread/codegen/codegen.js +308 -0
  25. package/dist/thread/codegen/index.js +405 -0
  26. package/dist/thread/format/abc-names.js +126 -0
  27. package/dist/thread/format/actions.js +222 -0
  28. package/dist/thread/format/air-descriptor.js +63 -0
  29. package/dist/thread/format/api-versions.js +22 -0
  30. package/dist/thread/format/bitmap.js +199 -0
  31. package/dist/thread/format/button.js +60 -0
  32. package/dist/thread/format/compression.js +200 -0
  33. package/dist/thread/format/display.js +305 -0
  34. package/dist/thread/format/filters.js +136 -0
  35. package/dist/thread/format/font.js +168 -0
  36. package/dist/thread/format/index.js +26 -0
  37. package/dist/thread/format/pbj.js +484 -0
  38. package/dist/thread/format/shape.js +411 -0
  39. package/dist/thread/format/sound.js +91 -0
  40. package/dist/thread/format/swf.js +163 -0
  41. package/dist/thread/format/tags.js +58 -0
  42. package/dist/thread/format/text.js +135 -0
  43. package/dist/thread/format/zip.js +91 -0
  44. package/dist/thread/native/audio/binary.js +3 -0
  45. package/dist/thread/native/audio/index.js +72 -0
  46. package/dist/thread/native/base64.js +9 -0
  47. package/dist/thread/native/compress/binary.js +3 -0
  48. package/dist/thread/native/compress/index.js +145 -0
  49. package/dist/thread/native/instance.js +49 -0
  50. package/dist/thread/native/mp3/binary.js +3 -0
  51. package/dist/thread/native/mp3/index.js +48 -0
  52. package/dist/thread/native/render/binary.js +3 -0
  53. package/dist/thread/native/render/bitmap-kernel.js +591 -0
  54. package/dist/thread/native/render/draw-kernel.js +204 -0
  55. package/dist/thread/native/render/dxt-encoder.js +94 -0
  56. package/dist/thread/native/render/index.js +10 -0
  57. package/dist/thread/native/render/lines.js +122 -0
  58. package/dist/thread/native/render/module.js +26 -0
  59. package/dist/thread/native/render/pixel-ops.js +235 -0
  60. package/dist/thread/native/render/tessellator.js +250 -0
  61. package/dist/thread/player/avm1/amf.js +507 -0
  62. package/dist/thread/player/avm1/avm1.js +1304 -0
  63. package/dist/thread/player/avm1/bindings.js +214 -0
  64. package/dist/thread/player/avm1/classes.js +75 -0
  65. package/dist/thread/player/avm1/clips.js +229 -0
  66. package/dist/thread/player/avm1/compile.js +140 -0
  67. package/dist/thread/player/avm1/external.js +79 -0
  68. package/dist/thread/player/avm1/focus.js +278 -0
  69. package/dist/thread/player/avm1/globals/BitmapData.js +542 -0
  70. package/dist/thread/player/avm1/globals/Button.js +31 -0
  71. package/dist/thread/player/avm1/globals/Color.js +115 -0
  72. package/dist/thread/player/avm1/globals/ExternalInterface.js +310 -0
  73. package/dist/thread/player/avm1/globals/FileReference.js +217 -0
  74. package/dist/thread/player/avm1/globals/Key.js +60 -0
  75. package/dist/thread/player/avm1/globals/LoadVars.js +208 -0
  76. package/dist/thread/player/avm1/globals/LocalConnection.js +92 -0
  77. package/dist/thread/player/avm1/globals/MovieClip.js +1070 -0
  78. package/dist/thread/player/avm1/globals/MovieClipLoader.js +90 -0
  79. package/dist/thread/player/avm1/globals/NetConnection.js +261 -0
  80. package/dist/thread/player/avm1/globals/PrintJob.js +37 -0
  81. package/dist/thread/player/avm1/globals/Selection.js +62 -0
  82. package/dist/thread/player/avm1/globals/SharedObject.js +245 -0
  83. package/dist/thread/player/avm1/globals/Sound.js +238 -0
  84. package/dist/thread/player/avm1/globals/Stage.js +12 -0
  85. package/dist/thread/player/avm1/globals/StyleSheet.js +205 -0
  86. package/dist/thread/player/avm1/globals/TextField.js +396 -0
  87. package/dist/thread/player/avm1/globals/TextFormat.js +194 -0
  88. package/dist/thread/player/avm1/globals/TextSnapshot.js +88 -0
  89. package/dist/thread/player/avm1/globals/XML.js +396 -0
  90. package/dist/thread/player/avm1/globals/XMLNode.js +413 -0
  91. package/dist/thread/player/avm1/globals/XMLSocket.js +205 -0
  92. package/dist/thread/player/avm1/globals/drawing.js +202 -0
  93. package/dist/thread/player/avm1/globals/filters.js +635 -0
  94. package/dist/thread/player/avm1/globals/geom.js +600 -0
  95. package/dist/thread/player/avm1/input.js +483 -0
  96. package/dist/thread/player/avm1/keyboard.js +113 -0
  97. package/dist/thread/player/avm1/loads.js +352 -0
  98. package/dist/thread/player/avm1/net.js +219 -0
  99. package/dist/thread/player/avm1/paths.js +104 -0
  100. package/dist/thread/player/avm1/pointer.js +512 -0
  101. package/dist/thread/player/avm1/queue.js +303 -0
  102. package/dist/thread/player/avm1/sound.js +106 -0
  103. package/dist/thread/player/avm1/swf.js +141 -0
  104. package/dist/thread/player/avm1/timers.js +113 -0
  105. package/dist/thread/player/bitmap/bitmap.js +627 -0
  106. package/dist/thread/player/bitmap/draw.js +68 -0
  107. package/dist/thread/player/bitmap/dxt.js +11 -0
  108. package/dist/thread/player/bitmap/filters.js +656 -0
  109. package/dist/thread/player/bitmap/images.js +240 -0
  110. package/dist/thread/player/bitmap/kernel.js +65 -0
  111. package/dist/thread/player/bitmap/ops.js +1239 -0
  112. package/dist/thread/player/bitmap/pixel-bender.js +911 -0
  113. package/dist/thread/player/bitmap/png.js +139 -0
  114. package/dist/thread/player/bitmap/turbulence.js +89 -0
  115. package/dist/thread/player/clock.js +182 -0
  116. package/dist/thread/player/display/bitmapobject.js +25 -0
  117. package/dist/thread/player/display/bounds.js +520 -0
  118. package/dist/thread/player/display/buttonobject.js +305 -0
  119. package/dist/thread/player/display/color.js +40 -0
  120. package/dist/thread/player/display/container.js +150 -0
  121. package/dist/thread/player/display/display.js +14 -0
  122. package/dist/thread/player/display/displayobject.js +664 -0
  123. package/dist/thread/player/display/drawing.js +613 -0
  124. package/dist/thread/player/display/filters.js +285 -0
  125. package/dist/thread/player/display/geometry.js +189 -0
  126. package/dist/thread/player/display/gradients.js +117 -0
  127. package/dist/thread/player/display/graphicsdata.js +592 -0
  128. package/dist/thread/player/display/instantiate.js +71 -0
  129. package/dist/thread/player/display/matrix3d.js +373 -0
  130. package/dist/thread/player/display/morph.js +226 -0
  131. package/dist/thread/player/display/movieclip.js +680 -0
  132. package/dist/thread/player/display/perspective.js +193 -0
  133. package/dist/thread/player/display/scale9.js +236 -0
  134. package/dist/thread/player/display/shapeobject.js +131 -0
  135. package/dist/thread/player/display/shapes.js +407 -0
  136. package/dist/thread/player/display/textobjects.js +222 -0
  137. package/dist/thread/player/display/timeline.js +471 -0
  138. package/dist/thread/player/display/value-lists.js +40 -0
  139. package/dist/thread/player/display/videoobject.js +6 -0
  140. package/dist/thread/player/display/walk.js +127 -0
  141. package/dist/thread/player/files.js +334 -0
  142. package/dist/thread/player/hosts.js +207 -0
  143. package/dist/thread/player/input/avm1.js +82 -0
  144. package/dist/thread/player/input/context-menu.js +63 -0
  145. package/dist/thread/player/input/keyboard.js +458 -0
  146. package/dist/thread/player/input/pointer.js +863 -0
  147. package/dist/thread/player/input/text-editor.js +319 -0
  148. package/dist/thread/player/input/touch.js +209 -0
  149. package/dist/thread/player/localconnection.js +90 -0
  150. package/dist/thread/player/media/audio.js +376 -0
  151. package/dist/thread/player/media/dynamic-sound.js +90 -0
  152. package/dist/thread/player/media/extract.js +135 -0
  153. package/dist/thread/player/media/mp3.js +152 -0
  154. package/dist/thread/player/media/sounds.js +507 -0
  155. package/dist/thread/player/media/streaming-audio.js +133 -0
  156. package/dist/thread/player/player.js +616 -0
  157. package/dist/thread/player/playerglobal/air/net/WebSocket.js +250 -0
  158. package/dist/thread/player/playerglobal/air-library.js +8 -0
  159. package/dist/thread/player/playerglobal/flash/accessibility/Accessibility.js +21 -0
  160. package/dist/thread/player/playerglobal/flash/crypto/generateRandomBytes.js +32 -0
  161. package/dist/thread/player/playerglobal/flash/data/EncryptedLocalStore.js +61 -0
  162. package/dist/thread/player/playerglobal/flash/desktop/Clipboard.js +173 -0
  163. package/dist/thread/player/playerglobal/flash/desktop/NativeApplication.js +179 -0
  164. package/dist/thread/player/playerglobal/flash/display/AVM1Movie.js +19 -0
  165. package/dist/thread/player/playerglobal/flash/display/Bitmap.js +58 -0
  166. package/dist/thread/player/playerglobal/flash/display/BitmapData.js +633 -0
  167. package/dist/thread/player/playerglobal/flash/display/DisplayObject.js +614 -0
  168. package/dist/thread/player/playerglobal/flash/display/DisplayObjectContainer.js +224 -0
  169. package/dist/thread/player/playerglobal/flash/display/Graphics.js +345 -0
  170. package/dist/thread/player/playerglobal/flash/display/InteractiveObject.js +87 -0
  171. package/dist/thread/player/playerglobal/flash/display/Loader.js +79 -0
  172. package/dist/thread/player/playerglobal/flash/display/LoaderInfo.js +128 -0
  173. package/dist/thread/player/playerglobal/flash/display/MovieClip.js +194 -0
  174. package/dist/thread/player/playerglobal/flash/display/NativeWindow.js +245 -0
  175. package/dist/thread/player/playerglobal/flash/display/Shader.js +26 -0
  176. package/dist/thread/player/playerglobal/flash/display/ShaderData.js +85 -0
  177. package/dist/thread/player/playerglobal/flash/display/ShaderInput.js +64 -0
  178. package/dist/thread/player/playerglobal/flash/display/ShaderJob.js +181 -0
  179. package/dist/thread/player/playerglobal/flash/display/ShaderParameter.js +23 -0
  180. package/dist/thread/player/playerglobal/flash/display/Shape.js +13 -0
  181. package/dist/thread/player/playerglobal/flash/display/SimpleButton.js +103 -0
  182. package/dist/thread/player/playerglobal/flash/display/Sprite.js +84 -0
  183. package/dist/thread/player/playerglobal/flash/display/Stage.js +231 -0
  184. package/dist/thread/player/playerglobal/flash/display/Stage3D.js +54 -0
  185. package/dist/thread/player/playerglobal/flash/display/shaders.js +228 -0
  186. package/dist/thread/player/playerglobal/flash/events/Event.js +58 -0
  187. package/dist/thread/player/playerglobal/flash/events/EventDispatcher.js +103 -0
  188. package/dist/thread/player/playerglobal/flash/events/GestureEvent.js +34 -0
  189. package/dist/thread/player/playerglobal/flash/events/HTTPStatusEvent.js +8 -0
  190. package/dist/thread/player/playerglobal/flash/events/KeyboardEvent.js +51 -0
  191. package/dist/thread/player/playerglobal/flash/events/MouseEvent.js +59 -0
  192. package/dist/thread/player/playerglobal/flash/events/PressAndTapGestureEvent.js +30 -0
  193. package/dist/thread/player/playerglobal/flash/events/TimerEvent.js +16 -0
  194. package/dist/thread/player/playerglobal/flash/events/TouchEvent.js +45 -0
  195. package/dist/thread/player/playerglobal/flash/external/ExternalInterface.js +73 -0
  196. package/dist/thread/player/playerglobal/flash/filesystem/File.js +340 -0
  197. package/dist/thread/player/playerglobal/flash/filesystem/FileStream.js +453 -0
  198. package/dist/thread/player/playerglobal/flash/filesystem/paths.js +156 -0
  199. package/dist/thread/player/playerglobal/flash/filesystem/writes.js +143 -0
  200. package/dist/thread/player/playerglobal/flash/filters/BevelFilter.js +4 -0
  201. package/dist/thread/player/playerglobal/flash/filters/BitmapFilter.js +205 -0
  202. package/dist/thread/player/playerglobal/flash/filters/BlurFilter.js +4 -0
  203. package/dist/thread/player/playerglobal/flash/filters/ColorMatrixFilter.js +11 -0
  204. package/dist/thread/player/playerglobal/flash/filters/ConvolutionFilter.js +26 -0
  205. package/dist/thread/player/playerglobal/flash/filters/DisplacementMapFilter.js +51 -0
  206. package/dist/thread/player/playerglobal/flash/filters/DropShadowFilter.js +4 -0
  207. package/dist/thread/player/playerglobal/flash/filters/GlowFilter.js +4 -0
  208. package/dist/thread/player/playerglobal/flash/filters/GradientBevelFilter.js +4 -0
  209. package/dist/thread/player/playerglobal/flash/filters/GradientGlowFilter.js +4 -0
  210. package/dist/thread/player/playerglobal/flash/filters/ShaderFilter.js +53 -0
  211. package/dist/thread/player/playerglobal/flash/geom/Matrix3D.js +361 -0
  212. package/dist/thread/player/playerglobal/flash/geom/PerspectiveProjection.js +122 -0
  213. package/dist/thread/player/playerglobal/flash/geom/Transform.js +245 -0
  214. package/dist/thread/player/playerglobal/flash/geom/Utils3D.js +85 -0
  215. package/dist/thread/player/playerglobal/flash/globalization/Collator.js +149 -0
  216. package/dist/thread/player/playerglobal/flash/globalization/CurrencyFormatter.js +272 -0
  217. package/dist/thread/player/playerglobal/flash/globalization/CurrencyParseResult.js +21 -0
  218. package/dist/thread/player/playerglobal/flash/globalization/DateTimeFormatter.js +463 -0
  219. package/dist/thread/player/playerglobal/flash/globalization/LocaleID.js +144 -0
  220. package/dist/thread/player/playerglobal/flash/globalization/NumberFormatter.js +444 -0
  221. package/dist/thread/player/playerglobal/flash/globalization/NumberParseResult.js +22 -0
  222. package/dist/thread/player/playerglobal/flash/globalization/StringTools.js +59 -0
  223. package/dist/thread/player/playerglobal/flash/globalization/locale.js +190 -0
  224. package/dist/thread/player/playerglobal/flash/media/Camera.js +89 -0
  225. package/dist/thread/player/playerglobal/flash/media/Microphone.js +126 -0
  226. package/dist/thread/player/playerglobal/flash/media/Sound.js +543 -0
  227. package/dist/thread/player/playerglobal/flash/media/SoundMixer.js +74 -0
  228. package/dist/thread/player/playerglobal/flash/media/SoundTransform.js +40 -0
  229. package/dist/thread/player/playerglobal/flash/media/Video.js +43 -0
  230. package/dist/thread/player/playerglobal/flash/net/FileFilter.js +27 -0
  231. package/dist/thread/player/playerglobal/flash/net/FileReference.js +197 -0
  232. package/dist/thread/player/playerglobal/flash/net/LocalConnection.js +167 -0
  233. package/dist/thread/player/playerglobal/flash/net/NetConnection.js +155 -0
  234. package/dist/thread/player/playerglobal/flash/net/SharedObject.js +299 -0
  235. package/dist/thread/player/playerglobal/flash/net/Socket.js +282 -0
  236. package/dist/thread/player/playerglobal/flash/net/URLRequest.js +93 -0
  237. package/dist/thread/player/playerglobal/flash/net/URLStream.js +146 -0
  238. package/dist/thread/player/playerglobal/flash/net/XMLSocket.js +14 -0
  239. package/dist/thread/player/playerglobal/flash/net/local-modern.js +142 -0
  240. package/dist/thread/player/playerglobal/flash/net/local-values.js +217 -0
  241. package/dist/thread/player/playerglobal/flash/net/navigateToURL.js +29 -0
  242. package/dist/thread/player/playerglobal/flash/profiler/Telemetry.js +25 -0
  243. package/dist/thread/player/playerglobal/flash/sensors/Accelerometer.js +12 -0
  244. package/dist/thread/player/playerglobal/flash/system/ApplicationDomain.js +69 -0
  245. package/dist/thread/player/playerglobal/flash/system/Capabilities.js +163 -0
  246. package/dist/thread/player/playerglobal/flash/system/FSCommandHost.js +17 -0
  247. package/dist/thread/player/playerglobal/flash/system/Security.js +46 -0
  248. package/dist/thread/player/playerglobal/flash/system/SecurityDomain.js +21 -0
  249. package/dist/thread/player/playerglobal/flash/system/System.js +73 -0
  250. package/dist/thread/player/playerglobal/flash/system/Worker.js +112 -0
  251. package/dist/thread/player/playerglobal/flash/text/Font.js +95 -0
  252. package/dist/thread/player/playerglobal/flash/text/StaticText.js +16 -0
  253. package/dist/thread/player/playerglobal/flash/text/StyleSheet.js +65 -0
  254. package/dist/thread/player/playerglobal/flash/text/TextField.js +707 -0
  255. package/dist/thread/player/playerglobal/flash/text/TextRenderer.js +77 -0
  256. package/dist/thread/player/playerglobal/flash/text/engine/FontDescription.js +141 -0
  257. package/dist/thread/player/playerglobal/flash/text/engine/TabStop.js +46 -0
  258. package/dist/thread/player/playerglobal/flash/trace/Trace.js +17 -0
  259. package/dist/thread/player/playerglobal/flash/ui/ContextMenu.js +17 -0
  260. package/dist/thread/player/playerglobal/flash/ui/GameInput.js +19 -0
  261. package/dist/thread/player/playerglobal/flash/ui/Keyboard.js +27 -0
  262. package/dist/thread/player/playerglobal/flash/ui/Mouse.js +127 -0
  263. package/dist/thread/player/playerglobal/flash/ui/Multitouch.js +46 -0
  264. package/dist/thread/player/playerglobal/flash/utils/ByteArray.js +155 -0
  265. package/dist/thread/player/playerglobal/flash/utils/Timer.js +25 -0
  266. package/dist/thread/player/playerglobal/flash/xml/XMLDocument.js +74 -0
  267. package/dist/thread/player/playerglobal/index.js +224 -0
  268. package/dist/thread/player/playerglobal/libraries.js +10 -0
  269. package/dist/thread/player/playerglobal/playerglobal-library.js +22 -0
  270. package/dist/thread/player/playerglobal/toplevel.js +122 -0
  271. package/dist/thread/player/scripting/clipboard.js +146 -0
  272. package/dist/thread/player/scripting/code.js +900 -0
  273. package/dist/thread/player/scripting/evaluate.js +144 -0
  274. package/dist/thread/player/scripting/events.js +172 -0
  275. package/dist/thread/player/scripting/handover.js +182 -0
  276. package/dist/thread/player/scripting/lazy.js +38 -0
  277. package/dist/thread/player/scripting/lifecycle.js +272 -0
  278. package/dist/thread/player/scripting/loads.js +860 -0
  279. package/dist/thread/player/scripting/sha256.js +95 -0
  280. package/dist/thread/player/scripting/symbols.js +348 -0
  281. package/dist/thread/player/scripting/timers.js +434 -0
  282. package/dist/thread/player/scripting/workers.js +923 -0
  283. package/dist/thread/player/scripting.js +1018 -0
  284. package/dist/thread/player/stage.js +4 -0
  285. package/dist/thread/player/text/csm.js +113 -0
  286. package/dist/thread/player/text/css.js +167 -0
  287. package/dist/thread/player/text/fonts.js +97 -0
  288. package/dist/thread/player/text/layout.js +393 -0
  289. package/dist/thread/player/text/static.js +109 -0
  290. package/dist/thread/player/text/text.js +431 -0
  291. package/dist/thread/player/workers/thread.js +159 -0
  292. package/dist/thread/player/workers/wire.js +198 -0
  293. package/dist/thread/player-hosts/web-worker.js +19 -0
  294. package/dist/thread/runtime/avm1/activation.js +89 -0
  295. package/dist/thread/runtime/avm1/case.js +249 -0
  296. package/dist/thread/runtime/avm1/clips.js +334 -0
  297. package/dist/thread/runtime/avm1/control.js +280 -0
  298. package/dist/thread/runtime/avm1/errors.js +50 -0
  299. package/dist/thread/runtime/avm1/functions.js +249 -0
  300. package/dist/thread/runtime/avm1/globals/array.js +549 -0
  301. package/dist/thread/runtime/avm1/globals/broadcaster.js +131 -0
  302. package/dist/thread/runtime/avm1/globals/date.js +436 -0
  303. package/dist/thread/runtime/avm1/globals/global.js +344 -0
  304. package/dist/thread/runtime/avm1/globals/math.js +139 -0
  305. package/dist/thread/runtime/avm1/globals/number.js +93 -0
  306. package/dist/thread/runtime/avm1/globals/string.js +201 -0
  307. package/dist/thread/runtime/avm1/globals/timers.js +129 -0
  308. package/dist/thread/runtime/avm1/host.js +5 -0
  309. package/dist/thread/runtime/avm1/index.js +14 -0
  310. package/dist/thread/runtime/avm1/inheritance.js +132 -0
  311. package/dist/thread/runtime/avm1/numbers.js +298 -0
  312. package/dist/thread/runtime/avm1/objects.js +896 -0
  313. package/dist/thread/runtime/avm1/operators.js +170 -0
  314. package/dist/thread/runtime/avm1/realm.js +529 -0
  315. package/dist/thread/runtime/avm1/runtime.js +882 -0
  316. package/dist/thread/runtime/avm1/scope.js +385 -0
  317. package/dist/thread/runtime/avm1/urls.js +180 -0
  318. package/dist/thread/runtime/avm1/values.js +97 -0
  319. package/dist/thread/runtime/avm2/amf-classes.js +66 -0
  320. package/dist/thread/runtime/avm2/amf.js +801 -0
  321. package/dist/thread/runtime/avm2/array-conversion.js +100 -0
  322. package/dist/thread/runtime/avm2/builtin-library.js +21 -0
  323. package/dist/thread/runtime/avm2/cache-fill.js +86 -0
  324. package/dist/thread/runtime/avm2/classes.js +211 -0
  325. package/dist/thread/runtime/avm2/definitions.js +69 -0
  326. package/dist/thread/runtime/avm2/descriptors.js +5 -0
  327. package/dist/thread/runtime/avm2/dictionary-keys.js +295 -0
  328. package/dist/thread/runtime/avm2/domain-memory.js +75 -0
  329. package/dist/thread/runtime/avm2/domain.js +280 -0
  330. package/dist/thread/runtime/avm2/dynamic-properties.js +182 -0
  331. package/dist/thread/runtime/avm2/enumeration.js +393 -0
  332. package/dist/thread/runtime/avm2/errors.js +45 -0
  333. package/dist/thread/runtime/avm2/float-library.js +66 -0
  334. package/dist/thread/runtime/avm2/float.js +26 -0
  335. package/dist/thread/runtime/avm2/hooks.js +19 -0
  336. package/dist/thread/runtime/avm2/index.js +38 -0
  337. package/dist/thread/runtime/avm2/messages.js +177 -0
  338. package/dist/thread/runtime/avm2/method-factories.js +95 -0
  339. package/dist/thread/runtime/avm2/modules.js +105 -0
  340. package/dist/thread/runtime/avm2/names.js +248 -0
  341. package/dist/thread/runtime/avm2/natives/aliases.js +47 -0
  342. package/dist/thread/runtime/avm2/natives/array.js +390 -0
  343. package/dist/thread/runtime/avm2/natives/bytearray.js +1227 -0
  344. package/dist/thread/runtime/avm2/natives/case.js +88 -0
  345. package/dist/thread/runtime/avm2/natives/concurrent.js +199 -0
  346. package/dist/thread/runtime/avm2/natives/date.js +581 -0
  347. package/dist/thread/runtime/avm2/natives/define.js +130 -0
  348. package/dist/thread/runtime/avm2/natives/describe.js +351 -0
  349. package/dist/thread/runtime/avm2/natives/dictionary.js +12 -0
  350. package/dist/thread/runtime/avm2/natives/float-vector.js +81 -0
  351. package/dist/thread/runtime/avm2/natives/float.js +96 -0
  352. package/dist/thread/runtime/avm2/natives/index.js +64 -0
  353. package/dist/thread/runtime/avm2/natives/json.js +514 -0
  354. package/dist/thread/runtime/avm2/natives/number.js +162 -0
  355. package/dist/thread/runtime/avm2/natives/object.js +237 -0
  356. package/dist/thread/runtime/avm2/natives/proxy.js +75 -0
  357. package/dist/thread/runtime/avm2/natives/regexp.js +485 -0
  358. package/dist/thread/runtime/avm2/natives/shell-workers.js +404 -0
  359. package/dist/thread/runtime/avm2/natives/shell.js +557 -0
  360. package/dist/thread/runtime/avm2/natives/sort.js +377 -0
  361. package/dist/thread/runtime/avm2/natives/string.js +132 -0
  362. package/dist/thread/runtime/avm2/natives/sync.js +821 -0
  363. package/dist/thread/runtime/avm2/natives/toplevel.js +139 -0
  364. package/dist/thread/runtime/avm2/natives/vector-elements.js +46 -0
  365. package/dist/thread/runtime/avm2/natives/vector.js +406 -0
  366. package/dist/thread/runtime/avm2/natives/xml/access.js +633 -0
  367. package/dist/thread/runtime/avm2/natives/xml/build.js +291 -0
  368. package/dist/thread/runtime/avm2/natives/xml/chars.js +112 -0
  369. package/dist/thread/runtime/avm2/natives/xml/escape.js +38 -0
  370. package/dist/thread/runtime/avm2/natives/xml/names.js +204 -0
  371. package/dist/thread/runtime/avm2/natives/xml/node.js +272 -0
  372. package/dist/thread/runtime/avm2/natives/xml/operators.js +69 -0
  373. package/dist/thread/runtime/avm2/natives/xml/parser.js +356 -0
  374. package/dist/thread/runtime/avm2/natives/xml/strings.js +191 -0
  375. package/dist/thread/runtime/avm2/natives/xml/values.js +122 -0
  376. package/dist/thread/runtime/avm2/natives/xml/xml.js +645 -0
  377. package/dist/thread/runtime/avm2/number-strings.js +110 -0
  378. package/dist/thread/runtime/avm2/numbers.js +558 -0
  379. package/dist/thread/runtime/avm2/options.js +16 -0
  380. package/dist/thread/runtime/avm2/player-messages.js +550 -0
  381. package/dist/thread/runtime/avm2/property-cache.js +135 -0
  382. package/dist/thread/runtime/avm2/runtime.js +2644 -0
  383. package/dist/thread/runtime/avm2/traits.js +509 -0
  384. package/dist/thread/runtime/index.js +7 -0
  385. package/dist/web-worker.d.ts +2 -0
  386. package/dist/web-worker.d.ts.map +1 -0
  387. package/dist/web-worker.js +20 -0
  388. package/dist/web-worker.js.map +1 -0
  389. package/dist/websocket.d.ts +4 -0
  390. package/dist/websocket.d.ts.map +1 -0
  391. package/dist/websocket.js +27 -0
  392. package/dist/websocket.js.map +1 -0
  393. package/dist/workers.d.ts +35 -0
  394. package/dist/workers.d.ts.map +1 -0
  395. package/dist/workers.js +171 -0
  396. package/dist/workers.js.map +1 -0
  397. package/package.json +62 -3
  398. package/src/indexeddb.ts +227 -0
  399. package/src/node-worker.ts +13 -0
  400. package/src/node.ts +49 -0
  401. package/src/precompiled.ts +166 -0
  402. package/src/stage3d.ts +76 -0
  403. package/src/web-worker.ts +24 -0
  404. package/src/websocket.ts +32 -0
  405. package/src/workers.ts +255 -0
@@ -0,0 +1,614 @@
1
+ import { avm2 } from "../../../../runtime/index.js";
2
+ import { bounds, boundsIn, hitsObject, hitsPoint, placedRect, toStage, } from "../../../display/bounds.js";
3
+ import { ButtonObject, CONTENT, MovieClip, rootOf, scriptWork, TextObject, TRANSFORM, } from "../../../display/display.js";
4
+ import { copyFilter } from "../../../display/filters.js";
5
+ import { apply, invert, isProjective } from "../../../display/geometry.js";
6
+ import { stagePoint3D } from "../../../display/perspective.js";
7
+ import { gridInside, sliceBounds } from "../../../display/scale9.js";
8
+ import { filterClassName, filterKindOf, recordOf } from "../filters/BitmapFilter.js";
9
+ import { copyMap } from "../filters/DisplacementMapFilter.js";
10
+ import { colorOf, matrixOf } from "../geom/Transform.js";
11
+ import { kernelOfShader, shaderUse } from "./shaders.js";
12
+ const MATRIX_NAME = avm2.qname(avm2.publicNs, "matrix");
13
+ const COLOR_NAME = avm2.qname(avm2.publicNs, "colorTransform");
14
+ const name = (n) => avm2.qname(avm2.publicNs, n);
15
+ /** The blend modes Flash accepts; another is ArgumentError #2008. */
16
+ const BLEND_MODES = new Set([
17
+ "normal",
18
+ "layer",
19
+ "multiply",
20
+ "screen",
21
+ "lighten",
22
+ "darken",
23
+ "difference",
24
+ "add",
25
+ "subtract",
26
+ "invert",
27
+ "alpha",
28
+ "erase",
29
+ "overlay",
30
+ "hardlight",
31
+ "shader",
32
+ ]);
33
+ /** The nearest whole number, a half to the even one. */
34
+ function halfEven(v) {
35
+ const r = Math.round(v);
36
+ return r - v === 0.5 && r % 2 !== 0 ? r - 1 : r;
37
+ }
38
+ function point(s, x, y) {
39
+ return s.rt.construct(s.rt.classNamed("flash.geom::Point"), x, y);
40
+ }
41
+ /** A point of the stage's in `d`'s plane: through a 3D object's in perspective, NaN where the matrices flatten it. */
42
+ function stageToLocal(s, d, p) {
43
+ const x = Number(s.rt.getProperty(p, name("x")));
44
+ const y = Number(s.rt.getProperty(p, name("y")));
45
+ const up = toStage(d, s.stage);
46
+ const m = invert(up);
47
+ if (m) {
48
+ return apply(m, x, y);
49
+ }
50
+ // Divided by the zero determinant all the same: infinities where a point is off the line.
51
+ const dx = x - up.tx;
52
+ const dy = y - up.ty;
53
+ return [(up.d * dx - up.c * dy) / 0, (up.a * dy - up.b * dx) / 0];
54
+ }
55
+ /** Flash keeps positions in twips, so what it reports of bounds is a multiple of a twentieth. */
56
+ const twips = (v) => Math.round(v * 20) / 20;
57
+ /** The object's width and height in its parent's space, or what that would be for one with no parent: its bounds through its own matrix. */
58
+ function size(d) {
59
+ const r = placedRect(d, bounds(d, true) ?? { xMin: 0, yMin: 0, xMax: 0, yMax: 0 });
60
+ return [twips(r.xMax - r.xMin), twips(r.yMax - r.yMin)];
61
+ }
62
+ function rectangle(s, r) {
63
+ return s.rt.construct(s.rt.classNamed("flash.geom::Rectangle"), twips(r.xMin), twips(r.yMin), twips(r.xMax - r.xMin), twips(r.yMax - r.yMin));
64
+ }
65
+ /**
66
+ * A text field's x and y are its box's corner, not its origin: its
67
+ * DefineEditText bounds' corner, scaled, added to where it is placed, as
68
+ * Flash and Ruffle read and set them. A box authored inset from its origin
69
+ * so moves to where a script puts it. The offset is whole twips, cut
70
+ * toward zero as Ruffle's is, and none for a NaN scale.
71
+ */
72
+ function fieldOffset(d) {
73
+ if (!(d instanceof TextObject)) {
74
+ return [0, 0];
75
+ }
76
+ const twips = (v) => Math.trunc(v) || 0;
77
+ return [twips(d.scaleX * d.left * 20), twips(d.scaleY * d.top * 20)];
78
+ }
79
+ /**
80
+ * `at` in pixels moved by `offset` in twips, summed in twips: Flash's
81
+ * positions are whole twips, without a pixel sum's noise.
82
+ */
83
+ /**
84
+ * A position as Flash keeps it, in whole twips: truncated toward zero, and
85
+ * past int's range int's least, as x86 converts it (the bitmap-sampling
86
+ * case's traces, from adl). NaN is 0.
87
+ */
88
+ function wholeTwips(v) {
89
+ const twips = Math.trunc((v || 0) * 20);
90
+ return (twips >= -0x80000000 && twips <= 0x7fffffff ? twips : -0x80000000) / 20;
91
+ }
92
+ function withOffset(at, offset) {
93
+ return offset === 0 ? at : (at * 20 + offset) / 20;
94
+ }
95
+ /** The display object `o` is the face of. */
96
+ export function displayOf(o) {
97
+ return o.$display;
98
+ }
99
+ export function displayObjectHooks(s) {
100
+ return {
101
+ "flash.display::DisplayObject": {
102
+ // The one the player has pending, when it constructs a timeline child's
103
+ // class; else one for the class, for a `new` from a script.
104
+ create: (traits) => {
105
+ const o = Object.create(traits.proto);
106
+ const made = s.pending === null;
107
+ const display = s.pending ?? s.symbols.displayFor(traits);
108
+ s.pending = null;
109
+ // Flash names each display object without a name of its own as it
110
+ // is made, instance1, instance2, ..., the stage aside.
111
+ if (display.name === "" && display !== s.stage) {
112
+ display.name = `instance${++s.instances}`;
113
+ }
114
+ o.$display = display;
115
+ display.object = o;
116
+ // A clip alive now has its frame scripts to run (Scripting.runFrameScripts).
117
+ scriptWork.changes++;
118
+ // Only a MovieClip plays its timeline: a sprite bound to a class that
119
+ // extends Sprite alone stays on its first frame, as fl.controls'
120
+ // components do, whose second frame holds their skins. An AVM1
121
+ // movie's root, an AVM1Movie, is no Sprite and plays.
122
+ if (display instanceof MovieClip && spriteOnly(traits)) {
123
+ display.playing = false;
124
+ }
125
+ if (made) {
126
+ s.lifecycle.made(display);
127
+ }
128
+ return o;
129
+ },
130
+ },
131
+ };
132
+ }
133
+ /** Whether `traits` is Sprite's or a subclass's that does not extend MovieClip. */
134
+ function spriteOnly(traits) {
135
+ for (let t = traits; t; t = t.base) {
136
+ if (t.name === "flash.display::MovieClip") {
137
+ return false;
138
+ }
139
+ if (t.name === "flash.display::Sprite") {
140
+ return true;
141
+ }
142
+ }
143
+ return false;
144
+ }
145
+ /** Move a display object, by a copy of its matrix, and have it drawn again. */
146
+ function transform(d, change) {
147
+ const m = { ...d.matrix };
148
+ change(m);
149
+ d.matrix = m;
150
+ d.touch();
151
+ d.invalidate(TRANSFORM);
152
+ }
153
+ const IDENTITY_COLOR = { rMul: 1, gMul: 1, bMul: 1, aMul: 1, rAdd: 0, gAdd: 0, bAdd: 0, aAdd: 0 };
154
+ /** Whether `d` is on the display list: under the stage. */
155
+ function onStage(s, d) {
156
+ for (let o = d; o; o = o.parent) {
157
+ if (o === s.stage) {
158
+ return true;
159
+ }
160
+ }
161
+ return false;
162
+ }
163
+ export function displayObjectNatives(s) {
164
+ const natives = {};
165
+ // How the natives are written: each runs with the AS3 object as `this`,
166
+ // whose $display is the player's display object (registerNativeClass).
167
+ class DisplayObjectNatives {
168
+ get name() {
169
+ return this.$display.name;
170
+ }
171
+ /** Flash refuses a timeline-placed object's name, so a script's touch there never marks it (the `replaces` case). */
172
+ set name(v) {
173
+ if (v === null || v === undefined) {
174
+ throw s.rt.error("TypeError", 2007, "name");
175
+ }
176
+ if (this.$display.placeFrame > 0) {
177
+ throw s.rt.error("flash.errors::IllegalOperationError", 2078);
178
+ }
179
+ this.$display.name = v;
180
+ }
181
+ get visible() {
182
+ return this.$display.visible;
183
+ }
184
+ // Visible, mask and cacheAsBitmap are no touch in Flash, whatever they are set to: the
185
+ // timeline still puts another shape or text in the object's place (`scripted-touch`).
186
+ set visible(v) {
187
+ this.$display.visible = !!v;
188
+ this.$display.invalidate(TRANSFORM);
189
+ if (!v) {
190
+ this.$display.focusDrop?.(this.$display);
191
+ }
192
+ }
193
+ get x() {
194
+ return withOffset(this.$display.matrix.tx, fieldOffset(this.$display)[0]);
195
+ }
196
+ // A NaN position is 0, as Flash has it (the corpus's `displayobject_invalid_floats`), and
197
+ // any other in whole twips.
198
+ set x(v) {
199
+ const offset = fieldOffset(this.$display)[0];
200
+ if (this.$display.space) {
201
+ this.$display.touch();
202
+ this.$display.set3D("x", withOffset(Number(v) || 0, -offset));
203
+ return;
204
+ }
205
+ transform(this.$display, (m) => {
206
+ m.tx = withOffset(wholeTwips(Number(v)), -offset);
207
+ });
208
+ }
209
+ get y() {
210
+ return withOffset(this.$display.matrix.ty, fieldOffset(this.$display)[1]);
211
+ }
212
+ set y(v) {
213
+ const offset = fieldOffset(this.$display)[1];
214
+ if (this.$display.space) {
215
+ this.$display.touch();
216
+ this.$display.set3D("y", withOffset(Number(v) || 0, -offset));
217
+ return;
218
+ }
219
+ transform(this.$display, (m) => {
220
+ m.ty = withOffset(wholeTwips(Number(v)), -offset);
221
+ });
222
+ }
223
+ // The scales and the rotation are the display object's own, kept apart from the matrix as Flash keeps them.
224
+ get scaleX() {
225
+ return this.$display.scaleX;
226
+ }
227
+ set scaleX(v) {
228
+ this.$display.touch();
229
+ this.$display.setScaleX(Number(v));
230
+ }
231
+ get scaleY() {
232
+ return this.$display.scaleY;
233
+ }
234
+ set scaleY(v) {
235
+ this.$display.touch();
236
+ this.$display.setScaleY(Number(v));
237
+ }
238
+ get rotation() {
239
+ return this.$display.rotation;
240
+ }
241
+ set rotation(v) {
242
+ this.$display.touch();
243
+ this.$display.setRotation(Number(v));
244
+ }
245
+ // Any of these set puts the object in 3D, even to what it was (the corpus's `displayobject_z`).
246
+ get z() {
247
+ return this.$display.space?.z ?? 0;
248
+ }
249
+ set z(v) {
250
+ this.$display.touch();
251
+ this.$display.set3D("z", Number(v));
252
+ }
253
+ get rotationX() {
254
+ return this.$display.space?.rotationX ?? 0;
255
+ }
256
+ set rotationX(v) {
257
+ this.$display.touch();
258
+ this.$display.set3D("rotationX", Number(v));
259
+ }
260
+ get rotationY() {
261
+ return this.$display.space?.rotationY ?? 0;
262
+ }
263
+ set rotationY(v) {
264
+ this.$display.touch();
265
+ this.$display.set3D("rotationY", Number(v));
266
+ }
267
+ // 0 in 2D, whatever the rotation, as Flash reads it.
268
+ get rotationZ() {
269
+ return this.$display.space ? this.$display.rotation : 0;
270
+ }
271
+ set rotationZ(v) {
272
+ this.$display.touch();
273
+ this.$display.set3D("rotationZ", Number(v));
274
+ }
275
+ get scaleZ() {
276
+ return this.$display.space?.scaleZ ?? 1;
277
+ }
278
+ set scaleZ(v) {
279
+ this.$display.touch();
280
+ this.$display.set3D("scaleZ", Number(v));
281
+ }
282
+ get alpha() {
283
+ return this.$display.colorTransform?.aMul ?? 1;
284
+ }
285
+ set alpha(v) {
286
+ const d = this.$display;
287
+ d.touch();
288
+ d.colorTransform = { ...(d.colorTransform ?? IDENTITY_COLOR), aMul: Number(v) };
289
+ d.invalidate(TRANSFORM);
290
+ }
291
+ // A button's state has none: the button is no container to a script.
292
+ get parent() {
293
+ const parent = this.$display.parent;
294
+ return parent instanceof ButtonObject ? null : (parent?.object ?? null);
295
+ }
296
+ get stage() {
297
+ return onStage(s, this.$display) ? (s.stage?.object ?? null) : null;
298
+ }
299
+ /** The root of the SWF this is in, main or loaded; null off the display list, as Flash has it. */
300
+ get root() {
301
+ return rootOf(this.$display)?.object ?? null;
302
+ }
303
+ /** The LoaderInfo of the SWF this is in; null off the display list. */
304
+ // The stage's is the main SWF's, as Flash's.
305
+ get loaderInfo() {
306
+ if (this.$display === s.stage) {
307
+ return s.root?.loaderInfo ?? null;
308
+ }
309
+ return rootOf(this.$display)?.loaderInfo ?? null;
310
+ }
311
+ get mouseX() {
312
+ const m = invert(toStage(this.$display, s.stage));
313
+ return m ? apply(m, s.mouseStageX, s.mouseStageY)[0] : 0;
314
+ }
315
+ get mouseY() {
316
+ const m = invert(toStage(this.$display, s.stage));
317
+ return m ? apply(m, s.mouseStageX, s.mouseStageY)[1] : 0;
318
+ }
319
+ /** The bounds through the object's own matrix, in its parent's space. */
320
+ get width() {
321
+ return size(this.$display)[0];
322
+ }
323
+ /**
324
+ * scaleX becomes the value over the object's untransformed width, as
325
+ * Flash sets it: positive whatever the sign was, from a scale of 0 as
326
+ * from any other, and not at all for a negative value or no width.
327
+ * Under a turn or skew, where Flash's rule is more involved, the
328
+ * current scale is adjusted in proportion instead. The width is
329
+ * Flash's, in twips: a drawing thinner than one is no width (the
330
+ * corpus's `nan_scale`).
331
+ */
332
+ set width(v) {
333
+ const value = Number(v);
334
+ if (!(value >= 0)) {
335
+ return;
336
+ }
337
+ const d = this.$display;
338
+ d.touch();
339
+ // A TextField's is its field's, resized at its scale, the text as it was.
340
+ if (d instanceof TextObject) {
341
+ d.width = value / (Math.abs(d.scaleX) || 1);
342
+ d.invalidate(CONTENT);
343
+ d.fit();
344
+ return;
345
+ }
346
+ const r = bounds(d, true);
347
+ const base = r ? twips(r.xMax - r.xMin) : 0;
348
+ const current = d.rotation === 0 && d.skew === 0 ? base : size(d)[0];
349
+ // Nothing to measure that way: a scale of 0, as adl gives it, and of 0 the other way too
350
+ // where there is nothing at all, so that content drawn later stays unseen (size-of-empty).
351
+ if (!(current > 0)) {
352
+ d.setScaleX(0);
353
+ if (r === null) {
354
+ d.setScaleY(0);
355
+ }
356
+ }
357
+ else if (d.rotation === 0 && d.skew === 0) {
358
+ d.setScaleX(value / base);
359
+ }
360
+ else {
361
+ d.setScaleX((d.scaleX * value) / current);
362
+ }
363
+ }
364
+ get height() {
365
+ return size(this.$display)[1];
366
+ }
367
+ set height(v) {
368
+ const value = Number(v);
369
+ if (!(value >= 0)) {
370
+ return;
371
+ }
372
+ const d = this.$display;
373
+ d.touch();
374
+ // A TextField's is its field's, resized at its scale, the text as it was.
375
+ if (d instanceof TextObject) {
376
+ d.height = value / (Math.abs(d.scaleY) || 1);
377
+ d.invalidate(CONTENT);
378
+ d.fit();
379
+ return;
380
+ }
381
+ const r = bounds(d, true);
382
+ const base = r ? twips(r.yMax - r.yMin) : 0;
383
+ const current = d.rotation === 0 && d.skew === 0 ? base : size(d)[1];
384
+ // Nothing to measure that way: a scale of 0, as adl gives it, and of 0 the other way too
385
+ // where there is nothing at all, so that content drawn later stays unseen (size-of-empty).
386
+ if (!(current > 0)) {
387
+ d.setScaleY(0);
388
+ if (r === null) {
389
+ d.setScaleX(0);
390
+ }
391
+ }
392
+ else if (d.rotation === 0 && d.skew === 0) {
393
+ d.setScaleY(value / base);
394
+ }
395
+ else {
396
+ d.setScaleY((d.scaleY * value) / current);
397
+ }
398
+ }
399
+ getBounds(target) {
400
+ return rectangle(s, boundsIn(this.$display, target?.$display ?? null, s.stage, true));
401
+ }
402
+ getRect(target) {
403
+ return rectangle(s, boundsIn(this.$display, target?.$display ?? null, s.stage, false));
404
+ }
405
+ /** hitTestPoint(x, y, shapeFlag) asks with `point`; hitTestObject(other) without. */
406
+ "flash.display:DisplayObject::_hitTest"(point, x, y, shape, other) {
407
+ if (point) {
408
+ return hitsPoint(this.$display, Number(x), Number(y), !!shape, s.root);
409
+ }
410
+ const o = other?.$display;
411
+ return o ? hitsObject(this.$display, o, s.stage) : false;
412
+ }
413
+ get blendMode() {
414
+ return this.$display.blendMode;
415
+ }
416
+ set blendMode(v) {
417
+ const mode = s.rt.toString(v);
418
+ if (!BLEND_MODES.has(mode)) {
419
+ throw s.rt.error("ArgumentError", 2008, "blendMode");
420
+ }
421
+ this.$display.touch();
422
+ this.$display.setBlendMode(mode);
423
+ }
424
+ /** Taken as it is set, its first input what is below and its second the object (shaders.ts). */
425
+ set blendShader(v) {
426
+ if (v === null || v === undefined) {
427
+ throw s.rt.error("TypeError", 2007, "blendShader");
428
+ }
429
+ // A Shader of no kernel has no data to blend with, as adl words it.
430
+ if (!kernelOfShader(v)) {
431
+ throw s.rt.error("TypeError", 2007, "data");
432
+ }
433
+ this.$display.touch();
434
+ this.$display.setBlendShader(shaderUse(s, v, 2));
435
+ }
436
+ // Flash caches an object with filters whatever cacheAsBitmap was set to, and reads it so.
437
+ get cacheAsBitmap() {
438
+ return this.$display.cachedAsBitmap || this.$display.filters.length > 0;
439
+ }
440
+ set cacheAsBitmap(v) {
441
+ this.$display.setCachedAsBitmap(!!v);
442
+ }
443
+ get cacheAsBitmapMatrix() {
444
+ return this.$cacheAsBitmapMatrix ?? null;
445
+ }
446
+ set cacheAsBitmapMatrix(v) {
447
+ this.$cacheAsBitmapMatrix = v;
448
+ }
449
+ /** Copies each time, as Flash gives them: `filters === filters` is false, and a filter changed is not the object's. */
450
+ get filters() {
451
+ return s.rt.array(this.$display.filters.map((f) => {
452
+ const o = s.rt.construct(s.rt.classNamed(filterClassName(f.kind)));
453
+ o.$filter = copyFilter(f);
454
+ return o;
455
+ }));
456
+ }
457
+ // A list refused, #2005, leaves the object untouched (`scripted-moves`).
458
+ set filters(v) {
459
+ const list = v ? (v.$a ?? []) : [];
460
+ const filters = list.map((item) => {
461
+ const kind = item && typeof item === "object" ? filterKindOf(s.rt, item) : null;
462
+ if (!kind) {
463
+ throw s.rt.error("ArgumentError", 2005, 0, "Filter");
464
+ }
465
+ const f = copyFilter(recordOf(item, kind));
466
+ // A displacement map's pixels are taken as they are, as Flash takes
467
+ // them: the object draws with those, whatever is drawn on the map
468
+ // after, till its filters are set again; the map itself it keeps.
469
+ if (f.kind === "displacementMap" && f.mapBitmap) {
470
+ f.mapSnapshot = copyMap(s, f.mapBitmap);
471
+ }
472
+ // A kernel's parameters and images likewise, its first input the object (shaders.ts).
473
+ if (f.kind === "shader") {
474
+ if (!kernelOfShader(f.shader)) {
475
+ throw s.rt.error("ArgumentError", 2171);
476
+ }
477
+ f.shaderUse = shaderUse(s, f.shader, 1);
478
+ }
479
+ return f;
480
+ });
481
+ this.$display.touch();
482
+ this.$display.filters = filters;
483
+ this.$display.invalidate(TRANSFORM);
484
+ }
485
+ get mask() {
486
+ return this.$display.mask?.object ?? null;
487
+ }
488
+ set mask(v) {
489
+ const mask = v?.$display ?? null;
490
+ this.$display.setMask(mask);
491
+ }
492
+ get metaData() {
493
+ return this.$metaData ?? null;
494
+ }
495
+ set metaData(v) {
496
+ this.$metaData = v;
497
+ }
498
+ get opaqueBackground() {
499
+ return this.$opaqueBackground ?? null;
500
+ }
501
+ set opaqueBackground(v) {
502
+ this.$display.touch();
503
+ this.$opaqueBackground = v === null || v === undefined ? null : s.rt.toUint(v);
504
+ }
505
+ /** Whole pixels, each of x, y, width and height cut toward 0, as adl reports a grid. */
506
+ get scale9Grid() {
507
+ const g = this.$display.scale9Grid;
508
+ return g
509
+ ? s.rt.construct(s.rt.classNamed("flash.geom::Rectangle"), Math.trunc(g.xMin), Math.trunc(g.yMin), Math.trunc(g.xMax - g.xMin), Math.trunc(g.yMax - g.yMin))
510
+ : null;
511
+ }
512
+ /**
513
+ * Kept in whole pixels, cut toward 0. A grid not strictly inside the
514
+ * bounds a grid divides (display/scale9.ts), as given, is kept as well,
515
+ * and then refused with ArgumentError #2004, as adl does.
516
+ */
517
+ set scale9Grid(v) {
518
+ const d = this.$display;
519
+ d.touch();
520
+ d.invalidate(CONTENT);
521
+ if (!v) {
522
+ d.scale9Grid = null;
523
+ return;
524
+ }
525
+ const [x, y, w, h] = ["x", "y", "width", "height"].map((k) => Number(s.rt.getProperty(v, name(k))));
526
+ const [cx, cy] = [Math.trunc(x), Math.trunc(y)];
527
+ d.scale9Grid = { xMin: cx, yMin: cy, xMax: cx + Math.trunc(w), yMax: cy + Math.trunc(h) };
528
+ if (!gridInside(sliceBounds(d), { xMin: x, yMin: y, xMax: x + w, yMax: y + h })) {
529
+ throw s.rt.error("ArgumentError", 2004);
530
+ }
531
+ }
532
+ get scrollRect() {
533
+ const r = this.$display.scrollRect;
534
+ return r ? rectangle(s, r) : null;
535
+ }
536
+ /** Each edge to a whole pixel, a half to even, as Flash keeps them; drawn from the next render. */
537
+ set scrollRect(v) {
538
+ this.$display.touch();
539
+ let r = null;
540
+ if (v) {
541
+ const [x, y, w, h] = ["x", "y", "width", "height"].map((k) => Number(s.rt.getProperty(v, name(k))));
542
+ r = { xMin: halfEven(x), yMin: halfEven(y), xMax: halfEven(x + w), yMax: halfEven(y + h) };
543
+ }
544
+ this.$display.scrollRect = r;
545
+ s.scrolled.add(this.$display);
546
+ }
547
+ get accessibilityProperties() {
548
+ return this.$accessibilityProperties ?? null;
549
+ }
550
+ set accessibilityProperties(v) {
551
+ this.$accessibilityProperties = v;
552
+ }
553
+ /** A point of this object's space in the stage's: through the matrices up to the stage. */
554
+ /** Through a plane, to a whole pixel, as adl gives it (the `three-d-bounds` case). */
555
+ localToGlobal(p) {
556
+ const m = toStage(this.$display, s.stage);
557
+ const x = Number(s.rt.getProperty(p, name("x")));
558
+ const y = Number(s.rt.getProperty(p, name("y")));
559
+ const [gx, gy] = apply(m, x, y);
560
+ return isProjective(m) ? point(s, Math.round(gx) + 0, Math.round(gy) + 0) : point(s, gx, gy);
561
+ }
562
+ /**
563
+ * A point of the stage's space in this object's: the inverse of the way up. Through a plane,
564
+ * to a twip, as adl gives it.
565
+ */
566
+ globalToLocal(p) {
567
+ const [x, y] = stageToLocal(s, this.$display, p);
568
+ if (!isProjective(toStage(this.$display, s.stage))) {
569
+ return point(s, x, y);
570
+ }
571
+ return point(s, Math.round(x * 20) / 20 + 0, Math.round(y * 20) / 20 + 0);
572
+ }
573
+ /**
574
+ * A point of this object's 3D space on the stage: through the 3D
575
+ * transforms above it to its projector's space, projected there, as
576
+ * drawn. Flash reports it to a quarter pixel.
577
+ */
578
+ local3DToGlobal(v) {
579
+ const get = (key) => Number(s.rt.getProperty(v, name(key)));
580
+ const [x, y] = stagePoint3D(this.$display, get("x"), get("y"), get("z"), s.stage);
581
+ return point(s, Math.round(x * 4) / 4, Math.round(y * 4) / 4);
582
+ }
583
+ /** The point of this object's plane, z = 0, under a point of the stage, as a Vector3D. */
584
+ globalToLocal3D(p) {
585
+ const [x, y] = stageToLocal(s, this.$display, p);
586
+ return s.rt.construct(s.rt.classNamed("flash.geom::Vector3D"), x, y, 0);
587
+ }
588
+ /** One Transform per display object, made when first asked for. */
589
+ get transform() {
590
+ if (!this.$transform) {
591
+ this.$transform = s.rt.construct(s.rt.classNamed("flash.geom::Transform"), this);
592
+ }
593
+ return this.$transform;
594
+ }
595
+ /** Takes the given Transform's matrix, 2D or 3D, and color transform, not the object. */
596
+ set transform(v) {
597
+ if (v) {
598
+ const t = v;
599
+ const from = t.$display;
600
+ if (from.space) {
601
+ this.$display.setMatrix3D(from.space.shown);
602
+ }
603
+ else {
604
+ this.$display.setMatrix(matrixOf(s, s.rt.getProperty(t, MATRIX_NAME)));
605
+ }
606
+ this.$display.colorTransform = colorOf(s, s.rt.getProperty(t, COLOR_NAME));
607
+ this.$display.touch();
608
+ this.$display.invalidate(TRANSFORM);
609
+ }
610
+ }
611
+ }
612
+ avm2.registerNativeClass(natives, "flash.display::DisplayObject", DisplayObjectNatives);
613
+ return natives;
614
+ }