aptechka 0.1.1 → 0.1.3

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 (300) hide show
  1. package/lib/Damped-DdPj4Sho.cjs +1 -0
  2. package/lib/Damped-H3PuZwKV.js +152 -0
  3. package/lib/SourceManager-tmQlXkSD.cjs +1 -0
  4. package/lib/SourceManager-vXInLlh_.js +108 -0
  5. package/lib/Store-qq7IjRLE.js +136 -0
  6. package/lib/Store-txkR3wXU.cjs +1 -0
  7. package/lib/WheelControls-9ZQKSYYq.js +83 -0
  8. package/lib/WheelControls-TYhGU6oA.cjs +1 -0
  9. package/lib/accordion/AccordionElement.d.ts +7 -0
  10. package/lib/accordion/index.d.ts +1 -0
  11. package/lib/animation/Animated.d.ts +41 -0
  12. package/lib/animation/Damped.d.ts +11 -0
  13. package/lib/animation/Tweened.d.ts +16 -0
  14. package/lib/animation/index.cjs +1 -0
  15. package/lib/animation/index.d.ts +3 -0
  16. package/lib/animation/index.js +56 -0
  17. package/lib/attribute/index.cjs +1 -0
  18. package/lib/attribute/index.d.ts +8 -0
  19. package/lib/attribute/index.js +47 -0
  20. package/lib/attributes-_2U65GDl.cjs +1 -0
  21. package/lib/attributes-w0u-KiIb.js +10 -0
  22. package/lib/browser-QbF6EW-w.cjs +1 -0
  23. package/lib/browser-S4eq8AeN.js +4 -0
  24. package/lib/canvas-2d/index.cjs +5 -0
  25. package/lib/canvas-2d/index.d.ts +30 -0
  26. package/lib/canvas-2d/index.js +90 -0
  27. package/lib/controls/Controls.d.ts +9 -0
  28. package/lib/controls/KeyboardControls.d.ts +10 -0
  29. package/lib/controls/LinearControls.d.ts +11 -0
  30. package/lib/controls/WheelControls.d.ts +17 -0
  31. package/lib/controls/index.cjs +1 -0
  32. package/lib/controls/index.d.ts +4 -0
  33. package/lib/controls/index.js +42 -0
  34. package/lib/css-unit-parser/index.cjs +8 -0
  35. package/lib/css-unit-parser/index.d.ts +6 -0
  36. package/lib/css-unit-parser/index.js +36 -0
  37. package/lib/custom-element/index.cjs +1 -0
  38. package/lib/custom-element/index.d.ts +8 -0
  39. package/lib/custom-element/index.js +16 -0
  40. package/lib/device/Device.d.ts +17 -0
  41. package/lib/device/Viewport.d.ts +27 -0
  42. package/lib/device/index.cjs +1 -0
  43. package/lib/device/index.d.ts +2 -0
  44. package/lib/device/index.js +123 -0
  45. package/lib/dom-QhWsdQS2.cjs +1 -0
  46. package/lib/dom-bHEwc_xV.js +24 -0
  47. package/lib/easings-_wFs9ZWc.cjs +1 -0
  48. package/lib/easings-uF-tgahf.js +19 -0
  49. package/lib/element-constructor/ElementConstructor.d.ts +76 -0
  50. package/lib/element-constructor/htmlTags.d.ts +113 -0
  51. package/lib/element-constructor/index.cjs +1 -0
  52. package/lib/element-constructor/index.d.ts +4 -0
  53. package/lib/element-constructor/index.js +1390 -0
  54. package/lib/element-constructor/specialObjects.d.ts +2 -0
  55. package/lib/element-constructor/svgTags.d.ts +64 -0
  56. package/lib/en3/attachments/En3SourceManager.d.ts +30 -0
  57. package/lib/en3/core/en3.d.ts +55 -0
  58. package/lib/en3/index.cjs +28 -0
  59. package/lib/en3/index.d.ts +18 -0
  60. package/lib/en3/index.js +3249 -0
  61. package/lib/en3/instances/en3LazyLoader.d.ts +7 -0
  62. package/lib/en3/libs/MeshoptDecoder.d.ts +1 -0
  63. package/lib/en3/loaders/en3GLTFLoader.d.ts +16 -0
  64. package/lib/en3/loaders/en3TextureLoader.d.ts +2 -0
  65. package/lib/en3/objects/En3Clip.d.ts +10 -0
  66. package/lib/en3/objects/En3ClipHelpers.d.ts +5 -0
  67. package/lib/en3/objects/En3GLTF.d.ts +9 -0
  68. package/lib/en3/objects/En3Image.d.ts +7 -0
  69. package/lib/en3/objects/En3ImageLike.d.ts +22 -0
  70. package/{src/packages/en3/objects/En3SourceConsumer.ts → lib/en3/objects/En3SourceConsumer.d.ts} +2 -3
  71. package/lib/en3/objects/En3Video.d.ts +12 -0
  72. package/lib/en3/test/En3HTML.d.ts +9 -0
  73. package/lib/en3/test/En3ModifiedMaterial.d.ts +32 -0
  74. package/lib/en3/test/En3Raycaster.d.ts +19 -0
  75. package/lib/en3/utils/coverTexture.d.ts +6 -0
  76. package/lib/en3/utils/dispose.d.ts +2 -0
  77. package/lib/en3/utils/traverseMaterials.d.ts +2 -0
  78. package/lib/en3/utils/traverseMeshes.d.ts +2 -0
  79. package/lib/function-QP7IreXR.cjs +1 -0
  80. package/lib/function-zwSFehNd.js +17 -0
  81. package/lib/image/index.cjs +1 -0
  82. package/lib/image/index.d.ts +10 -0
  83. package/lib/image/index.js +30 -0
  84. package/lib/intersector/index.cjs +1 -0
  85. package/lib/intersector/index.d.ts +8 -0
  86. package/lib/intersector/index.js +55 -0
  87. package/lib/ladder/index.cjs +1 -0
  88. package/lib/ladder/index.d.ts +21 -0
  89. package/lib/ladder/index.js +97 -0
  90. package/lib/layout-5SJlcXTY.js +12 -0
  91. package/lib/layout-box/index.cjs +1 -0
  92. package/lib/layout-box/index.d.ts +78 -0
  93. package/lib/layout-box/index.js +235 -0
  94. package/lib/layout-rZzbsLPd.cjs +1 -0
  95. package/lib/loading/index.cjs +1 -0
  96. package/lib/loading/index.d.ts +38 -0
  97. package/lib/loading/index.js +99 -0
  98. package/lib/math-FNUBmQPK.cjs +1 -0
  99. package/lib/math-_a3IpKOc.js +45 -0
  100. package/lib/measurer/CumulativeOffsetLeft.d.ts +4 -0
  101. package/lib/measurer/CumulativeOffsetTop.d.ts +4 -0
  102. package/lib/measurer/Meaurer.d.ts +8 -0
  103. package/lib/measurer/index.cjs +1 -0
  104. package/lib/measurer/index.d.ts +3 -0
  105. package/lib/measurer/index.js +48 -0
  106. package/lib/media/index.cjs +1 -0
  107. package/lib/media/index.d.ts +11 -0
  108. package/lib/media/index.js +33 -0
  109. package/lib/morph/Link.d.ts +6 -0
  110. package/lib/morph/Morph.d.ts +26 -0
  111. package/lib/morph/index.cjs +1 -0
  112. package/lib/morph/index.d.ts +1 -0
  113. package/lib/morph/index.js +182 -0
  114. package/lib/notifier/index.cjs +1 -0
  115. package/lib/notifier/index.d.ts +8 -0
  116. package/lib/notifier/index.js +38 -0
  117. package/lib/number-2bR0KBcX.cjs +1 -0
  118. package/lib/number-bCHB2GAD.js +31 -0
  119. package/lib/order/index.cjs +1 -0
  120. package/lib/order/index.d.ts +13 -0
  121. package/lib/order/index.js +5 -0
  122. package/lib/resizer/index.cjs +1 -0
  123. package/lib/resizer/index.d.ts +10 -0
  124. package/lib/resizer/index.js +45 -0
  125. package/lib/router/Link.d.ts +6 -0
  126. package/lib/router/Route.d.ts +15 -0
  127. package/lib/router/RouteElement.d.ts +14 -0
  128. package/lib/router/Router.d.ts +33 -0
  129. package/lib/router/index.cjs +1 -0
  130. package/lib/router/index.d.ts +3 -0
  131. package/lib/router/index.js +266 -0
  132. package/lib/scroll/ScrollElement.d.ts +40 -0
  133. package/lib/scroll/ScrollUserElement.d.ts +7 -0
  134. package/lib/scroll/ScrollbarElement.d.ts +13 -0
  135. package/lib/scroll/index.cjs +71 -0
  136. package/lib/scroll/index.d.ts +2 -0
  137. package/lib/scroll/index.js +444 -0
  138. package/lib/scroll-entries/index.cjs +1 -0
  139. package/lib/scroll-entries/index.d.ts +17 -0
  140. package/lib/scroll-entries/index.js +56 -0
  141. package/lib/source/SourceClass.d.ts +11 -0
  142. package/lib/source/SourceElement.d.ts +16 -0
  143. package/lib/source/SourceManager.d.ts +13 -0
  144. package/lib/source/SourceSet.d.ts +8 -0
  145. package/lib/source/index.cjs +5 -0
  146. package/lib/source/index.d.ts +4 -0
  147. package/lib/source/index.js +95 -0
  148. package/lib/store/Composed.d.ts +7 -0
  149. package/lib/store/CumulativeResource.d.ts +12 -0
  150. package/lib/store/Derived.d.ts +7 -0
  151. package/lib/store/DerivedArray.d.ts +7 -0
  152. package/lib/store/Resource.d.ts +14 -0
  153. package/lib/store/Store.d.ts +33 -0
  154. package/lib/store/StoreRegistry.d.ts +22 -0
  155. package/lib/store/index.cjs +1 -0
  156. package/lib/store/index.d.ts +6 -0
  157. package/lib/store/index.js +99 -0
  158. package/lib/string-GmxZA5Nq.js +31 -0
  159. package/lib/string-WmNOGq16.cjs +1 -0
  160. package/lib/studio/StudioElement.d.ts +9 -0
  161. package/lib/studio/index.d.ts +1 -0
  162. package/lib/ticker/index.cjs +1 -0
  163. package/lib/ticker/index.d.ts +19 -0
  164. package/lib/ticker/index.js +107 -0
  165. package/lib/utils/array.d.ts +1 -0
  166. package/lib/utils/attributes.d.ts +2 -0
  167. package/lib/utils/browser.d.ts +1 -0
  168. package/lib/utils/canvas.d.ts +6 -0
  169. package/lib/utils/collisions.d.ts +3 -0
  170. package/lib/utils/coordinates.d.ts +13 -0
  171. package/lib/utils/decoding.d.ts +2 -0
  172. package/lib/utils/dev.d.ts +3 -0
  173. package/lib/utils/dom.d.ts +4 -0
  174. package/lib/utils/easings.d.ts +17 -0
  175. package/lib/utils/file.d.ts +1 -0
  176. package/lib/utils/function.d.ts +2 -0
  177. package/lib/utils/index.cjs +1 -0
  178. package/lib/utils/index.d.ts +19 -0
  179. package/lib/utils/index.js +203 -0
  180. package/lib/utils/layout.d.ts +3 -0
  181. package/lib/utils/math.d.ts +11 -0
  182. package/lib/utils/number.d.ts +3 -0
  183. package/lib/utils/object.d.ts +7 -0
  184. package/lib/utils/string.d.ts +5 -0
  185. package/lib/utils/ts-shape.d.ts +19 -0
  186. package/lib/utils/ts-utility.d.ts +19 -0
  187. package/lib/video/index.cjs +1 -0
  188. package/lib/video/index.d.ts +11 -0
  189. package/lib/video/index.js +37 -0
  190. package/package.json +7 -7
  191. package/.github/workflows/publish.yml +0 -20
  192. package/.prettierignore +0 -16
  193. package/.prettierrc +0 -9
  194. package/index.html +0 -32
  195. package/public/vite.svg +0 -1
  196. package/src/packages/animation/Animated.ts +0 -189
  197. package/src/packages/animation/Damped.ts +0 -39
  198. package/src/packages/animation/Tweened.ts +0 -51
  199. package/src/packages/animation/index.ts +0 -10
  200. package/src/packages/attribute/index.ts +0 -59
  201. package/src/packages/canvas-2d/index.ts +0 -137
  202. package/src/packages/controls/Controls.ts +0 -15
  203. package/src/packages/controls/KeyboardControls.ts +0 -63
  204. package/src/packages/controls/LinearControls.ts +0 -27
  205. package/src/packages/controls/User.ts +0 -20
  206. package/src/packages/controls/WheelControls.ts +0 -92
  207. package/src/packages/controls/index.ts +0 -5
  208. package/src/packages/css-unit-parser/index.ts +0 -32
  209. package/src/packages/custom-element/index.ts +0 -19
  210. package/src/packages/device/Device.ts +0 -113
  211. package/src/packages/device/Viewport.ts +0 -67
  212. package/src/packages/device/index.ts +0 -2
  213. package/src/packages/element-constructor/ElementConstructor.ts +0 -577
  214. package/src/packages/element-constructor/htmlTags.ts +0 -679
  215. package/src/packages/element-constructor/index.ts +0 -4
  216. package/src/packages/element-constructor/specialObjects.ts +0 -8
  217. package/src/packages/element-constructor/svgTags.ts +0 -588
  218. package/src/packages/en3/attachments/En3SourceManager.ts +0 -116
  219. package/src/packages/en3/core/en3.ts +0 -306
  220. package/src/packages/en3/index.ts +0 -52
  221. package/src/packages/en3/instances/en3LazyLoader.ts +0 -22
  222. package/src/packages/en3/libs/MeshoptDecoder.js +0 -138
  223. package/src/packages/en3/loaders/en3GLTFLoader.ts +0 -54
  224. package/src/packages/en3/loaders/en3TextureLoader.ts +0 -3
  225. package/src/packages/en3/objects/En3Clip.ts +0 -53
  226. package/src/packages/en3/objects/En3ClipHelpers.ts +0 -12
  227. package/src/packages/en3/objects/En3GLTF.ts +0 -35
  228. package/src/packages/en3/objects/En3Image.ts +0 -18
  229. package/src/packages/en3/objects/En3ImageLike.ts +0 -101
  230. package/src/packages/en3/objects/En3Video.ts +0 -88
  231. package/src/packages/en3/test/En3HTML.ts +0 -55
  232. package/src/packages/en3/test/En3ModifiedMaterial.ts +0 -221
  233. package/src/packages/en3/test/En3Raycaster.ts +0 -187
  234. package/src/packages/en3/utils/coverTexture.ts +0 -29
  235. package/src/packages/en3/utils/dispose.ts +0 -27
  236. package/src/packages/en3/utils/traverseMaterials.ts +0 -10
  237. package/src/packages/en3/utils/traverseMeshes.ts +0 -9
  238. package/src/packages/image/index.ts +0 -19
  239. package/src/packages/intersector/index.ts +0 -83
  240. package/src/packages/ladder/index.ts +0 -112
  241. package/src/packages/layout-box/index.ts +0 -417
  242. package/src/packages/loading/index.ts +0 -131
  243. package/src/packages/measurer/CumulativeOffsetLeft.ts +0 -8
  244. package/src/packages/measurer/CumulativeOffsetTop.ts +0 -8
  245. package/src/packages/measurer/Meaurer.ts +0 -38
  246. package/src/packages/measurer/index.ts +0 -3
  247. package/src/packages/media/index.ts +0 -38
  248. package/src/packages/morph/Link.ts +0 -32
  249. package/src/packages/morph/Morph.ts +0 -246
  250. package/src/packages/morph/index.ts +0 -10
  251. package/src/packages/notifier/index.ts +0 -41
  252. package/src/packages/order/index.ts +0 -14
  253. package/src/packages/resizer/index.ts +0 -55
  254. package/src/packages/router/Link.ts +0 -33
  255. package/src/packages/router/Route.ts +0 -152
  256. package/src/packages/router/RouteElement.ts +0 -34
  257. package/src/packages/router/Router.ts +0 -190
  258. package/src/packages/router/index.ts +0 -13
  259. package/src/packages/scroll/ScrollElement.ts +0 -618
  260. package/src/packages/scroll/ScrollUserElement.ts +0 -21
  261. package/src/packages/scroll/ScrollbarElement.ts +0 -170
  262. package/src/packages/scroll/index.ts +0 -2
  263. package/src/packages/scroll-entries/index.ts +0 -74
  264. package/src/packages/source/SourceClass.ts +0 -77
  265. package/src/packages/source/SourceElement.ts +0 -177
  266. package/src/packages/source/SourceManager.ts +0 -61
  267. package/src/packages/source/SourceSet.ts +0 -52
  268. package/src/packages/source/index.ts +0 -8
  269. package/src/packages/store/Composed.ts +0 -33
  270. package/src/packages/store/Derived.ts +0 -24
  271. package/src/packages/store/DerivedArray.ts +0 -36
  272. package/src/packages/store/Resource.ts +0 -38
  273. package/src/packages/store/Store.ts +0 -144
  274. package/src/packages/store/StoreRegistry.ts +0 -105
  275. package/src/packages/store/index.ts +0 -23
  276. package/src/packages/ticker/index.ts +0 -173
  277. package/src/packages/utils/array.ts +0 -3
  278. package/src/packages/utils/attributes.ts +0 -19
  279. package/src/packages/utils/browser.ts +0 -2
  280. package/src/packages/utils/canvas.ts +0 -46
  281. package/src/packages/utils/collisions.ts +0 -12
  282. package/src/packages/utils/coordinates.ts +0 -40
  283. package/src/packages/utils/decoding.ts +0 -11
  284. package/src/packages/utils/dev.ts +0 -5
  285. package/src/packages/utils/dom.ts +0 -48
  286. package/src/packages/utils/easings.ts +0 -69
  287. package/src/packages/utils/file.ts +0 -17
  288. package/src/packages/utils/function.ts +0 -29
  289. package/src/packages/utils/index.ts +0 -61
  290. package/src/packages/utils/layout.ts +0 -22
  291. package/src/packages/utils/math.ts +0 -74
  292. package/src/packages/utils/number.ts +0 -26
  293. package/src/packages/utils/object.ts +0 -108
  294. package/src/packages/utils/string.ts +0 -49
  295. package/src/packages/utils/ts-shape.ts +0 -25
  296. package/src/packages/utils/ts-utility.ts +0 -47
  297. package/src/packages/video/index.ts +0 -39
  298. package/src/playground/index.ts +0 -0
  299. package/tsconfig.json +0 -31
  300. package/vite.config.ts +0 -78
