@swf2es/runtime 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 +422 -0
- package/README.md +29 -2
- package/dist/avm1/activation.d.ts +108 -0
- package/dist/avm1/activation.d.ts.map +1 -0
- package/dist/avm1/activation.js +90 -0
- package/dist/avm1/activation.js.map +1 -0
- package/dist/avm1/case.d.ts +3 -0
- package/dist/avm1/case.d.ts.map +1 -0
- package/dist/avm1/case.js +250 -0
- package/dist/avm1/case.js.map +1 -0
- package/dist/avm1/clips.d.ts +68 -0
- package/dist/avm1/clips.d.ts.map +1 -0
- package/dist/avm1/clips.js +335 -0
- package/dist/avm1/clips.js.map +1 -0
- package/dist/avm1/control.d.ts +54 -0
- package/dist/avm1/control.d.ts.map +1 -0
- package/dist/avm1/control.js +281 -0
- package/dist/avm1/control.js.map +1 -0
- package/dist/avm1/errors.d.ts +49 -0
- package/dist/avm1/errors.d.ts.map +1 -0
- package/dist/avm1/errors.js +51 -0
- package/dist/avm1/errors.js.map +1 -0
- package/dist/avm1/functions.d.ts +94 -0
- package/dist/avm1/functions.d.ts.map +1 -0
- package/dist/avm1/functions.js +250 -0
- package/dist/avm1/functions.js.map +1 -0
- package/dist/avm1/globals/array.d.ts +8 -0
- package/dist/avm1/globals/array.d.ts.map +1 -0
- package/dist/avm1/globals/array.js +550 -0
- package/dist/avm1/globals/array.js.map +1 -0
- package/dist/avm1/globals/broadcaster.d.ts +22 -0
- package/dist/avm1/globals/broadcaster.d.ts.map +1 -0
- package/dist/avm1/globals/broadcaster.js +132 -0
- package/dist/avm1/globals/broadcaster.js.map +1 -0
- package/dist/avm1/globals/date.d.ts +10 -0
- package/dist/avm1/globals/date.d.ts.map +1 -0
- package/dist/avm1/globals/date.js +437 -0
- package/dist/avm1/globals/date.js.map +1 -0
- package/dist/avm1/globals/global.d.ts +23 -0
- package/dist/avm1/globals/global.d.ts.map +1 -0
- package/dist/avm1/globals/global.js +345 -0
- package/dist/avm1/globals/global.js.map +1 -0
- package/dist/avm1/globals/math.d.ts +7 -0
- package/dist/avm1/globals/math.d.ts.map +1 -0
- package/dist/avm1/globals/math.js +140 -0
- package/dist/avm1/globals/math.js.map +1 -0
- package/dist/avm1/globals/number.d.ts +11 -0
- package/dist/avm1/globals/number.d.ts.map +1 -0
- package/dist/avm1/globals/number.js +94 -0
- package/dist/avm1/globals/number.js.map +1 -0
- package/dist/avm1/globals/string.d.ts +8 -0
- package/dist/avm1/globals/string.d.ts.map +1 -0
- package/dist/avm1/globals/string.js +202 -0
- package/dist/avm1/globals/string.js.map +1 -0
- package/dist/avm1/globals/timers.d.ts +49 -0
- package/dist/avm1/globals/timers.d.ts.map +1 -0
- package/dist/avm1/globals/timers.js +130 -0
- package/dist/avm1/globals/timers.js.map +1 -0
- package/dist/avm1/host.d.ts +146 -0
- package/dist/avm1/host.d.ts.map +1 -0
- package/dist/avm1/host.js +6 -0
- package/dist/avm1/host.js.map +1 -0
- package/dist/avm1/index.d.ts +15 -0
- package/dist/avm1/index.d.ts.map +1 -0
- package/dist/avm1/index.js +15 -0
- package/dist/avm1/index.js.map +1 -0
- package/dist/avm1/inheritance.d.ts +25 -0
- package/dist/avm1/inheritance.d.ts.map +1 -0
- package/dist/avm1/inheritance.js +133 -0
- package/dist/avm1/inheritance.js.map +1 -0
- package/dist/avm1/numbers.d.ts +21 -0
- package/dist/avm1/numbers.d.ts.map +1 -0
- package/dist/avm1/numbers.js +299 -0
- package/dist/avm1/numbers.js.map +1 -0
- package/dist/avm1/objects.d.ts +245 -0
- package/dist/avm1/objects.d.ts.map +1 -0
- package/dist/avm1/objects.js +897 -0
- package/dist/avm1/objects.js.map +1 -0
- package/dist/avm1/operators.d.ts +45 -0
- package/dist/avm1/operators.d.ts.map +1 -0
- package/dist/avm1/operators.js +171 -0
- package/dist/avm1/operators.js.map +1 -0
- package/dist/avm1/realm.d.ts +126 -0
- package/dist/avm1/realm.d.ts.map +1 -0
- package/dist/avm1/realm.js +530 -0
- package/dist/avm1/realm.js.map +1 -0
- package/dist/avm1/runtime.d.ts +294 -0
- package/dist/avm1/runtime.d.ts.map +1 -0
- package/dist/avm1/runtime.js +883 -0
- package/dist/avm1/runtime.js.map +1 -0
- package/dist/avm1/scope.d.ts +77 -0
- package/dist/avm1/scope.d.ts.map +1 -0
- package/dist/avm1/scope.js +386 -0
- package/dist/avm1/scope.js.map +1 -0
- package/dist/avm1/urls.d.ts +25 -0
- package/dist/avm1/urls.d.ts.map +1 -0
- package/dist/avm1/urls.js +181 -0
- package/dist/avm1/urls.js.map +1 -0
- package/dist/avm1/values.d.ts +52 -0
- package/dist/avm1/values.d.ts.map +1 -0
- package/dist/avm1/values.js +98 -0
- package/dist/avm1/values.js.map +1 -0
- package/dist/avm2/amf-classes.d.ts +28 -0
- package/dist/avm2/amf-classes.d.ts.map +1 -0
- package/dist/avm2/amf-classes.js +67 -0
- package/dist/avm2/amf-classes.js.map +1 -0
- package/dist/avm2/amf.d.ts +96 -0
- package/dist/avm2/amf.d.ts.map +1 -0
- package/dist/avm2/amf.js +802 -0
- package/dist/avm2/amf.js.map +1 -0
- package/dist/avm2/array-conversion.d.ts +31 -0
- package/dist/avm2/array-conversion.d.ts.map +1 -0
- package/dist/avm2/array-conversion.js +101 -0
- package/dist/avm2/array-conversion.js.map +1 -0
- package/dist/avm2/builtin-library.d.ts +2 -0
- package/dist/avm2/builtin-library.d.ts.map +1 -0
- package/dist/avm2/builtin-library.js +22 -0
- package/dist/avm2/builtin-library.js.map +1 -0
- package/dist/avm2/cache-fill.d.ts +14 -0
- package/dist/avm2/cache-fill.d.ts.map +1 -0
- package/dist/avm2/cache-fill.js +87 -0
- package/dist/avm2/cache-fill.js.map +1 -0
- package/dist/avm2/classes.d.ts +17 -0
- package/dist/avm2/classes.d.ts.map +1 -0
- package/dist/avm2/classes.js +212 -0
- package/dist/avm2/classes.js.map +1 -0
- package/dist/avm2/definitions.d.ts +28 -0
- package/dist/avm2/definitions.d.ts.map +1 -0
- package/dist/avm2/definitions.js +70 -0
- package/dist/avm2/definitions.js.map +1 -0
- package/dist/avm2/descriptors.d.ts +118 -0
- package/dist/avm2/descriptors.d.ts.map +1 -0
- package/dist/avm2/descriptors.js +6 -0
- package/dist/avm2/descriptors.js.map +1 -0
- package/dist/avm2/dictionary-keys.d.ts +73 -0
- package/dist/avm2/dictionary-keys.d.ts.map +1 -0
- package/dist/avm2/dictionary-keys.js +296 -0
- package/dist/avm2/dictionary-keys.js.map +1 -0
- package/dist/avm2/domain-memory.d.ts +23 -0
- package/dist/avm2/domain-memory.d.ts.map +1 -0
- package/dist/avm2/domain-memory.js +76 -0
- package/dist/avm2/domain-memory.js.map +1 -0
- package/dist/avm2/domain.d.ts +108 -0
- package/dist/avm2/domain.d.ts.map +1 -0
- package/dist/avm2/domain.js +281 -0
- package/dist/avm2/domain.js.map +1 -0
- package/dist/avm2/dynamic-properties.d.ts +62 -0
- package/dist/avm2/dynamic-properties.d.ts.map +1 -0
- package/dist/avm2/dynamic-properties.js +183 -0
- package/dist/avm2/dynamic-properties.js.map +1 -0
- package/dist/avm2/enumeration.d.ts +75 -0
- package/dist/avm2/enumeration.d.ts.map +1 -0
- package/dist/avm2/enumeration.js +394 -0
- package/dist/avm2/enumeration.js.map +1 -0
- package/dist/avm2/errors.d.ts +20 -0
- package/dist/avm2/errors.d.ts.map +1 -0
- package/dist/avm2/errors.js +46 -0
- package/dist/avm2/errors.js.map +1 -0
- package/dist/avm2/float-library.d.ts +2 -0
- package/dist/avm2/float-library.d.ts.map +1 -0
- package/dist/avm2/float-library.js +67 -0
- package/dist/avm2/float-library.js.map +1 -0
- package/dist/avm2/float.d.ts +9 -0
- package/dist/avm2/float.d.ts.map +1 -0
- package/dist/avm2/float.js +27 -0
- package/dist/avm2/float.js.map +1 -0
- package/dist/avm2/hooks.d.ts +77 -0
- package/dist/avm2/hooks.d.ts.map +1 -0
- package/dist/avm2/hooks.js +20 -0
- package/dist/avm2/hooks.js.map +1 -0
- package/dist/avm2/index.d.ts +32 -0
- package/dist/avm2/index.d.ts.map +1 -0
- package/dist/avm2/index.js +39 -0
- package/dist/avm2/index.js.map +1 -0
- package/dist/avm2/messages.d.ts +2 -0
- package/dist/avm2/messages.d.ts.map +1 -0
- package/dist/avm2/messages.js +178 -0
- package/dist/avm2/messages.js.map +1 -0
- package/dist/avm2/method-factories.d.ts +35 -0
- package/dist/avm2/method-factories.d.ts.map +1 -0
- package/dist/avm2/method-factories.js +96 -0
- package/dist/avm2/method-factories.js.map +1 -0
- package/dist/avm2/modules.d.ts +40 -0
- package/dist/avm2/modules.d.ts.map +1 -0
- package/dist/avm2/modules.js +106 -0
- package/dist/avm2/modules.js.map +1 -0
- package/dist/avm2/names.d.ts +143 -0
- package/dist/avm2/names.d.ts.map +1 -0
- package/dist/avm2/names.js +249 -0
- package/dist/avm2/names.js.map +1 -0
- package/dist/avm2/natives/aliases.d.ts +3 -0
- package/dist/avm2/natives/aliases.d.ts.map +1 -0
- package/dist/avm2/natives/aliases.js +48 -0
- package/dist/avm2/natives/aliases.js.map +1 -0
- package/dist/avm2/natives/array.d.ts +5 -0
- package/dist/avm2/natives/array.d.ts.map +1 -0
- package/dist/avm2/natives/array.js +391 -0
- package/dist/avm2/natives/array.js.map +1 -0
- package/dist/avm2/natives/bytearray.d.ts +180 -0
- package/dist/avm2/natives/bytearray.d.ts.map +1 -0
- package/dist/avm2/natives/bytearray.js +1228 -0
- package/dist/avm2/natives/bytearray.js.map +1 -0
- package/dist/avm2/natives/case.d.ts +5 -0
- package/dist/avm2/natives/case.d.ts.map +1 -0
- package/dist/avm2/natives/case.js +89 -0
- package/dist/avm2/natives/case.js.map +1 -0
- package/dist/avm2/natives/concurrent.d.ts +24 -0
- package/dist/avm2/natives/concurrent.d.ts.map +1 -0
- package/dist/avm2/natives/concurrent.js +200 -0
- package/dist/avm2/natives/concurrent.js.map +1 -0
- package/dist/avm2/natives/date.d.ts +5 -0
- package/dist/avm2/natives/date.d.ts.map +1 -0
- package/dist/avm2/natives/date.js +582 -0
- package/dist/avm2/natives/date.js.map +1 -0
- package/dist/avm2/natives/define.d.ts +58 -0
- package/dist/avm2/natives/define.d.ts.map +1 -0
- package/dist/avm2/natives/define.js +131 -0
- package/dist/avm2/natives/define.js.map +1 -0
- package/dist/avm2/natives/describe.d.ts +3 -0
- package/dist/avm2/natives/describe.d.ts.map +1 -0
- package/dist/avm2/natives/describe.js +352 -0
- package/dist/avm2/natives/describe.js.map +1 -0
- package/dist/avm2/natives/dictionary.d.ts +3 -0
- package/dist/avm2/natives/dictionary.d.ts.map +1 -0
- package/dist/avm2/natives/dictionary.js +13 -0
- package/dist/avm2/natives/dictionary.js.map +1 -0
- package/dist/avm2/natives/float-vector.d.ts +20 -0
- package/dist/avm2/natives/float-vector.d.ts.map +1 -0
- package/dist/avm2/natives/float-vector.js +82 -0
- package/dist/avm2/natives/float-vector.js.map +1 -0
- package/dist/avm2/natives/float.d.ts +5 -0
- package/dist/avm2/natives/float.d.ts.map +1 -0
- package/dist/avm2/natives/float.js +97 -0
- package/dist/avm2/natives/float.js.map +1 -0
- package/dist/avm2/natives/index.d.ts +7 -0
- package/dist/avm2/natives/index.d.ts.map +1 -0
- package/dist/avm2/natives/index.js +65 -0
- package/dist/avm2/natives/index.js.map +1 -0
- package/dist/avm2/natives/json.d.ts +3 -0
- package/dist/avm2/natives/json.d.ts.map +1 -0
- package/dist/avm2/natives/json.js +515 -0
- package/dist/avm2/natives/json.js.map +1 -0
- package/dist/avm2/natives/number.d.ts +15 -0
- package/dist/avm2/natives/number.d.ts.map +1 -0
- package/dist/avm2/natives/number.js +163 -0
- package/dist/avm2/natives/number.js.map +1 -0
- package/dist/avm2/natives/object.d.ts +8 -0
- package/dist/avm2/natives/object.d.ts.map +1 -0
- package/dist/avm2/natives/object.js +238 -0
- package/dist/avm2/natives/object.js.map +1 -0
- package/dist/avm2/natives/proxy.d.ts +5 -0
- package/dist/avm2/natives/proxy.d.ts.map +1 -0
- package/dist/avm2/natives/proxy.js +76 -0
- package/dist/avm2/natives/proxy.js.map +1 -0
- package/dist/avm2/natives/regexp.d.ts +21 -0
- package/dist/avm2/natives/regexp.d.ts.map +1 -0
- package/dist/avm2/natives/regexp.js +486 -0
- package/dist/avm2/natives/regexp.js.map +1 -0
- package/dist/avm2/natives/shell-workers.d.ts +140 -0
- package/dist/avm2/natives/shell-workers.d.ts.map +1 -0
- package/dist/avm2/natives/shell-workers.js +405 -0
- package/dist/avm2/natives/shell-workers.js.map +1 -0
- package/dist/avm2/natives/shell.d.ts +12 -0
- package/dist/avm2/natives/shell.d.ts.map +1 -0
- package/dist/avm2/natives/shell.js +558 -0
- package/dist/avm2/natives/shell.js.map +1 -0
- package/dist/avm2/natives/sort.d.ts +7 -0
- package/dist/avm2/natives/sort.d.ts.map +1 -0
- package/dist/avm2/natives/sort.js +378 -0
- package/dist/avm2/natives/sort.js.map +1 -0
- package/dist/avm2/natives/string.d.ts +5 -0
- package/dist/avm2/natives/string.d.ts.map +1 -0
- package/dist/avm2/natives/string.js +133 -0
- package/dist/avm2/natives/string.js.map +1 -0
- package/dist/avm2/natives/sync.d.ts +215 -0
- package/dist/avm2/natives/sync.d.ts.map +1 -0
- package/dist/avm2/natives/sync.js +822 -0
- package/dist/avm2/natives/sync.js.map +1 -0
- package/dist/avm2/natives/toplevel.d.ts +5 -0
- package/dist/avm2/natives/toplevel.d.ts.map +1 -0
- package/dist/avm2/natives/toplevel.js +140 -0
- package/dist/avm2/natives/toplevel.js.map +1 -0
- package/dist/avm2/natives/vector-elements.d.ts +10 -0
- package/dist/avm2/natives/vector-elements.d.ts.map +1 -0
- package/dist/avm2/natives/vector-elements.js +47 -0
- package/dist/avm2/natives/vector-elements.js.map +1 -0
- package/dist/avm2/natives/vector.d.ts +5 -0
- package/dist/avm2/natives/vector.d.ts.map +1 -0
- package/dist/avm2/natives/vector.js +407 -0
- package/dist/avm2/natives/vector.js.map +1 -0
- package/dist/avm2/natives/xml/access.d.ts +34 -0
- package/dist/avm2/natives/xml/access.d.ts.map +1 -0
- package/dist/avm2/natives/xml/access.js +634 -0
- package/dist/avm2/natives/xml/access.js.map +1 -0
- package/dist/avm2/natives/xml/build.d.ts +11 -0
- package/dist/avm2/natives/xml/build.d.ts.map +1 -0
- package/dist/avm2/natives/xml/build.js +292 -0
- package/dist/avm2/natives/xml/build.js.map +1 -0
- package/dist/avm2/natives/xml/chars.d.ts +9 -0
- package/dist/avm2/natives/xml/chars.d.ts.map +1 -0
- package/dist/avm2/natives/xml/chars.js +113 -0
- package/dist/avm2/natives/xml/chars.js.map +1 -0
- package/dist/avm2/natives/xml/escape.d.ts +5 -0
- package/dist/avm2/natives/xml/escape.d.ts.map +1 -0
- package/dist/avm2/natives/xml/escape.js +39 -0
- package/dist/avm2/natives/xml/escape.js.map +1 -0
- package/dist/avm2/natives/xml/names.d.ts +46 -0
- package/dist/avm2/natives/xml/names.d.ts.map +1 -0
- package/dist/avm2/natives/xml/names.js +205 -0
- package/dist/avm2/natives/xml/names.js.map +1 -0
- package/dist/avm2/natives/xml/node.d.ts +94 -0
- package/dist/avm2/natives/xml/node.d.ts.map +1 -0
- package/dist/avm2/natives/xml/node.js +273 -0
- package/dist/avm2/natives/xml/node.js.map +1 -0
- package/dist/avm2/natives/xml/operators.d.ts +7 -0
- package/dist/avm2/natives/xml/operators.d.ts.map +1 -0
- package/dist/avm2/natives/xml/operators.js +70 -0
- package/dist/avm2/natives/xml/operators.js.map +1 -0
- package/dist/avm2/natives/xml/parser.d.ts +51 -0
- package/dist/avm2/natives/xml/parser.d.ts.map +1 -0
- package/dist/avm2/natives/xml/parser.js +357 -0
- package/dist/avm2/natives/xml/parser.js.map +1 -0
- package/dist/avm2/natives/xml/strings.d.ts +10 -0
- package/dist/avm2/natives/xml/strings.d.ts.map +1 -0
- package/dist/avm2/natives/xml/strings.js +192 -0
- package/dist/avm2/natives/xml/strings.js.map +1 -0
- package/dist/avm2/natives/xml/values.d.ts +48 -0
- package/dist/avm2/natives/xml/values.d.ts.map +1 -0
- package/dist/avm2/natives/xml/values.js +123 -0
- package/dist/avm2/natives/xml/values.js.map +1 -0
- package/dist/avm2/natives/xml/xml.d.ts +5 -0
- package/dist/avm2/natives/xml/xml.d.ts.map +1 -0
- package/dist/avm2/natives/xml/xml.js +646 -0
- package/dist/avm2/natives/xml/xml.js.map +1 -0
- package/dist/avm2/number-strings.d.ts +28 -0
- package/dist/avm2/number-strings.d.ts.map +1 -0
- package/dist/avm2/number-strings.js +111 -0
- package/dist/avm2/number-strings.js.map +1 -0
- package/dist/avm2/numbers.d.ts +12 -0
- package/dist/avm2/numbers.d.ts.map +1 -0
- package/dist/avm2/numbers.js +559 -0
- package/dist/avm2/numbers.js.map +1 -0
- package/dist/avm2/options.d.ts +105 -0
- package/dist/avm2/options.d.ts.map +1 -0
- package/dist/avm2/options.js +17 -0
- package/dist/avm2/options.js.map +1 -0
- package/dist/avm2/player-messages.d.ts +3 -0
- package/dist/avm2/player-messages.d.ts.map +1 -0
- package/dist/avm2/player-messages.js +551 -0
- package/dist/avm2/player-messages.js.map +1 -0
- package/dist/avm2/property-cache.d.ts +61 -0
- package/dist/avm2/property-cache.d.ts.map +1 -0
- package/dist/avm2/property-cache.js +136 -0
- package/dist/avm2/property-cache.js.map +1 -0
- package/dist/avm2/runtime.d.ts +588 -0
- package/dist/avm2/runtime.d.ts.map +1 -0
- package/dist/avm2/runtime.js +2645 -0
- package/dist/avm2/runtime.js.map +1 -0
- package/dist/avm2/traits.d.ts +233 -0
- package/dist/avm2/traits.d.ts.map +1 -0
- package/dist/avm2/traits.js +510 -0
- package/dist/avm2/traits.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -3
- package/src/avm1/activation.ts +114 -0
- package/src/avm1/case.ts +257 -0
- package/src/avm1/clips.ts +440 -0
- package/src/avm1/control.ts +339 -0
- package/src/avm1/errors.ts +60 -0
- package/src/avm1/functions.ts +271 -0
- package/src/avm1/globals/array.ts +676 -0
- package/src/avm1/globals/broadcaster.ts +185 -0
- package/src/avm1/globals/date.ts +548 -0
- package/src/avm1/globals/global.ts +420 -0
- package/src/avm1/globals/math.ts +152 -0
- package/src/avm1/globals/number.ts +122 -0
- package/src/avm1/globals/string.ts +254 -0
- package/src/avm1/globals/timers.ts +144 -0
- package/src/avm1/host.ts +155 -0
- package/src/avm1/index.ts +69 -0
- package/src/avm1/inheritance.ts +159 -0
- package/src/avm1/numbers.ts +348 -0
- package/src/avm1/objects.ts +1080 -0
- package/src/avm1/operators.ts +229 -0
- package/src/avm1/realm.ts +704 -0
- package/src/avm1/runtime.ts +1291 -0
- package/src/avm1/scope.ts +482 -0
- package/src/avm1/urls.ts +226 -0
- package/src/avm1/values.ts +145 -0
- package/src/avm2/amf-classes.ts +80 -0
- package/src/avm2/amf.ts +913 -0
- package/src/avm2/array-conversion.ts +117 -0
- package/src/avm2/builtin-library.ts +28 -0
- package/src/avm2/cache-fill.ts +124 -0
- package/src/avm2/classes.ts +235 -0
- package/src/avm2/definitions.ts +93 -0
- package/src/avm2/descriptors.ts +137 -0
- package/src/avm2/dictionary-keys.ts +345 -0
- package/src/avm2/domain-memory.ts +95 -0
- package/src/avm2/domain.ts +335 -0
- package/src/avm2/dynamic-properties.ts +209 -0
- package/src/avm2/enumeration.ts +506 -0
- package/src/avm2/errors.ts +54 -0
- package/src/avm2/float-library.ts +66 -0
- package/src/avm2/float.ts +31 -0
- package/src/avm2/hooks.ts +97 -0
- package/src/avm2/index.ts +84 -0
- package/src/avm2/messages.ts +178 -0
- package/src/avm2/method-factories.ts +130 -0
- package/src/avm2/modules.ts +120 -0
- package/src/avm2/names.ts +292 -0
- package/src/avm2/natives/aliases.ts +59 -0
- package/src/avm2/natives/array.ts +482 -0
- package/src/avm2/natives/bytearray.ts +1474 -0
- package/src/avm2/natives/case.ts +98 -0
- package/src/avm2/natives/concurrent.ts +268 -0
- package/src/avm2/natives/date.ts +678 -0
- package/src/avm2/natives/define.ts +176 -0
- package/src/avm2/natives/describe.ts +426 -0
- package/src/avm2/natives/dictionary.ts +18 -0
- package/src/avm2/natives/float-vector.ts +99 -0
- package/src/avm2/natives/float.ts +116 -0
- package/src/avm2/natives/index.ts +70 -0
- package/src/avm2/natives/json.ts +600 -0
- package/src/avm2/natives/number.ts +194 -0
- package/src/avm2/natives/object.ts +272 -0
- package/src/avm2/natives/proxy.ts +98 -0
- package/src/avm2/natives/regexp.ts +580 -0
- package/src/avm2/natives/shell-workers.ts +474 -0
- package/src/avm2/natives/shell.ts +707 -0
- package/src/avm2/natives/sort.ts +438 -0
- package/src/avm2/natives/string.ts +158 -0
- package/src/avm2/natives/sync.ts +964 -0
- package/src/avm2/natives/toplevel.ts +163 -0
- package/src/avm2/natives/vector-elements.ts +61 -0
- package/src/avm2/natives/vector.ts +511 -0
- package/src/avm2/natives/xml/access.ts +767 -0
- package/src/avm2/natives/xml/build.ts +381 -0
- package/src/avm2/natives/xml/chars.ts +127 -0
- package/src/avm2/natives/xml/escape.ts +46 -0
- package/src/avm2/natives/xml/names.ts +256 -0
- package/src/avm2/natives/xml/node.ts +339 -0
- package/src/avm2/natives/xml/operators.ts +90 -0
- package/src/avm2/natives/xml/parser.ts +414 -0
- package/src/avm2/natives/xml/strings.ts +241 -0
- package/src/avm2/natives/xml/values.ts +162 -0
- package/src/avm2/natives/xml/xml.ts +829 -0
- package/src/avm2/number-strings.ts +127 -0
- package/src/avm2/numbers.ts +605 -0
- package/src/avm2/options.ts +125 -0
- package/src/avm2/player-messages.ts +552 -0
- package/src/avm2/property-cache.ts +160 -0
- package/src/avm2/runtime.ts +3274 -0
- package/src/avm2/traits.ts +584 -0
- package/src/index.ts +8 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
// AVM1's actions on clips: targets (SetTarget, SetTarget2), properties by
|
|
2
|
+
// index (GetProperty, SetProperty), the timeline actions (GotoFrame,
|
|
3
|
+
// GotoFrame2, GotoLabel, NextFrame, PrevFrame, WaitForFrame, CallFrame)
|
|
4
|
+
// and TargetPath, as Ruffle's (https://github.com/ruffle-rs/ruffle)
|
|
5
|
+
// core/src/avm1/activation.rs and globals/movie_clip.rs (goto_frame) have
|
|
6
|
+
// them: MIT OR Apache-2.0, Copyright (c) 2018-2022 Ruffle LLC and Ruffle
|
|
7
|
+
// contributors. Where adl parts from Ruffle, adl decides (docs/avm1.md,
|
|
8
|
+
// "Clips and paths").
|
|
9
|
+
//
|
|
10
|
+
// What needs the display list the player gives through the host: a
|
|
11
|
+
// target's AVM1 object and timeline, and each clip's DisplayNative.
|
|
12
|
+
import type { Activation } from "./activation.js";
|
|
13
|
+
import type { Target, Timeline } from "./host.js";
|
|
14
|
+
import { PRIMITIVE } from "./inheritance.js";
|
|
15
|
+
import { Avm1Object } from "./objects.js";
|
|
16
|
+
import { toInt32 } from "./operators.js";
|
|
17
|
+
import { SCOPE_Target, Scope, stoppedAtPrimitive, targetPath } from "./scope.js";
|
|
18
|
+
import { stringOf, toBoolean, toNumber, type Value } from "./values.js";
|
|
19
|
+
|
|
20
|
+
/** The target, or where SetTarget found none, the root: where GotoFrame2 and a function's `this` go. */
|
|
21
|
+
export function targetOrRoot(cx: Activation): Target {
|
|
22
|
+
if (cx.target !== null) {
|
|
23
|
+
return cx.target;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const root = cx.host.root?.(cx.base);
|
|
27
|
+
return (root instanceof Avm1Object ? cx.host.clipOf?.(root) : undefined) ?? cx.base;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** The target's timeline, where it is a clip. */
|
|
31
|
+
const timelineOf = (cx: Activation, target: Target | null): Timeline | null =>
|
|
32
|
+
target === null ? null : (cx.host.timeline?.(target) ?? null);
|
|
33
|
+
|
|
34
|
+
/** `scope` with its timeline's scope, a clip's, now `object`'s, as tellTarget makes it. */
|
|
35
|
+
function retarget(scope: Scope, object: Avm1Object): Scope {
|
|
36
|
+
if (scope.kind === SCOPE_Target) {
|
|
37
|
+
return new Scope(scope.parent, SCOPE_Target, object, scope.depth);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return scope.parent === null
|
|
41
|
+
? scope
|
|
42
|
+
: new Scope(retarget(scope.parent, object), scope.kind, scope.object, scope.depth);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** The target `target` from here on: names resolve on its clip, or the root's where there is none. */
|
|
46
|
+
function setTargetClip(cx: Activation, target: Target | null): void {
|
|
47
|
+
cx.target = target !== null && cx.host.removed?.(target) ? null : target;
|
|
48
|
+
const clip = cx.host.objectOf?.(targetOrRoot(cx));
|
|
49
|
+
if (clip !== undefined) {
|
|
50
|
+
cx.clip = clip;
|
|
51
|
+
cx.scope = retarget(cx.scope, clip);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** The display object a path from `start`'s AVM1 object names, null for none or no display object. */
|
|
56
|
+
export function pathTarget(
|
|
57
|
+
cx: Activation,
|
|
58
|
+
start: Target,
|
|
59
|
+
path: string,
|
|
60
|
+
version: number,
|
|
61
|
+
): Target | null {
|
|
62
|
+
const from = cx.host.objectOf?.(start);
|
|
63
|
+
if (from === undefined) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const object = targetPath(cx, from, path, true, false, version);
|
|
68
|
+
if (object === null && stoppedAtPrimitive && version >= 5) {
|
|
69
|
+
cx.host.trace(PRIMITIVE);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return object === null ? null : (cx.host.clipOf?.(object) ?? null);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* SetTarget: the clip `path` names from the code's own clip, that clip
|
|
77
|
+
* for "", none where it names none or the code's clip is gone.
|
|
78
|
+
*/
|
|
79
|
+
export function setTarget(cx: Activation, path: string, version: number): void {
|
|
80
|
+
if (path === "") {
|
|
81
|
+
setTargetClip(cx, cx.base);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const removed = cx.host.removed?.(cx.base) ?? false;
|
|
86
|
+
setTargetClip(cx, removed ? null : pathTarget(cx, cx.base, path, version));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* SetTarget2: as SetTarget of the value as a string, but undefined is the
|
|
91
|
+
* code's own clip up to SWF 6 and none from 7; nothing where that clip is
|
|
92
|
+
* gone.
|
|
93
|
+
*/
|
|
94
|
+
export function setTarget2(cx: Activation, value: Value, version: number): void {
|
|
95
|
+
if (cx.host.removed?.(cx.base)) {
|
|
96
|
+
cx.target = null;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (value === undefined) {
|
|
101
|
+
if (version > 6) {
|
|
102
|
+
cx.target = null;
|
|
103
|
+
const clip = cx.host.objectOf?.(cx.base);
|
|
104
|
+
if (clip !== undefined) {
|
|
105
|
+
cx.clip = cx.host.objectOf?.(targetOrRoot(cx)) ?? clip;
|
|
106
|
+
cx.scope = retarget(cx.scope, clip);
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
setTargetClip(cx, cx.base);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
setTarget(cx, stringOf(value, version), version);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* The display object a GetProperty or SetProperty names: a clip's AVM1
|
|
120
|
+
* object itself, else the path it converts to, from `start`; the empty
|
|
121
|
+
* path is `start` where `empty`, else none.
|
|
122
|
+
*/
|
|
123
|
+
function displayOf(
|
|
124
|
+
cx: Activation,
|
|
125
|
+
start: Target,
|
|
126
|
+
value: Value,
|
|
127
|
+
empty: boolean,
|
|
128
|
+
version: number,
|
|
129
|
+
): Target | null {
|
|
130
|
+
if (value instanceof Avm1Object && value.display !== null) {
|
|
131
|
+
return value.display.target;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const path = stringOf(value, version);
|
|
135
|
+
if (!empty && path === "") {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return pathTarget(cx, start, path, version);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** What GetProperty and SetProperty act on: from the target, or from the code's clip where there is none. */
|
|
143
|
+
const propertyTarget = (cx: Activation, path: Value, version: number): Target | null =>
|
|
144
|
+
cx.target !== null
|
|
145
|
+
? displayOf(cx, cx.target, path, true, version)
|
|
146
|
+
: displayOf(cx, cx.base, path, false, version);
|
|
147
|
+
|
|
148
|
+
/** A property's index: the number truncated, none for NaN, an infinity or -1 and below. */
|
|
149
|
+
function indexOf(index: Value, version: number): number {
|
|
150
|
+
const n = toNumber(index, version);
|
|
151
|
+
return Number.isFinite(n) && n > -1 ? Math.trunc(n) : -1;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/** GetProperty: property `index` of the clip `path` names, undefined for none. */
|
|
155
|
+
export function getProperty(cx: Activation, index: Value, path: Value, version: number): Value {
|
|
156
|
+
const i = indexOf(index, version);
|
|
157
|
+
const target = propertyTarget(cx, path, version);
|
|
158
|
+
if (target === null || i < 0) {
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return cx.host.objectOf?.(target).display?.property(i, version);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** SetProperty: property `index` of the clip `path` names set to `value`. */
|
|
166
|
+
export function setProperty(
|
|
167
|
+
cx: Activation,
|
|
168
|
+
value: Value,
|
|
169
|
+
index: Value,
|
|
170
|
+
path: Value,
|
|
171
|
+
version: number,
|
|
172
|
+
): void {
|
|
173
|
+
const i = indexOf(index, version);
|
|
174
|
+
const target = propertyTarget(cx, path, version);
|
|
175
|
+
if (target === null) {
|
|
176
|
+
// The value is converted all the same (Ruffle's action_property_coerce).
|
|
177
|
+
coerceFor(i, value, version);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (i >= 0) {
|
|
182
|
+
cx.host.objectOf?.(target).display?.setProperty(i, value, version);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* What a property's set converts its value to before it finds the target
|
|
188
|
+
* read-only or missing: a number for 0 to 12 but `_target` (11), a string
|
|
189
|
+
* for `_name` and `_quality`, a number for the rest but `_focusrect`.
|
|
190
|
+
*/
|
|
191
|
+
function coerceFor(index: number, value: Value, version: number): void {
|
|
192
|
+
if (index < 0 || index === 11 || index === 14 || index === 15 || index === 17) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (index <= 12) {
|
|
197
|
+
if (value !== undefined && value !== null) {
|
|
198
|
+
toNumber(value, version);
|
|
199
|
+
}
|
|
200
|
+
} else if (index === 13 || index === 19) {
|
|
201
|
+
stringOf(value, version);
|
|
202
|
+
} else if (index <= 21) {
|
|
203
|
+
toNumber(value, version);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/** GotoFrame: frame `frame` (0 the first) of the target, which stops. */
|
|
208
|
+
export function gotoFrame(cx: Activation, frame: number): void {
|
|
209
|
+
timelineOf(cx, cx.target)?.goto(frame + 1, false);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** GotoLabel: the frame of `label`, if the target has it, which stops. */
|
|
213
|
+
export function gotoLabel(cx: Activation, label: string): void {
|
|
214
|
+
const timeline = timelineOf(cx, cx.target);
|
|
215
|
+
const frame = timeline?.labelFrame(label);
|
|
216
|
+
if (frame !== undefined) {
|
|
217
|
+
timeline?.goto(frame, false);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/** GotoFrame2: as `goto` on the target, or the root where there is none, `bias` frames on. */
|
|
222
|
+
export function gotoFrame2(
|
|
223
|
+
cx: Activation,
|
|
224
|
+
frame: Value,
|
|
225
|
+
play: boolean,
|
|
226
|
+
bias: number,
|
|
227
|
+
version: number,
|
|
228
|
+
): void {
|
|
229
|
+
const target = targetOrRoot(cx);
|
|
230
|
+
if (timelineOf(cx, target) !== null) {
|
|
231
|
+
goto(cx, target, frame, play, bias, version);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/** A string as Rust reads an f64: digits with a sign, a point and an exponent, or inf and NaN; null for anything else. */
|
|
236
|
+
function parseNumber(s: string): number | null {
|
|
237
|
+
if (/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(s)) {
|
|
238
|
+
return Number(s);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (/^[+-]?(inf|infinity)$/i.test(s)) {
|
|
242
|
+
return s.startsWith("-") ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return /^[+-]?nan$/i.test(s) ? Number.NaN : null;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* The clip and the frame a goto's or CallFrame's value names from clip
|
|
250
|
+
* `start`: a whole number its frame; anything else as a string, a path to
|
|
251
|
+
* a clip and a frame, `/a/b:3` or `a.b.label`, the frame a number or a
|
|
252
|
+
* label; null where it names none.
|
|
253
|
+
*/
|
|
254
|
+
function frameOf(
|
|
255
|
+
cx: Activation,
|
|
256
|
+
start: Target,
|
|
257
|
+
value: Value,
|
|
258
|
+
version: number,
|
|
259
|
+
): [Target, number] | null {
|
|
260
|
+
if (typeof value === "number" && Number.isInteger(value)) {
|
|
261
|
+
return [start, toInt32(value, version)];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const path = stringOf(value, version);
|
|
265
|
+
let clip: Target | null = start;
|
|
266
|
+
let frame = path;
|
|
267
|
+
const separator = Math.max(path.lastIndexOf(":"), path.lastIndexOf("."));
|
|
268
|
+
if (separator >= 0) {
|
|
269
|
+
clip = null;
|
|
270
|
+
for (let s: Scope | null = cx.scope; s !== null && clip === null; s = s.parent) {
|
|
271
|
+
const object = targetPath(cx, s.object, path.slice(0, separator), true, true, version);
|
|
272
|
+
if (object !== null) {
|
|
273
|
+
clip = cx.host.clipOf?.(object) ?? null;
|
|
274
|
+
// Not a clip: none, as Ruffle's resolve_variable_path finds an object first.
|
|
275
|
+
if (clip === null) {
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
frame = path.slice(separator + 1);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const timeline = clip === null ? null : timelineOf(cx, clip);
|
|
285
|
+
if (clip === null || timeline === null) {
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
const n = parseNumber(frame);
|
|
290
|
+
if (n !== null) {
|
|
291
|
+
return [clip, toInt32(n, version)];
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const labelled = timeline.labelFrame(frame);
|
|
295
|
+
return labelled === undefined ? null : [clip, labelled];
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* A goto of `frame` on clip `target`, gotoAndPlay's and gotoAndStop's and
|
|
300
|
+
* GotoFrame2's: the frame `frameOf` names, `bias` frames on, if that is
|
|
301
|
+
* from 1; as a u16, where the timeline clamps it.
|
|
302
|
+
*/
|
|
303
|
+
export function goto(
|
|
304
|
+
cx: Activation,
|
|
305
|
+
target: Target,
|
|
306
|
+
frame: Value,
|
|
307
|
+
play: boolean,
|
|
308
|
+
bias: number,
|
|
309
|
+
version: number,
|
|
310
|
+
): void {
|
|
311
|
+
const found = frameOf(cx, target, frame, version);
|
|
312
|
+
if (found === null) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
const n = Math.min(((found[1] - 1) | 0) + bias + 1, 0x7fffffff);
|
|
317
|
+
if (n > 0) {
|
|
318
|
+
timelineOf(cx, found[0])?.goto(Math.max(1, n & 0xffff), play);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/** NextFrame: the target's next frame, if it has one, where it stops. */
|
|
323
|
+
export function nextFrame(cx: Activation): void {
|
|
324
|
+
const timeline = timelineOf(cx, cx.target);
|
|
325
|
+
if (timeline !== null && timeline.currentFrame < timeline.totalFrames) {
|
|
326
|
+
timeline.goto(timeline.currentFrame + 1, false);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/** PrevFrame: the target's previous frame, if it has one, where it stops. */
|
|
331
|
+
export function prevFrame(cx: Activation): void {
|
|
332
|
+
const timeline = timelineOf(cx, cx.target);
|
|
333
|
+
if (timeline !== null && timeline.currentFrame > 1) {
|
|
334
|
+
timeline.goto(timeline.currentFrame - 1, false);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* WaitForFrame: whether frame `frame` (0 the first) is loaded, which in a
|
|
340
|
+
* SWF the player has whole every frame is, up to Flash's 16000.
|
|
341
|
+
*/
|
|
342
|
+
export const frameLoaded = (frame: number): boolean => frame <= 16000;
|
|
343
|
+
|
|
344
|
+
/** WaitForFrame2: as WaitForFrame of the value's frame, 1 the first, read as Ruffle reads it. */
|
|
345
|
+
export function frameLoaded2(value: Value, version: number): boolean {
|
|
346
|
+
let n = 0;
|
|
347
|
+
if (typeof value === "number" && Number.isInteger(value)) {
|
|
348
|
+
n = toInt32(value, version);
|
|
349
|
+
} else {
|
|
350
|
+
const parsed = parseNumber(stringOf(value, version));
|
|
351
|
+
n = parsed !== null && Number.isInteger(parsed) ? toInt32(parsed, version) : 0;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Less one, wrapping, and one more, saturating.
|
|
355
|
+
const frame = Math.min(((n - 1) | 0) + 1, 0x7fffffff);
|
|
356
|
+
return frame <= 16001;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/** TargetPath: a clip's path, `_level0.a`, undefined for anything else. */
|
|
360
|
+
export function targetPathOf(value: Value): Value {
|
|
361
|
+
if (!(value instanceof Avm1Object) || value.display === null) {
|
|
362
|
+
return undefined;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
const live = value.display.live();
|
|
366
|
+
return live?.display?.path() ?? undefined;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/** CallFrame: the actions of the frame the value names, on the target or the root, run now. */
|
|
370
|
+
export function callFrame(cx: Activation, value: Value, version: number): void {
|
|
371
|
+
const target = targetOrRoot(cx);
|
|
372
|
+
const found =
|
|
373
|
+
typeof value === "number"
|
|
374
|
+
? ([target, toInt32(value, version) >>> 0] as [Target, number])
|
|
375
|
+
: frameOf(cx, target, value, version);
|
|
376
|
+
if (found !== null && found[1] <= 0xffff) {
|
|
377
|
+
timelineOf(cx, found[0])?.call(found[1]);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* CloneSprite: the display object `source` names from the target, or the
|
|
383
|
+
* root's where there is none, duplicated as `name` at timeline depth
|
|
384
|
+
* `depth`, which compilers bias as duplicateMovieClip's own depth is.
|
|
385
|
+
*/
|
|
386
|
+
export function cloneSprite(
|
|
387
|
+
cx: Activation,
|
|
388
|
+
depth: Value,
|
|
389
|
+
name: Value,
|
|
390
|
+
source: Value,
|
|
391
|
+
version: number,
|
|
392
|
+
): void {
|
|
393
|
+
const d = toInt32(depth, version);
|
|
394
|
+
const n = stringOf(name, version);
|
|
395
|
+
const target = displayOf(cx, targetOrRoot(cx), source, true, version);
|
|
396
|
+
if (target !== null) {
|
|
397
|
+
cx.host.duplicate?.(target, n, d);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* StartDrag, its operands on the stack: the target, whether to lock the
|
|
403
|
+
* centre, whether to constrain, and if so the bounds' right-to-left
|
|
404
|
+
* bottom, right, top and left. The display object the target names, from
|
|
405
|
+
* the code's target or the root, is dragged; an empty one is that target.
|
|
406
|
+
*/
|
|
407
|
+
export function startDrag(cx: Activation, version: number): void {
|
|
408
|
+
const st = cx.st;
|
|
409
|
+
const value = st.pop();
|
|
410
|
+
const lockCenter = toBoolean(st.pop(), version);
|
|
411
|
+
let bounds: number[] | null = null;
|
|
412
|
+
if (toBoolean(st.pop(), version)) {
|
|
413
|
+
const bottom = toNumber(st.pop(), version);
|
|
414
|
+
const right = toNumber(st.pop(), version);
|
|
415
|
+
const top = toNumber(st.pop(), version);
|
|
416
|
+
const left = toNumber(st.pop(), version);
|
|
417
|
+
bounds = [left, top, right, bottom];
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
const target = displayOf(cx, targetOrRoot(cx), value, true, version);
|
|
421
|
+
if (target !== null) {
|
|
422
|
+
cx.host.startDrag?.(target, lockCenter, bounds);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* RemoveSprite: the display object `value` names from the target, or the
|
|
428
|
+
* root's, removed; a target it removes gives way to the code's own clip.
|
|
429
|
+
*/
|
|
430
|
+
export function removeSprite(cx: Activation, value: Value, version: number): void {
|
|
431
|
+
const target = displayOf(cx, targetOrRoot(cx), value, true, version);
|
|
432
|
+
if (target === null) {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
cx.host.remove?.(target);
|
|
437
|
+
if (cx.target !== null && cx.host.removed?.(cx.target)) {
|
|
438
|
+
setTargetClip(cx, cx.base);
|
|
439
|
+
}
|
|
440
|
+
}
|