@@ -0,0 +1,25 | |||||
|
1 | { | |||
|
2 | "env": { | |||
|
3 | "browser": true, | |||
|
4 | "amd": true | |||
|
5 | }, | |||
|
6 | "parserOptions": { | |||
|
7 | "ecmaFeatures": { | |||
|
8 | "jsx": true | |||
|
9 | }, | |||
|
10 | "sourceType": "script" | |||
|
11 | }, | |||
|
12 | "extends": "eslint:recommended", | |||
|
13 | "rules": { | |||
|
14 | "no-const-assign": "warn", | |||
|
15 | "no-this-before-super": "warn", | |||
|
16 | "no-undef": "error", | |||
|
17 | "no-unreachable": "warn", | |||
|
18 | "no-unused-vars": "warn", | |||
|
19 | "constructor-super": "warn", | |||
|
20 | "valid-typeof": "warn", | |||
|
21 | "semi" : "warn", | |||
|
22 | "no-invalid-this" : "error", | |||
|
23 | "no-console": "off" | |||
|
24 | } | |||
|
25 | } No newline at end of file |
@@ -0,0 +1,48 | |||||
|
1 | { | |||
|
2 | "extends": "tslint:recommended", | |||
|
3 | "defaultSeverity": "warn", | |||
|
4 | "rules": { | |||
|
5 | "align": [ | |||
|
6 | true, | |||
|
7 | "parameters", | |||
|
8 | "statements" | |||
|
9 | ], | |||
|
10 | "interface-name": [ | |||
|
11 | false | |||
|
12 | ], | |||
|
13 | "max-line-length": [ | |||
|
14 | true, | |||
|
15 | 185 | |||
|
16 | ], | |||
|
17 | "quotemark": [true, "double", "avoid-escape"], | |||
|
18 | "member-access": false, | |||
|
19 | "semicolon": [true, "always", "ignore-bound-class-methods"], | |||
|
20 | "no-bitwise": false, | |||
|
21 | "no-empty": false, | |||
|
22 | "no-namespace": false, | |||
|
23 | "ordered-imports": false, | |||
|
24 | "no-return-await": true, | |||
|
25 | "no-floating-promises": true, | |||
|
26 | "one-line": [ | |||
|
27 | true, | |||
|
28 | "check-open-brace", | |||
|
29 | "check-catch", | |||
|
30 | "check-whitespace" | |||
|
31 | ], | |||
|
32 | "object-literal-sort-keys": false, | |||
|
33 | "trailing-comma": [ | |||
|
34 | true, | |||
|
35 | { | |||
|
36 | "singleline": "never", | |||
|
37 | "multiline": "never" | |||
|
38 | } | |||
|
39 | ], | |||
|
40 | "variable-name": false, | |||
|
41 | "curly": false, | |||
|
42 | "array-type": false, | |||
|
43 | "arrow-parens": [ | |||
|
44 | true, | |||
|
45 | "ban-single-arg-parens" | |||
|
46 | ] | |||
|
47 | } | |||
|
48 | } No newline at end of file |
@@ -25,3 +25,12 d4f0cdae9577caa605d9317d0ceb93f7b67895f3 | |||||
25 | 1a0018655d1c3dafc16ae50971cb535b8555e246 v1.1.0 |
|
25 | 1a0018655d1c3dafc16ae50971cb535b8555e246 v1.1.0 | |
26 | ff3695b0a48f00155ad6c3d7e000fe185ee6f95a v1.1.1 |
|
26 | ff3695b0a48f00155ad6c3d7e000fe185ee6f95a v1.1.1 | |
27 | c276b9b7fa833242d1bf75eeeaae9924feee51e8 v1.1.2 |
|
27 | c276b9b7fa833242d1bf75eeeaae9924feee51e8 v1.1.2 | |
|
28 | fdde09e66c009f4950ec69a393a8e789725da758 v1.2.0 | |||
|
29 | 16678c6055f20ce1a49bdca5e6dabce88ee8deed v1.2.1 | |||
|
30 | bc7556143fe536e3df374bc0070146311884284e v1.2.2 | |||
|
31 | e5bb5e80ce96fc4ca0fbbf0b5390443a616e99fa v1.2.3 | |||
|
32 | cc5be30e84f8a0d9a8e25447651576d9e46ab154 v1.2.4 | |||
|
33 | 2807ab11174c7446830d91d5f1b652a18c6ecae5 v1.2.5 | |||
|
34 | 35a7b6319ebe24973fe10b8d82c19d3d86857b4e v1.2.6 | |||
|
35 | 70058deb750dc18fcd9be83c28cb8371530fffd8 v1.2.7 | |||
|
36 | 367f8caa5bf8fd2d4a56a6cff40be31ab82a2727 v1.2.8 |
@@ -13,6 +13,7 typescript { | |||||
13 | module = "amd" |
|
13 | module = "amd" | |
14 | it.target = "es5" |
|
14 | it.target = "es5" | |
15 | experimentalDecorators = true |
|
15 | experimentalDecorators = true | |
|
16 | noUnusedLocals = true | |||
16 | jsx = "react" |
|
17 | jsx = "react" | |
17 | jsxFactory = "createElement" |
|
18 | jsxFactory = "createElement" | |
18 | moduleResolution = "node" |
|
19 | moduleResolution = "node" | |
@@ -40,7 +41,7 configureTsMain { | |||||
40 | "dojo/*" : [ "typings/dojo/*" ], |
|
41 | "dojo/*" : [ "typings/dojo/*" ], | |
41 | "dijit/*" : [ "typings/dijit/*" ] |
|
42 | "dijit/*" : [ "typings/dijit/*" ] | |
42 | ]*/ |
|
43 | ]*/ | |
43 | types = ["requirejs", "dojo-typings"] |
|
44 | types = ["requirejs", "@implab/dojo-typings"] | |
44 | } |
|
45 | } | |
45 | } |
|
46 | } | |
46 |
|
47 |
@@ -10,12 +10,11 | |||||
10 | "license": "BSD-2-Clause", |
|
10 | "license": "BSD-2-Clause", | |
11 | "devDependencies": { |
|
11 | "devDependencies": { | |
12 | "@implab/core-amd": "^1.4.0", |
|
12 | "@implab/core-amd": "^1.4.0", | |
|
13 | "@implab/dojo-typings": "1.0.0", | |||
13 | "@types/chai": "4.1.3", |
|
14 | "@types/chai": "4.1.3", | |
14 | "@types/requirejs": "2.1.31", |
|
15 | "@types/requirejs": "2.1.31", | |
15 | "@types/yaml": "1.2.0", |
|
16 | "@types/yaml": "1.2.0", | |
16 | "chai": "4.2.0", |
|
|||
17 | "dojo": "1.16.0", |
|
17 | "dojo": "1.16.0", | |
18 | "dojo-typings": "~1.11.9", |
|
|||
19 | "eslint": "6.8.0", |
|
18 | "eslint": "6.8.0", | |
20 | "requirejs": "2.3.6", |
|
19 | "requirejs": "2.3.6", | |
21 | "tslint": "^6.1.3", |
|
20 | "tslint": "^6.1.3", | |
@@ -62,6 +61,12 | |||||
62 | "integrity": "sha512-gaJX1mhri7YpmXDTAYELZnmTznzXYpk2AI7Decsttdi6xY+bqGgH24q0AFcKrx8RY2jfsFXxDdf0fITz2HpBbw==", |
|
61 | "integrity": "sha512-gaJX1mhri7YpmXDTAYELZnmTznzXYpk2AI7Decsttdi6xY+bqGgH24q0AFcKrx8RY2jfsFXxDdf0fITz2HpBbw==", | |
63 | "dev": true |
|
62 | "dev": true | |
64 | }, |
|
63 | }, | |
|
64 | "node_modules/@implab/dojo-typings": { | |||
|
65 | "version": "1.0.0", | |||
|
66 | "resolved": "https://registry.npmjs.org/@implab/dojo-typings/-/dojo-typings-1.0.0.tgz", | |||
|
67 | "integrity": "sha512-B2kvlKJgvyIQAl/k1pVyNmtp4ADvBDCs4Lw/qfBC+Sz/ft4c7EuRXmN/+2dhWrd6A5SMjEgex5oeq6Ja2ntrig==", | |||
|
68 | "dev": true | |||
|
69 | }, | |||
65 | "node_modules/@types/chai": { |
|
70 | "node_modules/@types/chai": { | |
66 | "version": "4.1.3", |
|
71 | "version": "4.1.3", | |
67 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.3.tgz", |
|
72 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.3.tgz", | |
@@ -152,15 +157,6 | |||||
152 | "sprintf-js": "~1.0.2" |
|
157 | "sprintf-js": "~1.0.2" | |
153 | } |
|
158 | } | |
154 | }, |
|
159 | }, | |
155 | "node_modules/assertion-error": { |
|
|||
156 | "version": "1.1.0", |
|
|||
157 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", |
|
|||
158 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", |
|
|||
159 | "dev": true, |
|
|||
160 | "engines": { |
|
|||
161 | "node": "*" |
|
|||
162 | } |
|
|||
163 | }, |
|
|||
164 | "node_modules/astral-regex": { |
|
160 | "node_modules/astral-regex": { | |
165 | "version": "1.0.0", |
|
161 | "version": "1.0.0", | |
166 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", |
|
162 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", | |
@@ -204,23 +200,6 | |||||
204 | "node": ">=6" |
|
200 | "node": ">=6" | |
205 | } |
|
201 | } | |
206 | }, |
|
202 | }, | |
207 | "node_modules/chai": { |
|
|||
208 | "version": "4.2.0", |
|
|||
209 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", |
|
|||
210 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", |
|
|||
211 | "dev": true, |
|
|||
212 | "dependencies": { |
|
|||
213 | "assertion-error": "^1.1.0", |
|
|||
214 | "check-error": "^1.0.2", |
|
|||
215 | "deep-eql": "^3.0.1", |
|
|||
216 | "get-func-name": "^2.0.0", |
|
|||
217 | "pathval": "^1.1.0", |
|
|||
218 | "type-detect": "^4.0.5" |
|
|||
219 | }, |
|
|||
220 | "engines": { |
|
|||
221 | "node": ">=4" |
|
|||
222 | } |
|
|||
223 | }, |
|
|||
224 | "node_modules/chalk": { |
|
203 | "node_modules/chalk": { | |
225 | "version": "2.4.2", |
|
204 | "version": "2.4.2", | |
226 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", |
|
205 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | |
@@ -241,15 +220,6 | |||||
241 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", |
|
220 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", | |
242 | "dev": true |
|
221 | "dev": true | |
243 | }, |
|
222 | }, | |
244 | "node_modules/check-error": { |
|
|||
245 | "version": "1.0.2", |
|
|||
246 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", |
|
|||
247 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", |
|
|||
248 | "dev": true, |
|
|||
249 | "engines": { |
|
|||
250 | "node": "*" |
|
|||
251 | } |
|
|||
252 | }, |
|
|||
253 | "node_modules/cli-cursor": { |
|
223 | "node_modules/cli-cursor": { | |
254 | "version": "3.1.0", |
|
224 | "version": "3.1.0", | |
255 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", |
|
225 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", | |
@@ -329,18 +299,6 | |||||
329 | "ms": "^2.1.1" |
|
299 | "ms": "^2.1.1" | |
330 | } |
|
300 | } | |
331 | }, |
|
301 | }, | |
332 | "node_modules/deep-eql": { |
|
|||
333 | "version": "3.0.1", |
|
|||
334 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", |
|
|||
335 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", |
|
|||
336 | "dev": true, |
|
|||
337 | "dependencies": { |
|
|||
338 | "type-detect": "^4.0.0" |
|
|||
339 | }, |
|
|||
340 | "engines": { |
|
|||
341 | "node": ">=0.12" |
|
|||
342 | } |
|
|||
343 | }, |
|
|||
344 | "node_modules/deep-is": { |
|
302 | "node_modules/deep-is": { | |
345 | "version": "0.1.3", |
|
303 | "version": "0.1.3", | |
346 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", |
|
304 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", | |
@@ -374,15 +332,6 | |||||
374 | "integrity": "sha512-DUiXyoLK6vMF5BPr/qiMLTxDMfiM9qlzN1jxfDsVfuvB/CwhYpNxA/M4mbqKN8PCVGLmccXBJbfmFJPP5+zmzw==", |
|
332 | "integrity": "sha512-DUiXyoLK6vMF5BPr/qiMLTxDMfiM9qlzN1jxfDsVfuvB/CwhYpNxA/M4mbqKN8PCVGLmccXBJbfmFJPP5+zmzw==", | |
375 | "dev": true |
|
333 | "dev": true | |
376 | }, |
|
334 | }, | |
377 | "node_modules/dojo-typings": { |
|
|||
378 | "version": "1.11.9", |
|
|||
379 | "resolved": "https://registry.npmjs.org/dojo-typings/-/dojo-typings-1.11.9.tgz", |
|
|||
380 | "integrity": "sha512-mh8w+Mau2Y1QfTEszEAdO7j6ycNhYxF/Ing6nAk1eUg6NxjeT0viVHjICMd9sU3U463vM2G+KfBBK5grk3/Mlw==", |
|
|||
381 | "dev": true, |
|
|||
382 | "dependencies": { |
|
|||
383 | "@types/chai": "^4.0.4" |
|
|||
384 | } |
|
|||
385 | }, |
|
|||
386 | "node_modules/emoji-regex": { |
|
335 | "node_modules/emoji-regex": { | |
387 | "version": "8.0.0", |
|
336 | "version": "8.0.0", | |
388 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", |
|
337 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", | |
@@ -640,15 +589,6 | |||||
640 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", |
|
589 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", | |
641 | "dev": true |
|
590 | "dev": true | |
642 | }, |
|
591 | }, | |
643 | "node_modules/get-func-name": { |
|
|||
644 | "version": "2.0.0", |
|
|||
645 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", |
|
|||
646 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", |
|
|||
647 | "dev": true, |
|
|||
648 | "engines": { |
|
|||
649 | "node": "*" |
|
|||
650 | } |
|
|||
651 | }, |
|
|||
652 | "node_modules/glob": { |
|
592 | "node_modules/glob": { | |
653 | "version": "7.1.6", |
|
593 | "version": "7.1.6", | |
654 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", |
|
594 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", | |
@@ -1020,15 +960,6 | |||||
1020 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", |
|
960 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", | |
1021 | "dev": true |
|
961 | "dev": true | |
1022 | }, |
|
962 | }, | |
1023 | "node_modules/pathval": { |
|
|||
1024 | "version": "1.1.0", |
|
|||
1025 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", |
|
|||
1026 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", |
|
|||
1027 | "dev": true, |
|
|||
1028 | "engines": { |
|
|||
1029 | "node": "*" |
|
|||
1030 | } |
|
|||
1031 | }, |
|
|||
1032 | "node_modules/prelude-ls": { |
|
963 | "node_modules/prelude-ls": { | |
1033 | "version": "1.1.2", |
|
964 | "version": "1.1.2", | |
1034 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", |
|
965 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", | |
@@ -1427,15 +1358,6 | |||||
1427 | "node": ">= 0.8.0" |
|
1358 | "node": ">= 0.8.0" | |
1428 | } |
|
1359 | } | |
1429 | }, |
|
1360 | }, | |
1430 | "node_modules/type-detect": { |
|
|||
1431 | "version": "4.0.8", |
|
|||
1432 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", |
|
|||
1433 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", |
|
|||
1434 | "dev": true, |
|
|||
1435 | "engines": { |
|
|||
1436 | "node": ">=4" |
|
|||
1437 | } |
|
|||
1438 | }, |
|
|||
1439 | "node_modules/type-fest": { |
|
1361 | "node_modules/type-fest": { | |
1440 | "version": "0.8.1", |
|
1362 | "version": "0.8.1", | |
1441 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", |
|
1363 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", | |
@@ -1561,6 +1483,12 | |||||
1561 | "integrity": "sha512-gaJX1mhri7YpmXDTAYELZnmTznzXYpk2AI7Decsttdi6xY+bqGgH24q0AFcKrx8RY2jfsFXxDdf0fITz2HpBbw==", |
|
1483 | "integrity": "sha512-gaJX1mhri7YpmXDTAYELZnmTznzXYpk2AI7Decsttdi6xY+bqGgH24q0AFcKrx8RY2jfsFXxDdf0fITz2HpBbw==", | |
1562 | "dev": true |
|
1484 | "dev": true | |
1563 | }, |
|
1485 | }, | |
|
1486 | "@implab/dojo-typings": { | |||
|
1487 | "version": "1.0.0", | |||
|
1488 | "resolved": "https://registry.npmjs.org/@implab/dojo-typings/-/dojo-typings-1.0.0.tgz", | |||
|
1489 | "integrity": "sha512-B2kvlKJgvyIQAl/k1pVyNmtp4ADvBDCs4Lw/qfBC+Sz/ft4c7EuRXmN/+2dhWrd6A5SMjEgex5oeq6Ja2ntrig==", | |||
|
1490 | "dev": true | |||
|
1491 | }, | |||
1564 | "@types/chai": { |
|
1492 | "@types/chai": { | |
1565 | "version": "4.1.3", |
|
1493 | "version": "4.1.3", | |
1566 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.3.tgz", |
|
1494 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.3.tgz", | |
@@ -1636,12 +1564,6 | |||||
1636 | "sprintf-js": "~1.0.2" |
|
1564 | "sprintf-js": "~1.0.2" | |
1637 | } |
|
1565 | } | |
1638 | }, |
|
1566 | }, | |
1639 | "assertion-error": { |
|
|||
1640 | "version": "1.1.0", |
|
|||
1641 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", |
|
|||
1642 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", |
|
|||
1643 | "dev": true |
|
|||
1644 | }, |
|
|||
1645 | "astral-regex": { |
|
1567 | "astral-regex": { | |
1646 | "version": "1.0.0", |
|
1568 | "version": "1.0.0", | |
1647 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", |
|
1569 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", | |
@@ -1676,20 +1598,6 | |||||
1676 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", |
|
1598 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", | |
1677 | "dev": true |
|
1599 | "dev": true | |
1678 | }, |
|
1600 | }, | |
1679 | "chai": { |
|
|||
1680 | "version": "4.2.0", |
|
|||
1681 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", |
|
|||
1682 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", |
|
|||
1683 | "dev": true, |
|
|||
1684 | "requires": { |
|
|||
1685 | "assertion-error": "^1.1.0", |
|
|||
1686 | "check-error": "^1.0.2", |
|
|||
1687 | "deep-eql": "^3.0.1", |
|
|||
1688 | "get-func-name": "^2.0.0", |
|
|||
1689 | "pathval": "^1.1.0", |
|
|||
1690 | "type-detect": "^4.0.5" |
|
|||
1691 | } |
|
|||
1692 | }, |
|
|||
1693 | "chalk": { |
|
1601 | "chalk": { | |
1694 | "version": "2.4.2", |
|
1602 | "version": "2.4.2", | |
1695 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", |
|
1603 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | |
@@ -1707,12 +1615,6 | |||||
1707 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", |
|
1615 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", | |
1708 | "dev": true |
|
1616 | "dev": true | |
1709 | }, |
|
1617 | }, | |
1710 | "check-error": { |
|
|||
1711 | "version": "1.0.2", |
|
|||
1712 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", |
|
|||
1713 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", |
|
|||
1714 | "dev": true |
|
|||
1715 | }, |
|
|||
1716 | "cli-cursor": { |
|
1618 | "cli-cursor": { | |
1717 | "version": "3.1.0", |
|
1619 | "version": "3.1.0", | |
1718 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", |
|
1620 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", | |
@@ -1785,15 +1687,6 | |||||
1785 | "ms": "^2.1.1" |
|
1687 | "ms": "^2.1.1" | |
1786 | } |
|
1688 | } | |
1787 | }, |
|
1689 | }, | |
1788 | "deep-eql": { |
|
|||
1789 | "version": "3.0.1", |
|
|||
1790 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", |
|
|||
1791 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", |
|
|||
1792 | "dev": true, |
|
|||
1793 | "requires": { |
|
|||
1794 | "type-detect": "^4.0.0" |
|
|||
1795 | } |
|
|||
1796 | }, |
|
|||
1797 | "deep-is": { |
|
1690 | "deep-is": { | |
1798 | "version": "0.1.3", |
|
1691 | "version": "0.1.3", | |
1799 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", |
|
1692 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", | |
@@ -1821,15 +1714,6 | |||||
1821 | "integrity": "sha512-DUiXyoLK6vMF5BPr/qiMLTxDMfiM9qlzN1jxfDsVfuvB/CwhYpNxA/M4mbqKN8PCVGLmccXBJbfmFJPP5+zmzw==", |
|
1714 | "integrity": "sha512-DUiXyoLK6vMF5BPr/qiMLTxDMfiM9qlzN1jxfDsVfuvB/CwhYpNxA/M4mbqKN8PCVGLmccXBJbfmFJPP5+zmzw==", | |
1822 | "dev": true |
|
1715 | "dev": true | |
1823 | }, |
|
1716 | }, | |
1824 | "dojo-typings": { |
|
|||
1825 | "version": "1.11.9", |
|
|||
1826 | "resolved": "https://registry.npmjs.org/dojo-typings/-/dojo-typings-1.11.9.tgz", |
|
|||
1827 | "integrity": "sha512-mh8w+Mau2Y1QfTEszEAdO7j6ycNhYxF/Ing6nAk1eUg6NxjeT0viVHjICMd9sU3U463vM2G+KfBBK5grk3/Mlw==", |
|
|||
1828 | "dev": true, |
|
|||
1829 | "requires": { |
|
|||
1830 | "@types/chai": "^4.0.4" |
|
|||
1831 | } |
|
|||
1832 | }, |
|
|||
1833 | "emoji-regex": { |
|
1717 | "emoji-regex": { | |
1834 | "version": "8.0.0", |
|
1718 | "version": "8.0.0", | |
1835 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", |
|
1719 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", | |
@@ -2035,12 +1919,6 | |||||
2035 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", |
|
1919 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", | |
2036 | "dev": true |
|
1920 | "dev": true | |
2037 | }, |
|
1921 | }, | |
2038 | "get-func-name": { |
|
|||
2039 | "version": "2.0.0", |
|
|||
2040 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", |
|
|||
2041 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", |
|
|||
2042 | "dev": true |
|
|||
2043 | }, |
|
|||
2044 | "glob": { |
|
1922 | "glob": { | |
2045 | "version": "7.1.6", |
|
1923 | "version": "7.1.6", | |
2046 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", |
|
1924 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", | |
@@ -2345,12 +2223,6 | |||||
2345 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", |
|
2223 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", | |
2346 | "dev": true |
|
2224 | "dev": true | |
2347 | }, |
|
2225 | }, | |
2348 | "pathval": { |
|
|||
2349 | "version": "1.1.0", |
|
|||
2350 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", |
|
|||
2351 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", |
|
|||
2352 | "dev": true |
|
|||
2353 | }, |
|
|||
2354 | "prelude-ls": { |
|
2226 | "prelude-ls": { | |
2355 | "version": "1.1.2", |
|
2227 | "version": "1.1.2", | |
2356 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", |
|
2228 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", | |
@@ -2668,12 +2540,6 | |||||
2668 | "prelude-ls": "~1.1.2" |
|
2540 | "prelude-ls": "~1.1.2" | |
2669 | } |
|
2541 | } | |
2670 | }, |
|
2542 | }, | |
2671 | "type-detect": { |
|
|||
2672 | "version": "4.0.8", |
|
|||
2673 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", |
|
|||
2674 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", |
|
|||
2675 | "dev": true |
|
|||
2676 | }, |
|
|||
2677 | "type-fest": { |
|
2543 | "type-fest": { | |
2678 | "version": "0.8.1", |
|
2544 | "version": "0.8.1", | |
2679 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", |
|
2545 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", |
@@ -23,9 +23,8 | |||||
23 | "@types/chai": "4.1.3", |
|
23 | "@types/chai": "4.1.3", | |
24 | "@types/requirejs": "2.1.31", |
|
24 | "@types/requirejs": "2.1.31", | |
25 | "@types/yaml": "1.2.0", |
|
25 | "@types/yaml": "1.2.0", | |
26 | "chai": "4.2.0", |
|
|||
27 | "dojo": "1.16.0", |
|
26 | "dojo": "1.16.0", | |
28 |
"dojo-typings": " |
|
27 | "@implab/dojo-typings": "1.0.0", | |
29 | "eslint": "6.8.0", |
|
28 | "eslint": "6.8.0", | |
30 | "requirejs": "2.3.6", |
|
29 | "requirejs": "2.3.6", | |
31 | "tslint": "^6.1.3", |
|
30 | "tslint": "^6.1.3", |
@@ -1,9 +1,5 | |||||
1 | import { MapOf, PromiseOrValue } from "@implab/core-amd/interfaces"; |
|
1 | import { MapOf, PromiseOrValue } from "@implab/core-amd/interfaces"; | |
2 | import { argumentNotEmptyString, isPromise, mixin } from "@implab/core-amd/safe"; |
|
2 | import { argumentNotEmptyString, isPromise, mixin } from "@implab/core-amd/safe"; | |
3 | import { id as mid } from "module"; |
|
|||
4 | import { TraceSource } from "@implab/core-amd/log/TraceSource"; |
|
|||
5 |
|
||||
6 | const trace = TraceSource.get(mid); |
|
|||
7 |
|
3 | |||
8 | export type LocaleProvider<T> = () => PromiseOrValue<T | { default: T }>; |
|
4 | export type LocaleProvider<T> = () => PromiseOrValue<T | { default: T }>; | |
9 |
|
5 | |||
@@ -19,10 +15,6 function isCallback<T>(v: ResolveCallbac | |||||
19 | return typeof v === "function"; |
|
15 | return typeof v === "function"; | |
20 | } |
|
16 | } | |
21 |
|
17 | |||
22 | function defaultResolver(module: string) { |
|
|||
23 | return import(module).then(x => x && x.default ? x.default : x); |
|
|||
24 | } |
|
|||
25 |
|
||||
26 | function chainObjects<T extends object>(o1: T, o2: T) { |
|
18 | function chainObjects<T extends object>(o1: T, o2: T) { | |
27 | if (!o1) |
|
19 | if (!o1) | |
28 | return o2; |
|
20 | return o2; |
@@ -1,7 +1,6 | |||||
1 | import declare = require("dojo/_base/declare"); |
|
1 | import declare = require("dojo/_base/declare"); | |
2 | import { each } from "@implab/core-amd/safe"; |
|
2 | import { each } from "@implab/core-amd/safe"; | |
3 | import { Constructor } from "@implab/core-amd/interfaces"; |
|
3 | import { Constructor } from "@implab/core-amd/interfaces"; | |
4 | import dojo = require("dojo/_base/kernel"); |
|
|||
5 |
|
4 | |||
6 | // declare const declare: any; |
|
5 | // declare const declare: any; | |
7 |
|
6 | |||
@@ -121,10 +120,8 export function djclass<T extends Abstra | |||||
121 |
|
120 | |||
122 | // проверка того, что класс унаследован от специальной заглушки |
|
121 | // проверка того, что класс унаследован от специальной заглушки | |
123 | if (isMockConstructor(bc)) { |
|
122 | if (isMockConstructor(bc)) { | |
124 |
// |
|
123 | // bc.bases - базовый класс, объявленный при помощи dojo/_base/declare | |
125 | const t = bc.bases; |
|
124 | const cls = declare<any>(bc.bases, target.prototype); | |
126 |
|
||||
127 | const cls = declare(bc.bases, target.prototype); |
|
|||
128 |
|
125 | |||
129 | // bc - базовый класс, bc.prototype используется как super |
|
126 | // bc - базовый класс, bc.prototype используется как super | |
130 | // при вызове базовых методов. Нужно создать bc.prototype |
|
127 | // при вызове базовых методов. Нужно создать bc.prototype |
@@ -94,7 +94,7 class DomInject { | |||||
94 | throw e; |
|
94 | throw e; | |
95 | } |
|
95 | } | |
96 | } |
|
96 | } | |
97 |
} |
|
97 | } | |
98 |
|
98 | |||
99 | const instance = new DomInject(); |
|
99 | const instance = new DomInject(); | |
100 | export default instance; |
|
100 | export default instance; |
@@ -1,8 +1,11 | |||||
1 | import { Constructor } from "@implab/core-amd/interfaces"; |
|
1 | import { Constructor, IDestroyable, IRemovable } from "@implab/core-amd/interfaces"; | |
2 | import { HtmlRendition } from "./tsx/HtmlRendition"; |
|
2 | import { HtmlRendition } from "./tsx/HtmlRendition"; | |
3 | import { WidgetRendition } from "./tsx/WidgetRendition"; |
|
3 | import { WidgetRendition } from "./tsx/WidgetRendition"; | |
4 | import { isWidgetConstructor, Rendition } from "./tsx/traits"; |
|
4 | import { destroy, isWidgetConstructor, Rendition } from "./tsx/traits"; | |
5 | import { FunctionRendition } from "./tsx/FunctionRendition"; |
|
5 | import { FunctionRendition } from "./tsx/FunctionRendition"; | |
|
6 | import Stateful = require("dojo/Stateful"); | |||
|
7 | import _WidgetBase = require("dijit/_WidgetBase"); | |||
|
8 | import { DjxWidgetBase } from "./tsx/DjxWidgetBase"; | |||
6 |
|
9 | |||
7 | export function createElement<T extends Constructor | string | ((props: any) => Element)>(elementType: T, ...args: any[]): Rendition { |
|
10 | export function createElement<T extends Constructor | string | ((props: any) => Element)>(elementType: T, ...args: any[]): Rendition { | |
8 | if (typeof elementType === "string") { |
|
11 | if (typeof elementType === "string") { | |
@@ -38,3 +41,79 export interface EventSelector { | |||||
38 | } |
|
41 | } | |
39 |
|
42 | |||
40 | export type DojoMouseEvent<T = any> = MouseEvent & EventSelector & EventDetails<T>; |
|
43 | export type DojoMouseEvent<T = any> = MouseEvent & EventSelector & EventDetails<T>; | |
|
44 | ||||
|
45 | type StatefulProps<T> = T extends Stateful<infer A> ? A : never; | |||
|
46 | ||||
|
47 | type CleanFn = (instance: IRemovable | IDestroyable) => void; | |||
|
48 | ||||
|
49 | /** | |||
|
50 | * Observers the property and calls render callback each change. | |||
|
51 | * | |||
|
52 | * @param target The target object which property will be observed. | |||
|
53 | * @param prop The name of the property. | |||
|
54 | * @param render The callback which will be called every time the value is changed | |||
|
55 | * @param cleanupOrOwner The object with method `own` or an callback to register lifecycle for the observer. | |||
|
56 | * @returns Rendition which is created instantly | |||
|
57 | */ | |||
|
58 | export function watch<W extends _WidgetBase, K extends keyof W>( | |||
|
59 | target: W, | |||
|
60 | prop: K, | |||
|
61 | render: (model: W[K]) => any, | |||
|
62 | cleanupOrOwner?: { own: CleanFn } | CleanFn | |||
|
63 | ): Rendition; | |||
|
64 | /** | |||
|
65 | * Observers the property and calls render callback each change. | |||
|
66 | * | |||
|
67 | * @param target The target object which property will be observed. | |||
|
68 | * @param prop The name of the property. | |||
|
69 | * @param render The callback which will be called every time the value is changed | |||
|
70 | * @param cleanupOrOwner The object with method `own` or an callback to register lifecycle for the observer. | |||
|
71 | * @returns Rendition which is created instantly | |||
|
72 | */ | |||
|
73 | export function watch<T extends Stateful, K extends keyof StatefulProps<T>>( | |||
|
74 | target: T, | |||
|
75 | prop: K, | |||
|
76 | render: (model: StatefulProps<T>[K]) => any, | |||
|
77 | cleanupOrOwner?: { own: CleanFn } | CleanFn | |||
|
78 | ): Rendition; | |||
|
79 | export function watch<T extends Stateful, K extends keyof StatefulProps<T> & string>( | |||
|
80 | target: T, | |||
|
81 | prop: K, | |||
|
82 | render: (model: StatefulProps<T>[K]) => any, | |||
|
83 | cleanupOrOwner: { own: CleanFn } | CleanFn = () => { } | |||
|
84 | ) { | |||
|
85 | let rendition = new FunctionRendition(() => render(target.get(prop))); | |||
|
86 | const _own = cleanupOrOwner instanceof Function ? cleanupOrOwner : (x: IRemovable) => cleanupOrOwner.own(x); | |||
|
87 | _own(target.watch(prop, (_name, oldValue, newValue) => { | |||
|
88 | if (oldValue !== newValue) { | |||
|
89 | const newRendition = new FunctionRendition(() => render(newValue)); | |||
|
90 | newRendition.placeAt(rendition.getDomNode(), "replace"); | |||
|
91 | destroy(rendition.getDomNode()); | |||
|
92 | rendition = newRendition; | |||
|
93 | } | |||
|
94 | })); | |||
|
95 | return rendition; | |||
|
96 | } | |||
|
97 | ||||
|
98 | /** Decorates the method which will be registered as the handle for the specified event. | |||
|
99 | * This decorator can be applied to DjxWidgetBase subclass methods. | |||
|
100 | * | |||
|
101 | * ``` | |||
|
102 | * @on("click") | |||
|
103 | * _onClick(eventObj: MouseEvent) { | |||
|
104 | * // ... | |||
|
105 | * } | |||
|
106 | * ``` | |||
|
107 | */ | |||
|
108 | export const on = <E extends string>(...eventNames: E[]) => | |||
|
109 | <K extends string, | |||
|
110 | T extends DjxWidgetBase<any, { [p in E]: EV }>, | |||
|
111 | EV extends Event | |||
|
112 | >( | |||
|
113 | target: T, | |||
|
114 | key: K, | |||
|
115 | _descriptor: TypedPropertyDescriptor<(eventObj: EV) => void> | TypedPropertyDescriptor<() => void> | |||
|
116 | ): any => { | |||
|
117 | const handlers = eventNames.map(eventName => ({ eventName, handlerMethod: key })) | |||
|
118 | target._eventHandlers = target._eventHandlers ? target._eventHandlers.concat(handlers) : handlers; | |||
|
119 | }; |
@@ -3,9 +3,9 import { RenditionBase } from "./Renditi | |||||
3 | /** |
|
3 | /** | |
4 | * @deprecated use RenditionBase instead |
|
4 | * @deprecated use RenditionBase instead | |
5 | */ |
|
5 | */ | |
6 |
|
|
6 | export type BuildContextBase<TNode extends Node> = RenditionBase<TNode>; | |
7 |
|
7 | |||
8 | /** |
|
8 | /** | |
9 | * @deprecated use RenditionBase instead |
|
9 | * @deprecated use RenditionBase instead | |
10 | */ |
|
10 | */ | |
11 |
|
|
11 | export const BuildContextBase = RenditionBase; |
@@ -1,5 +1,5 | |||||
1 | /** Special functional component used to create a document fragment */ |
|
1 | /** Special functional component used to create a document fragment */ | |
2 | export function DjxFragment({children}: {children?: Node | Node[]}){ |
|
2 | export function DjxFragment({ children }: { children?: Node | Node[] }) { | |
3 | const fragment = document.createDocumentFragment(); |
|
3 | const fragment = document.createDocumentFragment(); | |
4 | if (children) |
|
4 | if (children) | |
5 | (children instanceof Array ? children : [children]).forEach(child => fragment.appendChild(child)); |
|
5 | (children instanceof Array ? children : [children]).forEach(child => fragment.appendChild(child)); |
@@ -1,8 +1,9 | |||||
1 | import { djbase, djclass } from "../declare"; |
|
1 | import { djbase, djclass } from "../declare"; | |
2 | import _WidgetBase = require("dijit/_WidgetBase"); |
|
2 | import _WidgetBase = require("dijit/_WidgetBase"); | |
3 | import _AttachMixin = require("dijit/_AttachMixin"); |
|
3 | import _AttachMixin = require("dijit/_AttachMixin"); | |
4 |
import { Rendition, isNode |
|
4 | import { Rendition, isNode } from "./traits"; | |
5 | import registry = require("dijit/registry"); |
|
5 | import registry = require("dijit/registry"); | |
|
6 | import on = require("dojo/on"); | |||
6 |
|
7 | |||
7 | // type Handle = dojo.Handle; |
|
8 | // type Handle = dojo.Handle; | |
8 |
|
9 | |||
@@ -14,18 +15,31 export interface EventArgs { | |||||
14 | composed?: boolean; |
|
15 | composed?: boolean; | |
15 | } |
|
16 | } | |
16 |
|
17 | |||
17 |
export interface DjxWidgetBase<Attrs = |
|
18 | export interface DjxWidgetBase<Attrs = {}, Events extends { [name in keyof Events]: Event } = {}> extends | |
18 | set<K extends keyof Attrs & string>(key: K, value: Attrs[K]): this; |
|
19 | _WidgetBase<Events> { | |
19 | set(props: Partial<Attrs>): this; |
|
20 | ||
20 | get<K extends keyof Attrs & string>(key: K): Attrs[K]; |
|
21 | /** This property is declared only for type inference to work, it is never assigned | |
|
22 | * and should not be used. | |||
|
23 | */ | |||
|
24 | readonly _eventMap: Events & GlobalEventHandlersEventMap; | |||
21 |
|
25 | |||
22 | on<K extends keyof Events & string>(eventName: K, cb: (evt: Events[K]) => void): dojo.WatchHandle; |
|
26 | /** The list of pairs of event and method names. When the widget is created all methods from | |
23 |
|
27 | * this list will be connected to corresponding events. | ||
24 | emit<K extends keyof Events & string>(eventName: K, evt: Omit<Events[K], keyof Event> & EventArgs): void; |
|
28 | * | |
|
29 | * This property is maintained in the prototype | |||
|
30 | */ | |||
|
31 | _eventHandlers: Array<{ | |||
|
32 | eventName: string, | |||
|
33 | handlerMethod: keyof any; | |||
|
34 | }>; | |||
25 | } |
|
35 | } | |
26 |
|
36 | |||
|
37 | type _super = { | |||
|
38 | startup(): void; | |||
|
39 | }; | |||
|
40 | ||||
27 | @djclass |
|
41 | @djclass | |
28 |
export abstract class DjxWidgetBase<Attrs = |
|
42 | export abstract class DjxWidgetBase<Attrs = {}, Events = {}> extends djbase<_super, _AttachMixin>(_WidgetBase, _AttachMixin) { | |
29 |
|
43 | |||
30 | buildRendering() { |
|
44 | buildRendering() { | |
31 | this.domNode = this.render().getDomNode(); |
|
45 | this.domNode = this.render().getDomNode(); | |
@@ -36,6 +50,9 export abstract class DjxWidgetBase<Attr | |||||
36 | const src = this.srcNodeRef; |
|
50 | const src = this.srcNodeRef; | |
37 | const dest = this.containerNode; |
|
51 | const dest = this.containerNode; | |
38 |
|
52 | |||
|
53 | // the donNode is constructed now we need to connect event handlers | |||
|
54 | this._connectEventHandlers(); | |||
|
55 | ||||
39 | if (src && dest) { |
|
56 | if (src && dest) { | |
40 | while (src.firstChild) |
|
57 | while (src.firstChild) | |
41 | dest.appendChild(src.firstChild); |
|
58 | dest.appendChild(src.firstChild); | |
@@ -44,9 +61,18 export abstract class DjxWidgetBase<Attr | |||||
44 |
|
61 | |||
45 | abstract render(): Rendition<HTMLElement>; |
|
62 | abstract render(): Rendition<HTMLElement>; | |
46 |
|
63 | |||
|
64 | private _connectEventHandlers() { | |||
|
65 | if (this._eventHandlers) | |||
|
66 | this._eventHandlers.forEach(({ eventName, handlerMethod }) => { | |||
|
67 | const handler = this[handlerMethod as keyof this]; | |||
|
68 | if (typeof handler === "function") | |||
|
69 | on(this.domNode, eventName, handler.bind(this)); | |||
|
70 | }); | |||
|
71 | } | |||
|
72 | ||||
47 | _processTemplateNode<T extends (Element | Node | _WidgetBase)>( |
|
73 | _processTemplateNode<T extends (Element | Node | _WidgetBase)>( | |
48 | baseNode: T, |
|
74 | baseNode: T, | |
49 |
getAttrFunc: (baseNode: T, attr: string) => |
|
75 | getAttrFunc: (baseNode: T, attr: string) => any, | |
50 | // tslint:disable-next-line: ban-types |
|
76 | // tslint:disable-next-line: ban-types | |
51 | attachFunc: (node: T, type: string, func?: Function) => dojo.Handle |
|
77 | attachFunc: (node: T, type: string, func?: Function) => dojo.Handle | |
52 | ): boolean { |
|
78 | ): boolean { | |
@@ -55,7 +81,7 export abstract class DjxWidgetBase<Attr | |||||
55 | if (w) { |
|
81 | if (w) { | |
56 | // from dijit/_WidgetsInTemplateMixin |
|
82 | // from dijit/_WidgetsInTemplateMixin | |
57 | this._processTemplateNode(w, |
|
83 | this._processTemplateNode(w, | |
58 | (n, p) => n.get(p), // callback to get a property of a widget |
|
84 | (n, p) => n.get(p as any), // callback to get a property of a widget | |
59 | (widget, type, callback) => { |
|
85 | (widget, type, callback) => { | |
60 | if (!callback) |
|
86 | if (!callback) | |
61 | throw new Error("The callback must be specified"); |
|
87 | throw new Error("The callback must be specified"); |
@@ -90,7 +90,7 export abstract class RenditionBase<TNod | |||||
90 | items.push(collection[i]); |
|
90 | items.push(collection[i]); | |
91 | } |
|
91 | } | |
92 | return items; |
|
92 | return items; | |
93 | } |
|
93 | }; | |
94 |
|
94 | |||
95 | const startup = (node: Node) => { |
|
95 | const startup = (node: Node) => { | |
96 | if (node.parentNode) { |
|
96 | if (node.parentNode) { | |
@@ -100,9 +100,9 export abstract class RenditionBase<TNod | |||||
100 | } |
|
100 | } | |
101 | if (isInPage(node)) |
|
101 | if (isInPage(node)) | |
102 | startupWidgets(node); |
|
102 | startupWidgets(node); | |
103 | } |
|
103 | }; | |
104 |
|
104 | |||
105 | const startupPending = isDocumentFragmentNode(domNode) ? collect(domNode.children) : [domNode] |
|
105 | const startupPending = isDocumentFragmentNode(domNode) ? collect(domNode.children) : [domNode]; | |
106 |
|
106 | |||
107 | dom.place(domNode, refNode, position); |
|
107 | dom.place(domNode, refNode, position); | |
108 |
|
108 |
@@ -111,7 +111,7 export class WidgetRendition extends Ren | |||||
111 | // fix the dojo startup behavior when the widget is placed |
|
111 | // fix the dojo startup behavior when the widget is placed | |
112 | // directly to the document and doesn't have any enclosing widgets |
|
112 | // directly to the document and doesn't have any enclosing widgets | |
113 | const parentWidget = instance.domNode.parentNode ? |
|
113 | const parentWidget = instance.domNode.parentNode ? | |
114 | registry.getEnclosingWidget(instance.domNode.parentNode) : null |
|
114 | registry.getEnclosingWidget(instance.domNode.parentNode) : null; | |
115 | if (!parentWidget && isInPage(instance.domNode) && typeof instance.startup === "function") |
|
115 | if (!parentWidget && isInPage(instance.domNode) && typeof instance.startup === "function") | |
116 | instance.startup(); |
|
116 | instance.startup(); | |
117 | } else { |
|
117 | } else { |
@@ -14,7 +14,7 export interface Rendition<TNode extends | |||||
14 | placeAt(refNode: string | Node, position?: DojoNodePosition): void; |
|
14 | placeAt(refNode: string | Node, position?: DojoNodePosition): void; | |
15 | } |
|
15 | } | |
16 |
|
16 | |||
17 |
/** |
|
17 | /** | |
18 | * @deprecated use Rendition |
|
18 | * @deprecated use Rendition | |
19 | */ |
|
19 | */ | |
20 | export type BuildContext<TNode extends Node = Node> = Rendition<TNode>; |
|
20 | export type BuildContext<TNode extends Node = Node> = Rendition<TNode>; | |
@@ -60,7 +60,7 export function isWidget(v: any): v is _ | |||||
60 | } |
|
60 | } | |
61 |
|
61 | |||
62 | export function isRendition(v: any): v is Rendition { |
|
62 | export function isRendition(v: any): v is Rendition { | |
63 |
return |
|
63 | return v && typeof v.getDomElement === "function"; | |
64 | } |
|
64 | } | |
65 |
|
65 | |||
66 | /** |
|
66 | /** | |
@@ -107,9 +107,9 export function destroy(target: Node | I | |||||
107 | } else if (isDestroyable(target)) { |
|
107 | } else if (isDestroyable(target)) { | |
108 | target.destroy(); |
|
108 | target.destroy(); | |
109 | } else if (isNode(target)) { |
|
109 | } else if (isNode(target)) { | |
110 |
const |
|
110 | const w = isElementNode(target) ? registry.byNode(target) : undefined; | |
111 |
if ( |
|
111 | if (w) { | |
112 |
|
|
112 | w.destroyRecursive(); | |
113 | } else { |
|
113 | } else { | |
114 | registry.findWidgets(target).forEach(destroy); |
|
114 | registry.findWidgets(target).forEach(destroy); | |
115 | dom.destroy(target); |
|
115 | dom.destroy(target); | |
@@ -129,7 +129,7 export function emptyNode(target: Node) | |||||
129 | /** This function starts all widgets inside the DOM node if the target is a node |
|
129 | /** This function starts all widgets inside the DOM node if the target is a node | |
130 | * or starts widget itself if the target is the widget. If the specified node |
|
130 | * or starts widget itself if the target is the widget. If the specified node | |
131 | * associated with the widget that widget will be started. |
|
131 | * associated with the widget that widget will be started. | |
132 |
* |
|
132 | * | |
133 | * @param target DOM node to find and start widgets or the widget itself. |
|
133 | * @param target DOM node to find and start widgets or the widget itself. | |
134 | */ |
|
134 | */ | |
135 | export function startupWidgets(target: Node | _WidgetBase, skipNode?: Node) { |
|
135 | export function startupWidgets(target: Node | _WidgetBase, skipNode?: Node) { | |
@@ -142,7 +142,7 export function startupWidgets(target: N | |||||
142 | registry.findWidgets(target, skipNode).forEach(x => x.startup()); |
|
142 | registry.findWidgets(target, skipNode).forEach(x => x.startup()); | |
143 | } |
|
143 | } | |
144 | } else { |
|
144 | } else { | |
145 | if(target.startup) |
|
145 | if (target.startup) | |
146 | target.startup(); |
|
146 | target.startup(); | |
147 | } |
|
147 | } | |
148 | } No newline at end of file |
|
148 | } |
@@ -7,7 +7,7 | |||||
7 | "typings" |
|
7 | "typings" | |
8 | ], |
|
8 | ], | |
9 | "types": [ |
|
9 | "types": [ | |
10 | "requirejs", "./typings", "dojo-typings" |
|
10 | "requirejs", "./typings", "@implab/dojo-typings" | |
11 | ] |
|
11 | ] | |
12 | } |
|
12 | } | |
13 | } |
|
13 | } |
@@ -1,5 +1,4 | |||||
1 | /// <reference path="./css.d.ts"/> |
|
1 | /// <reference path="./css.d.ts"/> | |
2 | /// <reference path="./dijit.d.ts"/> |
|
|||
3 |
|
2 | |||
4 | declare namespace JSX { |
|
3 | declare namespace JSX { | |
5 |
|
4 |
@@ -1,5 +1,6 | |||||
1 | import { Baz } from "./mock/Baz"; |
|
1 | import { Baz } from "./mock/Baz"; | |
2 |
|
2 | |||
|
3 | // tslint:disable-next-line: no-console | |||
3 | console.log("Declare tests"); |
|
4 | console.log("Declare tests"); | |
4 |
|
5 | |||
5 | const baz = new Baz(); |
|
6 | const baz = new Baz(); | |
@@ -7,4 +8,5 const baz = new Baz(); | |||||
7 | const data: string[] = []; |
|
8 | const data: string[] = []; | |
8 | baz.writeHello(data); |
|
9 | baz.writeHello(data); | |
9 |
|
10 | |||
|
11 | // tslint:disable-next-line: no-console | |||
10 | console.log(data.join("\n")); |
|
12 | console.log(data.join("\n")); |
@@ -1,7 +1,6 | |||||
1 | import { test } from "./TestTraits"; |
|
1 | import { test } from "./TestTraits"; | |
2 | import { delay } from "@implab/core-amd/safe"; |
|
2 | import { delay } from "@implab/core-amd/safe"; | |
3 | import { assert } from "chai"; |
|
3 | import { assert } from "chai"; | |
4 | import css = require("@implab/djx/css!my.css"); |
|
|||
5 |
|
4 | |||
6 | test("simple", (ok, fail, log) => { |
|
5 | test("simple", (ok, fail, log) => { | |
7 | setTimeout(() => { |
|
6 | setTimeout(() => { |
@@ -1,7 +1,7 | |||||
1 | import { djbase, djclass, bind, prototype, AbstractConstructor } from "../declare"; |
|
1 | import { djbase, djclass, bind, prototype, AbstractConstructor } from "../declare"; | |
2 |
|
2 | |||
3 | import { DjxWidgetBase } from "../tsx/DjxWidgetBase"; |
|
3 | import { DjxWidgetBase } from "../tsx/DjxWidgetBase"; | |
4 | import { createElement } from "../tsx"; |
|
4 | import { createElement, on } from "../tsx"; | |
5 |
|
5 | |||
6 | interface MyWidgetAttrs { |
|
6 | interface MyWidgetAttrs { | |
7 | title: string; |
|
7 | title: string; | |
@@ -10,9 +10,13 interface MyWidgetAttrs { | |||||
10 | } |
|
10 | } | |
11 |
|
11 | |||
12 | interface MyWidgetEvents { |
|
12 | interface MyWidgetEvents { | |
13 |
"count-inc": Event |
|
13 | "count-inc": Event & { | |
|
14 | detail: number; | |||
|
15 | }; | |||
14 |
|
16 | |||
15 |
"count-dec": Event |
|
17 | "count-dec": Event & { | |
|
18 | detail: number; | |||
|
19 | }; | |||
16 | } |
|
20 | } | |
17 |
|
21 | |||
18 |
|
22 | |||
@@ -36,15 +40,31 export class MyWidget extends djbase(Djx | |||||
36 | </div>; |
|
40 | </div>; | |
37 | } |
|
41 | } | |
38 |
|
42 | |||
|
43 | postCreate() { | |||
|
44 | super.postCreate(); | |||
|
45 | ||||
|
46 | this.on("click", () => {}); | |||
|
47 | } | |||
|
48 | ||||
39 | _onSubmit(e: Event) { |
|
49 | _onSubmit(e: Event) { | |
40 |
|
||||
41 | } |
|
50 | } | |
42 |
|
51 | |||
43 | _onIncClick(e: MouseEvent) { |
|
52 | _onIncClick(e: MouseEvent) { | |
|
53 | this.set("counter", this.counter + 1); | |||
|
54 | ||||
44 | this.emit("count-inc", { bubbles: false }); |
|
55 | this.emit("count-inc", { bubbles: false }); | |
45 | } |
|
56 | } | |
46 |
|
57 | |||
47 | _onDecClick() { |
|
58 | _onDecClick() { | |
48 | this.emit("count-dec", { bubbles: false }); |
|
59 | this.emit("count-dec", { bubbles: false, detail: this.counter }); | |
|
60 | } | |||
|
61 | ||||
|
62 | @on("count-inc") | |||
|
63 | _onCounterInc(evt: Event & { detail: number; x?: number; }) { | |||
49 | } |
|
64 | } | |
50 | } |
|
65 | ||
|
66 | @on("click", "keydown") | |||
|
67 | protected _onClick(event: MouseEvent | KeyboardEvent) { | |||
|
68 | ||||
|
69 | } | |||
|
70 | } No newline at end of file |
@@ -8,6 +8,6 | |||||
8 | "../main/ts", |
|
8 | "../main/ts", | |
9 | "../main/typings" |
|
9 | "../main/typings" | |
10 | ], |
|
10 | ], | |
11 | "types": ["requirejs", "../main/typings", "dojo-typings"] |
|
11 | "types": ["requirejs", "../main/typings", "@implab/dojo-typings"] | |
12 | } |
|
12 | } | |
13 | } No newline at end of file |
|
13 | } |
@@ -6,8 +6,10 | |||||
6 | "types": [], |
|
6 | "types": [], | |
7 | "experimentalDecorators": true, |
|
7 | "experimentalDecorators": true, | |
8 | "jsxFactory": "createElement", |
|
8 | "jsxFactory": "createElement", | |
|
9 | "target": "ES5", | |||
9 | //"skipLibCheck": true, |
|
10 | //"skipLibCheck": true, | |
10 | "jsx": "react", |
|
11 | "jsx": "react", | |
11 | "lib": ["es5", "es2015.promise", "es2015.symbol", "es2015.iterable", "dom", "scripthost"] |
|
12 | "lib": ["es5", "es2015.promise", "es2015.symbol", "es2015.iterable", "dom", "scripthost"], | |
|
13 | "noUnusedLocals": true | |||
12 | } |
|
14 | } | |
13 | } No newline at end of file |
|
15 | } |
@@ -14,5 +14,4 | |||||
14 |
|
14 | |||
15 | rootProject.name = 'implabjs-djx' |
|
15 | rootProject.name = 'implabjs-djx' | |
16 |
|
16 | |||
17 |
include 'djx' |
|
17 | include 'djx' No newline at end of file | |
18 | include 'playground' No newline at end of file |
|
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now