etro 0.12.0 → 0.13.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 (237) hide show
  1. package/.github/dependabot.yml +6 -0
  2. package/.github/scripts/update-changelog.js +72 -0
  3. package/.github/workflows/dependabot-changelog.yml +57 -0
  4. package/.github/workflows/nodejs.yml +2 -2
  5. package/.vscode/settings.json +3 -0
  6. package/CHANGELOG.md +36 -0
  7. package/README.md +7 -1
  8. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/base.css +224 -0
  9. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/block-navigation.js +87 -0
  10. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/favicon.png +0 -0
  11. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/index.html +176 -0
  12. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/prettify.css +1 -0
  13. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/prettify.js +2 -0
  14. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/sort-arrow-sprite.png +0 -0
  15. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/sorter.js +196 -0
  16. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/custom-array.ts.html +214 -0
  17. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/base.ts.html +433 -0
  18. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/brightness.ts.html +214 -0
  19. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/channels.ts.html +235 -0
  20. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/chroma-key.ts.html +331 -0
  21. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/contrast.ts.html +211 -0
  22. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/elliptical-mask.ts.html +310 -0
  23. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/gaussian-blur.ts.html +796 -0
  24. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/grayscale.ts.html +187 -0
  25. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/index.html +311 -0
  26. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/index.ts.html +154 -0
  27. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/pixelate.ts.html +259 -0
  28. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/shader.ts.html +1774 -0
  29. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/stack.ts.html +358 -0
  30. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/transform.ts.html +685 -0
  31. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/visual.ts.html +148 -0
  32. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/etro.ts.html +163 -0
  33. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/event.ts.html +691 -0
  34. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/index.html +176 -0
  35. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/index.ts.html +109 -0
  36. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/audio-source.ts.html +835 -0
  37. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/audio.ts.html +241 -0
  38. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/base.ts.html +772 -0
  39. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/image.ts.html +181 -0
  40. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/index.html +236 -0
  41. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/index.ts.html +124 -0
  42. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/text.ts.html +658 -0
  43. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/video.ts.html +211 -0
  44. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/visual-source.ts.html +721 -0
  45. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/visual.ts.html +760 -0
  46. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/effects.ts.html +163 -0
  47. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/index.html +161 -0
  48. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/index.ts.html +88 -0
  49. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/layers.ts.html +163 -0
  50. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/movie.ts.html +2692 -0
  51. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/util.ts.html +1426 -0
  52. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/base.css +224 -0
  53. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/block-navigation.js +87 -0
  54. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/favicon.png +0 -0
  55. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/index.html +176 -0
  56. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/prettify.css +1 -0
  57. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/prettify.js +2 -0
  58. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/sort-arrow-sprite.png +0 -0
  59. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/sorter.js +196 -0
  60. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/custom-array.ts.html +214 -0
  61. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/base.ts.html +433 -0
  62. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/brightness.ts.html +214 -0
  63. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/channels.ts.html +235 -0
  64. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/chroma-key.ts.html +331 -0
  65. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/contrast.ts.html +211 -0
  66. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/elliptical-mask.ts.html +310 -0
  67. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/gaussian-blur.ts.html +796 -0
  68. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/grayscale.ts.html +187 -0
  69. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/index.html +311 -0
  70. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/index.ts.html +154 -0
  71. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/pixelate.ts.html +259 -0
  72. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/shader.ts.html +1948 -0
  73. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/stack.ts.html +358 -0
  74. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/transform.ts.html +685 -0
  75. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/visual.ts.html +148 -0
  76. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/etro.ts.html +163 -0
  77. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/event.ts.html +691 -0
  78. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/index.html +176 -0
  79. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/index.ts.html +109 -0
  80. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/audio-source.ts.html +835 -0
  81. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/audio.ts.html +241 -0
  82. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/base.ts.html +772 -0
  83. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/image.ts.html +181 -0
  84. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/index.html +236 -0
  85. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/index.ts.html +124 -0
  86. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/text.ts.html +658 -0
  87. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/video.ts.html +211 -0
  88. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/visual-source.ts.html +721 -0
  89. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/visual.ts.html +760 -0
  90. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/effects.ts.html +163 -0
  91. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/index.html +161 -0
  92. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/index.ts.html +88 -0
  93. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/layers.ts.html +163 -0
  94. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/movie.ts.html +2692 -0
  95. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/util.ts.html +1426 -0
  96. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/base.css +224 -0
  97. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/block-navigation.js +87 -0
  98. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/favicon.png +0 -0
  99. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/index.html +176 -0
  100. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/prettify.css +1 -0
  101. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/prettify.js +2 -0
  102. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/sort-arrow-sprite.png +0 -0
  103. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/sorter.js +196 -0
  104. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/custom-array.ts.html +214 -0
  105. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/base.ts.html +433 -0
  106. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/brightness.ts.html +214 -0
  107. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/channels.ts.html +235 -0
  108. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/chroma-key.ts.html +331 -0
  109. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/contrast.ts.html +211 -0
  110. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/elliptical-mask.ts.html +310 -0
  111. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/gaussian-blur.ts.html +790 -0
  112. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/grayscale.ts.html +187 -0
  113. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/index.html +311 -0
  114. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/index.ts.html +154 -0
  115. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/pixelate.ts.html +259 -0
  116. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/shader.ts.html +1948 -0
  117. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/stack.ts.html +358 -0
  118. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/transform.ts.html +685 -0
  119. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/visual.ts.html +148 -0
  120. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/etro.ts.html +163 -0
  121. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/event.ts.html +691 -0
  122. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/index.html +176 -0
  123. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/index.ts.html +109 -0
  124. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/audio-source.ts.html +835 -0
  125. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/audio.ts.html +241 -0
  126. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/base.ts.html +772 -0
  127. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/image.ts.html +181 -0
  128. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/index.html +236 -0
  129. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/index.ts.html +124 -0
  130. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/text.ts.html +658 -0
  131. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/video.ts.html +211 -0
  132. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/visual-source.ts.html +721 -0
  133. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/visual.ts.html +760 -0
  134. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/movie/effects.ts.html +163 -0
  135. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/movie/index.html +161 -0
  136. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/movie/index.ts.html +88 -0
  137. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/movie/layers.ts.html +163 -0
  138. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/movie/movie.ts.html +2692 -0
  139. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/util.ts.html +1426 -0
  140. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/base.css +224 -0
  141. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/block-navigation.js +87 -0
  142. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/favicon.png +0 -0
  143. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/index.html +176 -0
  144. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/prettify.css +1 -0
  145. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/prettify.js +2 -0
  146. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/sort-arrow-sprite.png +0 -0
  147. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/sorter.js +196 -0
  148. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/custom-array.ts.html +214 -0
  149. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/base.ts.html +433 -0
  150. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/brightness.ts.html +214 -0
  151. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/channels.ts.html +235 -0
  152. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/chroma-key.ts.html +331 -0
  153. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/contrast.ts.html +211 -0
  154. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/elliptical-mask.ts.html +310 -0
  155. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/gaussian-blur.ts.html +796 -0
  156. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/grayscale.ts.html +187 -0
  157. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/index.html +311 -0
  158. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/index.ts.html +154 -0
  159. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/pixelate.ts.html +259 -0
  160. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/shader.ts.html +1774 -0
  161. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/stack.ts.html +358 -0
  162. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/transform.ts.html +685 -0
  163. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/visual.ts.html +148 -0
  164. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/etro.ts.html +163 -0
  165. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/event.ts.html +691 -0
  166. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/index.html +176 -0
  167. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/index.ts.html +109 -0
  168. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/audio-source.ts.html +835 -0
  169. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/audio.ts.html +241 -0
  170. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/base.ts.html +772 -0
  171. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/image.ts.html +181 -0
  172. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/index.html +236 -0
  173. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/index.ts.html +124 -0
  174. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/text.ts.html +658 -0
  175. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/video.ts.html +211 -0
  176. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/visual-source.ts.html +721 -0
  177. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/visual.ts.html +760 -0
  178. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/effects.ts.html +163 -0
  179. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/index.html +161 -0
  180. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/index.ts.html +88 -0
  181. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/layers.ts.html +163 -0
  182. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/movie.ts.html +2698 -0
  183. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/util.ts.html +1453 -0
  184. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/base.css +224 -0
  185. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/block-navigation.js +87 -0
  186. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/favicon.png +0 -0
  187. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/index.html +161 -0
  188. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/prettify.css +1 -0
  189. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/prettify.js +2 -0
  190. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/sort-arrow-sprite.png +0 -0
  191. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/sorter.js +196 -0
  192. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/custom-array.ts.html +214 -0
  193. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/base.ts.html +433 -0
  194. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/brightness.ts.html +214 -0
  195. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/channels.ts.html +235 -0
  196. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/chroma-key.ts.html +331 -0
  197. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/contrast.ts.html +211 -0
  198. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/elliptical-mask.ts.html +310 -0
  199. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/gaussian-blur.ts.html +796 -0
  200. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/grayscale.ts.html +187 -0
  201. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/index.html +311 -0
  202. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/index.ts.html +154 -0
  203. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/pixelate.ts.html +259 -0
  204. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/shader.ts.html +1774 -0
  205. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/stack.ts.html +358 -0
  206. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/transform.ts.html +685 -0
  207. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/visual.ts.html +148 -0
  208. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/etro.ts.html +163 -0
  209. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/event.ts.html +691 -0
  210. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/index.html +176 -0
  211. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/index.ts.html +109 -0
  212. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/audio-source.ts.html +835 -0
  213. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/audio.ts.html +241 -0
  214. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/base.ts.html +772 -0
  215. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/image.ts.html +181 -0
  216. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/index.html +236 -0
  217. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/index.ts.html +124 -0
  218. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/text.ts.html +658 -0
  219. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/video.ts.html +211 -0
  220. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/visual-source.ts.html +721 -0
  221. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/visual.ts.html +760 -0
  222. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/movie/effects.ts.html +163 -0
  223. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/movie/index.html +161 -0
  224. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/movie/index.ts.html +88 -0
  225. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/movie/layers.ts.html +163 -0
  226. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/movie/movie.ts.html +2698 -0
  227. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/util.ts.html +1453 -0
  228. package/dist/etro-cjs.js +79 -64
  229. package/dist/etro-iife.js +80 -65
  230. package/dist/movie/movie.d.ts +4 -3
  231. package/dist/util.d.ts +4 -2
  232. package/karma.conf.js +9 -0
  233. package/package.json +5 -6
  234. package/src/effect/shader.ts +1 -1
  235. package/src/effect/transform.ts +1 -1
  236. package/src/movie/movie.ts +7 -5
  237. package/src/util.ts +13 -4
