@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.
- package/LICENSE +202 -0
- package/LICENSE.third-party +759 -0
- package/README.md +43 -2
- package/dist/indexeddb.d.ts +27 -0
- package/dist/indexeddb.d.ts.map +1 -0
- package/dist/indexeddb.js +170 -0
- package/dist/indexeddb.js.map +1 -0
- package/dist/node-worker.d.ts +2 -0
- package/dist/node-worker.d.ts.map +1 -0
- package/dist/node-worker.js +12 -0
- package/dist/node-worker.js.map +1 -0
- package/dist/node.d.ts +8 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +43 -0
- package/dist/node.js.map +1 -0
- package/dist/precompiled.d.ts +31 -0
- package/dist/precompiled.d.ts.map +1 -0
- package/dist/precompiled.js +125 -0
- package/dist/precompiled.js.map +1 -0
- package/dist/stage3d.d.ts +13 -0
- package/dist/stage3d.d.ts.map +1 -0
- package/dist/stage3d.js +61 -0
- package/dist/stage3d.js.map +1 -0
- package/dist/thread/codegen/codegen.js +308 -0
- package/dist/thread/codegen/index.js +405 -0
- package/dist/thread/format/abc-names.js +126 -0
- package/dist/thread/format/actions.js +222 -0
- package/dist/thread/format/air-descriptor.js +63 -0
- package/dist/thread/format/api-versions.js +22 -0
- package/dist/thread/format/bitmap.js +199 -0
- package/dist/thread/format/button.js +60 -0
- package/dist/thread/format/compression.js +200 -0
- package/dist/thread/format/display.js +305 -0
- package/dist/thread/format/filters.js +136 -0
- package/dist/thread/format/font.js +168 -0
- package/dist/thread/format/index.js +26 -0
- package/dist/thread/format/pbj.js +484 -0
- package/dist/thread/format/shape.js +411 -0
- package/dist/thread/format/sound.js +91 -0
- package/dist/thread/format/swf.js +163 -0
- package/dist/thread/format/tags.js +58 -0
- package/dist/thread/format/text.js +135 -0
- package/dist/thread/format/zip.js +91 -0
- package/dist/thread/native/audio/binary.js +3 -0
- package/dist/thread/native/audio/index.js +72 -0
- package/dist/thread/native/base64.js +9 -0
- package/dist/thread/native/compress/binary.js +3 -0
- package/dist/thread/native/compress/index.js +145 -0
- package/dist/thread/native/instance.js +49 -0
- package/dist/thread/native/mp3/binary.js +3 -0
- package/dist/thread/native/mp3/index.js +48 -0
- package/dist/thread/native/render/binary.js +3 -0
- package/dist/thread/native/render/bitmap-kernel.js +591 -0
- package/dist/thread/native/render/draw-kernel.js +204 -0
- package/dist/thread/native/render/dxt-encoder.js +94 -0
- package/dist/thread/native/render/index.js +10 -0
- package/dist/thread/native/render/lines.js +122 -0
- package/dist/thread/native/render/module.js +26 -0
- package/dist/thread/native/render/pixel-ops.js +235 -0
- package/dist/thread/native/render/tessellator.js +250 -0
- package/dist/thread/player/avm1/amf.js +507 -0
- package/dist/thread/player/avm1/avm1.js +1304 -0
- package/dist/thread/player/avm1/bindings.js +214 -0
- package/dist/thread/player/avm1/classes.js +75 -0
- package/dist/thread/player/avm1/clips.js +229 -0
- package/dist/thread/player/avm1/compile.js +140 -0
- package/dist/thread/player/avm1/external.js +79 -0
- package/dist/thread/player/avm1/focus.js +278 -0
- package/dist/thread/player/avm1/globals/BitmapData.js +542 -0
- package/dist/thread/player/avm1/globals/Button.js +31 -0
- package/dist/thread/player/avm1/globals/Color.js +115 -0
- package/dist/thread/player/avm1/globals/ExternalInterface.js +310 -0
- package/dist/thread/player/avm1/globals/FileReference.js +217 -0
- package/dist/thread/player/avm1/globals/Key.js +60 -0
- package/dist/thread/player/avm1/globals/LoadVars.js +208 -0
- package/dist/thread/player/avm1/globals/LocalConnection.js +92 -0
- package/dist/thread/player/avm1/globals/MovieClip.js +1070 -0
- package/dist/thread/player/avm1/globals/MovieClipLoader.js +90 -0
- package/dist/thread/player/avm1/globals/NetConnection.js +261 -0
- package/dist/thread/player/avm1/globals/PrintJob.js +37 -0
- package/dist/thread/player/avm1/globals/Selection.js +62 -0
- package/dist/thread/player/avm1/globals/SharedObject.js +245 -0
- package/dist/thread/player/avm1/globals/Sound.js +238 -0
- package/dist/thread/player/avm1/globals/Stage.js +12 -0
- package/dist/thread/player/avm1/globals/StyleSheet.js +205 -0
- package/dist/thread/player/avm1/globals/TextField.js +396 -0
- package/dist/thread/player/avm1/globals/TextFormat.js +194 -0
- package/dist/thread/player/avm1/globals/TextSnapshot.js +88 -0
- package/dist/thread/player/avm1/globals/XML.js +396 -0
- package/dist/thread/player/avm1/globals/XMLNode.js +413 -0
- package/dist/thread/player/avm1/globals/XMLSocket.js +205 -0
- package/dist/thread/player/avm1/globals/drawing.js +202 -0
- package/dist/thread/player/avm1/globals/filters.js +635 -0
- package/dist/thread/player/avm1/globals/geom.js +600 -0
- package/dist/thread/player/avm1/input.js +483 -0
- package/dist/thread/player/avm1/keyboard.js +113 -0
- package/dist/thread/player/avm1/loads.js +352 -0
- package/dist/thread/player/avm1/net.js +219 -0
- package/dist/thread/player/avm1/paths.js +104 -0
- package/dist/thread/player/avm1/pointer.js +512 -0
- package/dist/thread/player/avm1/queue.js +303 -0
- package/dist/thread/player/avm1/sound.js +106 -0
- package/dist/thread/player/avm1/swf.js +141 -0
- package/dist/thread/player/avm1/timers.js +113 -0
- package/dist/thread/player/bitmap/bitmap.js +627 -0
- package/dist/thread/player/bitmap/draw.js +68 -0
- package/dist/thread/player/bitmap/dxt.js +11 -0
- package/dist/thread/player/bitmap/filters.js +656 -0
- package/dist/thread/player/bitmap/images.js +240 -0
- package/dist/thread/player/bitmap/kernel.js +65 -0
- package/dist/thread/player/bitmap/ops.js +1239 -0
- package/dist/thread/player/bitmap/pixel-bender.js +911 -0
- package/dist/thread/player/bitmap/png.js +139 -0
- package/dist/thread/player/bitmap/turbulence.js +89 -0
- package/dist/thread/player/clock.js +182 -0
- package/dist/thread/player/display/bitmapobject.js +25 -0
- package/dist/thread/player/display/bounds.js +520 -0
- package/dist/thread/player/display/buttonobject.js +305 -0
- package/dist/thread/player/display/color.js +40 -0
- package/dist/thread/player/display/container.js +150 -0
- package/dist/thread/player/display/display.js +14 -0
- package/dist/thread/player/display/displayobject.js +664 -0
- package/dist/thread/player/display/drawing.js +613 -0
- package/dist/thread/player/display/filters.js +285 -0
- package/dist/thread/player/display/geometry.js +189 -0
- package/dist/thread/player/display/gradients.js +117 -0
- package/dist/thread/player/display/graphicsdata.js +592 -0
- package/dist/thread/player/display/instantiate.js +71 -0
- package/dist/thread/player/display/matrix3d.js +373 -0
- package/dist/thread/player/display/morph.js +226 -0
- package/dist/thread/player/display/movieclip.js +680 -0
- package/dist/thread/player/display/perspective.js +193 -0
- package/dist/thread/player/display/scale9.js +236 -0
- package/dist/thread/player/display/shapeobject.js +131 -0
- package/dist/thread/player/display/shapes.js +407 -0
- package/dist/thread/player/display/textobjects.js +222 -0
- package/dist/thread/player/display/timeline.js +471 -0
- package/dist/thread/player/display/value-lists.js +40 -0
- package/dist/thread/player/display/videoobject.js +6 -0
- package/dist/thread/player/display/walk.js +127 -0
- package/dist/thread/player/files.js +334 -0
- package/dist/thread/player/hosts.js +207 -0
- package/dist/thread/player/input/avm1.js +82 -0
- package/dist/thread/player/input/context-menu.js +63 -0
- package/dist/thread/player/input/keyboard.js +458 -0
- package/dist/thread/player/input/pointer.js +863 -0
- package/dist/thread/player/input/text-editor.js +319 -0
- package/dist/thread/player/input/touch.js +209 -0
- package/dist/thread/player/localconnection.js +90 -0
- package/dist/thread/player/media/audio.js +376 -0
- package/dist/thread/player/media/dynamic-sound.js +90 -0
- package/dist/thread/player/media/extract.js +135 -0
- package/dist/thread/player/media/mp3.js +152 -0
- package/dist/thread/player/media/sounds.js +507 -0
- package/dist/thread/player/media/streaming-audio.js +133 -0
- package/dist/thread/player/player.js +616 -0
- package/dist/thread/player/playerglobal/air/net/WebSocket.js +250 -0
- package/dist/thread/player/playerglobal/air-library.js +8 -0
- package/dist/thread/player/playerglobal/flash/accessibility/Accessibility.js +21 -0
- package/dist/thread/player/playerglobal/flash/crypto/generateRandomBytes.js +32 -0
- package/dist/thread/player/playerglobal/flash/data/EncryptedLocalStore.js +61 -0
- package/dist/thread/player/playerglobal/flash/desktop/Clipboard.js +173 -0
- package/dist/thread/player/playerglobal/flash/desktop/NativeApplication.js +179 -0
- package/dist/thread/player/playerglobal/flash/display/AVM1Movie.js +19 -0
- package/dist/thread/player/playerglobal/flash/display/Bitmap.js +58 -0
- package/dist/thread/player/playerglobal/flash/display/BitmapData.js +633 -0
- package/dist/thread/player/playerglobal/flash/display/DisplayObject.js +614 -0
- package/dist/thread/player/playerglobal/flash/display/DisplayObjectContainer.js +224 -0
- package/dist/thread/player/playerglobal/flash/display/Graphics.js +345 -0
- package/dist/thread/player/playerglobal/flash/display/InteractiveObject.js +87 -0
- package/dist/thread/player/playerglobal/flash/display/Loader.js +79 -0
- package/dist/thread/player/playerglobal/flash/display/LoaderInfo.js +128 -0
- package/dist/thread/player/playerglobal/flash/display/MovieClip.js +194 -0
- package/dist/thread/player/playerglobal/flash/display/NativeWindow.js +245 -0
- package/dist/thread/player/playerglobal/flash/display/Shader.js +26 -0
- package/dist/thread/player/playerglobal/flash/display/ShaderData.js +85 -0
- package/dist/thread/player/playerglobal/flash/display/ShaderInput.js +64 -0
- package/dist/thread/player/playerglobal/flash/display/ShaderJob.js +181 -0
- package/dist/thread/player/playerglobal/flash/display/ShaderParameter.js +23 -0
- package/dist/thread/player/playerglobal/flash/display/Shape.js +13 -0
- package/dist/thread/player/playerglobal/flash/display/SimpleButton.js +103 -0
- package/dist/thread/player/playerglobal/flash/display/Sprite.js +84 -0
- package/dist/thread/player/playerglobal/flash/display/Stage.js +231 -0
- package/dist/thread/player/playerglobal/flash/display/Stage3D.js +54 -0
- package/dist/thread/player/playerglobal/flash/display/shaders.js +228 -0
- package/dist/thread/player/playerglobal/flash/events/Event.js +58 -0
- package/dist/thread/player/playerglobal/flash/events/EventDispatcher.js +103 -0
- package/dist/thread/player/playerglobal/flash/events/GestureEvent.js +34 -0
- package/dist/thread/player/playerglobal/flash/events/HTTPStatusEvent.js +8 -0
- package/dist/thread/player/playerglobal/flash/events/KeyboardEvent.js +51 -0
- package/dist/thread/player/playerglobal/flash/events/MouseEvent.js +59 -0
- package/dist/thread/player/playerglobal/flash/events/PressAndTapGestureEvent.js +30 -0
- package/dist/thread/player/playerglobal/flash/events/TimerEvent.js +16 -0
- package/dist/thread/player/playerglobal/flash/events/TouchEvent.js +45 -0
- package/dist/thread/player/playerglobal/flash/external/ExternalInterface.js +73 -0
- package/dist/thread/player/playerglobal/flash/filesystem/File.js +340 -0
- package/dist/thread/player/playerglobal/flash/filesystem/FileStream.js +453 -0
- package/dist/thread/player/playerglobal/flash/filesystem/paths.js +156 -0
- package/dist/thread/player/playerglobal/flash/filesystem/writes.js +143 -0
- package/dist/thread/player/playerglobal/flash/filters/BevelFilter.js +4 -0
- package/dist/thread/player/playerglobal/flash/filters/BitmapFilter.js +205 -0
- package/dist/thread/player/playerglobal/flash/filters/BlurFilter.js +4 -0
- package/dist/thread/player/playerglobal/flash/filters/ColorMatrixFilter.js +11 -0
- package/dist/thread/player/playerglobal/flash/filters/ConvolutionFilter.js +26 -0
- package/dist/thread/player/playerglobal/flash/filters/DisplacementMapFilter.js +51 -0
- package/dist/thread/player/playerglobal/flash/filters/DropShadowFilter.js +4 -0
- package/dist/thread/player/playerglobal/flash/filters/GlowFilter.js +4 -0
- package/dist/thread/player/playerglobal/flash/filters/GradientBevelFilter.js +4 -0
- package/dist/thread/player/playerglobal/flash/filters/GradientGlowFilter.js +4 -0
- package/dist/thread/player/playerglobal/flash/filters/ShaderFilter.js +53 -0
- package/dist/thread/player/playerglobal/flash/geom/Matrix3D.js +361 -0
- package/dist/thread/player/playerglobal/flash/geom/PerspectiveProjection.js +122 -0
- package/dist/thread/player/playerglobal/flash/geom/Transform.js +245 -0
- package/dist/thread/player/playerglobal/flash/geom/Utils3D.js +85 -0
- package/dist/thread/player/playerglobal/flash/globalization/Collator.js +149 -0
- package/dist/thread/player/playerglobal/flash/globalization/CurrencyFormatter.js +272 -0
- package/dist/thread/player/playerglobal/flash/globalization/CurrencyParseResult.js +21 -0
- package/dist/thread/player/playerglobal/flash/globalization/DateTimeFormatter.js +463 -0
- package/dist/thread/player/playerglobal/flash/globalization/LocaleID.js +144 -0
- package/dist/thread/player/playerglobal/flash/globalization/NumberFormatter.js +444 -0
- package/dist/thread/player/playerglobal/flash/globalization/NumberParseResult.js +22 -0
- package/dist/thread/player/playerglobal/flash/globalization/StringTools.js +59 -0
- package/dist/thread/player/playerglobal/flash/globalization/locale.js +190 -0
- package/dist/thread/player/playerglobal/flash/media/Camera.js +89 -0
- package/dist/thread/player/playerglobal/flash/media/Microphone.js +126 -0
- package/dist/thread/player/playerglobal/flash/media/Sound.js +543 -0
- package/dist/thread/player/playerglobal/flash/media/SoundMixer.js +74 -0
- package/dist/thread/player/playerglobal/flash/media/SoundTransform.js +40 -0
- package/dist/thread/player/playerglobal/flash/media/Video.js +43 -0
- package/dist/thread/player/playerglobal/flash/net/FileFilter.js +27 -0
- package/dist/thread/player/playerglobal/flash/net/FileReference.js +197 -0
- package/dist/thread/player/playerglobal/flash/net/LocalConnection.js +167 -0
- package/dist/thread/player/playerglobal/flash/net/NetConnection.js +155 -0
- package/dist/thread/player/playerglobal/flash/net/SharedObject.js +299 -0
- package/dist/thread/player/playerglobal/flash/net/Socket.js +282 -0
- package/dist/thread/player/playerglobal/flash/net/URLRequest.js +93 -0
- package/dist/thread/player/playerglobal/flash/net/URLStream.js +146 -0
- package/dist/thread/player/playerglobal/flash/net/XMLSocket.js +14 -0
- package/dist/thread/player/playerglobal/flash/net/local-modern.js +142 -0
- package/dist/thread/player/playerglobal/flash/net/local-values.js +217 -0
- package/dist/thread/player/playerglobal/flash/net/navigateToURL.js +29 -0
- package/dist/thread/player/playerglobal/flash/profiler/Telemetry.js +25 -0
- package/dist/thread/player/playerglobal/flash/sensors/Accelerometer.js +12 -0
- package/dist/thread/player/playerglobal/flash/system/ApplicationDomain.js +69 -0
- package/dist/thread/player/playerglobal/flash/system/Capabilities.js +163 -0
- package/dist/thread/player/playerglobal/flash/system/FSCommandHost.js +17 -0
- package/dist/thread/player/playerglobal/flash/system/Security.js +46 -0
- package/dist/thread/player/playerglobal/flash/system/SecurityDomain.js +21 -0
- package/dist/thread/player/playerglobal/flash/system/System.js +73 -0
- package/dist/thread/player/playerglobal/flash/system/Worker.js +112 -0
- package/dist/thread/player/playerglobal/flash/text/Font.js +95 -0
- package/dist/thread/player/playerglobal/flash/text/StaticText.js +16 -0
- package/dist/thread/player/playerglobal/flash/text/StyleSheet.js +65 -0
- package/dist/thread/player/playerglobal/flash/text/TextField.js +707 -0
- package/dist/thread/player/playerglobal/flash/text/TextRenderer.js +77 -0
- package/dist/thread/player/playerglobal/flash/text/engine/FontDescription.js +141 -0
- package/dist/thread/player/playerglobal/flash/text/engine/TabStop.js +46 -0
- package/dist/thread/player/playerglobal/flash/trace/Trace.js +17 -0
- package/dist/thread/player/playerglobal/flash/ui/ContextMenu.js +17 -0
- package/dist/thread/player/playerglobal/flash/ui/GameInput.js +19 -0
- package/dist/thread/player/playerglobal/flash/ui/Keyboard.js +27 -0
- package/dist/thread/player/playerglobal/flash/ui/Mouse.js +127 -0
- package/dist/thread/player/playerglobal/flash/ui/Multitouch.js +46 -0
- package/dist/thread/player/playerglobal/flash/utils/ByteArray.js +155 -0
- package/dist/thread/player/playerglobal/flash/utils/Timer.js +25 -0
- package/dist/thread/player/playerglobal/flash/xml/XMLDocument.js +74 -0
- package/dist/thread/player/playerglobal/index.js +224 -0
- package/dist/thread/player/playerglobal/libraries.js +10 -0
- package/dist/thread/player/playerglobal/playerglobal-library.js +22 -0
- package/dist/thread/player/playerglobal/toplevel.js +122 -0
- package/dist/thread/player/scripting/clipboard.js +146 -0
- package/dist/thread/player/scripting/code.js +900 -0
- package/dist/thread/player/scripting/evaluate.js +144 -0
- package/dist/thread/player/scripting/events.js +172 -0
- package/dist/thread/player/scripting/handover.js +182 -0
- package/dist/thread/player/scripting/lazy.js +38 -0
- package/dist/thread/player/scripting/lifecycle.js +272 -0
- package/dist/thread/player/scripting/loads.js +860 -0
- package/dist/thread/player/scripting/sha256.js +95 -0
- package/dist/thread/player/scripting/symbols.js +348 -0
- package/dist/thread/player/scripting/timers.js +434 -0
- package/dist/thread/player/scripting/workers.js +923 -0
- package/dist/thread/player/scripting.js +1018 -0
- package/dist/thread/player/stage.js +4 -0
- package/dist/thread/player/text/csm.js +113 -0
- package/dist/thread/player/text/css.js +167 -0
- package/dist/thread/player/text/fonts.js +97 -0
- package/dist/thread/player/text/layout.js +393 -0
- package/dist/thread/player/text/static.js +109 -0
- package/dist/thread/player/text/text.js +431 -0
- package/dist/thread/player/workers/thread.js +159 -0
- package/dist/thread/player/workers/wire.js +198 -0
- package/dist/thread/player-hosts/web-worker.js +19 -0
- package/dist/thread/runtime/avm1/activation.js +89 -0
- package/dist/thread/runtime/avm1/case.js +249 -0
- package/dist/thread/runtime/avm1/clips.js +334 -0
- package/dist/thread/runtime/avm1/control.js +280 -0
- package/dist/thread/runtime/avm1/errors.js +50 -0
- package/dist/thread/runtime/avm1/functions.js +249 -0
- package/dist/thread/runtime/avm1/globals/array.js +549 -0
- package/dist/thread/runtime/avm1/globals/broadcaster.js +131 -0
- package/dist/thread/runtime/avm1/globals/date.js +436 -0
- package/dist/thread/runtime/avm1/globals/global.js +344 -0
- package/dist/thread/runtime/avm1/globals/math.js +139 -0
- package/dist/thread/runtime/avm1/globals/number.js +93 -0
- package/dist/thread/runtime/avm1/globals/string.js +201 -0
- package/dist/thread/runtime/avm1/globals/timers.js +129 -0
- package/dist/thread/runtime/avm1/host.js +5 -0
- package/dist/thread/runtime/avm1/index.js +14 -0
- package/dist/thread/runtime/avm1/inheritance.js +132 -0
- package/dist/thread/runtime/avm1/numbers.js +298 -0
- package/dist/thread/runtime/avm1/objects.js +896 -0
- package/dist/thread/runtime/avm1/operators.js +170 -0
- package/dist/thread/runtime/avm1/realm.js +529 -0
- package/dist/thread/runtime/avm1/runtime.js +882 -0
- package/dist/thread/runtime/avm1/scope.js +385 -0
- package/dist/thread/runtime/avm1/urls.js +180 -0
- package/dist/thread/runtime/avm1/values.js +97 -0
- package/dist/thread/runtime/avm2/amf-classes.js +66 -0
- package/dist/thread/runtime/avm2/amf.js +801 -0
- package/dist/thread/runtime/avm2/array-conversion.js +100 -0
- package/dist/thread/runtime/avm2/builtin-library.js +21 -0
- package/dist/thread/runtime/avm2/cache-fill.js +86 -0
- package/dist/thread/runtime/avm2/classes.js +211 -0
- package/dist/thread/runtime/avm2/definitions.js +69 -0
- package/dist/thread/runtime/avm2/descriptors.js +5 -0
- package/dist/thread/runtime/avm2/dictionary-keys.js +295 -0
- package/dist/thread/runtime/avm2/domain-memory.js +75 -0
- package/dist/thread/runtime/avm2/domain.js +280 -0
- package/dist/thread/runtime/avm2/dynamic-properties.js +182 -0
- package/dist/thread/runtime/avm2/enumeration.js +393 -0
- package/dist/thread/runtime/avm2/errors.js +45 -0
- package/dist/thread/runtime/avm2/float-library.js +66 -0
- package/dist/thread/runtime/avm2/float.js +26 -0
- package/dist/thread/runtime/avm2/hooks.js +19 -0
- package/dist/thread/runtime/avm2/index.js +38 -0
- package/dist/thread/runtime/avm2/messages.js +177 -0
- package/dist/thread/runtime/avm2/method-factories.js +95 -0
- package/dist/thread/runtime/avm2/modules.js +105 -0
- package/dist/thread/runtime/avm2/names.js +248 -0
- package/dist/thread/runtime/avm2/natives/aliases.js +47 -0
- package/dist/thread/runtime/avm2/natives/array.js +390 -0
- package/dist/thread/runtime/avm2/natives/bytearray.js +1227 -0
- package/dist/thread/runtime/avm2/natives/case.js +88 -0
- package/dist/thread/runtime/avm2/natives/concurrent.js +199 -0
- package/dist/thread/runtime/avm2/natives/date.js +581 -0
- package/dist/thread/runtime/avm2/natives/define.js +130 -0
- package/dist/thread/runtime/avm2/natives/describe.js +351 -0
- package/dist/thread/runtime/avm2/natives/dictionary.js +12 -0
- package/dist/thread/runtime/avm2/natives/float-vector.js +81 -0
- package/dist/thread/runtime/avm2/natives/float.js +96 -0
- package/dist/thread/runtime/avm2/natives/index.js +64 -0
- package/dist/thread/runtime/avm2/natives/json.js +514 -0
- package/dist/thread/runtime/avm2/natives/number.js +162 -0
- package/dist/thread/runtime/avm2/natives/object.js +237 -0
- package/dist/thread/runtime/avm2/natives/proxy.js +75 -0
- package/dist/thread/runtime/avm2/natives/regexp.js +485 -0
- package/dist/thread/runtime/avm2/natives/shell-workers.js +404 -0
- package/dist/thread/runtime/avm2/natives/shell.js +557 -0
- package/dist/thread/runtime/avm2/natives/sort.js +377 -0
- package/dist/thread/runtime/avm2/natives/string.js +132 -0
- package/dist/thread/runtime/avm2/natives/sync.js +821 -0
- package/dist/thread/runtime/avm2/natives/toplevel.js +139 -0
- package/dist/thread/runtime/avm2/natives/vector-elements.js +46 -0
- package/dist/thread/runtime/avm2/natives/vector.js +406 -0
- package/dist/thread/runtime/avm2/natives/xml/access.js +633 -0
- package/dist/thread/runtime/avm2/natives/xml/build.js +291 -0
- package/dist/thread/runtime/avm2/natives/xml/chars.js +112 -0
- package/dist/thread/runtime/avm2/natives/xml/escape.js +38 -0
- package/dist/thread/runtime/avm2/natives/xml/names.js +204 -0
- package/dist/thread/runtime/avm2/natives/xml/node.js +272 -0
- package/dist/thread/runtime/avm2/natives/xml/operators.js +69 -0
- package/dist/thread/runtime/avm2/natives/xml/parser.js +356 -0
- package/dist/thread/runtime/avm2/natives/xml/strings.js +191 -0
- package/dist/thread/runtime/avm2/natives/xml/values.js +122 -0
- package/dist/thread/runtime/avm2/natives/xml/xml.js +645 -0
- package/dist/thread/runtime/avm2/number-strings.js +110 -0
- package/dist/thread/runtime/avm2/numbers.js +558 -0
- package/dist/thread/runtime/avm2/options.js +16 -0
- package/dist/thread/runtime/avm2/player-messages.js +550 -0
- package/dist/thread/runtime/avm2/property-cache.js +135 -0
- package/dist/thread/runtime/avm2/runtime.js +2644 -0
- package/dist/thread/runtime/avm2/traits.js +509 -0
- package/dist/thread/runtime/index.js +7 -0
- package/dist/web-worker.d.ts +2 -0
- package/dist/web-worker.d.ts.map +1 -0
- package/dist/web-worker.js +20 -0
- package/dist/web-worker.js.map +1 -0
- package/dist/websocket.d.ts +4 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +27 -0
- package/dist/websocket.js.map +1 -0
- package/dist/workers.d.ts +35 -0
- package/dist/workers.d.ts.map +1 -0
- package/dist/workers.js +171 -0
- package/dist/workers.js.map +1 -0
- package/package.json +62 -3
- package/src/indexeddb.ts +227 -0
- package/src/node-worker.ts +13 -0
- package/src/node.ts +49 -0
- package/src/precompiled.ts +166 -0
- package/src/stage3d.ts +76 -0
- package/src/web-worker.ts +24 -0
- package/src/websocket.ts +32 -0
- package/src/workers.ts +255 -0
|
@@ -0,0 +1,707 @@
|
|
|
1
|
+
// flash.text.TextField and TextFormat: a field's text and formats as a
|
|
2
|
+
// TextModel (text/text.ts), its properties as adl reports them; a TextFormat's
|
|
3
|
+
// values stored as Flash converts them, null for one it does not set.
|
|
4
|
+
import { avm2 } from "../../../../runtime/index.js";
|
|
5
|
+
import { CONTENT } from "../../../display/display.js";
|
|
6
|
+
import { lineOf, maxScrollV, shownLines } from "../../../text/layout.js";
|
|
7
|
+
import { applied, emptyFormat } from "../../../text/text.js";
|
|
8
|
+
import { embeddedFonts } from "./Font.js";
|
|
9
|
+
import { useSheet } from "./StyleSheet.js";
|
|
10
|
+
const ALIGNS = ["left", "center", "right", "justify", "start", "end"];
|
|
11
|
+
/** A number Flash keeps as an int: rounded, a half to even (12.7 is 13, -3.5 is -4, 10.5 is 10, 11.5 is 12). */
|
|
12
|
+
function rounded(v) {
|
|
13
|
+
// What is no number is the int nearest none, as x86's conversion gives (the corpus's `stylesheet_transform`).
|
|
14
|
+
if (!Number.isFinite(v)) {
|
|
15
|
+
return -2147483648;
|
|
16
|
+
}
|
|
17
|
+
const r = Math.round(v);
|
|
18
|
+
return r - v === 0.5 && r % 2 !== 0 ? r - 1 : r;
|
|
19
|
+
}
|
|
20
|
+
/** The line a point in the field is on, by the lines' tops and heights: -1 for none. */
|
|
21
|
+
function lineAtPoint(field, x, y) {
|
|
22
|
+
const layout = field.layout;
|
|
23
|
+
if (x < 0 || x > field.width * 20) {
|
|
24
|
+
return -1;
|
|
25
|
+
}
|
|
26
|
+
for (const [i, line] of layout.lines.entries()) {
|
|
27
|
+
if (y >= line.y && y < line.y + line.ascent + line.descent + line.leading) {
|
|
28
|
+
return i;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return -1;
|
|
32
|
+
}
|
|
33
|
+
/** The start and length of the paragraph `i` is in, as Flash gives them (Ruffle's edit_text.rs); [-1, -1] outside the text. */
|
|
34
|
+
function paragraphAt(text, i) {
|
|
35
|
+
if (i < 0 || i > text.length) {
|
|
36
|
+
return [-1, -1];
|
|
37
|
+
}
|
|
38
|
+
let start = i;
|
|
39
|
+
while (start > 0 && text[start - 1] !== "\r" && text[start - 1] !== "\n") {
|
|
40
|
+
start--;
|
|
41
|
+
}
|
|
42
|
+
if (i === text.length) {
|
|
43
|
+
return [start, text.length - start + 1];
|
|
44
|
+
}
|
|
45
|
+
let end = i;
|
|
46
|
+
while (end < text.length && text[end] !== "\r" && text[end] !== "\n") {
|
|
47
|
+
end++;
|
|
48
|
+
}
|
|
49
|
+
return [start, Math.min(end + 1, text.length) - start];
|
|
50
|
+
}
|
|
51
|
+
export function textFieldNatives(s) {
|
|
52
|
+
const natives = {};
|
|
53
|
+
const formatOf = (o) => {
|
|
54
|
+
o.$format ??= emptyFormat();
|
|
55
|
+
return o.$format;
|
|
56
|
+
};
|
|
57
|
+
/** A TextFormat object of `values`. */
|
|
58
|
+
const textFormat = (values) => {
|
|
59
|
+
const o = s.rt.construct(s.rt.classNamed("flash.text::TextFormat"));
|
|
60
|
+
o.$format = { ...values, tabStops: values.tabStops ? [...values.tabStops] : null };
|
|
61
|
+
return o;
|
|
62
|
+
};
|
|
63
|
+
/** The text or the field changed: drawn again, and fitted to its text under autoSize. */
|
|
64
|
+
const changed = (o) => {
|
|
65
|
+
o.$display.invalidate(CONTENT);
|
|
66
|
+
o.$display.fit();
|
|
67
|
+
};
|
|
68
|
+
/** A line's index, or RangeError 2006 past the lines. */
|
|
69
|
+
const lineAt = (field, v) => {
|
|
70
|
+
const i = s.rt.toInt(v);
|
|
71
|
+
if (i < 0 || i >= field.layout.lines.length) {
|
|
72
|
+
throw s.rt.error("RangeError", 2006);
|
|
73
|
+
}
|
|
74
|
+
return i;
|
|
75
|
+
};
|
|
76
|
+
/** [begin, end) as getTextFormat and setTextFormat take them: -1 for the start or the end; RangeError 2006 past them. */
|
|
77
|
+
const range = (field, begin, end) => {
|
|
78
|
+
const length = field.model.text.length;
|
|
79
|
+
const b = begin === undefined || s.rt.toInt(begin) === -1 ? 0 : s.rt.toInt(begin);
|
|
80
|
+
const e = end === undefined || s.rt.toInt(end) === -1 ? length : s.rt.toInt(end);
|
|
81
|
+
if (b < 0 || e < b || e > length) {
|
|
82
|
+
throw s.rt.error("RangeError", 2006);
|
|
83
|
+
}
|
|
84
|
+
return [b, e];
|
|
85
|
+
};
|
|
86
|
+
const choice = (v, allowed, name) => {
|
|
87
|
+
const value = s.rt.toString(v);
|
|
88
|
+
if (!allowed.includes(value)) {
|
|
89
|
+
throw s.rt.error("ArgumentError", 2008, name);
|
|
90
|
+
}
|
|
91
|
+
return value;
|
|
92
|
+
};
|
|
93
|
+
class TextFormatNatives {
|
|
94
|
+
get font() {
|
|
95
|
+
return formatOf(this).font;
|
|
96
|
+
}
|
|
97
|
+
set font(v) {
|
|
98
|
+
formatOf(this).font = v === null || v === undefined ? null : s.rt.toString(v);
|
|
99
|
+
}
|
|
100
|
+
get size() {
|
|
101
|
+
return formatOf(this).size;
|
|
102
|
+
}
|
|
103
|
+
set size(v) {
|
|
104
|
+
formatOf(this).size = v === null || v === undefined ? null : rounded(s.rt.toNumber(v));
|
|
105
|
+
}
|
|
106
|
+
get color() {
|
|
107
|
+
return formatOf(this).color;
|
|
108
|
+
}
|
|
109
|
+
set color(v) {
|
|
110
|
+
formatOf(this).color = v === null || v === undefined ? null : rounded(s.rt.toNumber(v));
|
|
111
|
+
}
|
|
112
|
+
get bold() {
|
|
113
|
+
return formatOf(this).bold;
|
|
114
|
+
}
|
|
115
|
+
set bold(v) {
|
|
116
|
+
formatOf(this).bold = v === null || v === undefined ? null : !!v;
|
|
117
|
+
}
|
|
118
|
+
get italic() {
|
|
119
|
+
return formatOf(this).italic;
|
|
120
|
+
}
|
|
121
|
+
set italic(v) {
|
|
122
|
+
formatOf(this).italic = v === null || v === undefined ? null : !!v;
|
|
123
|
+
}
|
|
124
|
+
get underline() {
|
|
125
|
+
return formatOf(this).underline;
|
|
126
|
+
}
|
|
127
|
+
set underline(v) {
|
|
128
|
+
formatOf(this).underline = v === null || v === undefined ? null : !!v;
|
|
129
|
+
}
|
|
130
|
+
get url() {
|
|
131
|
+
return formatOf(this).url;
|
|
132
|
+
}
|
|
133
|
+
set url(v) {
|
|
134
|
+
formatOf(this).url = v === null || v === undefined ? null : s.rt.toString(v);
|
|
135
|
+
}
|
|
136
|
+
get target() {
|
|
137
|
+
return formatOf(this).target;
|
|
138
|
+
}
|
|
139
|
+
set target(v) {
|
|
140
|
+
formatOf(this).target = v === null || v === undefined ? null : s.rt.toString(v);
|
|
141
|
+
}
|
|
142
|
+
get align() {
|
|
143
|
+
return formatOf(this).align;
|
|
144
|
+
}
|
|
145
|
+
set align(v) {
|
|
146
|
+
formatOf(this).align = v === null || v === undefined ? null : choice(v, ALIGNS, "align");
|
|
147
|
+
}
|
|
148
|
+
get leftMargin() {
|
|
149
|
+
return formatOf(this).leftMargin;
|
|
150
|
+
}
|
|
151
|
+
set leftMargin(v) {
|
|
152
|
+
formatOf(this).leftMargin = v === null || v === undefined ? null : rounded(s.rt.toNumber(v));
|
|
153
|
+
}
|
|
154
|
+
get rightMargin() {
|
|
155
|
+
return formatOf(this).rightMargin;
|
|
156
|
+
}
|
|
157
|
+
set rightMargin(v) {
|
|
158
|
+
formatOf(this).rightMargin = v === null || v === undefined ? null : rounded(s.rt.toNumber(v));
|
|
159
|
+
}
|
|
160
|
+
get indent() {
|
|
161
|
+
return formatOf(this).indent;
|
|
162
|
+
}
|
|
163
|
+
set indent(v) {
|
|
164
|
+
formatOf(this).indent = v === null || v === undefined ? null : rounded(s.rt.toNumber(v));
|
|
165
|
+
}
|
|
166
|
+
get leading() {
|
|
167
|
+
return formatOf(this).leading;
|
|
168
|
+
}
|
|
169
|
+
set leading(v) {
|
|
170
|
+
formatOf(this).leading = v === null || v === undefined ? null : rounded(s.rt.toNumber(v));
|
|
171
|
+
}
|
|
172
|
+
get blockIndent() {
|
|
173
|
+
return formatOf(this).blockIndent;
|
|
174
|
+
}
|
|
175
|
+
set blockIndent(v) {
|
|
176
|
+
formatOf(this).blockIndent = v === null || v === undefined ? null : rounded(s.rt.toNumber(v));
|
|
177
|
+
}
|
|
178
|
+
get letterSpacing() {
|
|
179
|
+
return formatOf(this).letterSpacing;
|
|
180
|
+
}
|
|
181
|
+
set letterSpacing(v) {
|
|
182
|
+
formatOf(this).letterSpacing = v === null || v === undefined ? null : s.rt.toNumber(v);
|
|
183
|
+
}
|
|
184
|
+
get kerning() {
|
|
185
|
+
return formatOf(this).kerning;
|
|
186
|
+
}
|
|
187
|
+
set kerning(v) {
|
|
188
|
+
formatOf(this).kerning = v === null || v === undefined ? null : !!v;
|
|
189
|
+
}
|
|
190
|
+
get bullet() {
|
|
191
|
+
return formatOf(this).bullet;
|
|
192
|
+
}
|
|
193
|
+
set bullet(v) {
|
|
194
|
+
formatOf(this).bullet = v === null || v === undefined ? null : !!v;
|
|
195
|
+
}
|
|
196
|
+
get tabStops() {
|
|
197
|
+
const stops = formatOf(this).tabStops;
|
|
198
|
+
return stops === null ? null : s.rt.array(stops);
|
|
199
|
+
}
|
|
200
|
+
set tabStops(v) {
|
|
201
|
+
const values = v?.$a ?? null;
|
|
202
|
+
formatOf(this).tabStops =
|
|
203
|
+
values === null ? null : values.map((n) => rounded(s.rt.toNumber(n)));
|
|
204
|
+
}
|
|
205
|
+
// An unknown display is null, as adl leaves it.
|
|
206
|
+
get display() {
|
|
207
|
+
return formatOf(this).display;
|
|
208
|
+
}
|
|
209
|
+
set display(v) {
|
|
210
|
+
const value = v === null || v === undefined ? null : s.rt.toString(v);
|
|
211
|
+
formatOf(this).display =
|
|
212
|
+
value === "block" || value === "inline" || value === "none" ? value : null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
class TextFieldNatives {
|
|
216
|
+
get text() {
|
|
217
|
+
return this.$display.model.text;
|
|
218
|
+
}
|
|
219
|
+
set text(v) {
|
|
220
|
+
if (v === null || v === undefined) {
|
|
221
|
+
throw s.rt.error("TypeError", 2007, "value");
|
|
222
|
+
}
|
|
223
|
+
const field = this.$display;
|
|
224
|
+
const text = s.rt.toString(v);
|
|
225
|
+
// A field not of type input selects nothing at its start for new text.
|
|
226
|
+
// An input field keeps its selection, cut to the text, as Flash Player
|
|
227
|
+
// does in Ruffle's avm2/selection, though adl moves it to the start too.
|
|
228
|
+
const moves = field.type !== "input" && text !== field.model.text;
|
|
229
|
+
// Under a sheet, text is read as HTML too, as adl reads it.
|
|
230
|
+
if (field.styleSheet) {
|
|
231
|
+
setStyledHtml(field, text);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
field.model.setText(text);
|
|
235
|
+
}
|
|
236
|
+
if (moves) {
|
|
237
|
+
field.select(0, 0);
|
|
238
|
+
}
|
|
239
|
+
changed(this);
|
|
240
|
+
}
|
|
241
|
+
get htmlText() {
|
|
242
|
+
const field = this.$display;
|
|
243
|
+
return field.styleSheet && field.htmlSource !== null
|
|
244
|
+
? field.htmlSource
|
|
245
|
+
: field.model.toHtml();
|
|
246
|
+
}
|
|
247
|
+
set htmlText(v) {
|
|
248
|
+
if (v === null || v === undefined) {
|
|
249
|
+
throw s.rt.error("TypeError", 2007, "value");
|
|
250
|
+
}
|
|
251
|
+
// Under a sheet, the HTML it has set again is not read again.
|
|
252
|
+
if (this.$display.styleSheet) {
|
|
253
|
+
const html = s.rt.toString(v);
|
|
254
|
+
if (html !== this.$display.htmlSource) {
|
|
255
|
+
setStyledHtml(this.$display, html);
|
|
256
|
+
htmlMoves(this.$display);
|
|
257
|
+
changed(this);
|
|
258
|
+
}
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
this.$display.model.setHtml(s.rt.toString(v), this.$display.multiline, s.trimTrailingHtmlBreak);
|
|
262
|
+
htmlMoves(this.$display);
|
|
263
|
+
changed(this);
|
|
264
|
+
}
|
|
265
|
+
get length() {
|
|
266
|
+
return this.$display.model.text.length;
|
|
267
|
+
}
|
|
268
|
+
getRawText() {
|
|
269
|
+
return this.$display.model.text;
|
|
270
|
+
}
|
|
271
|
+
appendText(v) {
|
|
272
|
+
const model = this.$display.model;
|
|
273
|
+
model.replace(model.text.length, model.text.length, s.rt.toString(v));
|
|
274
|
+
// An input field keeps its selection; another's caret follows the text.
|
|
275
|
+
if (this.$display.type !== "input") {
|
|
276
|
+
caretAtEnd(this.$display);
|
|
277
|
+
}
|
|
278
|
+
changed(this);
|
|
279
|
+
}
|
|
280
|
+
replaceText(begin, end, v) {
|
|
281
|
+
if (this.$display.styleSheet) {
|
|
282
|
+
throw s.rt.error("Error", 2009);
|
|
283
|
+
}
|
|
284
|
+
const model = this.$display.model;
|
|
285
|
+
const b = Math.max(0, Math.min(model.text.length, s.rt.toInt(begin)));
|
|
286
|
+
const e = Math.max(b, Math.min(model.text.length, s.rt.toInt(end)));
|
|
287
|
+
const text = s.rt.toString(v);
|
|
288
|
+
model.replace(b, e, text);
|
|
289
|
+
// An input field keeps its selection; another's caret follows what came in.
|
|
290
|
+
if (this.$display.type !== "input") {
|
|
291
|
+
this.$display.select(b + text.length, b + text.length);
|
|
292
|
+
}
|
|
293
|
+
changed(this);
|
|
294
|
+
}
|
|
295
|
+
get textColor() {
|
|
296
|
+
const model = this.$display.model;
|
|
297
|
+
return (model.formats[0] ?? model.defaultFormat).color >>> 0;
|
|
298
|
+
}
|
|
299
|
+
/** Every character's colour and the default's, as adl sets them. */
|
|
300
|
+
set textColor(v) {
|
|
301
|
+
const color = s.rt.toUint(v);
|
|
302
|
+
const model = this.$display.model;
|
|
303
|
+
model.defaultFormat = { ...model.defaultFormat, color };
|
|
304
|
+
const change = emptyFormat();
|
|
305
|
+
change.color = color;
|
|
306
|
+
model.setFormat(change, 0, model.text.length);
|
|
307
|
+
changed(this);
|
|
308
|
+
}
|
|
309
|
+
get defaultTextFormat() {
|
|
310
|
+
return textFormat(this.$display.model.defaultFormat);
|
|
311
|
+
}
|
|
312
|
+
set defaultTextFormat(v) {
|
|
313
|
+
if (v === null || v === undefined) {
|
|
314
|
+
throw s.rt.error("TypeError", 2007, "format");
|
|
315
|
+
}
|
|
316
|
+
const model = this.$display.model;
|
|
317
|
+
model.defaultFormat = applied(model.defaultFormat, formatOf(v));
|
|
318
|
+
}
|
|
319
|
+
getTextFormat(begin = -1, end = -1) {
|
|
320
|
+
const field = this.$display;
|
|
321
|
+
const [b, e] = range(field, begin, end);
|
|
322
|
+
return textFormat(field.model.formatOf(b, e));
|
|
323
|
+
}
|
|
324
|
+
setTextFormat(format, begin = -1, end = -1) {
|
|
325
|
+
if (format === null || format === undefined) {
|
|
326
|
+
throw s.rt.error("TypeError", 2007, "format");
|
|
327
|
+
}
|
|
328
|
+
const field = this.$display;
|
|
329
|
+
const [b, e] = range(field, begin, end);
|
|
330
|
+
field.model.setFormat(formatOf(format), b, e);
|
|
331
|
+
changed(this);
|
|
332
|
+
}
|
|
333
|
+
get type() {
|
|
334
|
+
return this.$display.type;
|
|
335
|
+
}
|
|
336
|
+
set type(v) {
|
|
337
|
+
this.$display.type = choice(v, ["dynamic", "input"], "type");
|
|
338
|
+
changed(this);
|
|
339
|
+
}
|
|
340
|
+
get autoSize() {
|
|
341
|
+
return this.$display.autoSize;
|
|
342
|
+
}
|
|
343
|
+
set autoSize(v) {
|
|
344
|
+
this.$display.autoSize = choice(v, ["none", "left", "right", "center"], "autoSize");
|
|
345
|
+
this.$display.fit();
|
|
346
|
+
}
|
|
347
|
+
get antiAliasType() {
|
|
348
|
+
return this.$display.antiAliasType;
|
|
349
|
+
}
|
|
350
|
+
// An unknown one is left as it was, as adl leaves it.
|
|
351
|
+
set antiAliasType(v) {
|
|
352
|
+
const value = s.rt.toString(v);
|
|
353
|
+
if ((value === "normal" || value === "advanced") && value !== this.$display.antiAliasType) {
|
|
354
|
+
this.$display.antiAliasType = value;
|
|
355
|
+
changed(this);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
get gridFitType() {
|
|
359
|
+
return this.$display.gridFitType;
|
|
360
|
+
}
|
|
361
|
+
// An unknown one is none, as adl makes it.
|
|
362
|
+
set gridFitType(v) {
|
|
363
|
+
const value = s.rt.toString(v);
|
|
364
|
+
this.$display.gridFitType = value === "pixel" || value === "subpixel" ? value : "none";
|
|
365
|
+
this.$display.invalidate(CONTENT);
|
|
366
|
+
}
|
|
367
|
+
get border() {
|
|
368
|
+
return this.$display.border;
|
|
369
|
+
}
|
|
370
|
+
set border(v) {
|
|
371
|
+
this.$display.border = !!v;
|
|
372
|
+
changed(this);
|
|
373
|
+
}
|
|
374
|
+
get borderColor() {
|
|
375
|
+
return this.$display.borderColor;
|
|
376
|
+
}
|
|
377
|
+
set borderColor(v) {
|
|
378
|
+
this.$display.borderColor = s.rt.toUint(v) & 0xffffff;
|
|
379
|
+
changed(this);
|
|
380
|
+
}
|
|
381
|
+
get background() {
|
|
382
|
+
return this.$display.background;
|
|
383
|
+
}
|
|
384
|
+
set background(v) {
|
|
385
|
+
this.$display.background = !!v;
|
|
386
|
+
changed(this);
|
|
387
|
+
}
|
|
388
|
+
get backgroundColor() {
|
|
389
|
+
return this.$display.backgroundColor;
|
|
390
|
+
}
|
|
391
|
+
set backgroundColor(v) {
|
|
392
|
+
this.$display.backgroundColor = s.rt.toUint(v) & 0xffffff;
|
|
393
|
+
changed(this);
|
|
394
|
+
}
|
|
395
|
+
get multiline() {
|
|
396
|
+
return this.$display.multiline;
|
|
397
|
+
}
|
|
398
|
+
set multiline(v) {
|
|
399
|
+
this.$display.multiline = !!v;
|
|
400
|
+
changed(this);
|
|
401
|
+
}
|
|
402
|
+
get wordWrap() {
|
|
403
|
+
return this.$display.wordWrap;
|
|
404
|
+
}
|
|
405
|
+
set wordWrap(v) {
|
|
406
|
+
this.$display.wordWrap = !!v;
|
|
407
|
+
changed(this);
|
|
408
|
+
}
|
|
409
|
+
get embedFonts() {
|
|
410
|
+
return this.$display.embedFonts;
|
|
411
|
+
}
|
|
412
|
+
set embedFonts(v) {
|
|
413
|
+
this.$display.embedFonts = !!v;
|
|
414
|
+
changed(this);
|
|
415
|
+
}
|
|
416
|
+
get selectable() {
|
|
417
|
+
return this.$display.selectable;
|
|
418
|
+
}
|
|
419
|
+
set selectable(v) {
|
|
420
|
+
this.$display.selectable = !!v;
|
|
421
|
+
}
|
|
422
|
+
get displayAsPassword() {
|
|
423
|
+
return this.$display.displayAsPassword;
|
|
424
|
+
}
|
|
425
|
+
set displayAsPassword(v) {
|
|
426
|
+
this.$display.displayAsPassword = !!v;
|
|
427
|
+
changed(this);
|
|
428
|
+
}
|
|
429
|
+
get condenseWhite() {
|
|
430
|
+
return this.$display.condenseWhite;
|
|
431
|
+
}
|
|
432
|
+
set condenseWhite(v) {
|
|
433
|
+
this.$display.condenseWhite = !!v;
|
|
434
|
+
}
|
|
435
|
+
get maxChars() {
|
|
436
|
+
return this.$display.maxChars;
|
|
437
|
+
}
|
|
438
|
+
set maxChars(v) {
|
|
439
|
+
this.$display.maxChars = s.rt.toInt(v);
|
|
440
|
+
}
|
|
441
|
+
get restrict() {
|
|
442
|
+
return this.$display.restrict;
|
|
443
|
+
}
|
|
444
|
+
set restrict(v) {
|
|
445
|
+
this.$display.restrict = v === null || v === undefined ? null : s.rt.toString(v);
|
|
446
|
+
}
|
|
447
|
+
get sharpness() {
|
|
448
|
+
return this.$display.sharpness;
|
|
449
|
+
}
|
|
450
|
+
set sharpness(v) {
|
|
451
|
+
this.$display.sharpness = s.rt.toNumber(v);
|
|
452
|
+
this.$display.invalidate(CONTENT);
|
|
453
|
+
}
|
|
454
|
+
get thickness() {
|
|
455
|
+
return this.$display.thickness;
|
|
456
|
+
}
|
|
457
|
+
set thickness(v) {
|
|
458
|
+
this.$display.thickness = s.rt.toNumber(v);
|
|
459
|
+
this.$display.invalidate(CONTENT);
|
|
460
|
+
}
|
|
461
|
+
get mouseWheelEnabled() {
|
|
462
|
+
return this.$display.mouseWheelEnabled;
|
|
463
|
+
}
|
|
464
|
+
set mouseWheelEnabled(v) {
|
|
465
|
+
this.$display.mouseWheelEnabled = !!v;
|
|
466
|
+
}
|
|
467
|
+
get alwaysShowSelection() {
|
|
468
|
+
return this.$display.alwaysShowSelection;
|
|
469
|
+
}
|
|
470
|
+
set alwaysShowSelection(v) {
|
|
471
|
+
this.$display.alwaysShowSelection = !!v;
|
|
472
|
+
}
|
|
473
|
+
get useRichTextClipboard() {
|
|
474
|
+
return this.$display.useRichTextClipboard;
|
|
475
|
+
}
|
|
476
|
+
set useRichTextClipboard(v) {
|
|
477
|
+
this.$display.useRichTextClipboard = !!v;
|
|
478
|
+
}
|
|
479
|
+
get textWidth() {
|
|
480
|
+
return this.$display.layout.width / 20;
|
|
481
|
+
}
|
|
482
|
+
get textHeight() {
|
|
483
|
+
return this.$display.layout.height / 20;
|
|
484
|
+
}
|
|
485
|
+
// Laid out now: adl's count can lag a relayout until the next.
|
|
486
|
+
get numLines() {
|
|
487
|
+
return this.$display.layout.lines.length;
|
|
488
|
+
}
|
|
489
|
+
getLineMetrics(lineIndex) {
|
|
490
|
+
const line = this.$display.layout.lines[lineAt(this.$display, lineIndex)];
|
|
491
|
+
return s.rt.construct(s.rt.classNamed("flash.text::TextLineMetrics"), line.x / 20, line.width / 20, (line.ascent + line.descent + line.leading) / 20, line.ascent / 20, line.descent / 20, line.leading / 20);
|
|
492
|
+
}
|
|
493
|
+
getLineLength(lineIndex) {
|
|
494
|
+
const line = this.$display.layout.lines[lineAt(this.$display, lineIndex)];
|
|
495
|
+
return line.end - line.start;
|
|
496
|
+
}
|
|
497
|
+
getLineOffset(lineIndex) {
|
|
498
|
+
return this.$display.layout.lines[lineAt(this.$display, lineIndex)].start;
|
|
499
|
+
}
|
|
500
|
+
getLineText(lineIndex) {
|
|
501
|
+
const line = this.$display.layout.lines[lineAt(this.$display, lineIndex)];
|
|
502
|
+
return this.$display.model.text.slice(line.start, line.end);
|
|
503
|
+
}
|
|
504
|
+
getLineIndexOfChar(charIndex) {
|
|
505
|
+
const i = s.rt.toInt(charIndex);
|
|
506
|
+
const field = this.$display;
|
|
507
|
+
if (i < 0 || i >= field.model.text.length) {
|
|
508
|
+
return -1;
|
|
509
|
+
}
|
|
510
|
+
return lineOf(field.layout, i);
|
|
511
|
+
}
|
|
512
|
+
/** Where a character is, in the field: null for one past the text, a newline, or one its font lacks. */
|
|
513
|
+
getCharBoundaries(charIndex) {
|
|
514
|
+
const i = s.rt.toInt(charIndex);
|
|
515
|
+
const field = this.$display;
|
|
516
|
+
if (i < 0 || i >= field.model.text.length) {
|
|
517
|
+
return null;
|
|
518
|
+
}
|
|
519
|
+
const line = field.layout.lines[lineOf(field.layout, i)];
|
|
520
|
+
const c = line.chars[i - line.start];
|
|
521
|
+
if (!c?.shown) {
|
|
522
|
+
return null;
|
|
523
|
+
}
|
|
524
|
+
return s.rt.construct(s.rt.classNamed("flash.geom::Rectangle"), c.x / 20, line.y / 20, c.advance / 20, (line.ascent + line.descent) / 20);
|
|
525
|
+
}
|
|
526
|
+
getLineIndexAtPoint(x, y) {
|
|
527
|
+
return lineAtPoint(this.$display, s.rt.toNumber(x) * 20, s.rt.toNumber(y) * 20);
|
|
528
|
+
}
|
|
529
|
+
getCharIndexAtPoint(x, y) {
|
|
530
|
+
const field = this.$display;
|
|
531
|
+
const px = s.rt.toNumber(x) * 20;
|
|
532
|
+
const i = lineAtPoint(field, px, s.rt.toNumber(y) * 20);
|
|
533
|
+
if (i < 0) {
|
|
534
|
+
return -1;
|
|
535
|
+
}
|
|
536
|
+
for (const c of field.layout.lines[i].chars) {
|
|
537
|
+
if (c.shown && px >= c.x && px < c.x + c.advance) {
|
|
538
|
+
return c.index;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
return -1;
|
|
542
|
+
}
|
|
543
|
+
get scrollV() {
|
|
544
|
+
return this.$display.scrollV;
|
|
545
|
+
}
|
|
546
|
+
set scrollV(v) {
|
|
547
|
+
const field = this.$display;
|
|
548
|
+
field.scrollV = Math.max(1, Math.min(s.rt.toInt(v), maxScrollV(field)));
|
|
549
|
+
changed(this);
|
|
550
|
+
}
|
|
551
|
+
get maxScrollV() {
|
|
552
|
+
return maxScrollV(this.$display);
|
|
553
|
+
}
|
|
554
|
+
get bottomScrollV() {
|
|
555
|
+
const field = this.$display;
|
|
556
|
+
return field.scrollV + shownLines(field, field.scrollV - 1) - 1;
|
|
557
|
+
}
|
|
558
|
+
get scrollH() {
|
|
559
|
+
return this.$display.scrollH;
|
|
560
|
+
}
|
|
561
|
+
set scrollH(v) {
|
|
562
|
+
this.$display.scrollH = Math.max(0, s.rt.toInt(v));
|
|
563
|
+
this.$display.invalidate(CONTENT);
|
|
564
|
+
}
|
|
565
|
+
get maxScrollH() {
|
|
566
|
+
return 0;
|
|
567
|
+
}
|
|
568
|
+
get selectionBeginIndex() {
|
|
569
|
+
return this.$display.selection[0];
|
|
570
|
+
}
|
|
571
|
+
get selectionEndIndex() {
|
|
572
|
+
return this.$display.selection[1];
|
|
573
|
+
}
|
|
574
|
+
get selectedText() {
|
|
575
|
+
const [begin, end] = this.$display.selection;
|
|
576
|
+
return this.$display.model.text.slice(begin, end);
|
|
577
|
+
}
|
|
578
|
+
get caretIndex() {
|
|
579
|
+
return this.$display.caret;
|
|
580
|
+
}
|
|
581
|
+
setSelection(begin, end) {
|
|
582
|
+
this.$display.select(s.rt.toInt(begin), s.rt.toInt(end));
|
|
583
|
+
}
|
|
584
|
+
/** The selection replaced, as typing would, and the caret after what came in. */
|
|
585
|
+
replaceSelectedText(v) {
|
|
586
|
+
if (this.$display.styleSheet) {
|
|
587
|
+
throw s.rt.error("Error", 2009);
|
|
588
|
+
}
|
|
589
|
+
const field = this.$display;
|
|
590
|
+
const [begin, end] = field.selection;
|
|
591
|
+
const text = s.rt.toString(v);
|
|
592
|
+
field.model.replace(begin, end, text);
|
|
593
|
+
field.select(begin + text.length, begin + text.length);
|
|
594
|
+
changed(this);
|
|
595
|
+
}
|
|
596
|
+
/** The runs of [begin, end) in one format each, as TextRuns. */
|
|
597
|
+
getTextRuns(begin = 0, end = 0x7fffffff) {
|
|
598
|
+
const model = this.$display.model;
|
|
599
|
+
const b = Math.max(0, s.rt.toInt(begin));
|
|
600
|
+
const e = Math.min(model.text.length, s.rt.toInt(end));
|
|
601
|
+
const runs = [];
|
|
602
|
+
for (const [from, to] of model.runs(b, e)) {
|
|
603
|
+
runs.push(s.rt.construct(s.rt.classNamed("flash.text::TextRun"), from, to, textFormat(model.formatOf(from, to))));
|
|
604
|
+
}
|
|
605
|
+
return s.rt.array(runs);
|
|
606
|
+
}
|
|
607
|
+
/** The first index of the paragraph `charIndex` is in; the text's length counts as in its last. */
|
|
608
|
+
getFirstCharInParagraph(charIndex) {
|
|
609
|
+
return paragraphAt(this.$display.model.text, s.rt.toInt(charIndex))[0];
|
|
610
|
+
}
|
|
611
|
+
/** That paragraph's length, its line end in it; at the text's length, one past the last's. */
|
|
612
|
+
getParagraphLength(charIndex) {
|
|
613
|
+
return paragraphAt(this.$display.model.text, s.rt.toInt(charIndex))[1];
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* The object an IMG of this id loaded, or null. The player reads no
|
|
617
|
+
* IMG, as adl does not: its fields drop the tag and give null for every
|
|
618
|
+
* id, by class name or URL (Ruffle's is a stub giving null).
|
|
619
|
+
*/
|
|
620
|
+
getImageReference(id) {
|
|
621
|
+
if (id === null || id === undefined) {
|
|
622
|
+
throw s.rt.error("TypeError", 2007, "name");
|
|
623
|
+
}
|
|
624
|
+
return null;
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Whether a field can draw `fontName` in `fontStyle` from an embedded
|
|
628
|
+
* font: the name in any case, a CFF font never, and a style other than
|
|
629
|
+
* "bold", "italic" or "boldItalic", in that case, regular, as adl has it.
|
|
630
|
+
*/
|
|
631
|
+
static isFontCompatible(fontName, fontStyle) {
|
|
632
|
+
if (fontName === null || fontName === undefined) {
|
|
633
|
+
return false;
|
|
634
|
+
}
|
|
635
|
+
const name = s.rt.toString(fontName).toLowerCase();
|
|
636
|
+
const style = fontStyle === null || fontStyle === undefined ? "" : s.rt.toString(fontStyle);
|
|
637
|
+
const bold = style === "bold" || style === "boldItalic";
|
|
638
|
+
const italic = style === "italic" || style === "boldItalic";
|
|
639
|
+
return embeddedFonts(s).some((font) => font.type === "font" &&
|
|
640
|
+
font.name.toLowerCase() === name &&
|
|
641
|
+
font.bold === bold &&
|
|
642
|
+
font.italic === italic);
|
|
643
|
+
}
|
|
644
|
+
/** A desktop player's: no touch selection. */
|
|
645
|
+
get textInteractionMode() {
|
|
646
|
+
return "normal";
|
|
647
|
+
}
|
|
648
|
+
get styleSheet() {
|
|
649
|
+
return this.$display.styleSheet;
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* A sheet styles the HTML set from then on, and a change to the sheet
|
|
653
|
+
* styles it again; the HTML set keeps its source for htmlText. Taken
|
|
654
|
+
* off, the text keeps the styles it had (the corpus's `edittext_stylesheet`).
|
|
655
|
+
*/
|
|
656
|
+
set styleSheet(v) {
|
|
657
|
+
const field = this.$display;
|
|
658
|
+
const sheet = v ?? null;
|
|
659
|
+
field.styleSheet = sheet;
|
|
660
|
+
if (!sheet) {
|
|
661
|
+
field.htmlSource = null;
|
|
662
|
+
field.restyle = null;
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
// adl styles the HTML again on a change to the sheet only for a field
|
|
666
|
+
// that had HTML from a sheet when given this one (`edittext_stylesheet`).
|
|
667
|
+
if (field.htmlSource === null) {
|
|
668
|
+
field.restyle = null;
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
useSheet(sheet, field);
|
|
672
|
+
field.restyle = () => {
|
|
673
|
+
if (field.htmlSource !== null) {
|
|
674
|
+
setStyledHtml(field, field.htmlSource);
|
|
675
|
+
changed({ $display: field });
|
|
676
|
+
}
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
const caretAtEnd = (field) => {
|
|
681
|
+
const end = field.model.text.length;
|
|
682
|
+
field.select(end, end);
|
|
683
|
+
};
|
|
684
|
+
/**
|
|
685
|
+
* After htmlText, a field not of type input has its caret after the text.
|
|
686
|
+
* adl does the same to an input field, which here keeps its selection, as
|
|
687
|
+
* for text (no Flash Player trace says otherwise).
|
|
688
|
+
*/
|
|
689
|
+
const htmlMoves = (field) => {
|
|
690
|
+
if (field.type !== "input") {
|
|
691
|
+
caretAtEnd(field);
|
|
692
|
+
}
|
|
693
|
+
};
|
|
694
|
+
/** `html` as the field's text, styled by its sheet's TextFormats by selector. */
|
|
695
|
+
const setStyledHtml = (field, html) => {
|
|
696
|
+
// Its private _styles, which StyleSheet's natives keep.
|
|
697
|
+
const styles = field.styleSheet.$styles ?? null;
|
|
698
|
+
field.htmlSource = html;
|
|
699
|
+
field.model.setHtml(html, field.multiline, s.trimTrailingHtmlBreak, (selector) => {
|
|
700
|
+
const style = styles ? s.rt.getProperty(styles, s.rt.publicName(selector)) : null;
|
|
701
|
+
return style && typeof style === "object" ? formatOf(style) : null;
|
|
702
|
+
});
|
|
703
|
+
};
|
|
704
|
+
avm2.registerNativeClass(natives, "flash.text::TextFormat", TextFormatNatives);
|
|
705
|
+
avm2.registerNativeClass(natives, "flash.text::TextField", TextFieldNatives);
|
|
706
|
+
return natives;
|
|
707
|
+
}
|