@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,163 @@
1
+ // flash.system.Capabilities: the screen values the host captured for this
2
+ // player, and the rest as Flash Player 32's browser plugin reports them on
3
+ // the host's system (hosts.ts's platformCapabilities), which a host may
4
+ // set apart.
5
+ import { avm2 } from "../../../../runtime/index.js";
6
+ export function capabilitiesNatives(s) {
7
+ const natives = {};
8
+ const p = () => s.platform;
9
+ class CapabilitiesNatives {
10
+ static get screenResolutionX() {
11
+ return s.screenCapabilities.screenResolutionX;
12
+ }
13
+ static get screenResolutionY() {
14
+ return s.screenCapabilities.screenResolutionY;
15
+ }
16
+ static get pixelAspectRatio() {
17
+ return s.screenCapabilities.pixelAspectRatio;
18
+ }
19
+ static get screenDPI() {
20
+ return s.screenCapabilities.screenDPI;
21
+ }
22
+ static get os() {
23
+ return p().os;
24
+ }
25
+ static get manufacturer() {
26
+ return p().manufacturer;
27
+ }
28
+ static get version() {
29
+ return p().version;
30
+ }
31
+ static get language() {
32
+ return p().language;
33
+ }
34
+ static get languages() {
35
+ return s.rt.newArray([p().language]);
36
+ }
37
+ static get playerType() {
38
+ return p().playerType;
39
+ }
40
+ static get isDebugger() {
41
+ return s.rt.debugger;
42
+ }
43
+ static get cpuArchitecture() {
44
+ return "x86";
45
+ }
46
+ static get screenColor() {
47
+ return "color";
48
+ }
49
+ // A browser tells a finger's screen from none, not a stylus's.
50
+ static get touchscreenType() {
51
+ return s.maxTouchPoints > 0 ? "finger" : "none";
52
+ }
53
+ static get maxLevelIDC() {
54
+ return "5.1";
55
+ }
56
+ static get serverString() {
57
+ return serverString(s);
58
+ }
59
+ static get "flash.system:Capabilities::_internal"() {
60
+ return 0;
61
+ }
62
+ static hasMultiChannelAudio(_type) {
63
+ return false;
64
+ }
65
+ // What a browser plugin has: sound, video and the rest it plays, printing,
66
+ // accessibility, an IME and TLS; no screen broadcast, no local file reads.
67
+ static get hasAudio() {
68
+ return true;
69
+ }
70
+ static get hasMP3() {
71
+ return true;
72
+ }
73
+ static get hasStreamingAudio() {
74
+ return true;
75
+ }
76
+ static get hasStreamingVideo() {
77
+ return true;
78
+ }
79
+ static get hasEmbeddedVideo() {
80
+ return true;
81
+ }
82
+ static get hasAudioEncoder() {
83
+ return true;
84
+ }
85
+ static get hasVideoEncoder() {
86
+ return true;
87
+ }
88
+ static get hasPrinting() {
89
+ return true;
90
+ }
91
+ static get hasAccessibility() {
92
+ return true;
93
+ }
94
+ static get hasIME() {
95
+ return true;
96
+ }
97
+ static get hasTLS() {
98
+ return true;
99
+ }
100
+ static get supports32BitProcesses() {
101
+ return true;
102
+ }
103
+ static get supports64BitProcesses() {
104
+ return true;
105
+ }
106
+ static get hasScreenBroadcast() {
107
+ return false;
108
+ }
109
+ static get hasScreenPlayback() {
110
+ return false;
111
+ }
112
+ static get avHardwareDisable() {
113
+ return false;
114
+ }
115
+ static get localFileReadDisable() {
116
+ return true;
117
+ }
118
+ static get isEmbeddedInAcrobat() {
119
+ return false;
120
+ }
121
+ }
122
+ avm2.registerNativeClass(natives, "flash.system::Capabilities", CapabilitiesNatives);
123
+ return natives;
124
+ }
125
+ /** The capabilities as Flash sends them to a server: its fields' codes, URL-encoded, in its order. */
126
+ function serverString(s) {
127
+ const p = s.platform;
128
+ const yes = (b) => (b ? "t" : "f");
129
+ const sc = s.screenCapabilities;
130
+ const fields = [
131
+ ["A", "t"],
132
+ ["SA", "t"],
133
+ ["SV", "t"],
134
+ ["EV", "t"],
135
+ ["MP3", "t"],
136
+ ["AE", "t"],
137
+ ["VE", "t"],
138
+ ["ACC", "t"],
139
+ ["PR", "t"],
140
+ ["SP", "f"],
141
+ ["SB", "f"],
142
+ ["DEB", yes(s.rt.debugger)],
143
+ ["V", p.version],
144
+ ["M", p.manufacturer],
145
+ ["R", `${sc.screenResolutionX}x${sc.screenResolutionY}`],
146
+ ["COL", "color"],
147
+ ["AR", String(sc.pixelAspectRatio)],
148
+ ["OS", p.os],
149
+ ["ARCH", "x86"],
150
+ ["L", p.language],
151
+ ["IME", "t"],
152
+ ["PR32", "t"],
153
+ ["PR64", "t"],
154
+ ["PT", p.playerType],
155
+ ["AVD", "f"],
156
+ ["LFD", "t"],
157
+ ["WD", "f"],
158
+ ["TLS", "t"],
159
+ ["ML", "5.1"],
160
+ ["DP", String(sc.screenDPI)],
161
+ ];
162
+ return fields.map(([k, v]) => `${k}=${encodeURIComponent(v)}`).join("&");
163
+ }
@@ -0,0 +1,17 @@
1
+ // flash.system.fscommand: a message to the player's host, which a plug-in
2
+ // passed to its page and a projector acted on; here the host's, if it
3
+ // takes them, else nothing, as a plug-in whose page defines no handler.
4
+ import { avm2 } from "../../../../runtime/index.js";
5
+ export function fsCommandNatives(s) {
6
+ const natives = {};
7
+ class FSCommandHostNatives {
8
+ static _fscommand(command, args) {
9
+ // With the calling SWF's URL, or every loaded SWF's where the caller
10
+ // cannot be told, for a host that lets some SWFs command it and not
11
+ // others; 1 counts this native as the player's frame (Code.callerUrl).
12
+ s.fsCommand?.(s.rt.toString(command), s.rt.toString(args), s.code.securityUrls(1));
13
+ }
14
+ }
15
+ avm2.registerNativeClass(natives, "flash.system::FSCommandHost", FSCommandHostNatives);
16
+ return natives;
17
+ }
@@ -0,0 +1,46 @@
1
+ // flash.system.Security: the sandbox the host placed the SWF in, a remote
2
+ // SWF's by default, which allows what a browser's would; the policy files
3
+ // a SWF names go to the host, which judges its requests by them.
4
+ import { avm2 } from "../../../../runtime/index.js";
5
+ export function securityNatives(s) {
6
+ const natives = {};
7
+ // Kept as set, nothing reads them: a data field is not a native.
8
+ let exactSettings = true;
9
+ let disableAVM1Loading = false;
10
+ class SecurityNatives {
11
+ static get exactSettings() {
12
+ return exactSettings;
13
+ }
14
+ static set exactSettings(v) {
15
+ exactSettings = !!v;
16
+ }
17
+ static get disableAVM1Loading() {
18
+ return disableAVM1Loading;
19
+ }
20
+ static set disableAVM1Loading(v) {
21
+ disableAVM1Loading = !!v;
22
+ }
23
+ static get sandboxType() {
24
+ return s.sandboxType;
25
+ }
26
+ static get pageDomain() {
27
+ return null;
28
+ }
29
+ static allowDomain() {
30
+ // Every domain is allowed already.
31
+ }
32
+ static allowInsecureDomain() {
33
+ // Every domain is allowed already.
34
+ }
35
+ static loadPolicyFile(url) {
36
+ if (url !== null && url !== undefined) {
37
+ s.loads.policyFile(s.rt.toString(url));
38
+ }
39
+ }
40
+ static showSettings(_panel) {
41
+ // There is no settings panel.
42
+ }
43
+ }
44
+ avm2.registerNativeClass(natives, "flash.system::Security", SecurityNatives);
45
+ return natives;
46
+ }
@@ -0,0 +1,21 @@
1
+ // All content in this player shares one browser security sandbox. Flash's
2
+ // SecurityDomain.currentDomain is the stable object for that sandbox.
3
+ import { avm2 } from "../../../../runtime/index.js";
4
+ export function securityDomainNatives(s) {
5
+ const natives = {};
6
+ let current = null;
7
+ class SecurityDomainNatives {
8
+ static get currentDomain() {
9
+ // Its public constructor throws; the player creates the singleton directly.
10
+ if (!current) {
11
+ current = s.rt.classNamed("flash.system::SecurityDomain").$it.instance();
12
+ }
13
+ return current;
14
+ }
15
+ "flash.system:SecurityDomain::ctor_impl"() {
16
+ throw s.rt.error("ArgumentError", 2012, "SecurityDomain");
17
+ }
18
+ }
19
+ avm2.registerNativeClass(natives, "flash.system::SecurityDomain", SecurityDomainNatives);
20
+ return natives;
21
+ }
@@ -0,0 +1,73 @@
1
+ // flash.system.System: statics about the player's memory, of which there
2
+ // is nothing here to tell or do, and setClipboard.
3
+ import { avm2 } from "../../../../runtime/index.js";
4
+ import { TEXT } from "../../../scripting/clipboard.js";
5
+ export function systemNatives(s) {
6
+ const natives = {};
7
+ let useCodePage = false;
8
+ class SystemNatives {
9
+ static get ime() {
10
+ return null;
11
+ }
12
+ /**
13
+ * The clipboard's text alone, in place of all it held, while a user's
14
+ * event is handled; outside one Error #2176, as Ruffle has the plug-in
15
+ * throw it, and TypeError #2007 for null, as Ruffle's does.
16
+ */
17
+ static setClipboard(text) {
18
+ if (text === null || text === undefined) {
19
+ throw s.rt.error("TypeError", 2007, "text");
20
+ }
21
+ const clipboard = s.clipboard;
22
+ if (!clipboard.writable) {
23
+ throw s.rt.error("Error", 2176);
24
+ }
25
+ clipboard.clear();
26
+ clipboard.set(TEXT, s.rt.toString(text));
27
+ }
28
+ static get totalMemory() {
29
+ return 0;
30
+ }
31
+ static get totalMemoryNumber() {
32
+ return 0;
33
+ }
34
+ static get freeMemory() {
35
+ return 0;
36
+ }
37
+ static get privateMemory() {
38
+ return 0;
39
+ }
40
+ static get processCPUUsage() {
41
+ return 0;
42
+ }
43
+ static get useCodePage() {
44
+ return useCodePage;
45
+ }
46
+ static set useCodePage(v) {
47
+ useCodePage = !!v;
48
+ }
49
+ static get vmVersion() {
50
+ return "swf2es";
51
+ }
52
+ static pause() {
53
+ // Nothing to pause.
54
+ }
55
+ static resume() {
56
+ // Nothing to resume.
57
+ }
58
+ static exit(_code) {
59
+ // A browser's page does not exit.
60
+ }
61
+ static gc() {
62
+ // JavaScript's collector decides.
63
+ }
64
+ static pauseForGCIfCollectionImminent(_imminence) {
65
+ // JavaScript's collector decides.
66
+ }
67
+ static disposeXML(_node) {
68
+ // It frees an XML tree early, which JavaScript's collector does once nothing refers to it.
69
+ }
70
+ }
71
+ avm2.registerNativeClass(natives, "flash.system::System", SystemNatives);
72
+ return natives;
73
+ }
@@ -0,0 +1,112 @@
1
+ // flash.system.Worker, WorkerDomain and MessageChannel: the AS3 faces of
2
+ // the workers scripting/workers.ts runs. A Worker object stands for a
3
+ // worker by its id, a MessageChannel for a channel by its own; with no
4
+ // worker host, the primordial is the one worker, and none other starts.
5
+ import { avm2 } from "../../../../runtime/index.js";
6
+ import { eventDispatcherNatives } from "../events/EventDispatcher.js";
7
+ /** A shared property's key: null is one of its own, apart from "null", as in avmplus. */
8
+ const keyOf = (s, key) => key === null || key === undefined ? null : s.rt.toString(key);
9
+ export function workerNatives(s) {
10
+ const natives = {};
11
+ class WorkerNatives {
12
+ static get isSupported() {
13
+ return s.workers.supported;
14
+ }
15
+ get isPrimordial() {
16
+ return this.$worker === 0;
17
+ }
18
+ "flash.system:Worker::internalGetState"() {
19
+ return s.workers.state(this.$worker);
20
+ }
21
+ getSharedProperty(key) {
22
+ return s.workers.getShared(this.$worker, keyOf(s, key));
23
+ }
24
+ setSharedProperty(key, value) {
25
+ s.workers.setShared(this.$worker, keyOf(s, key), value);
26
+ }
27
+ // Flash's own setSharedProperty and getSharedProperty call these.
28
+ "flash.system:Worker::internalGetSharedProperty"(key) {
29
+ return s.workers.getShared(this.$worker, keyOf(s, key));
30
+ }
31
+ "flash.system:Worker::internalSetSharedProperty"(key, value) {
32
+ s.workers.setShared(this.$worker, keyOf(s, key), value);
33
+ }
34
+ // workerState is dispatched to the Worker object whoever listens.
35
+ "flash.system:Worker::internalAddEventListener"() { }
36
+ "flash.system:Worker::internalRemoveEventListener"() { }
37
+ start() {
38
+ s.workers.start(this.$worker);
39
+ }
40
+ terminate() {
41
+ return s.workers.terminate(this.$worker);
42
+ }
43
+ createMessageChannel(receiver) {
44
+ if (receiver === null || receiver === undefined) {
45
+ throw s.rt.error("TypeError", 2007, "receiver");
46
+ }
47
+ return s.workers.createChannel(this.$worker, receiver.$worker);
48
+ }
49
+ }
50
+ class WorkerDomainNatives {
51
+ static get isSupported() {
52
+ return s.workers.supported;
53
+ }
54
+ createWorker(swf) {
55
+ return s.workers.create(swf);
56
+ }
57
+ listWorkers() {
58
+ const rt = s.rt;
59
+ const cls = rt.applyType(rt.classNamed("__AS3__.vec::Vector"), [
60
+ rt.classNamed("flash.system::Worker"),
61
+ ]);
62
+ const o = cls.$it.instance();
63
+ o.$a = s.workers.list();
64
+ o.$fixed = false;
65
+ return o;
66
+ }
67
+ }
68
+ // Its addEventListener and removeEventListener are natives in Flash's
69
+ // playerglobal, which only add to EventDispatcher's.
70
+ const dispatcher = eventDispatcherNatives(s);
71
+ const inherited = (name) => dispatcher[`flash.events::EventDispatcher#${name}`](s.rt);
72
+ class MessageChannelNatives {
73
+ send(value) {
74
+ s.workers.send(this, value);
75
+ }
76
+ get messageAvailable() {
77
+ return s.workers.messageAvailable(this);
78
+ }
79
+ receive(block) {
80
+ return s.workers.receive(this, !!block);
81
+ }
82
+ addEventListener(...args) {
83
+ return inherited("addEventListener").apply(this, args);
84
+ }
85
+ removeEventListener(...args) {
86
+ return inherited("removeEventListener").apply(this, args);
87
+ }
88
+ close() {
89
+ s.workers.close(this);
90
+ }
91
+ get state() {
92
+ return s.workers.channelState(this);
93
+ }
94
+ toString() {
95
+ return "[object MessageChannel]";
96
+ }
97
+ }
98
+ avm2.registerNativeClass(natives, "flash.system::Worker", WorkerNatives);
99
+ avm2.registerNativeClass(natives, "flash.system::WorkerDomain", WorkerDomainNatives);
100
+ avm2.registerNativeClass(natives, "flash.system::MessageChannel", MessageChannelNatives);
101
+ return natives;
102
+ }
103
+ /** Worker.current, which the VM keeps in Worker's private static _current: this VM's own worker. */
104
+ export function workerHooks(s) {
105
+ return {
106
+ "flash.system::Worker": {
107
+ created(_rt, cls) {
108
+ avm2.setStaticVar(cls, "_current", s.workers.objectOf(s.workers.id, cls));
109
+ },
110
+ },
111
+ };
112
+ }
@@ -0,0 +1,95 @@
1
+ // flash.text.Font: embedded SWF font metadata and explicit font registration.
2
+ import { avm2 } from "../../../../runtime/index.js";
3
+ function style(font) {
4
+ if (font.bold && font.italic) {
5
+ return "boldItalic";
6
+ }
7
+ if (font.bold) {
8
+ return "bold";
9
+ }
10
+ return font.italic ? "italic" : "regular";
11
+ }
12
+ /** The fonts enumerateFonts lists: the running code's SWF's, with layout or no glyphs, and those registered. */
13
+ export function embeddedFonts(s) {
14
+ const fonts = [];
15
+ const library = s.code.codeLibrary();
16
+ if (library) {
17
+ for (const character of library.characters.values()) {
18
+ if (character.type === "font" &&
19
+ (character.font.layout || character.font.glyphs.length === 0)) {
20
+ fonts.push(character);
21
+ }
22
+ }
23
+ }
24
+ fonts.push(...s.symbols.registeredFonts.values());
25
+ return fonts;
26
+ }
27
+ export function fontNatives(s) {
28
+ const natives = {};
29
+ const glyphCodes = new WeakMap();
30
+ class FontNatives {
31
+ get fontName() {
32
+ return this.$font?.name ?? null;
33
+ }
34
+ get fontStyle() {
35
+ return this.$font ? style(this.$font) : null;
36
+ }
37
+ get fontType() {
38
+ return this.$font ? (this.$font.type === "fontCff" ? "embeddedCFF" : "embedded") : null;
39
+ }
40
+ hasGlyphs(text) {
41
+ const font = this.$font;
42
+ if (!font) {
43
+ return false;
44
+ }
45
+ if (font.type === "fontCff") {
46
+ return text.length === 0;
47
+ }
48
+ let glyphs = glyphCodes.get(font);
49
+ if (!glyphs) {
50
+ glyphs = new Set(font.font.glyphs.map((glyph) => glyph.code));
51
+ glyphCodes.set(font, glyphs);
52
+ }
53
+ for (let i = 0; i < text.length; i++) {
54
+ if (!glyphs.has(text.charCodeAt(i))) {
55
+ return false;
56
+ }
57
+ }
58
+ return true;
59
+ }
60
+ static enumerateFonts(_enumerateDeviceFonts) {
61
+ const cls = s.rt.classNamed("flash.text::Font");
62
+ const fonts = embeddedFonts(s);
63
+ fonts.sort((a, b) => {
64
+ const first = a.name.toLowerCase();
65
+ const second = b.name.toLowerCase();
66
+ return first < second ? -1 : first > second ? 1 : 0;
67
+ });
68
+ return s.rt.array(fonts.map((font) => {
69
+ const object = s.rt.construct(cls);
70
+ object.$font = font;
71
+ return object;
72
+ }));
73
+ }
74
+ static registerFont(cls) {
75
+ const font = cls?.$it && s.symbols.fontSymbol(cls.$it);
76
+ if (!font) {
77
+ throw s.rt.error("ArgumentError", 1508, "font");
78
+ }
79
+ s.symbols.registerFont(cls, font);
80
+ }
81
+ }
82
+ avm2.registerNativeClass(natives, "flash.text::Font", FontNatives);
83
+ return natives;
84
+ }
85
+ export function fontHooks(s) {
86
+ return {
87
+ "flash.text::Font": {
88
+ create: (traits) => {
89
+ const object = Object.create(traits.proto);
90
+ object.$font = s.symbols.fontSymbol(traits);
91
+ return object;
92
+ },
93
+ },
94
+ };
95
+ }
@@ -0,0 +1,16 @@
1
+ // flash.text.StaticText: DefineText's glyphs, which a script reads as its text.
2
+ import { avm2 } from "../../../../runtime/index.js";
3
+ import { StaticTextObject } from "../../../display/display.js";
4
+ import { displayOf } from "../display/DisplayObject.js";
5
+ export function staticTextNatives() {
6
+ const natives = {};
7
+ class StaticTextNatives {
8
+ /** Its glyphs' characters; null where a glyph's font is not the SWF's, or there are none. */
9
+ get text() {
10
+ const display = displayOf(this);
11
+ return display instanceof StaticTextObject ? display.glyphs.text : null;
12
+ }
13
+ }
14
+ avm2.registerNativeClass(natives, "flash.text::StaticText", StaticTextNatives);
15
+ return natives;
16
+ }
@@ -0,0 +1,65 @@
1
+ // flash.text.StyleSheet's natives: playerglobal keeps the style objects
2
+ // and their TextFormats itself, and asks these to parse CSS, colours and
3
+ // font lists, to hold the TextFormats by selector, and to tell the fields
4
+ // that use the sheet that it changed.
5
+ import { avm2 } from "../../../../runtime/index.js";
6
+ import { camelCase, cssColor, fontList, parseCss } from "../../../text/css.js";
7
+ /** The fields a sheet styles, weakly: a field set to another sheet, or collected, drops out. */
8
+ const users = new WeakMap();
9
+ /** `field` now styled by `sheet`, which tells it of changes. */
10
+ export function useSheet(sheet, field) {
11
+ let set = users.get(sheet);
12
+ if (!set) {
13
+ set = new Set();
14
+ users.set(sheet, set);
15
+ }
16
+ set.add(field.ref);
17
+ }
18
+ export function styleSheetNatives(s) {
19
+ const natives = {};
20
+ class StyleSheetNatives {
21
+ get "flash.text:StyleSheet::_styles"() {
22
+ return this.$styles ?? null;
23
+ }
24
+ set "flash.text:StyleSheet::_styles"(v) {
25
+ this.$styles = v;
26
+ }
27
+ /** The fields that use this sheet styled again from their HTML. */
28
+ "flash.text:StyleSheet::_update"() {
29
+ const set = users.get(this);
30
+ for (const ref of set ?? []) {
31
+ const field = ref.deref();
32
+ if (!field || field.styleSheet !== this) {
33
+ set?.delete(ref);
34
+ continue;
35
+ }
36
+ field.restyle?.();
37
+ }
38
+ }
39
+ /** Each selector's style object, its properties camel-cased strings; null for a sheet Flash rejects. */
40
+ "flash.text:StyleSheet::_parseCSSInternal"(css) {
41
+ const parsed = parseCss(s.rt.toString(css));
42
+ if (!parsed) {
43
+ return null;
44
+ }
45
+ const pairs = [];
46
+ for (const [selector, properties] of parsed) {
47
+ const style = [];
48
+ for (const [name, value] of properties) {
49
+ style.push(camelCase(name), value);
50
+ }
51
+ // Selectors as setStyle keeps them, lower-cased: of KEY and key, the later is kept.
52
+ pairs.push(selector.toLowerCase(), s.rt.newObject(style));
53
+ }
54
+ return s.rt.newObject(pairs);
55
+ }
56
+ "flash.text:StyleSheet::_parseCSSFontFamily"(family) {
57
+ return fontList(s.rt.toString(family));
58
+ }
59
+ "flash.text:StyleSheet::_parseColor"(color) {
60
+ return cssColor(s.rt.toString(color));
61
+ }
62
+ }
63
+ avm2.registerNativeClass(natives, "flash.text::StyleSheet", StyleSheetNatives);
64
+ return natives;
65
+ }