package/dist/etro-iife.js CHANGED
@@ -47,7 +47,7 @@ var etro = (function () {
47
47
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
48
48
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
49
49
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
50
- step((generator = generator.apply(thisArg, _arguments || [])).next());
50
+ step((generator = generator.apply(thisArg, [])).next());
51
51
  });
52
52
  }
53
53
 
@@ -240,9 +240,9 @@ var etro = (function () {
240
240
  var event = /*#__PURE__*/Object.freeze({
241
241
  __proto__: null,
242
242
  deprecate: deprecate,
243
+ publish: publish,
243
244
  subscribe: subscribe,
244
- unsubscribe: unsubscribe,
245
- publish: publish
245
+ unsubscribe: unsubscribe
246
246
  });
247
247
 
248
248
  /**
@@ -360,7 +360,9 @@ var etro = (function () {
360
360
  for (var i = 0; i < this.value.length; i++) {
361
361
  var startTime = this.value[i][0];
362
362
  var startValue = this.value[i][1];
363
- var interpolate = this.value[i].length === 3 ? this.value[i][2] : linearInterp;
363
+ var interpolate = this.value[i].length === 3
364
+ ? this.value[i][2]
365
+ : linearInterp;
364
366
  if (i + 1 < this.value.length) {
365
367
  var endTime = this.value[i + 1][0];
366
368
  var endValue = this.value[i + 1][1];
@@ -836,7 +838,7 @@ var etro = (function () {
836
838
  /**
837
839
  * A layer outputs content for the movie
838
840
  */
839
- var Base = /** @class */ (function () {
841
+ var Base$1 = /** @class */ (function () {
840
842
  /**
841
843
  * Creates a new empty layer
842
844
  *
@@ -1030,9 +1032,9 @@ var etro = (function () {
1030
1032
  }());
1031
1033
  // id for events (independent of instance, but easy to access when on prototype
1032
1034
  // chain)
1033
- Base.prototype.type = 'layer';
1034
- Base.prototype.publicExcludes = ['active'];
1035
- Base.prototype.propertyFilters = {};
1035
+ Base$1.prototype.type = 'layer';
1036
+ Base$1.prototype.publicExcludes = ['active'];
1037
+ Base$1.prototype.propertyFilters = {};
1036
1038
 
1037
1039
  // TODO: rename to something more consistent with the naming convention of Visual and VisualSourceMixin
1038
1040
  /**
@@ -1064,7 +1066,7 @@ var etro = (function () {
1064
1066
  sourceStartTime: 0, duration: undefined });
1065
1067
  };
1066
1068
  return Audio;
1067
- }(AudioSourceMixin(Base)));
1069
+ }(AudioSourceMixin(Base$1)));
1068
1070
 
1069
1071
  var CustomArrayListener = /** @class */ (function () {
1070
1072
  function CustomArrayListener() {
@@ -1077,7 +1079,7 @@ var etro = (function () {
1077
1079
  var CustomArray = /** @class */ (function (_super) {
1078
1080
  __extends(CustomArray, _super);
1079
1081
  function CustomArray(target, listener) {
1080
- var _this = _super.call(this) || this;
1082
+ _super.call(this) || this;
1081
1083
  for (var _i = 0, target_1 = target; _i < target_1.length; _i++) {
1082
1084
  var item = target_1[_i];
1083
1085
  listener.onAdd(item);
@@ -1133,7 +1135,7 @@ var etro = (function () {
1133
1135
  return VisualEffects;
1134
1136
  }(CustomArray));
1135
1137
  /** Any layer that renders to a canvas */
1136
- var Visual = /** @class */ (function (_super) {
1138
+ var Visual$1 = /** @class */ (function (_super) {
1137
1139
  __extends(Visual, _super);
1138
1140
  /**
1139
1141
  * Creates a visual layer
@@ -1227,7 +1229,7 @@ var etro = (function () {
1227
1229
  Object.defineProperty(Visual.prototype, "ready", {
1228
1230
  get: function () {
1229
1231
  // Typescript doesn't support `super.ready` when targeting es5
1230
- var superReady = Object.getOwnPropertyDescriptor(Base.prototype, 'ready').get.call(this);
1232
+ var superReady = Object.getOwnPropertyDescriptor(Base$1.prototype, 'ready').get.call(this);
1231
1233
  return superReady && this.effects.every(function (effect) { return effect.ready; });
1232
1234
  },
1233
1235
  enumerable: false,
@@ -1237,7 +1239,7 @@ var etro = (function () {
1237
1239
  * @deprecated See {@link https://github.com/etro-js/etro/issues/131}
1238
1240
  */
1239
1241
  Visual.prototype.getDefaultOptions = function () {
1240
- return __assign(__assign({}, Base.prototype.getDefaultOptions()), {
1242
+ return __assign(__assign({}, Base$1.prototype.getDefaultOptions()), {
1241
1243
  /**
1242
1244
  * @name module:layer.Visual#x
1243
1245
  * @desc The offset of the layer relative to the movie
@@ -1273,9 +1275,9 @@ var etro = (function () {
1273
1275
  opacity: 1 });
1274
1276
  };
1275
1277
  return Visual;
1276
- }(Base));
1277
- Visual.prototype.publicExcludes = Base.prototype.publicExcludes.concat(['canvas', 'cctx', 'effects']);
1278
- Visual.prototype.propertyFilters = __assign(__assign({}, Base.prototype.propertyFilters), {
1278
+ }(Base$1));
1279
+ Visual$1.prototype.publicExcludes = Base$1.prototype.publicExcludes.concat(['canvas', 'cctx', 'effects']);
1280
+ Visual$1.prototype.propertyFilters = __assign(__assign({}, Base$1.prototype.propertyFilters), {
1279
1281
  /*
1280
1282
  * If this.width or this.height is null, that means "take all available screen
1281
1283
  * space", so set it to this._move.width or this._movie.height, respectively
@@ -1375,7 +1377,7 @@ var etro = (function () {
1375
1377
  };
1376
1378
  return MixedVisualSource;
1377
1379
  }(superclass));
1378
- MixedVisualSource.prototype.propertyFilters = __assign(__assign({}, Visual.prototype.propertyFilters), {
1380
+ MixedVisualSource.prototype.propertyFilters = __assign(__assign({}, Visual$1.prototype.propertyFilters), {
1379
1381
  /*
1380
1382
  * If no layer width was provided, fall back to the dest width.
1381
1383
  * If no dest width was provided, fall back to the source width.
@@ -1433,7 +1435,7 @@ var etro = (function () {
1433
1435
  return _super.call(this, options) || this;
1434
1436
  }
1435
1437
  return Image;
1436
- }(VisualSourceMixin(Visual)));
1438
+ }(VisualSourceMixin(Visual$1)));
1437
1439
 
1438
1440
  var TextStrokePosition;
1439
1441
  (function (TextStrokePosition) {
@@ -1529,10 +1531,10 @@ var etro = (function () {
1529
1531
  * @deprecated See {@link https://github.com/etro-js/etro/issues/131}
1530
1532
  */
1531
1533
  Text.prototype.getDefaultOptions = function () {
1532
- return __assign(__assign({}, Visual.prototype.getDefaultOptions()), { background: null, text: undefined, font: '10px sans-serif', color: parseColor('#fff'), textX: 0, textY: 0, maxWidth: null, textAlign: 'start', textBaseline: 'top', textDirection: 'ltr', textStroke: null });
1534
+ return __assign(__assign({}, Visual$1.prototype.getDefaultOptions()), { background: null, text: undefined, font: '10px sans-serif', color: parseColor('#fff'), textX: 0, textY: 0, maxWidth: null, textAlign: 'start', textBaseline: 'top', textDirection: 'ltr', textStroke: null });
1533
1535
  };
1534
1536
  return Text;
1535
- }(Visual));
1537
+ }(Visual$1));
1536
1538
 
1537
1539
  /**
1538
1540
  * Layer for an HTML video element
@@ -1554,29 +1556,30 @@ var etro = (function () {
1554
1556
  duration: (_a = options.duration) !== null && _a !== void 0 ? _a : 0 })) || this;
1555
1557
  }
1556
1558
  return Video;
1557
- }(AudioSourceMixin(VisualSourceMixin(Visual))));
1559
+ }(AudioSourceMixin(VisualSourceMixin(Visual$1))));
1558
1560
 
1559
1561
  /**
1560
1562
  * @module layer
1561
- */
1563
+ */
1564
+ // TODO: Add aligning options, like horizontal and vertical align modes
1562
1565
 
1563
- var index = /*#__PURE__*/Object.freeze({
1566
+ var index$1 = /*#__PURE__*/Object.freeze({
1564
1567
  __proto__: null,
1565
- AudioSourceMixin: AudioSourceMixin,
1566
1568
  Audio: Audio,
1567
- Base: Base,
1569
+ AudioSourceMixin: AudioSourceMixin,
1570
+ Base: Base$1,
1568
1571
  Image: Image,
1569
1572
  Text: Text,
1570
1573
  get TextStrokePosition () { return TextStrokePosition; },
1571
1574
  Video: Video,
1572
- VisualSourceMixin: VisualSourceMixin,
1573
- Visual: Visual
1575
+ Visual: Visual$1,
1576
+ VisualSourceMixin: VisualSourceMixin
1574
1577
  });
1575
1578
 
1576
1579
  /**
1577
1580
  * @deprecated All visual effects now inherit from `Visual` instead
1578
1581
  */
1579
- var Base$1 = /** @class */ (function () {
1582
+ var Base = /** @class */ (function () {
1580
1583
  function Base() {
1581
1584
  this.enabled = true;
1582
1585
  this._occurrenceCount = 0;
@@ -1676,14 +1679,14 @@ var etro = (function () {
1676
1679
  }());
1677
1680
  // id for events (independent of instance, but easy to access when on prototype
1678
1681
  // chain)
1679
- Base$1.prototype.type = 'effect';
1680
- Base$1.prototype.publicExcludes = [];
1681
- Base$1.prototype.propertyFilters = {};
1682
+ Base.prototype.type = 'effect';
1683
+ Base.prototype.publicExcludes = [];
1684
+ Base.prototype.propertyFilters = {};
1682
1685
 
1683
1686
  /**
1684
1687
  * Modifies the visual contents of a layer.
1685
1688
  */
1686
- var Visual$1 = /** @class */ (function (_super) {
1689
+ var Visual = /** @class */ (function (_super) {
1687
1690
  __extends(Visual, _super);
1688
1691
  function Visual() {
1689
1692
  return _super !== null && _super.apply(this, arguments) || this;
@@ -1701,7 +1704,7 @@ var etro = (function () {
1701
1704
  _super.prototype.apply.call(this, target, reltime);
1702
1705
  };
1703
1706
  return Visual;
1704
- }(Base$1));
1707
+ }(Base));
1705
1708
 
1706
1709
  /**
1707
1710
  * A hardware-accelerated pixel mapping using WebGL
@@ -1773,8 +1776,8 @@ var etro = (function () {
1773
1776
  Shader.prototype._initAttribs = function () {
1774
1777
  var gl = this._gl;
1775
1778
  this._attribLocations = {
1779
+ vertexPosition: gl.getAttribLocation(this._program, 'a_VertexPosition'),
1776
1780
  textureCoord: gl.getAttribLocation(this._program, 'a_TextureCoord')
1777
- // a_VertexPosition ?? somehow it works without it though...
1778
1781
  };
1779
1782
  };
1780
1783
  Shader.prototype._initUniforms = function (userUniforms) {
@@ -1992,10 +1995,10 @@ var etro = (function () {
1992
1995
  Shader._initRectBuffers = function (gl) {
1993
1996
  var position = [
1994
1997
  // the screen/canvas (output)
1995
- -1.0, 1.0,
1998
+ -1, 1.0,
1996
1999
  1.0, 1.0,
1997
- -1.0, -1.0,
1998
- 1.0, -1.0
2000
+ -1, -1,
2001
+ 1.0, -1
1999
2002
  ];
2000
2003
  var textureCoord = [
2001
2004
  // the texture/canvas (input)
@@ -2131,7 +2134,7 @@ var etro = (function () {
2131
2134
  Shader._VERTEX_SOURCE = "\n attribute vec4 a_VertexPosition;\n attribute vec2 a_TextureCoord;\n\n varying highp vec2 v_TextureCoord;\n\n void main() {\n // no need for projection or model-view matrices, since we're just rendering a rectangle\n // that fills the screen (see position values)\n gl_Position = a_VertexPosition;\n v_TextureCoord = a_TextureCoord;\n }\n ";
2132
2135
  Shader._IDENTITY_FRAGMENT_SOURCE = "\n precision mediump float;\n\n uniform sampler2D u_Source;\n\n varying highp vec2 v_TextureCoord;\n\n void main() {\n gl_FragColor = texture2D(u_Source, v_TextureCoord);\n }\n ";
2133
2136
  return Shader;
2134
- }(Visual$1));
2137
+ }(Visual));
2135
2138
  var isPowerOf2 = function (value) { return (value && (value - 1)) === 0; };
2136
2139
 
2137
2140
  /**
@@ -2304,7 +2307,7 @@ var etro = (function () {
2304
2307
  ctx.restore();
2305
2308
  };
2306
2309
  return EllipticalMask;
2307
- }(Visual$1));
2310
+ }(Visual));
2308
2311
 
2309
2312
  var StackEffectsListener = /** @class */ (function (_super) {
2310
2313
  __extends(StackEffectsListener, _super);
@@ -2377,7 +2380,7 @@ var etro = (function () {
2377
2380
  return this;
2378
2381
  };
2379
2382
  return Stack;
2380
- }(Visual$1));
2383
+ }(Visual));
2381
2384
 
2382
2385
  /**
2383
2386
  * Applies a Gaussian blur
@@ -2598,7 +2601,7 @@ var etro = (function () {
2598
2601
  this._tmpCanvas.height = target.canvas.height;
2599
2602
  }
2600
2603
  // Use data, since that's the underlying storage
2601
- this._tmpMatrix.data = val(this, 'matrix.data', reltime);
2604
+ this._tmpMatrix.data = val(this, 'matrix', reltime).data;
2602
2605
  this._tmpCtx.setTransform(this._tmpMatrix.a, this._tmpMatrix.b, this._tmpMatrix.c, this._tmpMatrix.d, this._tmpMatrix.e, this._tmpMatrix.f);
2603
2606
  this._tmpCtx.drawImage(target.canvas, 0, 0);
2604
2607
  // Assume it was identity for now
@@ -2607,7 +2610,7 @@ var etro = (function () {
2607
2610
  target.cctx.drawImage(this._tmpCanvas, 0, 0);
2608
2611
  };
2609
2612
  return Transform;
2610
- }(Visual$1));
2613
+ }(Visual));
2611
2614
  (function (Transform) {
2612
2615
  /**
2613
2616
  * @class
@@ -2751,17 +2754,22 @@ var etro = (function () {
2751
2754
 
2752
2755
  /**
2753
2756
  * @module effect
2754
- */
2757
+ */
2758
+ // TODO: Investigate why an effect might run once in the beginning even if its layer isn't at the beginning
2759
+ // TODO: Add audio effect support
2760
+ // TODO: implement directional blur
2761
+ // TODO: implement radial blur
2762
+ // TODO: implement zoom blur
2755
2763
 
2756
- var index$1 = /*#__PURE__*/Object.freeze({
2764
+ var index = /*#__PURE__*/Object.freeze({
2757
2765
  __proto__: null,
2758
- Base: Base$1,
2766
+ Base: Base,
2759
2767
  Brightness: Brightness,
2760
2768
  Channels: Channels,
2761
2769
  ChromaKey: ChromaKey,
2762
2770
  Contrast: Contrast,
2763
- EllipticalMaskOptions: EllipticalMaskOptions,
2764
2771
  EllipticalMask: EllipticalMask,
2772
+ EllipticalMaskOptions: EllipticalMaskOptions,
2765
2773
  GaussianBlur: GaussianBlur,
2766
2774
  GaussianBlurHorizontal: GaussianBlurHorizontal,
2767
2775
  GaussianBlurVertical: GaussianBlurVertical,
@@ -2770,7 +2778,7 @@ var etro = (function () {
2770
2778
  Shader: Shader,
2771
2779
  Stack: Stack,
2772
2780
  get Transform () { return Transform; },
2773
- Visual: Visual$1
2781
+ Visual: Visual
2774
2782
  });
2775
2783
 
2776
2784
  var MovieEffectsListener = /** @class */ (function (_super) {
@@ -2884,9 +2892,9 @@ var etro = (function () {
2884
2892
  * Plays the movie
2885
2893
  *
2886
2894
  * @param [options]
2895
+ * @param [options.onDraw] Called when the current frame is drawn to the canvas
2887
2896
  * @param [options.onStart] Called when the movie starts playing
2888
2897
  * @param [options.duration] The duration of the movie to play in seconds
2889
- *
2890
2898
  * @return Fulfilled when the movie is done playing, never fails
2891
2899
  */
2892
2900
  Movie.prototype.play = function (options) {
@@ -2912,7 +2920,7 @@ var etro = (function () {
2912
2920
  return [4 /*yield*/, new Promise(function (resolve) {
2913
2921
  if (!_this.renderingFrame) {
2914
2922
  // Not rendering (and not playing), so play.
2915
- _this._render(undefined, resolve);
2923
+ _this._render(undefined, resolve, options.onDraw);
2916
2924
  }
2917
2925
  // Stop rendering frame if currently doing so, because playing has higher
2918
2926
  // priority. This will affect the next _render call.
@@ -3146,13 +3154,14 @@ var etro = (function () {
3146
3154
  * Processes one frame of the movie and draws it to the canvas
3147
3155
  *
3148
3156
  * @param [timestamp=performance.now()]
3149
- * @param [done=undefined] - Called when done playing or when the current
3150
- * frame is loaded
3157
+ * @param [done=undefined] - Called when done playing or when the current frame is loaded
3158
+ * @param [onFrameRender=undefined] - Called when the current frame is rendered
3151
3159
  */
3152
- Movie.prototype._render = function (timestamp, done) {
3160
+ Movie.prototype._render = function (timestamp, done, onFrameRender) {
3153
3161
  var _this = this;
3154
3162
  if (timestamp === void 0) { timestamp = performance.now(); }
3155
3163
  if (done === void 0) { done = undefined; }
3164
+ if (onFrameRender === void 0) { onFrameRender = undefined; }
3156
3165
  clearCachedValues(this);
3157
3166
  if (!this.rendering) {
3158
3167
  // (this.paused && !this._renderingFrame) is true so it's playing or it's
@@ -3216,6 +3225,7 @@ var etro = (function () {
3216
3225
  this._renderBackground(timestamp);
3217
3226
  this._renderLayers();
3218
3227
  this._applyEffects();
3228
+ onFrameRender === null || onFrameRender === void 0 ? void 0 : onFrameRender();
3219
3229
  }
3220
3230
  else {
3221
3231
  // If we are recording, pause the media recorder until the movie is
@@ -3310,7 +3320,7 @@ var etro = (function () {
3310
3320
  }
3311
3321
  layer.render();
3312
3322
  // if the layer has visual component
3313
- if (layer instanceof Visual) {
3323
+ if (layer instanceof Visual$1) {
3314
3324
  var canvas = layer.canvas;
3315
3325
  if (canvas.width * canvas.height > 0) {
3316
3326
  this.cctx.drawImage(canvas, val(layer, 'x', reltime), val(layer, 'y', reltime), canvas.width, canvas.height);
@@ -3619,26 +3629,31 @@ var etro = (function () {
3619
3629
  * make typedoc work, this module exports everything as named exports. Then,
3620
3630
  * ./index imports everything from this module and exports it as a default
3621
3631
  * export. Typedoc uses this file, and rollup and NPM use ./index
3622
- */
3632
+ */
3633
+ // TODO: investigate possibility of changing movie (canvas) width/height after
3634
+ // layers added. I think it's fine, but still make sure.
3635
+ // TODO: create built-in audio gain node for volume control in movie and/or
3636
+ // layer.
3637
+ // TODO: figure out InvalidStateError in beginning only when reloaded
3623
3638
 
3624
3639
  var etro = /*#__PURE__*/Object.freeze({
3625
3640
  __proto__: null,
3626
- layer: index,
3627
- effect: index$1,
3628
- event: event,
3629
- MovieOptions: MovieOptions,
3641
+ Color: Color,
3642
+ Font: Font,
3643
+ KeyFrame: KeyFrame,
3630
3644
  Movie: Movie,
3645
+ MovieOptions: MovieOptions,
3631
3646
  applyOptions: applyOptions,
3632
3647
  clearCachedValues: clearCachedValues,
3633
- KeyFrame: KeyFrame,
3634
- val: val,
3635
- linearInterp: linearInterp,
3636
3648
  cosineInterp: cosineInterp,
3637
- Color: Color,
3649
+ effect: index,
3650
+ event: event,
3651
+ layer: index$1,
3652
+ linearInterp: linearInterp,
3653
+ mapPixels: mapPixels,
3638
3654
  parseColor: parseColor,
3639
- Font: Font,
3640
3655
  parseFont: parseFont,
3641
- mapPixels: mapPixels
3656
+ val: val
3642
3657
  });
3643
3658
 
3644
3659
  /**
@@ -3648,4 +3663,4 @@ var etro = (function () {
3648
3663
 
3649
3664
  return etro;
3650
3665
 
3651
- }());
3666
+ })();
@@ -73,12 +73,13 @@ export declare class Movie {
73
73
  * Plays the movie
74
74
  *
75
75
  * @param [options]
76
+ * @param [options.onDraw] Called when the current frame is drawn to the canvas
76
77
  * @param [options.onStart] Called when the movie starts playing
77
78
  * @param [options.duration] The duration of the movie to play in seconds
78
- *
79
79
  * @return Fulfilled when the movie is done playing, never fails
80
80
  */
81
81
  play(options?: {
82
+ onDraw?: () => void;
82
83
  onStart?: () => void;
83
84
  duration?: number;
84
85
  }): Promise<void>;
@@ -141,8 +142,8 @@ export declare class Movie {
141
142
  * Processes one frame of the movie and draws it to the canvas
142
143
  *
143
144
  * @param [timestamp=performance.now()]
144
- * @param [done=undefined] - Called when done playing or when the current
145
- * frame is loaded
145
+ * @param [done=undefined] - Called when done playing or when the current frame is loaded
146
+ * @param [onFrameRender=undefined] - Called when the current frame is rendered
146
147
  */
147
148
  private _render;
148
149
  private _updateCurrentTime;
package/dist/util.d.ts CHANGED
@@ -15,6 +15,7 @@ import { Movie } from './movie';
15
15
  */
16
16
  export declare function applyOptions(options: object, destObj: EtroObject): void;
17
17
  export declare function clearCachedValues(movie: Movie): void;
18
+ declare type Interpolate = <U = number | object>(startValue: U, endValue: U, percentProgress: number, interpolationKeys: string[]) => U;
18
19
  /**
19
20
  * A keyframe set.
20
21
  *
@@ -25,10 +26,10 @@ export declare function clearCachedValues(movie: Movie): void;
25
26
  * TypeScript users need to specify the type of the value as a type parameter.
26
27
  */
27
28
  export declare class KeyFrame<T> {
28
- value: unknown[][];
29
+ value: (number | T | Interpolate)[][];
29
30
  /** Keys to interpolate, or all keys if undefined */
30
31
  interpolationKeys: string[];
31
- constructor(...value: T[][]);
32
+ constructor(...value: (number | T)[][]);
32
33
  withKeys(keys: string[]): KeyFrame<T>;
33
34
  evaluate(time: number): T;
34
35
  }
@@ -119,3 +120,4 @@ export declare function parseFont(str: string): Font;
119
120
  * @deprecated Use {@link effect.Shader} instead
120
121
  */
121
122
  export declare function mapPixels(mapper: (pixels: Uint8ClampedArray, i: number) => void, canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, flush?: boolean): void;
123
+ export {};
package/karma.conf.js CHANGED
@@ -87,5 +87,14 @@ module.exports = function (config) {
87
87
  // Concurrency level
88
88
  // how many browser should be started simultaneous
89
89
  concurrency: Infinity,
90
+
91
+ karmaTypescriptConfig: {
92
+ bundlerOptions: {
93
+ // Resemblejs only references the `canvas` dependency in the node
94
+ // runtime. Since the tests are run in a browser, we need to exclude it
95
+ // from the bundle to prevent false errors.
96
+ exclude: ['canvas']
97
+ }
98
+ }
90
99
  })
91
100
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "etro",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "An extendable video-editing framework for the browser",
5
- "browser": "dist/etro-cjs.js",
5
+ "main": "dist/etro-cjs.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "directories": {
8
8
  "doc": "docs",
@@ -12,11 +12,10 @@
12
12
  "devDependencies": {
13
13
  "@commitlint/cli": "^17.6.6",
14
14
  "@commitlint/format": "^17.4.4",
15
- "@rollup/plugin-eslint": "^8.0.2",
15
+ "@rollup/plugin-eslint": "^9.2.0",
16
16
  "@types/jest": "^29.0.0",
17
17
  "@typescript-eslint/eslint-plugin": "^5.30.7",
18
18
  "@typescript-eslint/parser": "^5.30.7",
19
- "canvas": "^2.11.2",
20
19
  "cross-env": "^7.0.3",
21
20
  "docdash": "^1.1.1",
22
21
  "ecstatic": ">=4.1.3",
@@ -41,12 +40,12 @@
41
40
  "keep-a-changelog": "^0.10.4",
42
41
  "puppeteer": "^2.0.0",
43
42
  "resemblejs": "^4.1.0",
44
- "rollup": "^1.19.4",
43
+ "rollup": "^4.53.3",
45
44
  "rollup-plugin-cleaner": "^1.0.0",
46
45
  "rollup-plugin-node-resolve": "^5.2.0",
47
46
  "rollup-plugin-typescript2": "^0.29.0",
48
47
  "rollup-plugin-uglify-es": "^0.0.1",
49
- "shipjs": "^0.26.3",
48
+ "shipjs": "^0.27.0",
50
49
  "typedoc": "^0.23.8",
51
50
  "typescript": "^4.7.4"
52
51
  },
@@ -163,8 +163,8 @@ export class Shader extends Visual {
163
163
  private _initAttribs () {
164
164
  const gl = this._gl
165
165
  this._attribLocations = {
166
+ vertexPosition: gl.getAttribLocation(this._program, 'a_VertexPosition'),
166
167
  textureCoord: gl.getAttribLocation(this._program, 'a_TextureCoord')
167
- // a_VertexPosition ?? somehow it works without it though...
168
168
  }
169
169
  }
170
170
 
@@ -45,7 +45,7 @@ class Transform extends Visual {
45
45
  }
46
46
 
47
47
  // Use data, since that's the underlying storage
48
- this._tmpMatrix.data = val(this, 'matrix.data', reltime)
48
+ this._tmpMatrix.data = val(this, 'matrix', reltime).data
49
49
 
50
50
  this._tmpCtx.setTransform(
51
51
  this._tmpMatrix.a, this._tmpMatrix.b, this._tmpMatrix.c,
@@ -124,12 +124,13 @@ export class Movie {
124
124
  * Plays the movie
125
125
  *
126
126
  * @param [options]
127
+ * @param [options.onDraw] Called when the current frame is drawn to the canvas
127
128
  * @param [options.onStart] Called when the movie starts playing
128
129
  * @param [options.duration] The duration of the movie to play in seconds
129
- *
130
130
  * @return Fulfilled when the movie is done playing, never fails
131
131
  */
132
132
  async play (options: {
133
+ onDraw?: () => void,
133
134
  onStart?: () => void,
134
135
  duration?: number,
135
136
  } = {}): Promise<void> {
@@ -152,7 +153,7 @@ export class Movie {
152
153
  await new Promise<void>(resolve => {
153
154
  if (!this.renderingFrame) {
154
155
  // Not rendering (and not playing), so play.
155
- this._render(undefined, resolve)
156
+ this._render(undefined, resolve, options.onDraw)
156
157
  }
157
158
 
158
159
  // Stop rendering frame if currently doing so, because playing has higher
@@ -399,10 +400,10 @@ export class Movie {
399
400
  * Processes one frame of the movie and draws it to the canvas
400
401
  *
401
402
  * @param [timestamp=performance.now()]
402
- * @param [done=undefined] - Called when done playing or when the current
403
- * frame is loaded
403
+ * @param [done=undefined] - Called when done playing or when the current frame is loaded
404
+ * @param [onFrameRender=undefined] - Called when the current frame is rendered
404
405
  */
405
- private _render (timestamp = performance.now(), done = undefined) {
406
+ private _render (timestamp = performance.now(), done = undefined, onFrameRender = undefined) {
406
407
  clearCachedValues(this)
407
408
 
408
409
  if (!this.rendering) {
@@ -482,6 +483,7 @@ export class Movie {
482
483
  this._renderBackground(timestamp)
483
484
  this._renderLayers()
484
485
  this._applyEffects()
486
+ onFrameRender?.()
485
487
  } else {
486
488
  // If we are recording, pause the media recorder until the movie is
487
489
  // ready.
package/src/util.ts CHANGED
@@ -91,6 +91,13 @@ export function clearCachedValues (movie: Movie): void {
91
91
  valCache.delete(movie)
92
92
  }
93
93
 
94
+ type Interpolate = <U = number | object>(
95
+ startValue: U,
96
+ endValue: U,
97
+ percentProgress: number,
98
+ interpolationKeys: string[]
99
+ ) => U
100
+
94
101
  /**
95
102
  * A keyframe set.
96
103
  *
@@ -101,11 +108,11 @@ export function clearCachedValues (movie: Movie): void {
101
108
  * TypeScript users need to specify the type of the value as a type parameter.
102
109
  */
103
110
  export class KeyFrame<T> {
104
- value: unknown[][]
111
+ value: (number|T|Interpolate)[][]
105
112
  /** Keys to interpolate, or all keys if undefined */
106
113
  interpolationKeys: string[]
107
114
 
108
- constructor (...value: T[][]) {
115
+ constructor (...value: (number|T)[][]) {
109
116
  this.value = value
110
117
  this.interpolationKeys = []
111
118
  }
@@ -133,8 +140,10 @@ export class KeyFrame<T> {
133
140
  for (let i = 0; i < this.value.length; i++) {
134
141
  const startTime = this.value[i][0] as number
135
142
  const startValue = this.value[i][1] as T
136
- type interpolateType = <U = number | object>(startValue: U, endValue: U, percentProgress: number, interpolationKeys: string[]) => U // eslint-disable-line @typescript-eslint/ban-types
137
- const interpolate = this.value[i].length === 3 ? this.value[i][2] as interpolateType : linearInterp
143
+ const interpolate =
144
+ this.value[i].length === 3
145
+ ? (this.value[i][2] as Interpolate)
146
+ : linearInterp
138
147
  if (i + 1 < this.value.length) {
139
148
  const endTime = this.value[i + 1][0] as number
140
149
  const endValue = this.value[i + 1][1] as T