@omnimedia/omnitool 1.1.0-70 → 1.1.0-72

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnimedia/omnitool",
3
- "version": "1.1.0-70",
3
+ "version": "1.1.0-72",
4
4
  "description": "open source video processing tools",
5
5
  "license": "MIT",
6
6
  "author": "Przemysław Gałęzki",
@@ -1,3 +1,5 @@
1
+
2
+ import {pub} from "@e280/stz"
1
3
  import {autoDetectRenderer, Container, Renderer, Sprite, Text, Texture} from "pixi.js"
2
4
 
3
5
  import {Id} from "../../timeline/index.js"
@@ -6,6 +8,8 @@ import {Mat6, mat6ToMatrix} from "../../timeline/utils/matrix.js"
6
8
  import {makeTransition} from "../../features/transition/transition.js"
7
9
 
8
10
  export class Compositor {
11
+ onPointerDown = pub<[{id: Id, object: Container}]>()
12
+ onPointerUp = pub<[{id: Id, object: Container}]>()
9
13
 
10
14
  static async setup() {
11
15
  const renderer = await autoDetectRenderer({
@@ -24,7 +28,7 @@ export class Compositor {
24
28
 
25
29
  #transitions: Map<string, ReturnType<typeof makeTransition>> = new Map()
26
30
  // objects rendered for current Composition
27
- #activeObjects = new Map<number, Container>()
31
+ #activeObjects = new Map<number, {sprite: Container, dispose: () => void}>()
28
32
 
29
33
  async composite(
30
34
  composition: Composition,
@@ -51,7 +55,7 @@ export class Compositor {
51
55
  * get object for current Composition
52
56
  * */
53
57
  getActiveObject(id: Id) {
54
- return this.#activeObjects.get(id)
58
+ return this.#activeObjects.get(id)?.sprite
55
59
  }
56
60
 
57
61
  async #renderLayer(
@@ -89,9 +93,9 @@ export class Compositor {
89
93
  layer: Extract<Layer, {kind: 'text'}>,
90
94
  parent: Container,
91
95
  ) {
92
- const text = this.#findOrCreate<Text>(layer)!
93
- this.#applyTransform(text, layer.matrix)
94
- parent.addChild(text)
96
+ const sprite = this.#findOrCreate<Text>(layer)!
97
+ this.#applyTransform(sprite, layer.matrix)
98
+ parent.addChild(sprite)
95
99
  return {
96
100
  dispose: () => {}
97
101
  }
@@ -146,20 +150,44 @@ export class Compositor {
146
150
  text: layer.content,
147
151
  style: layer.style
148
152
  })
149
- text.onmouseenter = () => console.log("enter text")
153
+ text.eventMode = "static"
154
+ const down = () => this.onPointerDown.publish({id: layer.id, object: text})
155
+ const up = () => this.onPointerUp.publish({id: layer.id, object: text})
156
+
157
+ text.on("pointerdown", down)
158
+ text.on("pointerup", up)
159
+
150
160
  return this.#activeObjects
151
- .set(layer.id, text)
152
- .get(layer.id) as T
161
+ .set(layer.id, {
162
+ sprite: text,
163
+ dispose() {
164
+ text.off("pointerdown", down)
165
+ text.off("pointerup", up)
166
+ }
167
+ })
168
+ .get(layer.id)?.sprite as T
153
169
  }
154
170
  case 'image': {
155
171
  const sprite = new Sprite()
156
- sprite.onmouseenter = () => console.log("enter")
172
+ sprite.eventMode = "static"
173
+ const down = () => this.onPointerDown.publish({id: layer.id, object: sprite})
174
+ const up = () => this.onPointerUp.publish({id: layer.id, object: sprite})
175
+
176
+ sprite.on("pointerdown", down)
177
+ sprite.on("pointerup", up)
178
+
157
179
  return this.#activeObjects
158
- .set(layer.id, sprite)
159
- .get(layer.id) as T
180
+ .set(layer.id, {
181
+ sprite,
182
+ dispose() {
183
+ sprite.off("pointerdown", down)
184
+ sprite.off("pointerup", up)
185
+ }
186
+ })
187
+ .get(layer.id)?.sprite as T
160
188
  }
161
189
  }
162
- } else return object as T
190
+ } else return object.sprite as T
163
191
  }
164
192
 
165
193
  #collectIds(layers: Layer | Composition): Set<number> {
@@ -178,10 +206,12 @@ export class Compositor {
178
206
  #cleanup(activeIds: Set<number>) {
179
207
  for (const id of this.#activeObjects.keys()) {
180
208
  if (!activeIds.has(id)) {
181
- const obj = this.#activeObjects.get(id)!
182
- obj.destroy(true)
209
+ const {sprite, dispose} = this.#activeObjects.get(id)!
210
+ sprite.destroy(true)
211
+ dispose()
183
212
  this.#activeObjects.delete(id)
184
213
  }
185
214
  }
186
215
  }
187
216
  }
217
+