etro 0.6.0
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/.env +2 -0
- package/.github/workflows/nodejs.yml +27 -0
- package/CHANGELOG.md +109 -0
- package/CODE_OF_CONDUCT.md +77 -0
- package/CONTRIBUTING.md +155 -0
- package/LICENSE +674 -0
- package/README.md +57 -0
- package/dist/etro.js +3397 -0
- package/docs/effect.js.html +1215 -0
- package/docs/event.js.html +145 -0
- package/docs/index.html +81 -0
- package/docs/index.js.html +92 -0
- package/docs/layer.js.html +888 -0
- package/docs/module-effect-GaussianBlurComponent.html +345 -0
- package/docs/module-effect.Brightness.html +339 -0
- package/docs/module-effect.Channels.html +319 -0
- package/docs/module-effect.ChromaKey.html +611 -0
- package/docs/module-effect.Contrast.html +339 -0
- package/docs/module-effect.EllipticalMask.html +200 -0
- package/docs/module-effect.GaussianBlur.html +202 -0
- package/docs/module-effect.GaussianBlurHorizontal.html +242 -0
- package/docs/module-effect.GaussianBlurVertical.html +242 -0
- package/docs/module-effect.Pixelate.html +330 -0
- package/docs/module-effect.Shader.html +1227 -0
- package/docs/module-effect.Stack.html +406 -0
- package/docs/module-effect.Transform.Matrix.html +193 -0
- package/docs/module-effect.Transform.html +1174 -0
- package/docs/module-effect.html +148 -0
- package/docs/module-event.html +473 -0
- package/docs/module-index.html +186 -0
- package/docs/module-layer-Media.html +1116 -0
- package/docs/module-layer-MediaMixin.html +164 -0
- package/docs/module-layer.Audio.html +1188 -0
- package/docs/module-layer.Base.html +629 -0
- package/docs/module-layer.Image.html +1421 -0
- package/docs/module-layer.Text.html +1731 -0
- package/docs/module-layer.Video.html +1938 -0
- package/docs/module-layer.Visual.html +1698 -0
- package/docs/module-layer.html +137 -0
- package/docs/module-movie.html +3118 -0
- package/docs/module-util.Color.html +702 -0
- package/docs/module-util.Font.html +395 -0
- package/docs/module-util.html +845 -0
- package/docs/movie.js.html +689 -0
- package/docs/scripts/collapse.js +20 -0
- package/docs/scripts/linenumber.js +25 -0
- package/docs/scripts/nav.js +12 -0
- package/docs/scripts/polyfill.js +4 -0
- package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/scripts/prettify/lang-css.js +2 -0
- package/docs/scripts/prettify/prettify.js +28 -0
- package/docs/scripts/search.js +83 -0
- package/docs/styles/jsdoc.css +671 -0
- package/docs/styles/prettify.css +79 -0
- package/docs/util.js.html +503 -0
- package/eslint.conf.js +28 -0
- package/eslint.test-conf.js +4 -0
- package/examples/application/readme-screenshot.html +86 -0
- package/examples/application/video-player.html +131 -0
- package/examples/application/webcam.html +28 -0
- package/examples/introduction/audio.html +52 -0
- package/examples/introduction/effects.html +56 -0
- package/examples/introduction/export.html +70 -0
- package/examples/introduction/functions.html +35 -0
- package/examples/introduction/hello-world1.html +33 -0
- package/examples/introduction/hello-world2.html +32 -0
- package/examples/introduction/keyframes.html +67 -0
- package/examples/introduction/media.html +55 -0
- package/examples/introduction/text.html +27 -0
- package/jsdoc.conf.json +3 -0
- package/karma.conf.js +60 -0
- package/package.json +63 -0
- package/private-todo.txt +70 -0
- package/rename-file.sh +18 -0
- package/rename-versions.sh +14 -0
- package/rename.sh +22 -0
- package/rollup.config.js +31 -0
- package/screenshots/2019-08-17_0.png +0 -0
- package/scripts/gen-effect-samples.html +99 -0
- package/scripts/save-effect-samples.js +43 -0
- package/spec/assets/effect/gaussian-blur-horizontal.png +0 -0
- package/spec/assets/effect/gaussian-blur-vertical.png +0 -0
- package/spec/assets/effect/original.png +0 -0
- package/spec/assets/effect/pixelate.png +0 -0
- package/spec/assets/effect/transform/multiply.png +0 -0
- package/spec/assets/effect/transform/rotate.png +0 -0
- package/spec/assets/effect/transform/scale-fraction.png +0 -0
- package/spec/assets/effect/transform/scale.png +0 -0
- package/spec/assets/effect/transform/translate-fraction.png +0 -0
- package/spec/assets/effect/transform/translate.png +0 -0
- package/spec/assets/layer/audio.wav +0 -0
- package/spec/assets/layer/image.jpg +0 -0
- package/spec/effect.spec.js +352 -0
- package/spec/event.spec.js +25 -0
- package/spec/layer.spec.js +128 -0
- package/spec/movie.spec.js +154 -0
- package/spec/util.spec.js +285 -0
- package/src/effect.js +1265 -0
- package/src/event.js +78 -0
- package/src/index.js +23 -0
- package/src/layer.js +875 -0
- package/src/movie.js +636 -0
- package/src/util.js +487 -0
package/src/event.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module event
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const listeners = new WeakMap()
|
|
6
|
+
|
|
7
|
+
class TypeId {
|
|
8
|
+
constructor (id) {
|
|
9
|
+
this.parts = id.split('.')
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
contains (other) {
|
|
13
|
+
if (other.length > this.length) {
|
|
14
|
+
return false
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
for (let i = 0; i < other.parts.length; i++) {
|
|
18
|
+
if (other.parts[i] !== this.parts[i]) {
|
|
19
|
+
return false
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return true
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
toString () {
|
|
26
|
+
return this.parts.join('.')
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Emits an event to all listeners
|
|
32
|
+
*
|
|
33
|
+
* @param {object} target - a Etro object
|
|
34
|
+
* @param {string} type - the id of the type (can contain subtypes, such as "type.subtype")
|
|
35
|
+
* @param {function} listener
|
|
36
|
+
*/
|
|
37
|
+
export function subscribe (target, type, listener) {
|
|
38
|
+
if (!listeners.has(target)) {
|
|
39
|
+
listeners.set(target, [])
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
listeners.get(target).push(
|
|
43
|
+
{ type: new TypeId(type), listener }
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Emits an event to all listeners
|
|
49
|
+
*
|
|
50
|
+
* @param {object} target - a Etro object
|
|
51
|
+
* @param {string} type - the id of the type (can contain subtypes, such as "type.subtype")
|
|
52
|
+
* @param {object} event - any additional event data
|
|
53
|
+
*/
|
|
54
|
+
export function publish (target, type, event) {
|
|
55
|
+
event.target = target // could be a proxy
|
|
56
|
+
event.type = type
|
|
57
|
+
|
|
58
|
+
const t = new TypeId(type)
|
|
59
|
+
|
|
60
|
+
if (!listeners.has(target)) {
|
|
61
|
+
return null // no event fired
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const listenersForType = []
|
|
65
|
+
for (let i = 0; i < listeners.get(target).length; i++) {
|
|
66
|
+
const item = listeners.get(target)[i]
|
|
67
|
+
if (t.contains(item.type)) {
|
|
68
|
+
listenersForType.push(item.listener)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
for (let i = 0; i < listenersForType.length; i++) {
|
|
73
|
+
const listener = listenersForType[i]
|
|
74
|
+
listener(event)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return event
|
|
78
|
+
}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The entry point
|
|
3
|
+
* @module index
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// TODO: investigate possibility of changing movie (canvas) width/height after layers added
|
|
7
|
+
// I think it's fine, but still make sure
|
|
8
|
+
// TODO: create built-in audio gain node for volume control in movie and/or layer
|
|
9
|
+
// TODO: figure out InvalidStateError in beginning only when reloaded
|
|
10
|
+
|
|
11
|
+
import Movie from './movie.js'
|
|
12
|
+
import * as layers from './layer.js'
|
|
13
|
+
import * as effects from './effect.js'
|
|
14
|
+
import * as event from './event.js'
|
|
15
|
+
import * as util from './util.js'
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
Movie: Movie,
|
|
19
|
+
layer: layers,
|
|
20
|
+
effect: effects,
|
|
21
|
+
event,
|
|
22
|
+
...util
|
|
23
|
+
}
|