mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-06-03 23:16:13 +00:00
refactor: refine types, optimize adapter
This commit is contained in:
Generated
+231
-93
@@ -1663,9 +1663,9 @@
|
||||
}
|
||||
},
|
||||
"@semantic-release/npm": {
|
||||
"version": "5.1.15",
|
||||
"resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.1.15.tgz",
|
||||
"integrity": "sha512-MUUKOOtqsX/aJZJIjiAdw7SkCH+D3De060l1HhTlqrwTB7PzMtXcUMen6Prd1Hv8+gknUFkSWhVmi8tIaGDVnA==",
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.2.0.tgz",
|
||||
"integrity": "sha512-+WUoFNTVn4saPLbIBd+fCXL9nP6c49iOyvjLqWNq4lh2/sLZg993MMTBVvTxHRaojxb42R2RjePsO5AaFM3Lzw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@semantic-release/error": "^2.2.0",
|
||||
@@ -1681,13 +1681,24 @@
|
||||
"registry-auth-token": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"execa": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-2.0.4.tgz",
|
||||
"integrity": "sha512-VcQfhuGD51vQUQtKIq2fjGDLDbL6N1DTQVpYzxZ7LPIXw3HqTuIz6uxRmpV1qf8i31LHf2kjiaGI+GdHwRgbnQ==",
|
||||
"cross-spawn": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
|
||||
"integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^6.0.5",
|
||||
"path-key": "^3.1.0",
|
||||
"shebang-command": "^2.0.0",
|
||||
"which": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"execa": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
|
||||
"integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^7.0.0",
|
||||
"get-stream": "^5.0.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
@@ -1789,6 +1800,30 @@
|
||||
"parse-json": "^5.0.0",
|
||||
"type-fest": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"shebang-regex": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"shebang-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||
"dev": true
|
||||
},
|
||||
"which": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.1.tgz",
|
||||
"integrity": "sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"isexe": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1810,6 +1845,16 @@
|
||||
"read-pkg-up": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
|
||||
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"locate-path": "^5.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"get-stream": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
|
||||
@@ -1818,6 +1863,79 @@
|
||||
"requires": {
|
||||
"pump": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-locate": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
|
||||
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-limit": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"parse-json": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
|
||||
"integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"error-ex": "^1.3.1",
|
||||
"json-parse-better-errors": "^1.0.1",
|
||||
"lines-and-columns": "^1.1.6"
|
||||
}
|
||||
},
|
||||
"path-exists": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
||||
"dev": true
|
||||
},
|
||||
"read-pkg": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
||||
"integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/normalize-package-data": "^2.4.0",
|
||||
"normalize-package-data": "^2.5.0",
|
||||
"parse-json": "^5.0.0",
|
||||
"type-fest": "^0.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"type-fest": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
|
||||
"integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"read-pkg-up": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-6.0.0.tgz",
|
||||
"integrity": "sha512-odtTvLl+EXo1eTsMnoUHRmg/XmXdTkwXVxy4VFE9Kp6cCq7b3l7QMdBndND3eAFzrbSAXC/WCUOQQ9rLjifKZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-up": "^4.0.0",
|
||||
"read-pkg": "^5.1.1",
|
||||
"type-fest": "^0.5.0"
|
||||
}
|
||||
},
|
||||
"type-fest": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
|
||||
"integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1921,9 +2039,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/react": {
|
||||
"version": "16.9.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.5.tgz",
|
||||
"integrity": "sha512-jQ12VMiFOWYlp+j66dghOWcmDDwhca0bnlcTxS4Qz/fh5gi6wpaZDthPEu/Gc/YlAuO87vbiUXL8qKstFvuOaA==",
|
||||
"version": "16.9.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.9.tgz",
|
||||
"integrity": "sha512-L+AudFJkDukk+ukInYvpoAPyJK5q1GanFOINOJnM0w6tUgITuWvJ4jyoBPFL7z4/L8hGLd+K/6xR5uUjXu0vVg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/prop-types": "*",
|
||||
@@ -1931,9 +2049,9 @@
|
||||
}
|
||||
},
|
||||
"@types/react-native": {
|
||||
"version": "0.60.19",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.60.19.tgz",
|
||||
"integrity": "sha512-1Qq1EQn/bi7dnsdrZJu0f9MK18KZrEmLGMfw3V9Im5As4uwFUTCIkD4LnFJkfQtRvtJQN1cOQri6MTqT7d9fkg==",
|
||||
"version": "0.60.21",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.60.21.tgz",
|
||||
"integrity": "sha512-E7F+P/UG4Utu+kh8Hy544i0m4CzpHw1awNX6hVfkhlu4mXSlAn6KLZzKEkPBbHm7g1kspmZTiuP23HAKZpASPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/prop-types": "*",
|
||||
@@ -4292,9 +4410,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"conventional-changelog-angular": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz",
|
||||
"integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==",
|
||||
"version": "5.0.5",
|
||||
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.5.tgz",
|
||||
"integrity": "sha512-RrkdWnL/TVyWV1ayWmSsrWorsTDqjL/VwG5ZSEneBQrd65ONcfeA1cW7FLtNweQyMiKOyriCMTKRSlk18DjTrw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"compare-func": "^1.3.1",
|
||||
@@ -4302,15 +4420,15 @@
|
||||
}
|
||||
},
|
||||
"conventional-changelog-writer": {
|
||||
"version": "4.0.7",
|
||||
"resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.7.tgz",
|
||||
"integrity": "sha512-p/wzs9eYaxhFbrmX/mCJNwJuvvHR+j4Fd0SQa2xyAhYed6KBiZ780LvoqUUvsayP4R1DtC27czalGUhKV2oabw==",
|
||||
"version": "4.0.9",
|
||||
"resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.9.tgz",
|
||||
"integrity": "sha512-2Y3QfiAM37WvDMjkVNaRtZgxVzWKj73HE61YQ/95T53yle+CRwTVSl6Gbv/lWVKXeZcM5af9n9TDVf0k7Xh+cw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"compare-func": "^1.3.1",
|
||||
"conventional-commits-filter": "^2.0.2",
|
||||
"dateformat": "^3.0.0",
|
||||
"handlebars": "^4.1.2",
|
||||
"handlebars": "^4.4.0",
|
||||
"json-stringify-safe": "^5.0.1",
|
||||
"lodash": "^4.2.1",
|
||||
"meow": "^4.0.0",
|
||||
@@ -4319,16 +4437,6 @@
|
||||
"through2": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"conventional-commits-filter": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz",
|
||||
"integrity": "sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash.ismatch": "^4.4.0",
|
||||
"modify-values": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
@@ -4347,28 +4455,39 @@
|
||||
}
|
||||
},
|
||||
"conventional-commits-filter": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz",
|
||||
"integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz",
|
||||
"integrity": "sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-subset": "^0.1.1",
|
||||
"lodash.ismatch": "^4.4.0",
|
||||
"modify-values": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"conventional-commits-parser": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz",
|
||||
"integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.5.tgz",
|
||||
"integrity": "sha512-qVz9+5JwdJzsbt7JbJ6P7NOXBGt8CyLFJYSjKAuPSgO+5UGfcsbk9EMR+lI8Unlvx6qwIc2YDJlrGIfay2ehNA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"JSONStream": "^1.0.4",
|
||||
"is-text-path": "^1.0.0",
|
||||
"is-text-path": "^2.0.0",
|
||||
"lodash": "^4.2.1",
|
||||
"meow": "^4.0.0",
|
||||
"split2": "^2.0.0",
|
||||
"through2": "^2.0.0",
|
||||
"through2": "^3.0.0",
|
||||
"trim-off-newlines": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"through2": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
|
||||
"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"readable-stream": "2 || 3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"convert-source-map": {
|
||||
@@ -4929,9 +5048,9 @@
|
||||
"integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw=="
|
||||
},
|
||||
"env-ci": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/env-ci/-/env-ci-4.1.1.tgz",
|
||||
"integrity": "sha512-eTgpkALDeYRGNhYM2fO9LKsWDifoUgKL7hxpPZqFMP2IU7f+r89DtKqCmk3yQB/jxS8CmZTfKnWO5TiIDFs9Hw==",
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/env-ci/-/env-ci-4.5.0.tgz",
|
||||
"integrity": "sha512-0b5ihp/O/tsxWvzEY/Ags+3SL+F9eFci9ZF2Mqx/NHYCaV3cfpoPZW8qx1fcQAHOjWD9wSWsByewzimvGar/4Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"execa": "^1.0.0",
|
||||
@@ -6996,9 +7115,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"handlebars": {
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.3.tgz",
|
||||
"integrity": "sha512-VupOxR91xcGojfINrzMqrvlyYbBs39sXIrWa7YdaQWeBudOlvKEGvCczMfJPgnuwHE/zyH1M6J+IUP6cgDVyxg==",
|
||||
"version": "4.4.5",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.5.tgz",
|
||||
"integrity": "sha512-0Ce31oWVB7YidkaTq33ZxEbN+UDxMMgThvCe8ptgQViymL5DPis9uLdTA13MiRPhgvqyxIegugrP97iK3JeBHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"neo-async": "^2.6.0",
|
||||
@@ -7179,9 +7298,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"hosted-git-info": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.0.tgz",
|
||||
"integrity": "sha512-zYSx1cP4MLsvKtTg8DF/PI6e6FHZ3wcawcTGsrLU2TM+UfD4jmSrn2wdQT16TFbH3lO4PIdjLG0E+cuYDgFD9g==",
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz",
|
||||
"integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lru-cache": "^5.1.1"
|
||||
@@ -7197,9 +7316,9 @@
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
|
||||
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@@ -7419,13 +7538,21 @@
|
||||
"dev": true
|
||||
},
|
||||
"into-stream": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/into-stream/-/into-stream-5.1.0.tgz",
|
||||
"integrity": "sha512-cbDhb8qlxKMxPBk/QxTtYg1DQ4CwXmadu7quG3B7nrJsgSncEreF2kwWKZFdnjc/lSNNIkFPsjI7SM0Cx/QXPw==",
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/into-stream/-/into-stream-5.1.1.tgz",
|
||||
"integrity": "sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"from2": "^2.3.0",
|
||||
"p-is-promise": "^2.0.0"
|
||||
"p-is-promise": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"p-is-promise": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz",
|
||||
"integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"invariant": {
|
||||
@@ -7742,12 +7869,6 @@
|
||||
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
|
||||
"dev": true
|
||||
},
|
||||
"is-subset": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
|
||||
"integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
|
||||
"dev": true
|
||||
},
|
||||
"is-symbol": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
|
||||
@@ -7758,12 +7879,12 @@
|
||||
}
|
||||
},
|
||||
"is-text-path": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
|
||||
"integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
|
||||
"integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"text-extensions": "^1.0.0"
|
||||
"text-extensions": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"is-typedarray": {
|
||||
@@ -15130,14 +15251,14 @@
|
||||
}
|
||||
},
|
||||
"read-pkg-up": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-6.0.0.tgz",
|
||||
"integrity": "sha512-odtTvLl+EXo1eTsMnoUHRmg/XmXdTkwXVxy4VFE9Kp6cCq7b3l7QMdBndND3eAFzrbSAXC/WCUOQQ9rLjifKZw==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.0.tgz",
|
||||
"integrity": "sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-up": "^4.0.0",
|
||||
"read-pkg": "^5.1.1",
|
||||
"type-fest": "^0.5.0"
|
||||
"find-up": "^4.1.0",
|
||||
"read-pkg": "^5.2.0",
|
||||
"type-fest": "^0.8.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"find-up": {
|
||||
@@ -15207,9 +15328,9 @@
|
||||
}
|
||||
},
|
||||
"type-fest": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
|
||||
"integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
||||
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@@ -15781,9 +15902,9 @@
|
||||
}
|
||||
},
|
||||
"semantic-release": {
|
||||
"version": "15.13.24",
|
||||
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.24.tgz",
|
||||
"integrity": "sha512-OPshm6HSp+KmZP9dUv1o3MRILDgOeHYWPI+XSpQRERMri7QkaEiIPkZzoNm2d6KDeFDnp03GphQQS4+Zfo+x/Q==",
|
||||
"version": "15.13.27",
|
||||
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.27.tgz",
|
||||
"integrity": "sha512-Os9tGsOMCrWqW8cEo0zczoJnZcZzwHAWODmziff+8zU1gwPmLplAicJ5a3L43ubWtAsp2hVPf9WhWj2lMXoIGQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@semantic-release/commit-analyzer": "^6.1.0",
|
||||
@@ -15807,7 +15928,7 @@
|
||||
"marked-terminal": "^3.2.0",
|
||||
"p-locate": "^4.0.0",
|
||||
"p-reduce": "^2.0.0",
|
||||
"read-pkg-up": "^6.0.0",
|
||||
"read-pkg-up": "^7.0.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
"semver": "^6.0.0",
|
||||
"signale": "^1.2.1",
|
||||
@@ -15897,9 +16018,9 @@
|
||||
}
|
||||
},
|
||||
"yargs": {
|
||||
"version": "14.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz",
|
||||
"integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz",
|
||||
"integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^5.0.0",
|
||||
@@ -15912,7 +16033,17 @@
|
||||
"string-width": "^3.0.0",
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^4.0.0",
|
||||
"yargs-parser": "^13.1.1"
|
||||
"yargs-parser": "^15.0.0"
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "15.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz",
|
||||
"integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
"decamelize": "^1.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16911,9 +17042,9 @@
|
||||
}
|
||||
},
|
||||
"text-extensions": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
|
||||
"integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.0.0.tgz",
|
||||
"integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==",
|
||||
"dev": true
|
||||
},
|
||||
"text-table": {
|
||||
@@ -17144,9 +17275,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "3.7.0-beta",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.0-beta.tgz",
|
||||
"integrity": "sha512-4jyCX+IQamrPJxgkABPq9xf+hUN+GWHVxoj+oey1TadCPa4snQl1RKwUba+1dyzYCamwlCxKvZQ3TjyWLhMGBA==",
|
||||
"version": "3.7.0-dev.20191018",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.0-dev.20191018.tgz",
|
||||
"integrity": "sha512-Z8KpsytbY5lBMp5cc08VFoO8CgHC6IcbgyiA5vjh7fitkoG0qcem9C354YuiWV4O2+i2gdC7vF8tNUYqO/vUkQ==",
|
||||
"dev": true
|
||||
},
|
||||
"typescript-compiler": {
|
||||
@@ -17162,16 +17293,23 @@
|
||||
"dev": true
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
|
||||
"integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
|
||||
"version": "3.6.3",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.3.tgz",
|
||||
"integrity": "sha512-KfQUgOqTkLp2aZxrMbCuKCDGW9slFYu2A23A36Gs7sGzTLcRBDORdOi5E21KWHFIfkY8kzgi/Pr1cXCh0yIp5g==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"commander": "~2.20.0",
|
||||
"commander": "~2.20.3",
|
||||
"source-map": "~0.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
|
||||
+4
-4
@@ -59,8 +59,8 @@
|
||||
"@semantic-release/changelog": "^3.0.4",
|
||||
"@semantic-release/git": "^7.0.16",
|
||||
"@types/css-tree": "^1.0.1",
|
||||
"@types/react": "^16.9.5",
|
||||
"@types/react-native": "^0.60.19",
|
||||
"@types/react": "^16.9.9",
|
||||
"@types/react-native": "^0.60.21",
|
||||
"babel-eslint": "^10.0.3",
|
||||
"eslint": "^6.5.1",
|
||||
"eslint-plugin-flowtype": "^4.3.0",
|
||||
@@ -73,9 +73,9 @@
|
||||
"prettier": "^1.18.2",
|
||||
"react": "^16.10.2",
|
||||
"react-native": "^0.61.2",
|
||||
"semantic-release": "^15.13.24",
|
||||
"semantic-release": "^15.13.27",
|
||||
"semantic-release-cli": "^5.2.1",
|
||||
"typescript": "^3.7.0-beta"
|
||||
"typescript": "^3.7.0-dev.20191018"
|
||||
},
|
||||
"release": {
|
||||
"plugins": [
|
||||
|
||||
+57
-53
@@ -1,13 +1,14 @@
|
||||
import React, { useEffect, useMemo, useState } from 'react';
|
||||
import {
|
||||
AST,
|
||||
camelCase,
|
||||
err,
|
||||
fetchText,
|
||||
JsxAST,
|
||||
parse,
|
||||
Styles,
|
||||
SvgAst,
|
||||
UriProps,
|
||||
XmlAST,
|
||||
XmlProps,
|
||||
} from './xml';
|
||||
import csstree, {
|
||||
@@ -34,48 +35,46 @@ import stable from 'stable';
|
||||
*/
|
||||
// is the node a tag?
|
||||
// isTag: ( node:Node ) => isTag:Boolean
|
||||
function isTag(node: AST | string): node is AST {
|
||||
function isTag(node: XmlAST | string): node is XmlAST {
|
||||
return typeof node === 'object';
|
||||
}
|
||||
|
||||
// get the parent of the node
|
||||
// getParent: ( node:Node ) => parentNode:Node
|
||||
// returns null when no parent exists
|
||||
function getParent(node: AST | string): AST | string {
|
||||
return ((typeof node === 'object' && node.parent) || null) as AST | string;
|
||||
function getParent(node: XmlAST | string): XmlAST {
|
||||
return ((typeof node === 'object' && node.parent) || null) as XmlAST;
|
||||
}
|
||||
|
||||
// get the node's children
|
||||
// getChildren: ( node:Node ) => children:[Node]
|
||||
function getChildren(node: AST | string): Array<AST | string> {
|
||||
return (
|
||||
(typeof node === 'object' && (node.children as (AST | string)[])) || []
|
||||
);
|
||||
function getChildren(node: XmlAST | string): Array<XmlAST | string> {
|
||||
return (typeof node === 'object' && node.children) || [];
|
||||
}
|
||||
|
||||
// get the name of the tag
|
||||
// get the name of the tag'
|
||||
// getName: ( elem:ElementNode ) => tagName:String
|
||||
function getName(elem: AST): string {
|
||||
function getName(elem: XmlAST): string {
|
||||
return elem.tag;
|
||||
}
|
||||
|
||||
// get the text content of the node, and its children if it has any
|
||||
// getText: ( node:Node ) => text:String
|
||||
// returns empty string when there is no text
|
||||
function getText(_node: AST | string): string {
|
||||
function getText(_node: XmlAST | string): string {
|
||||
return '';
|
||||
}
|
||||
|
||||
// get the attribute value
|
||||
// getAttributeValue: ( elem:ElementNode, name:String ) => value:String
|
||||
// returns null when attribute doesn't exist
|
||||
function getAttributeValue(elem: AST, name: string): string {
|
||||
return elem.props[name] as string;
|
||||
function getAttributeValue(elem: XmlAST, name: string): string {
|
||||
return (elem.props[name] || null) as string;
|
||||
}
|
||||
|
||||
// takes an array of nodes, and removes any duplicates, as well as any nodes
|
||||
// whose ancestors are also in the array
|
||||
function removeSubsets(nodes: Array<AST | string>): Array<AST | string> {
|
||||
function removeSubsets(nodes: Array<XmlAST | string>): Array<XmlAST | string> {
|
||||
let idx = nodes.length,
|
||||
node,
|
||||
ancestor,
|
||||
@@ -96,7 +95,7 @@ function removeSubsets(nodes: Array<AST | string>): Array<AST | string> {
|
||||
nodes.splice(idx, 1);
|
||||
break;
|
||||
}
|
||||
ancestor = getParent(ancestor);
|
||||
ancestor = (typeof ancestor === 'object' && ancestor.parent) || null;
|
||||
}
|
||||
|
||||
// If the node has been found to be unique, re-insert it.
|
||||
@@ -109,10 +108,15 @@ function removeSubsets(nodes: Array<AST | string>): Array<AST | string> {
|
||||
}
|
||||
|
||||
// does at least one of passed element nodes pass the test predicate?
|
||||
function existsOne(test: Predicate<AST>, elems: Array<AST | string>): boolean {
|
||||
function existsOne(
|
||||
test: Predicate<XmlAST>,
|
||||
elems: Array<XmlAST | string>,
|
||||
): boolean {
|
||||
return elems.some(
|
||||
// eslint-disable-next-line jest/no-disabled-tests
|
||||
elem => isTag(elem) && (test(elem) || existsOne(test, getChildren(elem))),
|
||||
elem =>
|
||||
typeof elem === 'object' &&
|
||||
// eslint-disable-next-line jest/no-disabled-tests
|
||||
(test(elem) || existsOne(test, elem.children)),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -120,34 +124,34 @@ function existsOne(test: Predicate<AST>, elems: Array<AST | string>): boolean {
|
||||
get the siblings of the node. Note that unlike jQuery's `siblings` method,
|
||||
this is expected to include the current node as well
|
||||
*/
|
||||
function getSiblings(node: AST | string): Array<AST | string> {
|
||||
const parent = getParent(node);
|
||||
return (typeof parent === 'object' && getChildren(parent)) || [];
|
||||
function getSiblings(node: XmlAST | string): Array<XmlAST | string> {
|
||||
const parent = typeof node === 'object' && node.parent;
|
||||
return (parent && parent.children) || [];
|
||||
}
|
||||
|
||||
// does the element have the named attribute?
|
||||
function hasAttrib(elem: AST, name: string): boolean {
|
||||
function hasAttrib(elem: XmlAST, name: string): boolean {
|
||||
return elem.props.hasOwnProperty(name);
|
||||
}
|
||||
|
||||
// finds the first node in the array that matches the test predicate, or one
|
||||
// of its children
|
||||
function findOne(
|
||||
test: Predicate<AST>,
|
||||
elems: Array<AST | string>,
|
||||
): AST | undefined {
|
||||
let elem: AST | undefined;
|
||||
test: Predicate<XmlAST>,
|
||||
elems: Array<XmlAST | string>,
|
||||
): XmlAST | undefined {
|
||||
let elem: XmlAST | undefined;
|
||||
|
||||
for (let i = 0, l = elems.length; i < l && !elem; i++) {
|
||||
const e = elems[i];
|
||||
if (typeof e === 'string') {
|
||||
const node = elems[i];
|
||||
if (typeof node === 'string') {
|
||||
// eslint-disable-next-line jest/no-disabled-tests
|
||||
} else if (test(e)) {
|
||||
elem = e;
|
||||
} else if (test(node)) {
|
||||
elem = node;
|
||||
} else {
|
||||
const childs = getChildren(e);
|
||||
if (childs.length !== 0) {
|
||||
elem = findOne(test, childs);
|
||||
const { children } = node;
|
||||
if (children.length !== 0) {
|
||||
elem = findOne(test, children);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -158,29 +162,29 @@ function findOne(
|
||||
// finds all of the element nodes in the array that match the test predicate,
|
||||
// as well as any of their children that match it
|
||||
function findAll(
|
||||
test: Predicate<AST>,
|
||||
nodes: Array<AST | string>,
|
||||
result: Array<AST> = [],
|
||||
): Array<AST> {
|
||||
test: Predicate<XmlAST>,
|
||||
nodes: Array<XmlAST | string>,
|
||||
result: Array<XmlAST> = [],
|
||||
): Array<XmlAST> {
|
||||
for (let i = 0, j = nodes.length; i < j; i++) {
|
||||
const node = nodes[i];
|
||||
if (!isTag(node)) {
|
||||
if (typeof node !== 'object') {
|
||||
continue;
|
||||
}
|
||||
// eslint-disable-next-line jest/no-disabled-tests
|
||||
if (test(node)) {
|
||||
result.push(node);
|
||||
}
|
||||
const childs = getChildren(node);
|
||||
if (childs.length !== 0) {
|
||||
findAll(test, childs, result);
|
||||
const { children } = node;
|
||||
if (children.length !== 0) {
|
||||
findAll(test, children, result);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
const adapter: Adapter<AST | string, AST> = {
|
||||
const adapter: Adapter<XmlAST | string, XmlAST> = {
|
||||
removeSubsets,
|
||||
existsOne,
|
||||
getSiblings,
|
||||
@@ -195,7 +199,7 @@ const adapter: Adapter<AST | string, AST> = {
|
||||
getAttributeValue,
|
||||
};
|
||||
|
||||
const cssSelectOpts: Options<AST | string, AST> = {
|
||||
const cssSelectOpts: Options<XmlAST | string, XmlAST> = {
|
||||
xmlMode: true,
|
||||
adapter,
|
||||
};
|
||||
@@ -204,10 +208,10 @@ const cssSelectOpts: Options<AST | string, AST> = {
|
||||
* Evaluate a string of CSS selectors against the element and returns matched elements.
|
||||
*
|
||||
* @param {Query} query can be either a CSS selector string or a compiled query function.
|
||||
* @param {Array<AST> | AST} elems Elements to query. If it is an element, its children will be queried.
|
||||
* @return {Array<AST>} All matching elements.
|
||||
* @param {Array<XmlAST> | XmlAST} elems Elements to query. If it is an element, its children will be queried.
|
||||
* @return {Array<XmlAST>} All matching elements.
|
||||
*/
|
||||
function querySelectorAll(query: Query, elems: AST | AST[]): AST[] {
|
||||
function querySelectorAll(query: Query, elems: XmlAST | XmlAST[]): XmlAST[] {
|
||||
return cssSelect(query, elems, cssSelectOpts);
|
||||
}
|
||||
|
||||
@@ -433,7 +437,7 @@ const declarationParseProps = {
|
||||
context: 'declarationList',
|
||||
parseValue: false,
|
||||
};
|
||||
function CSSStyleDeclaration(ast: AST) {
|
||||
function CSSStyleDeclaration(ast: XmlAST) {
|
||||
const { props, styles } = ast;
|
||||
if (!props.style) {
|
||||
props.style = {};
|
||||
@@ -473,11 +477,11 @@ function CSSStyleDeclaration(ast: AST) {
|
||||
}
|
||||
}
|
||||
|
||||
interface StyledAST extends AST {
|
||||
interface StyledAST extends XmlAST {
|
||||
style: Styles;
|
||||
priority: Map<string, boolean | undefined>;
|
||||
}
|
||||
function initStyle(selectedEl: AST): StyledAST {
|
||||
function initStyle(selectedEl: XmlAST): StyledAST {
|
||||
if (!selectedEl.style) {
|
||||
CSSStyleDeclaration(selectedEl);
|
||||
}
|
||||
@@ -490,8 +494,8 @@ function initStyle(selectedEl: AST): StyledAST {
|
||||
* @param elemName
|
||||
* @return {?Object}
|
||||
*/
|
||||
function closestElem(node: AST, elemName: string) {
|
||||
let elem: AST | null = node;
|
||||
function closestElem(node: XmlAST, elemName: string) {
|
||||
let elem: XmlAST | null = node;
|
||||
while ((elem = elem.parent) && elem.tag !== elemName) {}
|
||||
return elem;
|
||||
}
|
||||
@@ -518,7 +522,7 @@ const parseProps = {
|
||||
* @author strarsis <strarsis@gmail.com>
|
||||
* @author modified by: msand <msand@abo.fi>
|
||||
*/
|
||||
export function inlineStyles(document: AST) {
|
||||
export function inlineStyles(document: XmlAST) {
|
||||
// collect <style/>s
|
||||
const styleElements = querySelectorAll('style', document);
|
||||
|
||||
@@ -612,7 +616,7 @@ export function inlineStyles(document: AST) {
|
||||
|
||||
export function SvgCss(props: XmlProps) {
|
||||
const { xml, override } = props;
|
||||
const ast = useMemo<AST | null>(
|
||||
const ast = useMemo<JsxAST | null>(
|
||||
() => (xml !== null ? parse(xml, inlineStyles) : null),
|
||||
[xml],
|
||||
);
|
||||
|
||||
+27
-16
@@ -1,9 +1,9 @@
|
||||
import React, {
|
||||
Component,
|
||||
useState,
|
||||
ComponentType,
|
||||
useEffect,
|
||||
useMemo,
|
||||
ComponentType,
|
||||
useState,
|
||||
} from 'react';
|
||||
import Rect from './elements/Rect';
|
||||
import Circle from './elements/Circle';
|
||||
@@ -72,13 +72,22 @@ export interface AST {
|
||||
Tag: ComponentType;
|
||||
}
|
||||
|
||||
export interface XmlAST extends AST {
|
||||
children: (XmlAST | string)[];
|
||||
parent: XmlAST | null;
|
||||
}
|
||||
|
||||
export interface JsxAST extends AST {
|
||||
children: (JSX.Element | string)[];
|
||||
}
|
||||
|
||||
export type UriProps = { uri: string | null; override?: Object };
|
||||
export type UriState = { xml: string | null };
|
||||
|
||||
export type XmlProps = { xml: string | null; override?: Object };
|
||||
export type XmlState = { ast: AST | null };
|
||||
export type XmlState = { ast: JsxAST | null };
|
||||
|
||||
export type AstProps = { ast: AST | null; override?: Object };
|
||||
export type AstProps = { ast: JsxAST | null; override?: Object };
|
||||
|
||||
export function SvgAst({ ast, override }: AstProps) {
|
||||
if (!ast) {
|
||||
@@ -94,7 +103,7 @@ export function SvgAst({ ast, override }: AstProps) {
|
||||
|
||||
export function SvgXml(props: XmlProps) {
|
||||
const { xml, override } = props;
|
||||
const ast = useMemo<AST | null>(() => (xml !== null ? parse(xml) : null), [
|
||||
const ast = useMemo<JsxAST | null>(() => (xml !== null ? parse(xml) : null), [
|
||||
xml,
|
||||
]);
|
||||
return <SvgAst ast={ast} override={override || props} />;
|
||||
@@ -256,14 +265,14 @@ const quotemarks = /['"]/;
|
||||
|
||||
export function parse(
|
||||
source: string,
|
||||
middleware?: (ast: AST) => AST,
|
||||
): AST | null {
|
||||
middleware?: (ast: XmlAST) => XmlAST,
|
||||
): JsxAST | null {
|
||||
const length = source.length;
|
||||
let currentElement: AST | null = null;
|
||||
let currentElement: XmlAST | null = null;
|
||||
let state = metadata;
|
||||
let children = null;
|
||||
let root: AST | null = null;
|
||||
let stack: AST[] = [];
|
||||
let root: XmlAST | undefined;
|
||||
let stack: XmlAST[] = [];
|
||||
|
||||
function error(message: string) {
|
||||
const { line, column, snippet } = locate(source, i);
|
||||
@@ -329,7 +338,7 @@ export function parse(
|
||||
|
||||
const tag = getName();
|
||||
const props: { [prop: string]: Styles | string | undefined } = {};
|
||||
const element: AST = {
|
||||
const element: XmlAST = {
|
||||
tag,
|
||||
props,
|
||||
children: [],
|
||||
@@ -525,11 +534,13 @@ export function parse(
|
||||
error('Unexpected end of input');
|
||||
}
|
||||
|
||||
if (root && typeof root === 'object') {
|
||||
const r: AST = middleware ? middleware(root) : root;
|
||||
const ast: (AST | string)[] = r.children as (AST | string)[];
|
||||
r.children = ast.map(astToReact);
|
||||
if (root) {
|
||||
const xml: XmlAST = (middleware ? middleware(root) : root) || root;
|
||||
const ast: (JSX.Element | string)[] = xml.children.map(astToReact);
|
||||
const jsx: JsxAST = xml as JsxAST;
|
||||
jsx.children = ast;
|
||||
return jsx;
|
||||
}
|
||||
|
||||
return root;
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user