File tree Expand file tree Collapse file tree 9 files changed +49906
-0
lines changed Expand file tree Collapse file tree 9 files changed +49906
-0
lines changed Original file line number Diff line number Diff line change
1
+ .idea
2
+ .DS_Store
3
+ package-lock.json
4
+
5
+ * .log
6
+ npm-debug.log *
7
+ yarn-debug.log *
8
+ yarn-error.log *
9
+
10
+ node_modules
11
+ coverage
12
+ dist
Original file line number Diff line number Diff line change
1
+ # weapp-adapter
Original file line number Diff line number Diff line change
1
+ const fs = require ( 'fs' )
2
+ const path = require ( 'path' )
3
+ const StringReplacePlugin = require ( "string-replace-webpack-plugin" ) ;
4
+
5
+ module . exports = {
6
+ entry : path . join ( __dirname , '../src/index' ) ,
7
+ target : 'web' ,
8
+ output : {
9
+ path : path . join ( __dirname , '../dist' ) ,
10
+ filename : 'index.js' ,
11
+ libraryTarget : 'commonjs' ,
12
+ } ,
13
+ module : {
14
+ rules : [
15
+ {
16
+ test : / \. j s $ / ,
17
+ exclude : / n o d e _ m o d u l e s / ,
18
+ loader : 'babel-loader' ,
19
+ options : {
20
+ presets : [
21
+ "@babel/preset-env" ,
22
+ ] ,
23
+ plugins : [ "@babel/plugin-proposal-class-properties" ]
24
+ }
25
+ } ,
26
+ {
27
+ test : / \i n d e x .j s $ / ,
28
+ loader : StringReplacePlugin . replace ( {
29
+ replacements : [
30
+ {
31
+ pattern : / _ _ I N J E C T _ T H R E E _ _ / ig,
32
+ replacement : ( ) => {
33
+ return fs . readFileSync ( path . resolve ( __dirname , '../vendor/three.js' ) , 'utf8' )
34
+ }
35
+ }
36
+ ]
37
+ } )
38
+ }
39
+ ]
40
+ } ,
41
+ plugins : [
42
+ // an instance of the plugin must be present
43
+ new StringReplacePlugin ( )
44
+ ] ,
45
+ optimization :{
46
+ minimize : false ,
47
+ }
48
+ }
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " miniprogram-threejs" ,
3
+ "version" : " 0.0.1" ,
4
+ "description" : " ThreeJS adapted for WeChat MiniProgram" ,
5
+ "main" : " dist/index.js" ,
6
+ "directories" : {
7
+ "test" : " test"
8
+ },
9
+ "scripts" : {
10
+ "dev" : " webpack --config build/webpack.config.js --watch" ,
11
+ "build" : " webpack --hide-modules --config build/webpack.config.js"
12
+ },
13
+ "miniprogram" : " dist/" ,
14
+ "author" : " wechat-miniprogram" ,
15
+ "license" : " MIT" ,
16
+ "devDependencies" : {
17
+ "@babel/core" : " ^7.5.5" ,
18
+ "@babel/plugin-proposal-class-properties" : " ^7.5.5" ,
19
+ "@babel/preset-env" : " ^7.5.5" ,
20
+ "babel-loader" : " ^8.0.6" ,
21
+ "eslint" : " ^3.4.0" ,
22
+ "eslint-friendly-formatter" : " ^2.0.6" ,
23
+ "eslint-loader" : " ^1.5.0" ,
24
+ "eslint-plugin-jest" : " ^20.0.3" ,
25
+ "eventemitter2" : " ^4.1.2" ,
26
+ "jest" : " ^20.0.4" ,
27
+ "path" : " ^0.12.7" ,
28
+ "string-replace-loader" : " ^2.2.0" ,
29
+ "string-replace-webpack-plugin" : " ^0.1.3" ,
30
+ "webpack" : " ^4.39.1" ,
31
+ "webpack-cli" : " ^3.3.6"
32
+ }
33
+ }
Original file line number Diff line number Diff line change
1
+ const _events = new WeakMap ( )
2
+
3
+ export default class EventTarget {
4
+ constructor ( ) {
5
+ _events . set ( this , { } )
6
+ }
7
+
8
+ addEventListener ( type , listener , options = { } ) {
9
+ let events = _events . get ( this )
10
+
11
+ if ( ! events ) {
12
+ events = { }
13
+ _events . set ( this , events )
14
+ }
15
+ if ( ! events [ type ] ) {
16
+ events [ type ] = [ ]
17
+ }
18
+ events [ type ] . push ( listener )
19
+
20
+ if ( options . capture ) {
21
+ // console.warn('EventTarget.addEventListener: options.capture is not implemented.')
22
+ }
23
+ if ( options . once ) {
24
+ // console.warn('EventTarget.addEventListener: options.once is not implemented.')
25
+ }
26
+ if ( options . passive ) {
27
+ // console.warn('EventTarget.addEventListener: options.passive is not implemented.')
28
+ }
29
+ }
30
+
31
+ removeEventListener ( type , listener , options = { } ) {
32
+ const events = _events . get ( this )
33
+
34
+ if ( events ) {
35
+ const listeners = events [ type ]
36
+
37
+ if ( listeners && listeners . length > 0 ) {
38
+ for ( let i = listeners . length ; i -- ; i > 0 ) {
39
+ if ( listeners [ i ] === listener ) {
40
+ listeners . splice ( i , 1 )
41
+ break
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ dispatchEvent ( event = { } ) {
49
+ const listeners = _events . get ( this ) [ event . type ]
50
+
51
+ if ( listeners ) {
52
+ for ( let i = 0 ; i < listeners . length ; i ++ ) {
53
+ listeners [ i ] ( event )
54
+ }
55
+ }
56
+ }
57
+ }
Original file line number Diff line number Diff line change
1
+ import EventTarget from './EventTarget.js'
2
+
3
+ export default class Node extends EventTarget {
4
+ constructor ( ) {
5
+ super ( )
6
+ this . childNodes = [ ]
7
+ }
8
+
9
+ appendChild ( node ) {
10
+ this . childNodes . push ( node )
11
+ // if (node instanceof Node) {
12
+ // this.childNodes.push(node)
13
+ // } else {
14
+ // throw new TypeError('Failed to executed \'appendChild\' on \'Node\': parameter 1 is not of type \'Node\'.')
15
+ // }
16
+ }
17
+
18
+ cloneNode ( ) {
19
+ const copyNode = Object . create ( this )
20
+
21
+ Object . assign ( copyNode , this )
22
+ return copyNode
23
+ }
24
+
25
+ removeChild ( node ) {
26
+ const index = this . childNodes . findIndex ( ( child ) => child === node )
27
+
28
+ if ( index > - 1 ) {
29
+ return this . childNodes . splice ( index , 1 )
30
+ }
31
+ return null
32
+ }
33
+ }
You can’t perform that action at this time.
0 commit comments