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.
Files changed (103) hide show
  1. package/.env +2 -0
  2. package/.github/workflows/nodejs.yml +27 -0
  3. package/CHANGELOG.md +109 -0
  4. package/CODE_OF_CONDUCT.md +77 -0
  5. package/CONTRIBUTING.md +155 -0
  6. package/LICENSE +674 -0
  7. package/README.md +57 -0
  8. package/dist/etro.js +3397 -0
  9. package/docs/effect.js.html +1215 -0
  10. package/docs/event.js.html +145 -0
  11. package/docs/index.html +81 -0
  12. package/docs/index.js.html +92 -0
  13. package/docs/layer.js.html +888 -0
  14. package/docs/module-effect-GaussianBlurComponent.html +345 -0
  15. package/docs/module-effect.Brightness.html +339 -0
  16. package/docs/module-effect.Channels.html +319 -0
  17. package/docs/module-effect.ChromaKey.html +611 -0
  18. package/docs/module-effect.Contrast.html +339 -0
  19. package/docs/module-effect.EllipticalMask.html +200 -0
  20. package/docs/module-effect.GaussianBlur.html +202 -0
  21. package/docs/module-effect.GaussianBlurHorizontal.html +242 -0
  22. package/docs/module-effect.GaussianBlurVertical.html +242 -0
  23. package/docs/module-effect.Pixelate.html +330 -0
  24. package/docs/module-effect.Shader.html +1227 -0
  25. package/docs/module-effect.Stack.html +406 -0
  26. package/docs/module-effect.Transform.Matrix.html +193 -0
  27. package/docs/module-effect.Transform.html +1174 -0
  28. package/docs/module-effect.html +148 -0
  29. package/docs/module-event.html +473 -0
  30. package/docs/module-index.html +186 -0
  31. package/docs/module-layer-Media.html +1116 -0
  32. package/docs/module-layer-MediaMixin.html +164 -0
  33. package/docs/module-layer.Audio.html +1188 -0
  34. package/docs/module-layer.Base.html +629 -0
  35. package/docs/module-layer.Image.html +1421 -0
  36. package/docs/module-layer.Text.html +1731 -0
  37. package/docs/module-layer.Video.html +1938 -0
  38. package/docs/module-layer.Visual.html +1698 -0
  39. package/docs/module-layer.html +137 -0
  40. package/docs/module-movie.html +3118 -0
  41. package/docs/module-util.Color.html +702 -0
  42. package/docs/module-util.Font.html +395 -0
  43. package/docs/module-util.html +845 -0
  44. package/docs/movie.js.html +689 -0
  45. package/docs/scripts/collapse.js +20 -0
  46. package/docs/scripts/linenumber.js +25 -0
  47. package/docs/scripts/nav.js +12 -0
  48. package/docs/scripts/polyfill.js +4 -0
  49. package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  50. package/docs/scripts/prettify/lang-css.js +2 -0
  51. package/docs/scripts/prettify/prettify.js +28 -0
  52. package/docs/scripts/search.js +83 -0
  53. package/docs/styles/jsdoc.css +671 -0
  54. package/docs/styles/prettify.css +79 -0
  55. package/docs/util.js.html +503 -0
  56. package/eslint.conf.js +28 -0
  57. package/eslint.test-conf.js +4 -0
  58. package/examples/application/readme-screenshot.html +86 -0
  59. package/examples/application/video-player.html +131 -0
  60. package/examples/application/webcam.html +28 -0
  61. package/examples/introduction/audio.html +52 -0
  62. package/examples/introduction/effects.html +56 -0
  63. package/examples/introduction/export.html +70 -0
  64. package/examples/introduction/functions.html +35 -0
  65. package/examples/introduction/hello-world1.html +33 -0
  66. package/examples/introduction/hello-world2.html +32 -0
  67. package/examples/introduction/keyframes.html +67 -0
  68. package/examples/introduction/media.html +55 -0
  69. package/examples/introduction/text.html +27 -0
  70. package/jsdoc.conf.json +3 -0
  71. package/karma.conf.js +60 -0
  72. package/package.json +63 -0
  73. package/private-todo.txt +70 -0
  74. package/rename-file.sh +18 -0
  75. package/rename-versions.sh +14 -0
  76. package/rename.sh +22 -0
  77. package/rollup.config.js +31 -0
  78. package/screenshots/2019-08-17_0.png +0 -0
  79. package/scripts/gen-effect-samples.html +99 -0
  80. package/scripts/save-effect-samples.js +43 -0
  81. package/spec/assets/effect/gaussian-blur-horizontal.png +0 -0
  82. package/spec/assets/effect/gaussian-blur-vertical.png +0 -0
  83. package/spec/assets/effect/original.png +0 -0
  84. package/spec/assets/effect/pixelate.png +0 -0
  85. package/spec/assets/effect/transform/multiply.png +0 -0
  86. package/spec/assets/effect/transform/rotate.png +0 -0
  87. package/spec/assets/effect/transform/scale-fraction.png +0 -0
  88. package/spec/assets/effect/transform/scale.png +0 -0
  89. package/spec/assets/effect/transform/translate-fraction.png +0 -0
  90. package/spec/assets/effect/transform/translate.png +0 -0
  91. package/spec/assets/layer/audio.wav +0 -0
  92. package/spec/assets/layer/image.jpg +0 -0
  93. package/spec/effect.spec.js +352 -0
  94. package/spec/event.spec.js +25 -0
  95. package/spec/layer.spec.js +128 -0
  96. package/spec/movie.spec.js +154 -0
  97. package/spec/util.spec.js +285 -0
  98. package/src/effect.js +1265 -0
  99. package/src/event.js +78 -0
  100. package/src/index.js +23 -0
  101. package/src/layer.js +875 -0
  102. package/src/movie.js +636 -0
  103. 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
+ }