@@ -1,35 +0,0 @@
1
- import { Group } from 'three'
2
- import type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js'
3
- import { dispose } from '../utils/dispose'
4
- import { en3GLTFLoader } from '../loaders/en3GLTFLoader'
5
- import { En3SourceConsumer } from './En3SourceConsumer'
6
- import { En3SourceManager, En3SourceManagerParameters } from '../attachments/En3SourceManager'
7
-
8
- export class En3GLTF extends Group implements En3SourceConsumer<GLTF> {
9
- #sourceManager: En3SourceManager<GLTF>
10
-
11
- constructor(parameters: En3SourceManagerParameters<GLTF>) {
12
- super()
13
-
14
- this.#sourceManager = new En3SourceManager({
15
- loader: en3GLTFLoader,
16
- consumer: this,
17
- ...parameters,
18
- })
19
-
20
- this.#sourceManager.data.subscribe((detail) => {
21
- if (!detail.current) {
22
- this.children.forEach((child) => {
23
- this.remove(child)
24
- dispose(child)
25
- })
26
- } else {
27
- this.add(...detail.current.scene.children)
28
- }
29
- })
30
- }
31
-
32
- public get sourceManager() {
33
- return this.#sourceManager
34
- }
35
- }
@@ -1,18 +0,0 @@
1
- import { Texture } from 'three'
2
- import { En3ImageLike, En3ImageLikeMaterial, En3ImageLikeParameters } from './En3ImageLike'
3
- import { en3TextureLoader } from '../loaders/en3TextureLoader'
4
-
5
- export interface En3ImageParameters<TMaterial extends En3ImageLikeMaterial<Texture>>
6
- extends Omit<En3ImageLikeParameters<Texture, TMaterial>, 'loader'> {}
7
-
8
- export class En3Image<TMaterial extends En3ImageLikeMaterial<Texture>> extends En3ImageLike<
9
- Texture,
10
- TMaterial
11
- > {
12
- constructor(parameters: En3ImageParameters<TMaterial>) {
13
- super({
14
- ...parameters,
15
- loader: en3TextureLoader,
16
- })
17
- }
18
- }
@@ -1,101 +0,0 @@
1
- import { Material, Mesh, PlaneGeometry, SRGBColorSpace, Texture } from 'three'
2
- import { coverTexture } from '../utils/coverTexture'
3
- import {
4
- En3SourceManager,
5
- En3SourceManagerLoader,
6
- En3SourceManagerParameters,
7
- } from '../attachments/En3SourceManager'
8
- import { En3SourceConsumer } from './En3SourceConsumer'
9
- import { resizer } from '$packages/resizer'
10
-
11
- export type En3ImageLikeMaterial<TTexture extends Texture> = Material & { map: TTexture | null }
12
-
13
- export interface En3ImageLikeParameters<
14
- TTexture extends Texture,
15
- TMaterial extends En3ImageLikeMaterial<TTexture>
16
- > extends En3SourceManagerParameters<TTexture> {
17
- width?: number
18
- height?: number
19
- widthSegments?: number
20
- heightSegments?: number
21
- material?: TMaterial
22
- cover?: boolean
23
- loader: En3SourceManagerLoader<TTexture>
24
- }
25
-
26
- export class En3ImageLike<
27
- TTexture extends Texture,
28
- TMaterial extends En3ImageLikeMaterial<TTexture>
29
- >
30
- extends Mesh<PlaneGeometry, TMaterial>
31
- implements En3SourceConsumer<TTexture>
32
- {
33
- #sourceManager: En3SourceManager<TTexture>
34
- #isCover: boolean
35
-
36
- constructor(parameters: En3ImageLikeParameters<TTexture, TMaterial>) {
37
- super(
38
- new PlaneGeometry(
39
- parameters.width,
40
- parameters.height,
41
- parameters.widthSegments,
42
- parameters.heightSegments
43
- ),
44
- parameters.material
45
- )
46
-
47
- this.#sourceManager = new En3SourceManager<TTexture>({
48
- consumer: this,
49
- ...parameters,
50
- })
51
-
52
- this.#isCover = parameters.cover || false
53
-
54
- this.addEventListener('added', () => {
55
- resizer.subscribe(this.#resizeListener)
56
- })
57
-
58
- this.addEventListener('removed', () => {
59
- resizer.unsubscribe(this.#resizeListener)
60
- })
61
-
62
- this.#sourceManager.data.subscribe((detail) => {
63
- if (!detail.current && detail.previous) {
64
- detail.previous.dispose()
65
- } else if (detail.current) {
66
- if (this.material) {
67
- if (this.#isCover) {
68
- detail.current.matrixAutoUpdate = false
69
- }
70
-
71
- detail.current.colorSpace = SRGBColorSpace
72
- detail.current.center.set(0.5, 0.5)
73
- this.material.map = detail.current
74
- this.material.needsUpdate = true
75
- this.#resizeListener()
76
- }
77
- }
78
- })
79
- }
80
-
81
- public get sourceManager() {
82
- return this.#sourceManager
83
- }
84
-
85
- public updateTexture() {
86
- this.#resizeListener()
87
- }
88
-
89
- protected onCoverResize(texture: TTexture) {
90
- coverTexture(texture, {
91
- x: this.scale.x,
92
- y: this.scale.y,
93
- })
94
- }
95
-
96
- #resizeListener = () => {
97
- if (this.#sourceManager.data.current && this.#isCover) {
98
- this.onCoverResize(this.#sourceManager.data.current)
99
- }
100
- }
101
- }
@@ -1,88 +0,0 @@
1
- import { Loader, VideoTexture } from 'three'
2
- import { En3ImageLike, En3ImageLikeMaterial, En3ImageLikeParameters } from './En3ImageLike'
3
- import { coverTexture } from '../utils/coverTexture'
4
-
5
- class En3VideoLoader<
6
- P extends Parameters<Loader<VideoTexture>['load']> = Parameters<Loader<VideoTexture>['load']>
7
- > {
8
- public load(...parameters: P) {
9
- const url = parameters[0]
10
- const onLoad = parameters[1]
11
- const onError = parameters[3]
12
-
13
- const videoElement = document.createElement('video')
14
- videoElement.src = url
15
-
16
- videoElement.onloadeddata = () => {
17
- onLoad(new VideoTexture(videoElement))
18
-
19
- videoElement.onerror = null
20
- videoElement.onloadeddata = null
21
- }
22
-
23
- videoElement.onerror = () => {
24
- onError?.(url)
25
-
26
- videoElement.onerror = null
27
- videoElement.onloadeddata = null
28
- }
29
- }
30
- }
31
-
32
- export interface En3VideoParameters<TMaterial extends En3ImageLikeMaterial<VideoTexture>>
33
- extends Omit<En3ImageLikeParameters<VideoTexture, TMaterial>, 'loader'> {
34
- autoplay?: boolean
35
- muted?: boolean
36
- loop?: boolean
37
- }
38
-
39
- export class En3Video<TMaterial extends En3ImageLikeMaterial<VideoTexture>> extends En3ImageLike<
40
- VideoTexture,
41
- TMaterial
42
- > {
43
- #isAutoplay: boolean
44
- #isMuted: boolean
45
- #isLoop: boolean
46
-
47
- constructor(parameters: En3VideoParameters<TMaterial>) {
48
- super({
49
- ...parameters,
50
- loader: new En3VideoLoader(),
51
- })
52
-
53
- this.#isAutoplay = parameters.autoplay || false
54
- this.#isMuted = parameters.muted || false
55
- this.#isLoop = parameters.loop || false
56
-
57
- this.sourceManager.data.subscribe((v) => {
58
- if (v.current) {
59
- const video = v.current.image as HTMLVideoElement
60
-
61
- if (this.#isMuted) {
62
- video.muted = true
63
- }
64
-
65
- if (this.#isLoop) {
66
- video.loop = true
67
- }
68
-
69
- if (this.#isAutoplay) {
70
- video.play()
71
- }
72
- }
73
- })
74
- }
75
-
76
- protected override onCoverResize(texture: VideoTexture) {
77
- const video = texture.image as HTMLVideoElement
78
-
79
- coverTexture(
80
- texture,
81
- {
82
- x: this.scale.x,
83
- y: this.scale.y,
84
- },
85
- video.videoWidth / video.videoHeight
86
- )
87
- }
88
- }
@@ -1,55 +0,0 @@
1
- import { CSS3DObject, CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js'
2
- import { RESIZE_ORDER, TICK_ORDER } from '$packages/order'
3
- import { resizer } from '$packages/resizer'
4
- import { ticker } from '$packages/ticker'
5
- import { en3 } from '../core/en3'
6
-
7
- export interface En3HTMLParameters {
8
- element: HTMLElement
9
- }
10
-
11
- export class En3HTML extends CSS3DObject {
12
- static #cssRenderer: CSS3DRenderer = null!
13
-
14
- static #createRenderer() {
15
- En3HTML.#cssRenderer = new CSS3DRenderer()
16
- En3HTML.#cssRenderer.domElement.style.cssText = `
17
- position: fixed;
18
- left: 0;
19
- top: 0;
20
- width: 100%;
21
- height: 100%;
22
- z-index: 1;
23
- pointer-events: none;
24
- overflow: hidden;
25
- `
26
-
27
- en3.containerElement.prepend(En3HTML.#cssRenderer.domElement)
28
-
29
- resizer.subscribe(this.#resizeListener, RESIZE_ORDER.EN3 + 1)
30
- ticker.subscribe(this.#tickListener, { order: TICK_ORDER.EN3 + 1 })
31
- }
32
-
33
- public static destroy() {
34
- resizer.unsubscribe(this.#resizeListener)
35
- ticker.unsubscribe(this.#tickListener)
36
-
37
- this.#cssRenderer = null!
38
- }
39
-
40
- static #tickListener = () => {
41
- this.#cssRenderer.render(en3.scene, en3.camera)
42
- }
43
-
44
- static #resizeListener = () => {
45
- this.#cssRenderer.setSize(en3.width, en3.height)
46
- }
47
-
48
- constructor(parameters: En3HTMLParameters) {
49
- super(parameters.element)
50
-
51
- if (!En3HTML.#cssRenderer) {
52
- En3HTML.#createRenderer()
53
- }
54
- }
55
- }
@@ -1,221 +0,0 @@
1
- import { Material, WebGLProgramParametersWithUniforms } from 'three'
2
-
3
- export type En3VertexChunk =
4
- | 'begin_vertex'
5
- | 'beginnormal_vertex'
6
- | 'clipping_planes_pars_vertex'
7
- | 'clipping_planes_vertex'
8
- | 'color_pars_vertex'
9
- | 'color_vertex'
10
- | 'default_vertex'
11
- | 'defaultnormal_vertex'
12
- | 'displacementmap_pars_vertex'
13
- | 'displacementmap_vertex'
14
- | 'envmap_pars_vertex'
15
- | 'envmap_vertex'
16
- | 'fog_pars_vertex'
17
- | 'fog_vertex'
18
- | 'lights_pars_begin'
19
- | 'logdepthbuf_pars_vertex'
20
- | 'logdepthbuf_vertex'
21
- | 'morphcolor_vertex'
22
- | 'morphnormal_vertex'
23
- | 'morphtarget_pars_vertex'
24
- | 'morphtarget_vertex'
25
- | 'normal_pars_vertex'
26
- | 'normal_vertex'
27
- | 'project_vertex'
28
- | 'shadowmap_pars_vertex'
29
- | 'shadowmap_vertex'
30
- | 'skinbase_vertex'
31
- | 'skinning_pars_vertex'
32
- | 'skinning_vertex'
33
- | 'skinnormal_vertex'
34
- | 'uv_pars_vertex'
35
- | 'uv_vertex'
36
- | 'worldpos_vertex'
37
-
38
- export type En3FragmentChunk =
39
- | 'alphahash_fragment'
40
- | 'alphahash_pars_fragment'
41
- | 'alphamap_fragment'
42
- | 'alphamap_pars_fragment'
43
- | 'alphatest_fragment'
44
- | 'alphatest_pars_fragment'
45
- | 'aomap_fragment'
46
- | 'aomap_pars_fragment'
47
- | 'bumpmap_pars_fragment'
48
- | 'clearcoat_normal_fragment_begin'
49
- | 'clearcoat_normal_fragment_maps'
50
- | 'clearcoat_pars_fragment'
51
- | 'clipping_planes_fragment'
52
- | 'clipping_planes_pars_fragment'
53
- | 'color_fragment'
54
- | 'color_pars_fragment'
55
- | 'colorspace_fragment'
56
- | 'colorspace_pars_fragment'
57
- | 'cube_uv_reflection_fragment'
58
- | 'default_fragment'
59
- | 'dithering_fragment'
60
- | 'dithering_pars_fragment'
61
- | 'emissivemap_fragment'
62
- | 'emissivemap_pars_fragment'
63
- | 'envmap_common_pars_fragment'
64
- | 'envmap_fragment'
65
- | 'envmap_pars_fragment'
66
- | 'envmap_physical_pars_fragment'
67
- | 'fog_fragment'
68
- | 'fog_pars_fragment'
69
- | 'gradientmap_pars_fragment'
70
- | 'iridescence_fragment'
71
- | 'iridescence_pars_fragment'
72
- | 'lightmap_fragment'
73
- | 'lightmap_pars_fragment'
74
- | 'lights_fragment_begin'
75
- | 'lights_fragment_end'
76
- | 'lights_fragment_maps'
77
- | 'lights_lambert_fragment'
78
- | 'lights_lambert_pars_fragment'
79
- | 'lights_phong_fragment'
80
- | 'lights_phong_pars_fragment'
81
- | 'lights_physical_fragment'
82
- | 'lights_physical_pars_fragment'
83
- | 'lights_toon_fragment'
84
- | 'lights_toon_pars_fragment'
85
- | 'logdepthbuf_fragment'
86
- | 'logdepthbuf_pars_fragment'
87
- | 'map_fragment'
88
- | 'map_pars_fragment'
89
- | 'map_particle_fragment'
90
- | 'map_particle_pars_fragment'
91
- | 'metalnessmap_fragment'
92
- | 'metalnessmap_pars_fragment'
93
- | 'normal_fragment_begin'
94
- | 'normal_fragment_maps'
95
- | 'normal_pars_fragment'
96
- | 'normalmap_pars_fragment'
97
- | 'opaque_fragment'
98
- | 'premultiplied_alpha_fragment'
99
- | 'roughnessmap_fragment'
100
- | 'roughnessmap_pars_fragment'
101
- | 'shadowmap_pars_fragment'
102
- | 'shadowmask_pars_fragment'
103
- | 'specularmap_fragment'
104
- | 'specularmap_pars_fragment'
105
- | 'tonemapping_fragment'
106
- | 'tonemapping_pars_fragment'
107
- | 'transmission_fragment'
108
- | 'transmission_pars_fragment'
109
- | 'uv_pars_fragment'
110
-
111
- export type En3ModifiedMaterialUniforms = { [key: string]: { value: any } }
112
-
113
- export interface En3ModifiedMaterialParameters<
114
- TMaterial extends Material,
115
- Uniforms extends En3ModifiedMaterialUniforms = {}
116
- > {
117
- material: TMaterial
118
- uniforms?: Uniforms
119
- vertextDeclarations?: string
120
- fragmentDeclarations?: string
121
- vertexChunk?: {
122
- update?: En3VertexChunk
123
- replace?: En3VertexChunk
124
- content: string
125
- }
126
- fragmentChunk?: {
127
- update?: En3FragmentChunk
128
- replace?: En3FragmentChunk
129
- content: string
130
- }
131
- log?: boolean
132
- onReady?: (modifiedMaterial: En3ModifiedMaterial<TMaterial, Uniforms>) => Function | void
133
- }
134
-
135
- export class En3ModifiedMaterial<
136
- TMaterial extends Material,
137
- Uniforms extends En3ModifiedMaterialUniforms = {}
138
- > {
139
- #material: TMaterial
140
- #uniforms: Uniforms
141
-
142
- constructor(parameters: En3ModifiedMaterialParameters<TMaterial, Uniforms>) {
143
- this.#material = parameters.material
144
- this.#uniforms = (parameters.uniforms || {}) as Uniforms
145
- this.#material.userData.uniforms = this.#uniforms
146
-
147
- let destroy: Function | void
148
-
149
- const dispose = () => {
150
- destroy?.()
151
- }
152
-
153
- this.#material.addEventListener('dispose', dispose)
154
-
155
- this.#material.onBeforeCompile = (shader) => {
156
- destroy?.()
157
-
158
- for (const key in this.#uniforms) {
159
- shader.uniforms[key] = this.#uniforms[key]
160
- }
161
-
162
- if (parameters.vertextDeclarations) {
163
- shader.vertexShader = `
164
- ${parameters.vertextDeclarations}
165
- ${shader.vertexShader}
166
- `
167
- }
168
-
169
- if (parameters.fragmentDeclarations) {
170
- shader.fragmentShader = `
171
- ${parameters.fragmentDeclarations}
172
- ${shader.fragmentShader}
173
- `
174
- }
175
-
176
- this.#chunk(shader, 'vertex', parameters)
177
- this.#chunk(shader, 'fragment', parameters)
178
-
179
- destroy = parameters.onReady?.(this)
180
-
181
- if (parameters.log) {
182
- console.log('VERTEX SHADER: ', shader.vertexShader)
183
- console.log('FRAGMENT SHADER: ', shader.fragmentShader)
184
- }
185
- }
186
- }
187
-
188
- public get material() {
189
- return this.#material
190
- }
191
-
192
- public get uniforms() {
193
- return this.#uniforms
194
- }
195
-
196
- #chunk(
197
- shader: WebGLProgramParametersWithUniforms,
198
- type: 'vertex' | 'fragment',
199
- parameters: En3ModifiedMaterialParameters<TMaterial, Uniforms>
200
- ) {
201
- const chunkName = type === 'vertex' ? 'vertexChunk' : 'fragmentChunk'
202
- const shaderName = type === 'vertex' ? 'vertexShader' : 'fragmentShader'
203
-
204
- if (parameters[chunkName]) {
205
- if (parameters[chunkName]!.replace) {
206
- shader[shaderName] = shader[shaderName].replace(
207
- `#include <${parameters[chunkName]!.replace}>`,
208
- parameters[chunkName]!.content
209
- )
210
- } else if (parameters[chunkName]!.update) {
211
- shader[shaderName] = shader[shaderName].replace(
212
- `#include <${parameters[chunkName]!.update}>`,
213
- `
214
- #include <${parameters[chunkName]!.update}>
215
- ${parameters[chunkName]!.content}
216
- `
217
- )
218
- }
219
- }
220
- }
221
- }
@@ -1,187 +0,0 @@
1
- import { Intersection, Object3D, Raycaster, Vector2 } from 'three'
2
- import { en3 } from '../core/en3'
3
-
4
- export type En3RaycasterEventType =
5
- | 'en3-pointerdown'
6
- | 'en3-pointerup'
7
- | 'en3-pointermove'
8
- | 'en3-pointerleave'
9
- | 'en3-pointerenter'
10
- | 'en3-pointermove'
11
-
12
- export type En3RaycasterEvent = {
13
- type: En3RaycasterEventType
14
- originalEvent: PointerEvent
15
- } & Intersection<Object3D>
16
-
17
- export interface En3RaycasterOptions {
18
- targetName?: string
19
- eventDispatcher?: Object3D
20
- propagation?: boolean
21
- }
22
-
23
- interface En3RaycasterTargetParameters extends En3RaycasterOptions {
24
- object3D: Object3D
25
- }
26
-
27
- export type En3RaycasterCallback = (event: En3RaycasterEvent) => void
28
-
29
- class En3RaycasterTarget {
30
- #targetName: string | undefined
31
- #eventDispatcher: Object3D
32
- #propagation: boolean
33
- #object3D: Object3D
34
- #target: () => Object3D
35
-
36
- public intersection: Intersection<Object3D> | undefined
37
-
38
- constructor(parameters: En3RaycasterTargetParameters) {
39
- this.#targetName = parameters.targetName || undefined
40
- this.#eventDispatcher = parameters.eventDispatcher || parameters.object3D
41
- this.#propagation = parameters.propagation || false
42
- this.#object3D = parameters.object3D
43
-
44
- this.#target = !this.#targetName
45
- ? () => this.#object3D
46
- : () => this.#object3D.getObjectByName(this.#targetName!) || this.#object3D
47
- }
48
-
49
- public get object3D() {
50
- return this.#object3D
51
- }
52
-
53
- public get eventDispatcher() {
54
- return this.#eventDispatcher
55
- }
56
-
57
- public get propagation() {
58
- return this.#propagation
59
- }
60
-
61
- public get target() {
62
- return this.#target()
63
- }
64
-
65
- public dispatch(type: En3RaycasterEventType, originalEvent: PointerEvent) {
66
- this.eventDispatcher.dispatchEvent<any>({
67
- originalEvent,
68
- type,
69
- ...this.intersection,
70
- })
71
- }
72
- }
73
-
74
- export class En3Raycaster {
75
- static #instance: En3Raycaster | undefined
76
-
77
- #targets: Array<En3RaycasterTarget> = []
78
- #hits: Array<En3RaycasterTarget> = []
79
-
80
- #pointer = new Vector2()
81
- #raycaster = new Raycaster()
82
-
83
- constructor() {
84
- if (En3Raycaster.#instance) {
85
- return En3Raycaster.#instance
86
- }
87
-
88
- En3Raycaster.#instance = this
89
-
90
- en3.containerElement.addEventListener('pointerdown', this.#pointerdownListener)
91
- en3.containerElement.addEventListener('pointerup', this.#pointerupListener)
92
- en3.containerElement.addEventListener('pointermove', this.#pointermoveListener)
93
- }
94
-
95
- public destroy() {
96
- en3.containerElement.removeEventListener('pointerdown', this.#pointerdownListener)
97
- en3.containerElement.removeEventListener('pointerup', this.#pointerupListener)
98
- en3.containerElement.removeEventListener('pointermove', this.#pointermoveListener)
99
- En3Raycaster.#instance = undefined
100
- }
101
-
102
- public add(object3D: Object3D, options?: En3RaycasterOptions) {
103
- if (this.#targets.find((t) => t.object3D.uuid === object3D.uuid)) {
104
- return
105
- }
106
-
107
- const target = new En3RaycasterTarget({
108
- object3D,
109
- ...options,
110
- })
111
-
112
- this.#targets.push(target)
113
- }
114
-
115
- public remove(object3D: Object3D) {
116
- this.#targets = this.#targets.filter((t) => t.object3D.uuid !== object3D.uuid)
117
- this.#hits = this.#hits.filter((h) => h.object3D.uuid !== object3D.uuid)
118
- }
119
-
120
- #pointerdownListener = (event: PointerEvent) => {
121
- for (let index = 0; index < this.#hits.length; index++) {
122
- this.#hits[index].dispatch('en3-pointerdown', event)
123
- }
124
- }
125
-
126
- #pointerupListener = (event: PointerEvent) => {
127
- for (let index = 0; index < this.#hits.length; index++) {
128
- this.#hits[index].dispatch('en3-pointerup', event)
129
- }
130
- }
131
-
132
- #pointermoveListener = (event: PointerEvent) => {
133
- this.#pointer.x = (event.clientX / en3.width) * 2 - 1
134
- this.#pointer.y = -(event.clientY / en3.height) * 2 + 1
135
-
136
- if (en3.camera) {
137
- this.#raycaster.setFromCamera(this.#pointer, en3.camera)
138
- }
139
-
140
- const hits: Array<En3RaycasterTarget> = []
141
-
142
- for (const target of this.#targets) {
143
- const intersection = this.#raycaster.intersectObject(target.target)
144
-
145
- if (intersection.length) {
146
- target.intersection = intersection[0]
147
- hits.push(target)
148
- }
149
- }
150
-
151
- let isStopPropagation = false
152
-
153
- const leaveHits = this.#hits.filter(
154
- (s) => !hits.find((h) => h.object3D.uuid === s.object3D.uuid)
155
- )
156
-
157
- const finalHits = hits
158
- .sort((a, b) => b.object3D.position.z - a.object3D.position.z)
159
- .filter((h) => {
160
- if (isStopPropagation) {
161
- return false
162
- }
163
-
164
- isStopPropagation = !h.propagation
165
-
166
- return true
167
- })
168
-
169
- const enterHits = finalHits.filter(
170
- (s) => !this.#hits.find((h) => h.object3D.uuid === s.object3D.uuid)
171
- )
172
-
173
- for (let index = 0; index < leaveHits.length; index++) {
174
- leaveHits[index].dispatch('en3-pointerleave', event)
175
- }
176
-
177
- for (let index = 0; index < enterHits.length; index++) {
178
- enterHits[index].dispatch('en3-pointerenter', event)
179
- }
180
-
181
- this.#hits = finalHits
182
-
183
- for (let index = 0; index < this.#hits.length; index++) {
184
- this.#hits[index].dispatch('en3-pointermove', event)
185
- }
186
- }
187
- }