diff --git a/.all-contributorsrc b/.all-contributorsrc
index 208b9280..4fae6153 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -157,6 +157,33 @@
"contributions": [
"code"
]
+ },
+ {
+ "login": "KRTirtho",
+ "name": "KR Tirtho",
+ "avatar_url": "https://avatars.githubusercontent.com/u/61944859?v=4",
+ "profile": "http://N/A",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "theLMGN",
+ "name": "theLMGN",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12257112?v=4",
+ "profile": "http://thelmgn.com",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "KaMeHb-UA",
+ "name": "KaMeHb-UA",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20382677?v=4",
+ "profile": "https://github.com/KaMeHb-UA",
+ "contributions": [
+ "code"
+ ]
}
],
"contributorsPerLine": 7,
diff --git a/README.md b/README.md
index 5947a007..e2ffd8ad 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
# React NodeGui
+⚠️ React NodeGui is no longer maintained. Please fork it to continue development ⚠️
+
+
[](https://spectrum.chat/nodegui)
[](#contributors)
@@ -127,33 +130,42 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
-
+
+
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 5ba8766b..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,1635 +0,0 @@
-{
- "name": "@nodegui/react-nodegui",
- "version": "0.10.4",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "7zip-bin": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.0.tgz",
- "integrity": "sha512-nOZl6SsZFpcKvq7oRxdbBwrhYQ+/iXgWqehnw5meQAeRyP+OzR0CWPE5IDXhQbTVgZxrsgmTk+xs6tVTzqkw+w=="
- },
- "7zip-min": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/7zip-min/-/7zip-min-1.3.0.tgz",
- "integrity": "sha512-gM156Jr4tF1Kq1RyQFJrNzH71VzrlIfCLZFUkvFX/IFJXYQB6rXgBlCCaDhoz6x8GDeNcfwLeF5gnodXBI0riA==",
- "requires": {
- "7zip-bin": "^5.0.3"
- }
- },
- "@nodegui/artifact-installer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@nodegui/artifact-installer/-/artifact-installer-1.1.0.tgz",
- "integrity": "sha512-x/rIewhjnLhf2b3lAy5ZIPSTS39LRpwMTKeEg6sn4RwvWwyNmreGzpvGi6Gkbl6FUpftn70nfOBOpaeO3hO8PQ==",
- "requires": {
- "7zip-min": "^1.1.1",
- "env-paths": "^2.2.0",
- "make-dir": "^3.0.0",
- "node-fetch": "^2.6.0",
- "progress": "^2.0.3"
- }
- },
- "@nodegui/nodegui": {
- "version": "0.30.2",
- "resolved": "https://registry.npmjs.org/@nodegui/nodegui/-/nodegui-0.30.2.tgz",
- "integrity": "sha512-UhUCH6bqaaeMoRFfQBMc0mEozwtF4slV3agwUHkEw9zuLcM+1JZewKIiaKnSHMtYdrbgkIohTDsYxlwHgAXv+A==",
- "requires": {
- "@nodegui/artifact-installer": "^1.1.0",
- "@nodegui/qode": "^2.1.0",
- "cmake-js": "^6.1.0",
- "cross-env": "^7.0.3",
- "cuid": "^2.1.6",
- "manage-path": "^2.0.0",
- "memoize-one": "^5.1.1",
- "node-addon-api": "^3.1.0",
- "postcss-nodegui-autoprefixer": "0.0.7"
- }
- },
- "@nodegui/qode": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@nodegui/qode/-/qode-2.1.0.tgz",
- "integrity": "sha512-R31K60Vba4yO2Fy3qXXJkt7XMZnitDhuAVaibSGSbcBJbHhJh0+pDQjzZve1+uY7tCHFIY0oRq3tb70o/BrPZQ==",
- "requires": {
- "env-paths": "^2.2.0",
- "make-dir": "^3.0.2",
- "node-fetch": "^2.6.0",
- "progress": "^2.0.3",
- "tar": "^6.0.1"
- }
- },
- "@types/node": {
- "version": "14.11.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.1.tgz",
- "integrity": "sha512-oTQgnd0hblfLsJ6BvJzzSL+Inogp3lq9fGgqRkMB/ziKMgEUaFl801OncOzUmalfzt14N0oPHMK47ipl+wbTIw==",
- "dev": true
- },
- "@types/prop-types": {
- "version": "15.7.3",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
- "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
- },
- "@types/react": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz",
- "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==",
- "requires": {
- "@types/prop-types": "*",
- "csstype": "^3.0.2"
- }
- },
- "@types/react-reconciler": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.18.0.tgz",
- "integrity": "sha512-hLVaxzL7cGgk/2C/sc8yyyvi+aeeimv7SKOFgyuPFYqNb2rnnQApHabcxo5Xp+GloUAfMe3tyQm2nkrmbLXq4w==",
- "requires": {
- "@types/react": "*"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
- "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE="
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "are-we-there-yet": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz",
- "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=",
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.0 || ^1.1.13"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
- },
- "aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "big-integer": {
- "version": "1.6.48",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
- "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w=="
- },
- "binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
- "requires": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- }
- },
- "bluebird": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM="
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "buffer-indexof-polyfill": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A=="
- },
- "buffer-shims": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
- "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
- },
- "buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="
- },
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "centra": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/centra/-/centra-2.4.2.tgz",
- "integrity": "sha512-f1RaP0V1HqVNEXfLfjNBthB2yy3KnSGnPCnOPCFLUk9e/Z4rNJ8nBaJNnghflnp88mi1IT8mfmW+HlMS1/H+bg=="
- },
- "chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
- "requires": {
- "traverse": ">=0.3.0 <0.4"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "cmake-js": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz",
- "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==",
- "requires": {
- "debug": "^4",
- "fs-extra": "^5.0.0",
- "is-iojs": "^1.0.1",
- "lodash": "^4",
- "memory-stream": "0",
- "npmlog": "^1.2.0",
- "rc": "^1.2.7",
- "request": "^2.54.0",
- "semver": "^5.0.3",
- "splitargs": "0",
- "tar": "^4",
- "unzipper": "^0.8.13",
- "url-join": "0",
- "which": "^1.0.9",
- "yargs": "^3.6.0"
- },
- "dependencies": {
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "fs-minipass": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
- "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
- "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- },
- "tar": {
- "version": "4.4.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
- "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
- }
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- }
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "requires": {
- "cross-spawn": "^7.0.1"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "dependencies": {
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "csstype": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
- "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g=="
- },
- "cuid": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz",
- "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg=="
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
- },
- "duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "requires": {
- "readable-stream": "^2.0.2"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "env-paths": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
- "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA=="
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fs-extra": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
- "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "requires": {
- "minipass": "^3.0.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "dependencies": {
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- }
- }
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "gauge": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz",
- "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=",
- "requires": {
- "ansi": "^0.3.0",
- "has-unicode": "^2.0.0",
- "lodash.pad": "^4.1.0",
- "lodash.padend": "^4.1.0",
- "lodash.padstart": "^4.1.0"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
- },
- "handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.0",
- "source-map": "^0.6.1",
- "uglify-js": "^3.1.4",
- "wordwrap": "^1.0.0"
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
- },
- "highlight.js": {
- "version": "10.6.0",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.6.0.tgz",
- "integrity": "sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ==",
- "dev": true
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
- },
- "is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-iojs": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz",
- "integrity": "sha1-TBEDO11dlNbqs3dd7cm+fQCDJfE="
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "listenercount": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc="
- },
- "lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
- "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
- },
- "lodash.pad": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz",
- "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA="
- },
- "lodash.padend": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
- "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4="
- },
- "lodash.padstart": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz",
- "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs="
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "lunr": {
- "version": "2.3.9",
- "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
- "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
- "dev": true
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "manage-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/manage-path/-/manage-path-2.0.0.tgz",
- "integrity": "sha1-9M+EV7km7u4qg7FzUBQUvHbrlZc="
- },
- "marked": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz",
- "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==",
- "dev": true
- },
- "memoize-one": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
- "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA=="
- },
- "memory-stream": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz",
- "integrity": "sha1-6+jdHDuLw4wOeUHp3dWuvmtN6D8=",
- "requires": {
- "readable-stream": "~1.0.26-2"
- }
- },
- "mime-db": {
- "version": "1.46.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
- "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ=="
- },
- "mime-types": {
- "version": "2.1.29",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
- "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
- "requires": {
- "mime-db": "1.46.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "node-addon-api": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
- "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
- },
- "node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
- },
- "npmlog": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz",
- "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=",
- "requires": {
- "ansi": "~0.3.0",
- "are-we-there-yet": "~1.0.0",
- "gauge": "~1.2.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "requires": {
- "lcid": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
- "phin": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/phin/-/phin-3.5.1.tgz",
- "integrity": "sha512-jgFO28IaiWAl0xk+zmqVx7neKVokWKU8YTQC5QlB45SZnEE53LH2saqJIcyIV557VX3Gk+TdR4rwWTc3P83DSA==",
- "requires": {
- "centra": "^2.4.2"
- }
- },
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "postcss-nodegui-autoprefixer": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/postcss-nodegui-autoprefixer/-/postcss-nodegui-autoprefixer-0.0.7.tgz",
- "integrity": "sha512-cPNAIz9siY+ssc3ecdPaeflfdc2HRS6tgQGu59YKLiiaZT3iMw578l1LTFfmEnJtv1RvNEQUNn/YjHyySXla2Q==",
- "requires": {
- "postcss": "^7.0.17"
- }
- },
- "prettier": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz",
- "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
- },
- "prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
- "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
- }
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "react": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",
- "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2"
- }
- },
- "react-deep-force-update": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.1.3.tgz",
- "integrity": "sha512-lqD4eHKVuB65RyO/hGbEST53E2/GPbcIPcFYyeW/p4vNngtH4G7jnKGlU6u1OqrFo0uNfIvwuBOg98IbLHlNEA=="
- },
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "react-proxy": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-2.0.8.tgz",
- "integrity": "sha1-dq54yb5OVNQJz+x7t9UT7H8bKEw=",
- "requires": {
- "lodash": "^4.6.1"
- }
- },
- "react-reconciler": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.25.1.tgz",
- "integrity": "sha512-R5UwsIvRcSs3w8n9k3tBoTtUHdVhu9u84EG7E5M0Jk9F5i6DA1pQzPfUZd6opYWGy56MJOtV3VADzy6DRwYDjw==",
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.19.1"
- }
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "requires": {
- "resolve": "^1.1.6"
- }
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "scheduler": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
- "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- },
- "setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
- },
- "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==",
- "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=="
- },
- "shelljs": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
- "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "splitargs": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz",
- "integrity": "sha1-/p965lc3GzOxDLgNoUPPgknPazs="
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "tar": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
- "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- }
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk="
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
- "typedoc": {
- "version": "0.17.8",
- "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.8.tgz",
- "integrity": "sha512-/OyrHCJ8jtzu+QZ+771YaxQ9s4g5Z3XsQE3Ma7q+BL392xxBn4UMvvCdVnqKC2T/dz03/VXSLVKOP3lHmDdc/w==",
- "dev": true,
- "requires": {
- "fs-extra": "^8.1.0",
- "handlebars": "^4.7.6",
- "highlight.js": "^10.0.0",
- "lodash": "^4.17.15",
- "lunr": "^2.3.8",
- "marked": "1.0.0",
- "minimatch": "^3.0.0",
- "progress": "^2.0.3",
- "shelljs": "^0.8.4",
- "typedoc-default-themes": "^0.10.2"
- },
- "dependencies": {
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- }
- }
- },
- "typedoc-default-themes": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.2.tgz",
- "integrity": "sha512-zo09yRj+xwLFE3hyhJeVHWRSPuKEIAsFK5r2u47KL/HBKqpwdUSanoaz5L34IKiSATFrjG5ywmIu98hPVMfxZg==",
- "dev": true,
- "requires": {
- "lunr": "^2.3.8"
- }
- },
- "typedoc-plugin-markdown": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-2.4.2.tgz",
- "integrity": "sha512-BBH+9/Uq5XbsqfzCDl8Jq4iaLXRMXRuAHZRFarAZX7df8+F3vUjDx/WHWoWqbZ/XUFzduLC2Iuy2qwsJX8SQ7A==",
- "dev": true,
- "requires": {
- "fs-extra": "^9.0.1",
- "handlebars": "^4.7.6"
- },
- "dependencies": {
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- }
- }
- },
- "typescript": {
- "version": "3.9.7",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz",
- "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==",
- "dev": true
- },
- "uglify-js": {
- "version": "3.12.8",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.8.tgz",
- "integrity": "sha512-fvBeuXOsvqjecUtF/l1dwsrrf5y2BCUk9AOJGzGcm6tE7vegku5u/YvqjyDaAGr422PLoLnrxg3EnRvTqsdC1w==",
- "dev": true,
- "optional": true
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
- },
- "unzipper": {
- "version": "0.8.14",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz",
- "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==",
- "requires": {
- "big-integer": "^1.6.17",
- "binary": "~0.3.0",
- "bluebird": "~3.4.1",
- "buffer-indexof-polyfill": "~1.0.0",
- "duplexer2": "~0.1.4",
- "fstream": "~1.0.10",
- "listenercount": "~1.0.1",
- "readable-stream": "~2.1.5",
- "setimmediate": "~1.0.4"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
- },
- "readable-stream": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
- "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=",
- "requires": {
- "buffer-shims": "^1.0.0",
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
- }
- }
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "url-join": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz",
- "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g="
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "window-size": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
- "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "yargs": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
- "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
- "requires": {
- "camelcase": "^2.0.1",
- "cliui": "^3.0.3",
- "decamelize": "^1.1.1",
- "os-locale": "^1.4.0",
- "string-width": "^1.0.1",
- "window-size": "^0.1.4",
- "y18n": "^3.2.0"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index 7e4b893d..b7abff71 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@nodegui/react-nodegui",
- "version": "0.10.4",
+ "version": "0.14.0",
"description": "React Native for building cross platform desktop applications",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
@@ -20,22 +20,23 @@
"docs": "typedoc && node ./website/docs/scripts/fixdocs.js"
},
"dependencies": {
- "@nodegui/nodegui": "^0.30.2",
+ "@nodegui/nodegui": "^0.57.1",
"@types/react-reconciler": "^0.18.0",
- "phin": "^3.4.1",
+ "phin": "3.5.1",
"react-deep-force-update": "^2.1.3",
"react-proxy": "^2.0.8",
"react-reconciler": "^0.25.1"
},
"peerDependencies": {
- "react": "^16.9.0"
+ "react": "^16.14.0"
},
"devDependencies": {
- "@types/node": "^14.11.1",
- "prettier": "^2.1.2",
- "react": "^16.13.1",
+ "@types/node": "^16.11.0",
+ "@types/react": "^16.14.0",
+ "prettier": "^2.3.2",
+ "react": "^16.14.0",
"typedoc": "^0.17.8",
"typedoc-plugin-markdown": "^2.4.2",
- "typescript": "^3.9.7"
+ "typescript": "^4.4.4"
}
}
diff --git a/src/components/AbstractComponents/RNAbstractButton.ts b/src/components/AbstractComponents/RNAbstractButton.ts
index fc993b30..09092f4b 100644
--- a/src/components/AbstractComponents/RNAbstractButton.ts
+++ b/src/components/AbstractComponents/RNAbstractButton.ts
@@ -4,7 +4,7 @@ import { QAbstractButton } from "@nodegui/nodegui";
/**
* The Button component provides ability to add and manipulate native button widgets. It is based on
- * [NodeGui's QPushButton](https://docs.nodegui.org/docs/api/QPushButton).
+ * [NodeGui's QPushButton](https://docs.nodegui.org/docs/api/generated/classes/QPushButton).
* ## Example
* ```javascript
* import React from "react";
@@ -30,15 +30,15 @@ export interface AbstractButtonProps
*/
children?: string;
/**
- * Sets the given text to the button. [QPushButton: setText](https://docs.nodegui.org/docs/api/QPushButton#buttonsettexttext)
+ * Sets the given text to the button. [QPushButton: setText](https://docs.nodegui.org/docs/api/generated/classes/QPushButton#buttonsettexttext)
*/
text?: string;
/**
- * Sets an icon in the button. [QPushButton: setIcon](https://docs.nodegui.org/docs/api/QPushButton#buttonseticonicon)
+ * Sets an icon in the button. [QPushButton: setIcon](https://docs.nodegui.org/docs/api/generated/classes/QPushButton#buttonseticonicon)
*/
icon?: QIcon;
/**
- * Sets an icon size in the button. [QPushButton: setIconSize](https://docs.nodegui.org/docs/api/QPushButton#buttonseticonsize)
+ * Sets an icon size in the button. [QPushButton: setIconSize](https://docs.nodegui.org/docs/api/generated/classes/QPushButton#buttonseticonsize)
*/
iconSize?: QSize;
}
diff --git a/src/components/Action/RNAction.ts b/src/components/Action/RNAction.ts
index ba44cd5c..485ca481 100644
--- a/src/components/Action/RNAction.ts
+++ b/src/components/Action/RNAction.ts
@@ -38,7 +38,7 @@ export interface ActionProps extends RNProps {
icon?: QIcon;
/**
- * Sets the object name (id) of the widget in Qt. Object name can be analogous to id of an element in the web world. Using the objectName of the widget one can reference it in the Qt's stylesheet much like what we do with id in the web world. [QWidget: setObjectName](https://docs.nodegui.org/docs/api/NodeWidget#widgetsetobjectnameobjectname)
+ * Sets the object name (id) of the widget in Qt. Object name can be analogous to id of an element in the web world. Using the objectName of the widget one can reference it in the Qt's stylesheet much like what we do with id in the web world. [QWidget: setObjectName](https://docs.nodegui.org/docs/api/generated/classes/QWidget#widgetsetobjectnameobjectname)
*/
id?: string;
diff --git a/src/components/AnimatedImage/RNAnimatedImage.ts b/src/components/AnimatedImage/RNAnimatedImage.ts
index 0665b956..1b7f7062 100644
--- a/src/components/AnimatedImage/RNAnimatedImage.ts
+++ b/src/components/AnimatedImage/RNAnimatedImage.ts
@@ -1,4 +1,4 @@
-import { QLabel, NodeWidget, QMovie, QSize } from "@nodegui/nodegui";
+import { QLabel, QWidget, QMovie, QSize } from "@nodegui/nodegui";
import { TextProps, setTextProps } from "../Text/RNText";
import { RNWidget } from "../config";
import { throwUnsupported, isValidUrl } from "../../utils/helpers";
@@ -20,7 +20,7 @@ const setAnimatedImageProps = (
return;
}
getLoadedQMovie(imageUrlOrPath)
- .then(movie => {
+ .then((movie) => {
widget.setMovie(movie);
widget.movie()?.start();
})
@@ -31,7 +31,7 @@ const setAnimatedImageProps = (
movie.loadFromData(imageBuffer);
widget.setMovie(movie);
widget.movie()?.start();
- }
+ },
};
Object.assign(setter, newProps);
setTextProps(widget, newProps, oldProps);
@@ -44,16 +44,16 @@ export class RNAnimatedImage extends QLabel implements RNWidget {
setProps(newProps: AnimatedImageProps, oldProps: AnimatedImageProps): void {
setAnimatedImageProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "animatedimage";
diff --git a/src/components/BoxView/RNBoxView.ts b/src/components/BoxView/RNBoxView.ts
index d748faed..15035f3f 100644
--- a/src/components/BoxView/RNBoxView.ts
+++ b/src/components/BoxView/RNBoxView.ts
@@ -2,11 +2,13 @@ import {
QWidget,
QBoxLayoutSignals,
QBoxLayout,
- NodeWidget,
Direction,
+ QLayout,
+ QObjectSignals,
} from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
import { RNComponent } from "../config";
+import { QDialog } from "@nodegui/nodegui/dist/lib/QtWidgets/QDialog";
export interface BoxViewProps extends ViewProps {
direction?: Direction;
@@ -19,7 +21,7 @@ const setBoxViewProps = (
) => {
const setter: BoxViewProps = {
set direction(direction: Direction) {
- widget.layout?.setDirection(direction);
+ widget.layout()?.setDirection(direction);
},
};
Object.assign(setter, newProps);
@@ -32,30 +34,36 @@ const setBoxViewProps = (
export class RNBoxView extends QWidget implements RNComponent {
native: any;
initialProps?: BoxViewProps;
- children: Array> = [];
- get layout() {
- return super.layout as QBoxLayout | undefined;
+ _children: Array> = [];
+
+ layout(): QBoxLayout | null {
+ return super.layout() as any;
}
- set layout(l: QBoxLayout | undefined) {
- super.layout = l;
+
+ setLayout(layout: QBoxLayout): void {
+ super.setLayout(layout);
}
+
setProps(newProps: BoxViewProps, oldProps: BoxViewProps): void {
- if (this.layout) {
+ if (this.layout()) {
setBoxViewProps(this, newProps, oldProps);
} else {
this.initialProps = newProps;
}
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
this.appendChild(child);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
+ if (child instanceof QDialog) {
+ return;
+ }
const updateChild = () => {
- this.layout?.addWidget(child);
- this.children.push(child);
+ this.layout()?.addWidget(child);
+ this._children.push(child);
};
- if (this.layout) {
+ if (this.layout()) {
updateChild();
return;
@@ -63,7 +71,6 @@ export class RNBoxView extends QWidget implements RNComponent {
const layout = new QBoxLayout(Direction.LeftToRight);
this.setLayout(layout);
- this.layout = layout;
// Newly created layout, so set initial props
if (this.initialProps) {
@@ -72,8 +79,11 @@ export class RNBoxView extends QWidget implements RNComponent {
updateChild();
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
- const prevIndex = this.children.indexOf(beforeChild);
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ if (child instanceof QDialog) {
+ return;
+ }
+ const prevIndex = this._children.indexOf(beforeChild);
if (prevIndex === -1) {
throw new Error(
@@ -81,14 +91,14 @@ export class RNBoxView extends QWidget implements RNComponent {
);
}
- this.children.splice(prevIndex, 0, child);
- this.layout?.insertWidget(prevIndex, child);
+ this._children.splice(prevIndex, 0, child);
+ this.layout()?.insertWidget(prevIndex, child);
}
- removeChild(child: NodeWidget): void {
- const prevIndex = this.children.indexOf(child);
+ removeChild(child: QWidget): void {
+ const prevIndex = this._children.indexOf(child);
if (prevIndex !== -1) {
- this.children.splice(prevIndex, 1);
+ this._children.splice(prevIndex, 1);
}
child.close();
diff --git a/src/components/Button/RNButton.ts b/src/components/Button/RNButton.ts
index f5c9f62a..f2bac8fe 100644
--- a/src/components/Button/RNButton.ts
+++ b/src/components/Button/RNButton.ts
@@ -1,4 +1,4 @@
-import { QPushButton, NodeWidget, QPushButtonSignals } from "@nodegui/nodegui";
+import { QPushButton, QWidget, QPushButtonSignals } from "@nodegui/nodegui";
import {
AbstractButtonProps,
setAbstractButtonProps
@@ -8,7 +8,7 @@ import { throwUnsupported } from "../../utils/helpers";
/**
* The Button component provides ability to add and manipulate native button widgets. It is based on
- * [NodeGui's QPushButton](https://docs.nodegui.org/docs/api/QPushButton).
+ * [NodeGui's QPushButton](https://docs.nodegui.org/docs/api/generated/classes/QPushButton).
* ## Example
* ```javascript
* import React from "react";
@@ -29,7 +29,7 @@ import { throwUnsupported } from "../../utils/helpers";
*/
export interface ButtonProps extends AbstractButtonProps {
/**
- * Sets whether the button border is raised. [QPushButton: setFlat](https://docs.nodegui.org/docs/api/QPushButton#buttonsetflatisflat)
+ * Sets whether the button border is raised. [QPushButton: setFlat](https://docs.nodegui.org/docs/api/generated/classes/QPushButton#buttonsetflatisflat)
*/
flat?: boolean;
}
@@ -52,16 +52,16 @@ const setButtonProps = (
* @ignore
*/
export class RNButton extends QPushButton implements RNWidget {
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
setProps(newProps: ButtonProps, oldProps: ButtonProps) {
diff --git a/src/components/Calendar/RNCalendar.ts b/src/components/Calendar/RNCalendar.ts
new file mode 100644
index 00000000..ecf4b8fc
--- /dev/null
+++ b/src/components/Calendar/RNCalendar.ts
@@ -0,0 +1,114 @@
+import {
+ Component,
+ DayOfWeek,
+ QCalendarWidget,
+ QCalendarWidgetSignals,
+ QFont,
+} from "@nodegui/nodegui";
+import {
+ HorizontalHeaderFormat,
+ SelectionMode,
+ VerticalHeaderFormat,
+} from "@nodegui/nodegui/dist/lib/QtWidgets/QCalendarWidget";
+import { throwUnsupported } from "../../utils/helpers";
+import { RNComponent } from "../config";
+import { setViewProps, ViewProps } from "../View/RNView";
+
+export interface CalendarProps extends ViewProps {
+ /**
+ * Sets the time an inactive date edit is shown before its contents are accepted. [QCalendarWidget: setDateEditAcceptDelay](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setdateeditacceptdelay)
+ */
+ dateEditAcceptDelay?: number;
+ /**
+ * Sets whether the date edit popup is enabled. [QCalendarWidget: setDateEditEnabled](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setdateeditenabled)
+ */
+ dateEditEnabled?: boolean;
+ /**
+ * Sets a value identifying the day displayed in the first column. [QCalendarWidget: setFirstDayOfWeek](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setfirstdayofweek)
+ */
+ firstDayOfWeek?: DayOfWeek;
+ /**
+ * Sets a font for the action. [QCalendarWidget: setFont](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setfont)
+ */
+ font?: QFont;
+ /**
+ * Sets whether the table grid is displayed. [QCalendarWidget: setGridVisible](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setgridvisible)
+ */
+ gridVisible?: boolean;
+ /**
+ * Sets the format of the horizontal header. [QCalendarWidget: setHorizontalHeaderFormat](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#sethorizontalheaderformat)
+ */
+ horizontalHeaderFormat?: HorizontalHeaderFormat;
+ /**
+ * Sets whether the navigation bar is shown or not. [QCalendarWidget: setNavigationBarVisible](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setnavigationbarvisible)
+ */
+ navigationBarVisible?: boolean;
+ /**
+ * Sets the type of selection the user can make in the calendar. [QCalendarWidget: setSelectionMode](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setselectionmode)
+ */
+ selectionMode?: SelectionMode;
+ /**
+ * Sets the format of the vertical header. [QCalendarWidget: setVerticalHeaderFormat](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget#setverticalheaderformat)
+ */
+ verticalHeaderFormat?: VerticalHeaderFormat;
+}
+
+const setCalendarProps = (
+ widget: RNCalendar,
+ newProps: CalendarProps,
+ oldProps: CalendarProps
+) => {
+ const setter: CalendarProps = {
+ set dateEditAcceptDelay(delay: number) {
+ widget.setDateEditAcceptDelay(delay);
+ },
+ set dateEditEnabled(enable: boolean) {
+ widget.setDateEditEnabled(enable);
+ },
+ set firstDayOfWeek(dayOfWeek: DayOfWeek) {
+ widget.setFirstDayOfWeek(dayOfWeek);
+ },
+ set font(font: QFont) {
+ widget.setFont(font);
+ },
+ set gridVisible(show: boolean) {
+ widget.setGridVisible(show);
+ },
+ set horizontalHeaderFormat(format: HorizontalHeaderFormat) {
+ widget.setHorizontalHeaderFormat(format);
+ },
+ set navigationBarVisible(visible: boolean) {
+ widget.setNavigationBarVisible(visible);
+ },
+ set selectionMode(mode: SelectionMode) {
+ widget.setSelectionMode(mode);
+ },
+ set verticalHeaderFormat(format: VerticalHeaderFormat) {
+ widget.setVerticalHeaderFormat(format);
+ },
+ };
+ Object.assign(setter, newProps);
+ setViewProps(widget, newProps, oldProps);
+};
+
+/**
+ * @ignore
+ */
+export class RNCalendar extends QCalendarWidget implements RNComponent {
+ setProps(newProps: CalendarProps, oldProps: CalendarProps): void {
+ setCalendarProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: Component): void {
+ throwUnsupported(this);
+ }
+ appendChild(child: Component): void {
+ throwUnsupported(this);
+ }
+ insertBefore(child: Component, beforeChild: Component): void {
+ throwUnsupported(this);
+ }
+ removeChild(child: Component): void {
+ throwUnsupported(this);
+ }
+ static tagName = "calendar";
+}
diff --git a/src/components/Calendar/index.ts b/src/components/Calendar/index.ts
new file mode 100644
index 00000000..68970266
--- /dev/null
+++ b/src/components/Calendar/index.ts
@@ -0,0 +1,91 @@
+import { ComponentConfig, registerComponent, RNComponent } from "../config";
+import { AppContainer } from "../../reconciler";
+import { Fiber } from "react-reconciler";
+import { CalendarProps, RNCalendar } from "./RNCalendar";
+
+class CalendarConfig extends ComponentConfig {
+ tagName = RNCalendar.tagName;
+ shouldSetTextContent(nextProps: CalendarProps): boolean {
+ return false;
+ }
+ createInstance(
+ newProps: CalendarProps,
+ rootInstance?: AppContainer,
+ context?: any,
+ workInProgress?: Fiber
+ ): RNCalendar {
+ const widget = new RNCalendar();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(
+ instance: RNCalendar,
+ newProps: CalendarProps,
+ internalInstanceHandle: any
+ ): void {
+ if (newProps.visible !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(
+ instance: RNCalendar,
+ updatePayload: any,
+ oldProps: CalendarProps,
+ newProps: CalendarProps,
+ finishedWork: Fiber
+ ): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+
+/**
+ * The Calendar component provides ability to add calendar widgets. It is based on
+ * [NodeGui's QCalendarWidget](https://docs.nodegui.org/docs/api/generated/classes/qcalendarwidget/).
+ * @example
+ * ```typescriptreact
+ * import {
+ * DateFormat,
+ * DayOfWeek,
+ * NativeElement,
+ * QCalendarWidgetSignals,
+ * QDate,
+ * } from "@nodegui/nodegui";
+ * import {
+ * Calendar,
+ * Renderer,
+ * useEventHandler,
+ * Window,
+ * } from "@nodegui/react-nodegui";
+ * import React from "react";
+ * const App = () => {
+ * const calendarClickHandler = useEventHandler(
+ * {
+ * activated: (nativeDate) => {
+ * const date = new QDate(nativeDate as unknown as NativeElement);
+ * console.log(`activated: ${date.toString(DateFormat.SystemLocaleDate)}`);
+ * },
+ * clicked: (nativeDate) => {
+ * const date = new QDate(nativeDate as unknown as NativeElement);
+ * console.log(`clicked: ${date.toString(DateFormat.SystemLocaleDate)}`);
+ * },
+ * currentPageChanged: (year, month) => {
+ * console.log(`currentPageChanged: year, month: ${year}, ${month}`);
+ * },
+ * selectionChanged: () => {
+ * console.log("selectionChanged");
+ * },
+ * },
+ * []
+ * );
+ *
+ * return (
+ *
+ *
+ *
+ * );
+ * }
+ * Renderer.render();
+ * ```
+ */
+export const Calendar = registerComponent(new CalendarConfig());
diff --git a/src/components/CheckBox/RNCheckBox.ts b/src/components/CheckBox/RNCheckBox.ts
index e8441210..43b98773 100644
--- a/src/components/CheckBox/RNCheckBox.ts
+++ b/src/components/CheckBox/RNCheckBox.ts
@@ -1,4 +1,4 @@
-import { QCheckBox, NodeWidget, QCheckBoxSignals } from "@nodegui/nodegui";
+import { QCheckBox, QWidget, QCheckBoxSignals } from "@nodegui/nodegui";
import { RNWidget } from "../config";
import { throwUnsupported } from "../../utils/helpers";
import {
@@ -8,7 +8,7 @@ import {
/**
* The CheckBox component provides ability to add and manipulate native button widgets. It is based on
- * [NodeGui's QCheckBox](https://docs.nodegui.org/docs/api/QCheckBox).
+ * [NodeGui's QCheckBox](https://docs.nodegui.org/docs/api/generated/classes/QCheckBox).
* ## Example
* ```javascript
* import React from "react";
@@ -29,7 +29,7 @@ import {
*/
export interface CheckBoxProps extends AbstractButtonProps {
/**
- * This property holds whether the button is checked. [QCheckBox: setChecked](https://docs.nodegui.org/docs/api/QCheckBox/#checkboxsetcheckedcheck)
+ * This property holds whether the button is checked. [QCheckBox: setChecked](https://docs.nodegui.org/docs/api/generated/classes/QCheckBox/#checkboxsetcheckedcheck)
*/
checked?: boolean;
}
@@ -55,16 +55,16 @@ export class RNCheckBox extends QCheckBox implements RNWidget {
setProps(newProps: CheckBoxProps, oldProps: CheckBoxProps): void {
setCheckBoxProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "checkbox";
diff --git a/src/components/ColorDialog/RNColorDialog.ts b/src/components/ColorDialog/RNColorDialog.ts
new file mode 100644
index 00000000..5686fcef
--- /dev/null
+++ b/src/components/ColorDialog/RNColorDialog.ts
@@ -0,0 +1,47 @@
+import { QWidget, QColor, QColorDialog, QColorDialogSignals } from "@nodegui/nodegui";
+import { ColorDialogOption } from "@nodegui/nodegui/dist/lib/QtWidgets/QColorDialog";
+import { throwUnsupported } from "../../utils/helpers";
+import { RNWidget } from "../config";
+import { DialogProps, setDialogProps } from "../Dialog/RNDialog";
+import { DialogOption } from "../FileDialog/RNFileDialog";
+
+export interface ColorDialogProps extends DialogProps {
+ currentColor?: QColor;
+ option?: DialogOption;
+ options?: ColorDialogOption;
+}
+
+function setColorDialogProps(widget: RNColorDialog, newProps: ColorDialogProps, oldProps: ColorDialogProps) {
+ const setter: ColorDialogProps = {
+ set currentColor(currentColor: QColor) {
+ widget.setCurrentColor(currentColor);
+ },
+ set option({ option, on }: DialogOption) {
+ widget.setOption(option, on);
+ },
+ set options(options: ColorDialogOption) {
+ widget.setOptions(options);
+ },
+ };
+ Object.assign(setter, newProps);
+ setDialogProps(widget, newProps, oldProps);
+}
+
+export class RNColorDialog extends QColorDialog implements RNWidget {
+ setProps(newProps: ColorDialogProps, oldProps: ColorDialogProps): void {
+ setColorDialogProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ appendChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ throwUnsupported(this);
+ }
+ removeChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ static tagName = "color-dialog";
+}
diff --git a/src/components/ColorDialog/index.ts b/src/components/ColorDialog/index.ts
new file mode 100644
index 00000000..d009a257
--- /dev/null
+++ b/src/components/ColorDialog/index.ts
@@ -0,0 +1,47 @@
+import { Fiber } from "react-reconciler";
+import { AppContainer } from "../../reconciler";
+import { ComponentConfig, registerComponent } from "../config";
+import { RNColorDialog, ColorDialogProps } from "./RNColorDialog";
+
+class ColorDialogConfig extends ComponentConfig {
+ tagName: string = RNColorDialog.tagName;
+ shouldSetTextContent(nextProps: ColorDialogProps): boolean {
+ return false;
+ }
+ createInstance(newProps: ColorDialogProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNColorDialog {
+ const widget = new RNColorDialog();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(instance: RNColorDialog, newProps: ColorDialogProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false && newProps.open !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNColorDialog, updatePayload: any, oldProps: ColorDialogProps, newProps: ColorDialogProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * Pop up ColorDialog inheriting the functionality of nodegui's `QColorDialog`
+ * @example
+ * ```javascript
+ * function ColorDialogExample(props){
+ * const [open, setOpen] = useState(false);
+ * const events = useEventHandler({
+ * colorSelected(color){
+ * //....do whatever
+ * }
+ * }, [....deps])
+ * return (
+ *
+ *
+ *
+ * )
+ * }
+ * ```
+ */
+
+export const ColorDialog = registerComponent(new ColorDialogConfig());
diff --git a/src/components/ComboBox/RNComboBox.ts b/src/components/ComboBox/RNComboBox.ts
index ebb21ab5..da2deea5 100644
--- a/src/components/ComboBox/RNComboBox.ts
+++ b/src/components/ComboBox/RNComboBox.ts
@@ -1,6 +1,6 @@
import {
QComboBox,
- NodeWidget,
+ QWidget,
QSize,
QVariant,
SizeAdjustPolicy,
@@ -52,7 +52,7 @@ const setComboBoxProps = (
widget.setProperty("count", count);
},
set iconSize(iconSize: QSize) {
- widget.setProperty("iconSize", iconSize.native);
+ widget.setProperty("iconSize", iconSize.native!);
},
set frame(frame: boolean) {
widget.setProperty("frame", frame);
@@ -61,7 +61,7 @@ const setComboBoxProps = (
widget.setProperty("currentIndex", currentIndex);
},
set currentData(value: QVariant) {
- widget.setProperty("currentData", value.native);
+ widget.setProperty("currentData", value.native!);
},
set currentText(text: string) {
widget.setProperty("currentText", text);
@@ -102,16 +102,16 @@ export class RNComboBox extends QComboBox implements RNWidget {
setProps(newProps: ComboBoxProps, oldProps: ComboBoxProps): void {
setComboBoxProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "combobox";
diff --git a/src/components/Dial/RNDial.ts b/src/components/Dial/RNDial.ts
index b2cb70e4..959f74e0 100644
--- a/src/components/Dial/RNDial.ts
+++ b/src/components/Dial/RNDial.ts
@@ -1,4 +1,4 @@
-import { QDial, NodeWidget, QDialSignals } from "@nodegui/nodegui";
+import { QDial, QWidget, QDialSignals } from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
import { RNWidget } from "../config";
import { throwUnsupported } from "../../utils/helpers";
@@ -53,16 +53,16 @@ export class RNDial extends QDial implements RNWidget {
setProps(newProps: DialProps, oldProps: DialProps): void {
setDialProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "dial";
diff --git a/src/components/Dialog/RNDialog.ts b/src/components/Dialog/RNDialog.ts
new file mode 100644
index 00000000..eb875fcb
--- /dev/null
+++ b/src/components/Dialog/RNDialog.ts
@@ -0,0 +1,75 @@
+import { FlexLayout, FocusReason, QWidget, QDialog, QDialogSignals, QFont } from "@nodegui/nodegui";
+import { RNWidget } from "../config";
+import { setViewProps, ViewProps } from "../View/RNView";
+
+export interface DialogProps extends ViewProps {
+ open?: boolean;
+ font?: QFont;
+ focus?: FocusReason;
+ modal?: boolean;
+ result?: number;
+ reject?: boolean;
+ enableSizeGrip?: boolean;
+}
+
+export function setDialogProps(widget: RNDialog, newProps: DialogProps, oldProps: DialogProps) {
+ const setter: DialogProps = {
+ set open(open: boolean) {
+ open ? widget.open() : widget.close();
+ },
+ set font(font: QFont) {
+ widget.setFont(font);
+ },
+ set focus(focus: FocusReason) {
+ widget.setFocus(focus);
+ },
+ set modal(modal: boolean) {
+ widget.setModal(modal);
+ },
+ set reject(reject: boolean) {
+ reject && widget.reject();
+ },
+ set result(result: number) {
+ widget.setResult(result);
+ },
+ set enableSizeGrip(sizeGrip: boolean) {
+ widget.setSizeGripEnabled(sizeGrip);
+ },
+ };
+ Object.assign(setter, newProps);
+ setViewProps(widget, newProps, oldProps);
+}
+
+export class RNDialog extends QDialog implements RNWidget {
+ setProps(newProps: DialogProps, oldProps: DialogProps): void {
+ setDialogProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ this.appendChild(child);
+ }
+ appendChild(child: QWidget): void {
+ if (!child || child instanceof QDialog) {
+ return;
+ }
+ if (!this.layout()) {
+ const flexLayout = new FlexLayout();
+ flexLayout.setFlexNode(this.getFlexNode());
+ this.setLayout(flexLayout);
+ }
+ this.layout()!.addWidget(child);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ if (child! instanceof QDialog) {
+ this.appendChild(child);
+ }
+ }
+ removeChild(child: QWidget): void {
+ if (!this.layout()) {
+ console.warn("parent has no layout to remove child from");
+ return;
+ }
+ this.layout()!.removeWidget(child);
+ child.close();
+ }
+ static tagName = "dialog";
+}
diff --git a/src/components/Dialog/index.ts b/src/components/Dialog/index.ts
new file mode 100644
index 00000000..365febaf
--- /dev/null
+++ b/src/components/Dialog/index.ts
@@ -0,0 +1,53 @@
+import { Fiber } from "react-reconciler";
+import { AppContainer } from "../../reconciler";
+import { ComponentConfig, registerComponent } from "../config";
+import { DialogProps, RNDialog } from "./RNDialog";
+
+class DialogConfig extends ComponentConfig {
+ tagName: string=RNDialog.tagName;
+ shouldSetTextContent(nextProps: DialogProps): boolean {
+ return false;
+ }
+ finalizeInitialChildren(
+ instance: RNDialog,
+ newProps: DialogProps,
+ rootContainerInstance: AppContainer,
+ context: any
+ ): boolean {
+ return true;
+ }
+ createInstance(newProps: DialogProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNDialog {
+ const widget = new RNDialog();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(instance: RNDialog, newProps: DialogProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false && newProps.open !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNDialog, updatePayload: any, oldProps: DialogProps, newProps: DialogProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * Pop up Dialog inheriting the functionality of nodegui's `QDialog`
+ * @param minSize set minimum height, width to prevent errors
+ * @example
+ * ```javascript
+ * function DialogExample(props){
+ * const [open, setOpen] = useState(false);
+ * return (
+ *
+ *
+ *
+ * )
+ * }
+ * ```
+ */
+
+export const Dialog = registerComponent(new DialogConfig());
\ No newline at end of file
diff --git a/src/components/ErrorPrompt/RNErrorPrompt.ts b/src/components/ErrorPrompt/RNErrorPrompt.ts
new file mode 100644
index 00000000..595bb3d0
--- /dev/null
+++ b/src/components/ErrorPrompt/RNErrorPrompt.ts
@@ -0,0 +1,38 @@
+import { QWidget, QErrorMessage, QErrorMessageSignals } from "@nodegui/nodegui";
+import { throwUnsupported } from "../../utils/helpers";
+import { RNWidget } from "../config";
+import { DialogProps, setDialogProps } from "../Dialog/RNDialog";
+
+export interface ErrorPromptProps extends DialogProps {
+ message: string;
+}
+
+function setErrorPromptProps(widget: RNErrorPrompt, newProps: ErrorPromptProps, oldProps: ErrorPromptProps) {
+ const setter: ErrorPromptProps = {
+ set message(message: string) {
+ widget.showMessage(message);
+ widget.close();
+ },
+ };
+ Object.assign(setter, newProps);
+ setDialogProps(widget, newProps, oldProps);
+}
+
+export class RNErrorPrompt extends QErrorMessage implements RNWidget {
+ setProps(newProps: ErrorPromptProps, oldProps: ErrorPromptProps): void {
+ setErrorPromptProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ appendChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ throwUnsupported(this);
+ }
+ removeChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ static tagName = "error-prompt";
+}
diff --git a/src/components/ErrorPrompt/index.ts b/src/components/ErrorPrompt/index.ts
new file mode 100644
index 00000000..14d987a2
--- /dev/null
+++ b/src/components/ErrorPrompt/index.ts
@@ -0,0 +1,43 @@
+import { Fiber } from "react-reconciler";
+import { AppContainer } from "../../reconciler";
+import { ComponentConfig, registerComponent } from "../config";
+import { RNErrorPrompt, ErrorPromptProps } from "./RNErrorPrompt";
+
+class ErrorPromptConfig extends ComponentConfig {
+ tagName: string = RNErrorPrompt.tagName;
+ shouldSetTextContent(nextProps: ErrorPromptProps): boolean {
+ return false;
+ }
+ createInstance(newProps: ErrorPromptProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNErrorPrompt {
+ const widget = new RNErrorPrompt();
+ widget.setProps(newProps, { message: "" });
+ return widget;
+ }
+ commitMount(instance: RNErrorPrompt, newProps: ErrorPromptProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false && newProps.open !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNErrorPrompt, updatePayload: any, oldProps: ErrorPromptProps, newProps: ErrorPromptProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * ErrorPrompt inherits the functionality of nodegui's `QErrorMessage`
+ * @property `message` the message that needs to be displayed
+ * @example
+ * ```javascriptreact
+ * function ErrorApplet(){
+ * const [open, setOpen] = useState(false);
+ * return (
+ *
+ *
+ *
+ * )
+ * }
+ * ```
+ */
+
+export const ErrorPrompt = registerComponent(new ErrorPromptConfig());
diff --git a/src/components/FileDialog/RNFileDialog.ts b/src/components/FileDialog/RNFileDialog.ts
new file mode 100644
index 00000000..2bfae6b2
--- /dev/null
+++ b/src/components/FileDialog/RNFileDialog.ts
@@ -0,0 +1,63 @@
+import { QWidget, QFileDialog, DialogLabel, QFileDialogSignals, Option } from "@nodegui/nodegui";
+import { throwUnsupported } from "../../utils/helpers";
+import { RNWidget } from "../config";
+import { DialogProps, setDialogProps } from "../Dialog/RNDialog";
+
+export interface FileDialogLabelText{
+ label: DialogLabel,
+ text: string
+}
+
+export interface DialogOption {
+ option: T;
+ on: boolean;
+}
+
+export interface FileDialogProps extends DialogProps{
+ defaultSuffix?: string;
+ supportedSchemes?: string[];
+ labelText?: FileDialogLabelText;
+ option?: DialogOption,
+ options?: Option
+}
+
+function setFileDialogProps(widget: RNFileDialog, newProps: FileDialogProps, oldProps: FileDialogProps) {
+ const setter: FileDialogProps = {
+ set defaultSuffix(defaultSuffix: string) {
+ widget.setDefaultSuffix(defaultSuffix);
+ },
+ set supportedSchemes(supportedSchemes: string[]) {
+ widget.setSupportedSchemes(supportedSchemes);
+ },
+ set labelText(labelText: FileDialogLabelText) {
+ widget.setLabelText(labelText.label, labelText.text);
+ },
+ set option({option, on}: DialogOption) {
+ widget.setOption(option, on)
+ },
+ set options(options: Option) {
+ widget.setOptions(options);
+ }
+ };
+ Object.assign(setter, newProps);
+ setDialogProps(widget, newProps, oldProps);
+}
+
+export class RNFileDialog extends QFileDialog implements RNWidget {
+ setProps(newProps: FileDialogProps, oldProps: FileDialogProps): void {
+ setFileDialogProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ appendChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ throwUnsupported(this);
+ }
+ removeChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ static tagName = "file-dialog";
+}
diff --git a/src/components/FileDialog/index.ts b/src/components/FileDialog/index.ts
new file mode 100644
index 00000000..146c4f4e
--- /dev/null
+++ b/src/components/FileDialog/index.ts
@@ -0,0 +1,47 @@
+import { Fiber } from "react-reconciler";
+import { AppContainer } from "../../reconciler";
+import { ComponentConfig, registerComponent } from "../config";
+import { RNFileDialog, FileDialogProps } from "./RNFileDialog";
+
+class FileDialogConfig extends ComponentConfig {
+ tagName: string=RNFileDialog.tagName;
+ shouldSetTextContent(nextProps: FileDialogProps): boolean {
+ return false;
+ }
+ createInstance(newProps: FileDialogProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNFileDialog {
+ const widget = new RNFileDialog();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(instance: RNFileDialog, newProps: FileDialogProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false && newProps.open !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNFileDialog, updatePayload: any, oldProps: FileDialogProps, newProps: FileDialogProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * Pop up FileDialog inheriting the functionality of nodegui's `QFileDialog`
+ * @example
+ * ```javascript
+ * function DialogExample(props){
+ * const [open, setOpen] = useState(false);
+ * const events = useEventHandler({
+ * fileSelected(file){
+ * //....do whatever
+ * }
+ * }, [....deps])
+ * return (
+ *
+ *
+ *
+ * )
+ * }
+ * ```
+ */
+
+export const FileDialog = registerComponent(new FileDialogConfig());
\ No newline at end of file
diff --git a/src/components/FontDialog/RNFontDialog.ts b/src/components/FontDialog/RNFontDialog.ts
new file mode 100644
index 00000000..3bf7f432
--- /dev/null
+++ b/src/components/FontDialog/RNFontDialog.ts
@@ -0,0 +1,46 @@
+import { FontDialogOption, QWidget, QFont, QFontDialog, QFontDialogSignals } from "@nodegui/nodegui";
+import { throwUnsupported } from "../../utils/helpers";
+import { RNWidget } from "../config";
+import { DialogProps, setDialogProps } from "../Dialog/RNDialog";
+import { DialogOption } from "../FileDialog/RNFileDialog";
+
+export interface FontDialogProps extends DialogProps {
+ currentFont?: QFont;
+ option?: DialogOption;
+ options?: FontDialogOption;
+}
+
+function setFontDialogProps(widget: RNFontDialog, newProps: FontDialogProps, oldProps: FontDialogProps) {
+ const setter: FontDialogProps = {
+ set currentFont(currentFont: QFont) {
+ widget.setCurrentFont(currentFont);
+ },
+ set option({ option, on }: DialogOption) {
+ widget.setOption(option, on);
+ },
+ set options(options: FontDialogOption) {
+ widget.setOptions(options);
+ },
+ };
+ Object.assign(setter, newProps);
+ setDialogProps(widget, newProps, oldProps);
+}
+
+export class RNFontDialog extends QFontDialog implements RNWidget {
+ setProps(newProps: FontDialogProps, oldProps: FontDialogProps): void {
+ setFontDialogProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ appendChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ throwUnsupported(this);
+ }
+ removeChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ static tagName = "font-dialog";
+}
diff --git a/src/components/FontDialog/index.ts b/src/components/FontDialog/index.ts
new file mode 100644
index 00000000..cd06167f
--- /dev/null
+++ b/src/components/FontDialog/index.ts
@@ -0,0 +1,47 @@
+import { Fiber } from "react-reconciler";
+import { AppContainer } from "../../reconciler";
+import { ComponentConfig, registerComponent } from "../config";
+import { RNFontDialog, FontDialogProps } from "./RNFontDialog";
+
+class FontDialogConfig extends ComponentConfig {
+ tagName: string = RNFontDialog.tagName;
+ shouldSetTextContent(nextProps: FontDialogProps): boolean {
+ return false;
+ }
+ createInstance(newProps: FontDialogProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNFontDialog {
+ const widget = new RNFontDialog();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(instance: RNFontDialog, newProps: FontDialogProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false && newProps.open !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNFontDialog, updatePayload: any, oldProps: FontDialogProps, newProps: FontDialogProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * Pop up FontDialog inheriting the functionality of nodegui's `QFontDialog`
+ * @example
+ * ```javascript
+ * function FontDialogExample(props){
+ * const [open, setOpen] = useState(false);
+ * const events = useEventHandler({
+ * fontSelected(font){
+ * //....do whatever
+ * }
+ * }, [....deps])
+ * return (
+ *
+ *
+ *
+ * )
+ * }
+ * ```
+ */
+
+export const FontDialog = registerComponent(new FontDialogConfig());
diff --git a/src/components/GridView/GridColumn/RNGridColumn.ts b/src/components/GridView/GridColumn/RNGridColumn.ts
index 234df6a7..0f5318fb 100644
--- a/src/components/GridView/GridColumn/RNGridColumn.ts
+++ b/src/components/GridView/GridColumn/RNGridColumn.ts
@@ -1,5 +1,5 @@
import { FunctionComponentElement } from "react";
-import { Component, NodeWidget } from "@nodegui/nodegui";
+import { Component, QWidget } from "@nodegui/nodegui";
import { RNComponent } from "../../config";
import { RNGridRow } from "../GridRow/RNGridRow";
@@ -18,8 +18,8 @@ const setGridColumnProps = (
) => {
if (widget.actualWidget) {
// TODO: Optimize this
- parentRow.parentGrid?.layout?.removeWidget(widget.actualWidget);
- parentRow.parentGrid?.layout?.addWidget(
+ parentRow.parentGrid?.layout()?.removeWidget(widget.actualWidget);
+ parentRow.parentGrid?.layout()?.addWidget(
widget.actualWidget,
parentRow.rowIndex ?? 0,
widget.columnIndex ?? 0,
@@ -38,7 +38,7 @@ const setGridColumnProps = (
export class RNGridColumn extends Component implements RNComponent {
native: any;
- actualWidget?: NodeWidget;
+ actualWidget?: QWidget;
parentRow?: RNGridRow;
latestProps?: GridColumnProps;
prevProps?: GridColumnProps;
@@ -61,7 +61,7 @@ export class RNGridColumn extends Component implements RNComponent {
return;
}
- this.parentRow?.parentGrid?.layout?.removeWidget(this.actualWidget);
+ this.parentRow?.parentGrid?.layout()?.removeWidget(this.actualWidget);
this.actualWidget.close();
this.actualWidget = undefined;
}
@@ -76,19 +76,19 @@ export class RNGridColumn extends Component implements RNComponent {
this.latestProps = newProps;
this.prevProps = oldProps;
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
if (this.actualWidget) {
throw new Error("Grid column can have only one child");
}
this.actualWidget = child;
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
this.appendInitialChild(child);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
this.appendInitialChild(child);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
this.remove();
}
static tagName: string = "gridcolumn";
diff --git a/src/components/GridView/GridColumn/index.ts b/src/components/GridView/GridColumn/index.ts
index 132e9250..74b1a613 100644
--- a/src/components/GridView/GridColumn/index.ts
+++ b/src/components/GridView/GridColumn/index.ts
@@ -14,7 +14,7 @@ class GridColumnConfig extends ComponentConfig {
context: any,
workInProgress: Fiber
): RNGridColumn {
- const widget = new RNGridColumn();
+ const widget = new RNGridColumn(null!);
widget.setProps(newProps, newProps);
return widget;
}
diff --git a/src/components/GridView/GridRow/index.ts b/src/components/GridView/GridRow/index.ts
index bcd12a05..94b69dec 100644
--- a/src/components/GridView/GridRow/index.ts
+++ b/src/components/GridView/GridRow/index.ts
@@ -14,7 +14,7 @@ class GridRowConfig extends ComponentConfig {
context: any,
workInProgress: Fiber
): RNGridRow {
- const widget = new RNGridRow();
+ const widget = new RNGridRow(null!);
widget.setProps(newProps, newProps);
return widget;
}
diff --git a/src/components/GridView/RNGridView.ts b/src/components/GridView/RNGridView.ts
index c3a61f4b..edb707ee 100644
--- a/src/components/GridView/RNGridView.ts
+++ b/src/components/GridView/RNGridView.ts
@@ -1,5 +1,5 @@
import { FunctionComponentElement } from "react";
-import { QGridLayoutSignals, QGridLayout, QWidget } from "@nodegui/nodegui";
+import { QGridLayoutSignals, QGridLayout, QWidget, QLayout, QObjectSignals } from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
import { RNComponent } from "../config";
import { RNGridRow, GridRowProps } from "./GridRow/RNGridRow";
@@ -42,18 +42,18 @@ const setGridViewProps = (
) => {
const setter: Omit = {
set horizontalSpacing(spacing: number) {
- widget.layout?.setHorizontalSpacing(spacing);
+ widget.layout()?.setHorizontalSpacing(spacing);
},
set verticalSpacing(spacing: number) {
- widget.layout?.setVerticalSpacing(spacing);
+ widget.layout()?.setVerticalSpacing(spacing);
},
set columnProps(props: GridViewColumnProps) {
for (const indexString of Object.keys(props)) {
const index = parseInt(indexString, 10);
const { stretch, minWidth } = props[index];
- widget.layout?.setColumnStretch(index, stretch ?? 0);
- widget.layout?.setColumnMinimumWidth(index, minWidth ?? 0);
+ widget.layout()?.setColumnStretch(index, stretch ?? 0);
+ widget.layout()?.setColumnMinimumWidth(index, minWidth ?? 0);
}
},
set rowProps(props: GridViewRowProps) {
@@ -61,8 +61,8 @@ const setGridViewProps = (
const index = parseInt(indexString, 10);
const { stretch, minHeight } = props[index];
- widget.layout?.setRowStretch(index, stretch ?? 0);
- widget.layout?.setRowMinimumHeight(index, minHeight ?? 0);
+ widget.layout()?.setRowStretch(index, stretch ?? 0);
+ widget.layout()?.setRowMinimumHeight(index, minHeight ?? 0);
}
},
};
@@ -75,16 +75,15 @@ const setGridViewProps = (
*/
export class RNGridView extends QWidget implements RNComponent {
native: any;
- _layout?: QGridLayout;
initialProps?: GridViewProps;
childRows: Array> = [];
- get layout() {
- return this.layout;
+ layout(): QGridLayout | null {
+ return super.layout() as any;
}
- set layout(l: QGridLayout) {
- this._layout = l;
+ setLayout(layout: QGridLayout): void {
+ super.setLayout(layout);
}
updateChildren(startIndex = 0): void {
@@ -100,7 +99,7 @@ export class RNGridView extends QWidget implements RNComponent {
/* RNComponent */
setProps(newProps: GridViewProps, oldProps: GridViewProps): void {
- if (this.layout) {
+ if (this.layout()) {
setGridViewProps(this, newProps, oldProps);
} else {
this.initialProps = newProps;
@@ -129,7 +128,7 @@ export class RNGridView extends QWidget implements RNComponent {
});
};
- if (this.layout) {
+ if (this.layout()) {
updateChild();
return;
@@ -137,7 +136,6 @@ export class RNGridView extends QWidget implements RNComponent {
const layout = new QGridLayout();
this.setLayout(layout);
- this.layout = layout;
// Newly created layout, so set initial props
if (this.initialProps) {
diff --git a/src/components/Image/RNImage.ts b/src/components/Image/RNImage.ts
index af000d94..1c66b6b9 100644
--- a/src/components/Image/RNImage.ts
+++ b/src/components/Image/RNImage.ts
@@ -2,7 +2,7 @@ import {
QLabel,
QPixmap,
AspectRatioMode,
- NodeWidget,
+ QWidget,
QSize,
TransformationMode,
} from "@nodegui/nodegui";
@@ -77,16 +77,16 @@ export class RNImage extends QLabel implements RNWidget {
setProps(newProps: ImageProps, oldProps: ImageProps): void {
setImageProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "image";
diff --git a/src/components/InputDialog/RNInputDialog.ts b/src/components/InputDialog/RNInputDialog.ts
new file mode 100644
index 00000000..113eda90
--- /dev/null
+++ b/src/components/InputDialog/RNInputDialog.ts
@@ -0,0 +1,101 @@
+import { EchoMode, InputDialogOptions, InputMode, QWidget, QInputDialog, QInputDialogSignals } from "@nodegui/nodegui";
+import { throwUnsupported } from "../../utils/helpers";
+import { RNWidget } from "../config";
+import { DialogProps, setDialogProps } from "../Dialog/RNDialog";
+
+export interface InputDialogProps extends DialogProps{
+ cancelButtonText?: string,
+ comboBoxEditable?: boolean,
+ doubleDecimals?: number,
+ doubleMax?: number,
+ doubleMin?: number,
+ doubleStep?: number,
+ doubleValue?: number,
+ inputMode?: InputMode,
+ intMax?: number,
+ intMin?: number,
+ intStep?: number,
+ intValue?: number,
+ labelText?: string,
+ okButtonText?: string,
+ options?: InputDialogOptions,
+ textEchoMode?: EchoMode,
+ textValue?: string
+}
+
+function setInputDialogProps(widget: RNInputDialog, newProps: InputDialogProps, oldProps: InputDialogProps) {
+ const setter: InputDialogProps = {
+ set cancelButtonText(cancelButtonText: string){
+ widget.setCancelButtonText(cancelButtonText)
+ },
+ set comboBoxEditable(comboBoxEditable: boolean) {
+ widget.setComboBoxEditable(comboBoxEditable);
+ },
+ set doubleDecimals(doubleDecimals: number){
+ widget.setDoubleDecimals(doubleDecimals)
+ },
+ set doubleMax(doubleMax: number){
+ widget.setDoubleMaximum(doubleMax)
+ },
+ set doubleMin(doubleMin: number){
+ widget.setDoubleMinimum(doubleMin)
+ },
+ set doubleStep(doubleStep: number){
+ widget.setDoubleStep(doubleStep)
+ },
+ set doubleValue(doubleValue: number){
+ widget.setDoubleValue(doubleValue)
+ },
+ set inputMode(inputMode: InputMode){
+ widget.setInputMode(inputMode)
+ },
+ set intMax(intMax: number){
+ widget.setIntMaximum(intMax)
+ },
+ set intMin(intMi: number){
+ widget.setIntMinimum(intMi)
+ },
+ set intStep(intStep: number){
+ widget.setIntStep(intStep)
+ },
+ set intValue(intValue: number){
+ widget.setIntValue(intValue)
+ },
+ set labelText(labelText: string){
+ widget.setLabelText(labelText)
+ },
+ set okButtonText(okButtonText: string){
+ widget.setOkButtonText(okButtonText)
+ },
+ set options(options: InputDialogOptions){
+ widget.setOptions(options)
+ },
+ set textEchoMode(textEchoMode: EchoMode){
+ widget.setTextEchoMode(textEchoMode)
+ },
+ set textValue(textValue: string){
+ widget.setTextValue(textValue)
+ },
+ };
+ Object.assign(setter, newProps);
+ setDialogProps(widget, newProps, oldProps);
+}
+
+export class RNInputDialog extends QInputDialog implements RNWidget {
+ setProps(newProps: InputDialogProps, oldProps: InputDialogProps): void {
+ setInputDialogProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ appendChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ throwUnsupported(this);
+ }
+ removeChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ static tagName = "input-dialog";
+}
diff --git a/src/components/InputDialog/index.ts b/src/components/InputDialog/index.ts
new file mode 100644
index 00000000..6c7d2adf
--- /dev/null
+++ b/src/components/InputDialog/index.ts
@@ -0,0 +1,47 @@
+import { Fiber } from "react-reconciler";
+import { AppContainer } from "../../reconciler";
+import { ComponentConfig, registerComponent } from "../config";
+import { RNInputDialog, InputDialogProps } from "./RNInputDialog";
+
+class InputDialogConfig extends ComponentConfig {
+ tagName: string = RNInputDialog.tagName;
+ shouldSetTextContent(nextProps: InputDialogProps): boolean {
+ return false;
+ }
+ createInstance(newProps: InputDialogProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNInputDialog {
+ const widget = new RNInputDialog();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(instance: RNInputDialog, newProps: InputDialogProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false && newProps.open !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNInputDialog, updatePayload: any, oldProps: InputDialogProps, newProps: InputDialogProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * Pop up InputDialog inheriting the functionality of nodegui's `QInputDialog`
+ * @example
+ * ```javascript
+ * function DialogExample(props){
+ * const [open, setOpen] = useState(false);
+ * const events = useEventHandler({
+ * textValueChanged(value){
+ * //....do whatever
+ * }
+ * }, [....deps])
+ * return (
+ *
+ *
+ *
+ * )
+ * }
+ * ```
+ */
+
+export const InputDialog = registerComponent(new InputDialogConfig());
diff --git a/src/components/LineEdit/RNLineEdit.ts b/src/components/LineEdit/RNLineEdit.ts
index 5f165a6e..2a6eca10 100644
--- a/src/components/LineEdit/RNLineEdit.ts
+++ b/src/components/LineEdit/RNLineEdit.ts
@@ -1,7 +1,7 @@
import {
QLineEdit,
EchoMode,
- NodeWidget,
+ QWidget,
QLineEditSignals
} from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
@@ -66,16 +66,16 @@ export class RNLineEdit extends QLineEdit implements RNWidget {
setProps(newProps: LineEditProps, oldProps: LineEditProps): void {
setLineEditProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "linedit";
diff --git a/src/components/List/RNList.ts b/src/components/List/RNList.ts
new file mode 100644
index 00000000..f5a5a11a
--- /dev/null
+++ b/src/components/List/RNList.ts
@@ -0,0 +1,58 @@
+import { FlexLayout, QListWidget, QListWidgetSignals } from "@nodegui/nodegui";
+import { ViewProps, setViewProps } from "../View/RNView";
+import { RNComponent } from "../config";
+import { RNListItem } from "../ListItem/RNListItem";
+
+
+export interface ListProps extends ViewProps {
+}
+
+type CustomListProps = ListProps;
+
+
+/**
+ * @ignore
+ */
+export const setListProps = (widget: RNList, newProps: CustomListProps, oldProps: CustomListProps) => {
+
+ const setter: CustomListProps = {
+ };
+ Object.assign(setter, newProps);
+ setViewProps(widget, newProps, oldProps);
+};
+
+/**
+ * @ignore
+ */
+export class RNList extends QListWidget implements RNComponent {
+ setProps(newProps: CustomListProps, oldProps: CustomListProps): void {
+ setListProps(this, newProps, oldProps);
+ }
+ removeChild(child: RNListItem): void {
+ const row = this.row(child);
+ this.takeItem(row);
+ }
+ appendInitialChild(child: RNListItem): void {
+ this.appendChild(child);
+ }
+ appendChild(child: RNListItem): void {
+ if (!this.layout()) {
+ this.setLayout(new FlexLayout());
+ }
+
+ if (!(child instanceof RNListItem)) {
+ throw new Error("Children of list should be of type ListItem");
+ }
+
+ this.addItem(child);
+ if (child.actualListItemWidget) {
+ child.setSizeHint(child.actualListItemWidget.size());
+ this.setItemWidget(child, child.actualListItemWidget);
+ }
+ }
+ insertBefore(child: RNListItem, beforeChild: RNListItem): void {
+ const row = this.row(beforeChild);
+ this.insertItem(row, child);
+ }
+ static tagName = "list";
+}
diff --git a/src/components/List/index.ts b/src/components/List/index.ts
new file mode 100644
index 00000000..6f1c3e58
--- /dev/null
+++ b/src/components/List/index.ts
@@ -0,0 +1,43 @@
+import { registerComponent, ComponentConfig } from "../config";
+import { Fiber } from "react-reconciler";
+import { RNList, ListProps } from "./RNList";
+import { AppContainer } from "../../reconciler";
+
+class ListConfig extends ComponentConfig {
+ tagName = RNList.tagName;
+ shouldSetTextContent(nextProps: ListProps): boolean {
+ return false;
+ }
+ createInstance(newProps: ListProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNList {
+ const widget = new RNList();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(instance: RNList, newProps: ListProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNList, updatePayload: any, oldProps: ListProps, newProps: ListProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * React implementation of nodegui's [QListWidget](https://docs.nodegui.org/docs/api/generated/classes/qlistwidget/)
+ * @example
+ * ```javascriptreact
+ * return (
+ *
+
+
+
+ Hello World
+
+
+
+ * )
+ * ```
+ */
+
+export const List = registerComponent(new ListConfig());
diff --git a/src/components/ListItem/RNListItem.ts b/src/components/ListItem/RNListItem.ts
new file mode 100644
index 00000000..b8444c47
--- /dev/null
+++ b/src/components/ListItem/RNListItem.ts
@@ -0,0 +1,59 @@
+import { QWidget, QListWidgetItem, QIcon } from "@nodegui/nodegui";
+import { RNComponent } from "../config";
+
+export interface ListItemProps {
+ title?: string;
+ icon?: QIcon;
+}
+
+/**
+ * @ignore
+ */
+export const setListItemProps = (
+ widget: RNListItem,
+ newProps: ListItemProps,
+ oldProps: ListItemProps
+) => {
+ const setter: ListItemProps = {
+ set title(text: string) {
+ widget.setText(text);
+ },
+ set icon(qicon: QIcon) {
+ widget.setIcon(qicon);
+ }
+ };
+ Object.assign(setter, newProps);
+};
+
+/**
+ * @ignore
+ */
+export class RNListItem extends QListWidgetItem implements RNComponent {
+ native: any;
+ actualListItemWidget?: QWidget;
+
+ setProps(newProps: ListItemProps, oldProps: ListItemProps): void {
+ setListItemProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ if (this.actualListItemWidget) {
+ throw new Error("ListItem can have only one child");
+ }
+ this.actualListItemWidget = child;
+ }
+ appendChild(child: QWidget): void {
+ this.appendInitialChild(child);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ this.appendInitialChild(child);
+ }
+ removeChild(child: QWidget): void {
+ if (child) {
+ child.close();
+ }
+ if (this.actualListItemWidget) {
+ delete this.actualListItemWidget;
+ }
+ }
+ static tagName: string = "listitem";
+}
diff --git a/src/components/ListItem/index.ts b/src/components/ListItem/index.ts
new file mode 100644
index 00000000..7bee20ba
--- /dev/null
+++ b/src/components/ListItem/index.ts
@@ -0,0 +1,40 @@
+import { Fiber } from "react-reconciler";
+import { registerComponent, ComponentConfig } from "../config";
+import { RNListItem, ListItemProps } from "./RNListItem";
+import { AppContainer } from "../../reconciler";
+
+class ListItemConfig extends ComponentConfig {
+ tagName = RNListItem.tagName;
+ shouldSetTextContent(nextProps: ListItemProps): boolean {
+ return false;
+ }
+ createInstance(
+ newProps: ListItemProps,
+ rootInstance: AppContainer,
+ context: any,
+ workInProgress: Fiber
+ ): RNListItem {
+ const item = new RNListItem();
+ item.setProps(newProps, {});
+ return item;
+ }
+ finalizeInitialChildren(
+ instance: RNListItem,
+ newProps: ListItemProps,
+ rootContainerInstance: AppContainer,
+ context: any
+ ): boolean {
+ return false;
+ }
+ commitUpdate(
+ instance: RNListItem,
+ updatePayload: any,
+ oldProps: ListItemProps,
+ newProps: ListItemProps,
+ finishedWork: Fiber
+ ): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+
+export const ListItem = registerComponent(new ListItemConfig());
diff --git a/src/components/Menu/RNMenu.ts b/src/components/Menu/RNMenu.ts
index 68656942..704bedd7 100644
--- a/src/components/Menu/RNMenu.ts
+++ b/src/components/Menu/RNMenu.ts
@@ -1,4 +1,4 @@
-import { QMenu, QMenuSignals, Component, NodeWidget } from "@nodegui/nodegui";
+import { QMenu, QMenuSignals, Component, QWidget } from "@nodegui/nodegui";
import { RNWidget } from "../config";
import { throwUnsupported } from "../../utils/helpers";
import { RNAction } from "../Action/RNAction";
diff --git a/src/components/MenuBar/RNMenuBar.ts b/src/components/MenuBar/RNMenuBar.ts
index ca5acae3..1118a163 100644
--- a/src/components/MenuBar/RNMenuBar.ts
+++ b/src/components/MenuBar/RNMenuBar.ts
@@ -1,4 +1,4 @@
-import { NodeWidget, QMenu, QMenuBar, QMenuBarSignals } from "@nodegui/nodegui";
+import { QWidget, QMenu, QMenuBar, QMenuBarSignals } from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
import { RNWidget } from "../config";
import { throwUnsupported } from "../../utils/helpers";
@@ -35,13 +35,13 @@ export class RNMenuBar extends QMenuBar implements RNWidget {
appendChild(child: QMenu): void {
this.appendInitialChild(child);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
console.warn(
"Updating menubar is not yet supported. Please help by raising a PR"
);
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
console.warn(
"Updating menubar is not yet supported. Please help by raising a PR"
);
diff --git a/src/components/PlainTextEdit/RNPlainTextEdit.ts b/src/components/PlainTextEdit/RNPlainTextEdit.ts
index 72d26db2..1bb4af09 100644
--- a/src/components/PlainTextEdit/RNPlainTextEdit.ts
+++ b/src/components/PlainTextEdit/RNPlainTextEdit.ts
@@ -1,6 +1,6 @@
import {
QPlainTextEdit,
- NodeWidget,
+ QWidget,
QPlainTextEditSignals
} from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
@@ -66,16 +66,16 @@ export class RNPlainTextEdit extends QPlainTextEdit implements RNWidget {
setProps(newProps: PlainTextEditProps, oldProps: PlainTextEditProps): void {
setPlainTextEditProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "plaintextedit";
diff --git a/src/components/ProgressBar/RNProgressBar.ts b/src/components/ProgressBar/RNProgressBar.ts
index 91e0c378..0096d5f7 100644
--- a/src/components/ProgressBar/RNProgressBar.ts
+++ b/src/components/ProgressBar/RNProgressBar.ts
@@ -1,7 +1,7 @@
import {
QProgressBar,
Orientation,
- NodeWidget,
+ QWidget,
QProgressBarSignals
} from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
@@ -62,16 +62,16 @@ export class RNProgressBar extends QProgressBar implements RNWidget {
setProps(newProps: ProgressBarProps, oldProps: ProgressBarProps): void {
setProgressBarProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "progressbar";
diff --git a/src/components/ProgressDialog/RNProgressDialog.ts b/src/components/ProgressDialog/RNProgressDialog.ts
new file mode 100644
index 00000000..448eaedb
--- /dev/null
+++ b/src/components/ProgressDialog/RNProgressDialog.ts
@@ -0,0 +1,88 @@
+import { QWidget, QProgressDialog, QProgressDialogSignals } from "@nodegui/nodegui";
+import { throwUnsupported } from "../../utils/helpers";
+import { RNWidget } from "../config";
+import { DialogProps, setDialogProps } from "../Dialog/RNDialog";
+
+interface ProgressBarRange {
+ max: number;
+ min: number;
+}
+
+export interface ProgressDialogProps extends DialogProps {
+ autoClose?: boolean;
+ autoReset?: boolean;
+ cancelButtonText?: string;
+ labelText?: string;
+ maxValue?: number;
+ minValue?: number;
+ /**
+ * This property holds the time(`in milliseconds`) that must pass before the dialog appears.
+ *
+ * https://doc.qt.io/qt-5/qprogressdialog.html#minimumDuration-prop
+ * @default 4
+ */
+ minDuration?: number;
+ range?: ProgressBarRange;
+ value?: number;
+ /**
+ * Set this to `false` to allow the progress dialog opening
+ * automatically when window first mounts
+ */
+ shouldReset?: boolean;
+}
+
+function setProgressDialogProps(widget: RNProgressDialog, newProps: ProgressDialogProps, oldProps: ProgressDialogProps) {
+ const setter: ProgressDialogProps = {
+ set shouldReset(shouldReset: boolean) {
+ shouldReset && widget.reset();
+ },
+ set autoClose(autoClose: boolean) {
+ widget.setAutoClose(autoClose);
+ },
+ set autoReset(autoReset: boolean) {
+ widget.setAutoReset(autoReset);
+ },
+ set cancelButtonText(cancelButtonText: string) {
+ widget.setCancelButtonText(cancelButtonText);
+ },
+ set labelText(labelText: string) {
+ widget.setLabelText(labelText);
+ },
+ set maxValue(maxValue: number) {
+ widget.setMaximum(maxValue);
+ },
+ set minValue(minValue: number) {
+ widget.setMinimum(minValue);
+ },
+ set minDuration(minDuration: number) {
+ widget.setMinimumDuration(minDuration);
+ },
+ set range({ max, min }: ProgressBarRange) {
+ widget.setRange(min, max);
+ },
+ set value(value: number) {
+ widget.setValue(value);
+ },
+ };
+ Object.assign(setter, newProps);
+ setDialogProps(widget, newProps, oldProps);
+}
+
+export class RNProgressDialog extends QProgressDialog implements RNWidget {
+ setProps(newProps: ProgressDialogProps, oldProps: ProgressDialogProps): void {
+ setProgressDialogProps(this, newProps, oldProps);
+ }
+ appendInitialChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ appendChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
+ throwUnsupported(this);
+ }
+ removeChild(child: QWidget): void {
+ throwUnsupported(this);
+ }
+ static tagName = "progress-dialog";
+}
diff --git a/src/components/ProgressDialog/index.ts b/src/components/ProgressDialog/index.ts
new file mode 100644
index 00000000..a9da8b2f
--- /dev/null
+++ b/src/components/ProgressDialog/index.ts
@@ -0,0 +1,59 @@
+import { Fiber } from "react-reconciler";
+import { AppContainer } from "../../reconciler";
+import { ComponentConfig, registerComponent } from "../config";
+import { RNProgressDialog, ProgressDialogProps } from "./RNProgressDialog";
+
+class ProgressDialogConfig extends ComponentConfig {
+ tagName: string = RNProgressDialog.tagName;
+ shouldSetTextContent(nextProps: ProgressDialogProps): boolean {
+ return false;
+ }
+ createInstance(newProps: ProgressDialogProps, rootInstance: AppContainer, context: any, workInProgress: Fiber): RNProgressDialog {
+ const widget = new RNProgressDialog();
+ widget.setProps(newProps, {});
+ return widget;
+ }
+ commitMount(instance: RNProgressDialog, newProps: ProgressDialogProps, internalInstanceHandle: any): void {
+ if (newProps.visible !== false && newProps.open !== false) {
+ instance.show();
+ }
+ return;
+ }
+ commitUpdate(instance: RNProgressDialog, updatePayload: any, oldProps: ProgressDialogProps, newProps: ProgressDialogProps, finishedWork: Fiber): void {
+ instance.setProps(newProps, oldProps);
+ }
+}
+/**
+ * Pop up ProgressDialog inheriting the functionality of nodegui's `QProgressDialog`
+ * @example
+ * ```javascript
+ * function ProgressDialogExample(props){
+ * const [open, setOpen] = useState(false);
+ * const events = useEventHandler({
+ * canceled(){
+ * setOpen(false);
+ * //....do whatever
+ * }
+ * }, [....deps])
+ * const [value, setValue] = useState(0);
+ * return (
+ *
+ *
+ *
+ * )
+ * }
+ * ```
+ */
+
+export const ProgressDialog = registerComponent(new ProgressDialogConfig());
diff --git a/src/components/RadioButton/RNRadioButton.ts b/src/components/RadioButton/RNRadioButton.ts
index ee137dbc..415b3ec0 100644
--- a/src/components/RadioButton/RNRadioButton.ts
+++ b/src/components/RadioButton/RNRadioButton.ts
@@ -1,6 +1,6 @@
import {
QRadioButton,
- NodeWidget,
+ QWidget,
QRadioButtonSignals
} from "@nodegui/nodegui";
import { RNWidget } from "../config";
@@ -34,16 +34,16 @@ export class RNRadioButton extends QRadioButton implements RNWidget {
setProps(newProps: RadioButtonProps, oldProps: RadioButtonProps): void {
setRadioButtonProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "radiobutton";
diff --git a/src/components/ScrollArea/RNScrollArea.ts b/src/components/ScrollArea/RNScrollArea.ts
index 0f9a8b78..2cd82f29 100644
--- a/src/components/ScrollArea/RNScrollArea.ts
+++ b/src/components/ScrollArea/RNScrollArea.ts
@@ -1,4 +1,4 @@
-import { QScrollArea, NodeWidget, QScrollAreaSignals } from "@nodegui/nodegui";
+import { QScrollArea, QWidget, QScrollAreaSignals } from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
import { RNWidget } from "../config";
@@ -27,24 +27,24 @@ export class RNScrollArea extends QScrollArea implements RNWidget {
setProps(newProps: ScrollAreaProps, oldProps: ScrollAreaProps): void {
setScrollAreaProps(this, newProps, oldProps);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
const removedChild = this.takeWidget();
if (removedChild) {
removedChild.close();
}
child.close();
}
- appendInitialChild(child: NodeWidget): void {
- if (this.contentWidget) {
+ appendInitialChild(child: QWidget): void {
+ if (this.widget()) {
console.warn("ScrollView can't have more than one child node");
return;
}
this.setWidget(child);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
this.appendInitialChild(child);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
this.appendInitialChild(child);
}
static tagName = "scrollarea";
diff --git a/src/components/Slider/RNSlider.ts b/src/components/Slider/RNSlider.ts
index 7b1b5ca4..500a165d 100644
--- a/src/components/Slider/RNSlider.ts
+++ b/src/components/Slider/RNSlider.ts
@@ -1,4 +1,4 @@
-import { QSlider, NodeWidget, QSliderSignals, TickPosition, Orientation } from '@nodegui/nodegui';
+import { QSlider, QWidget, QSliderSignals, TickPosition, Orientation } from '@nodegui/nodegui';
import { setViewProps, ViewProps } from '../View/RNView';
import { RNWidget } from '../config';
import { throwUnsupported } from '../../utils/helpers';
@@ -77,19 +77,19 @@ export class RNSlider extends QSlider implements RNWidget {
setSliderProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
diff --git a/src/components/SpinBox/RNSpinBox.ts b/src/components/SpinBox/RNSpinBox.ts
index e546bfb7..68fcf2b4 100644
--- a/src/components/SpinBox/RNSpinBox.ts
+++ b/src/components/SpinBox/RNSpinBox.ts
@@ -1,4 +1,4 @@
-import { QSpinBox, NodeWidget, QSpinBoxSignals } from "@nodegui/nodegui";
+import { QSpinBox, QWidget, QSpinBoxSignals } from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
import { RNWidget } from "../config";
import { throwUnsupported } from "../../utils/helpers";
@@ -67,16 +67,16 @@ export class RNSpinBox extends QSpinBox implements RNWidget {
setProps(newProps: SpinBoxProps, oldProps: SpinBoxProps): void {
setSpinBoxProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
throwUnsupported(this);
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
throwUnsupported(this);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
static tagName = "spinbox";
diff --git a/src/components/SystemTrayIcon/RNSystemTrayIcon.ts b/src/components/SystemTrayIcon/RNSystemTrayIcon.ts
index 4f8a355b..caf25e99 100644
--- a/src/components/SystemTrayIcon/RNSystemTrayIcon.ts
+++ b/src/components/SystemTrayIcon/RNSystemTrayIcon.ts
@@ -2,7 +2,7 @@ import { WidgetEventListeners } from "../View/RNView";
import {
QSystemTrayIconSignals,
QSystemTrayIcon,
- NodeWidget,
+ QWidget,
QIcon,
QMenu,
} from "@nodegui/nodegui";
@@ -47,7 +47,7 @@ export interface SystemTrayIconProps extends RNProps {
icon?: QIcon;
/**
- * Sets the object name (id) of the widget in Qt. Object name can be analogous to id of an element in the web world. Using the objectName of the widget one can reference it in the Qt's stylesheet much like what we do with id in the web world. [QWidget: setObjectName](https://docs.nodegui.org/docs/api/NodeWidget#widgetsetobjectnameobjectname)
+ * Sets the object name (id) of the widget in Qt. Object name can be analogous to id of an element in the web world. Using the objectName of the widget one can reference it in the Qt's stylesheet much like what we do with id in the web world. [QWidget: setObjectName](https://docs.nodegui.org/docs/api/generated/classes/QWidget#widgetsetobjectnameobjectname)
*/
id?: string;
@@ -62,7 +62,7 @@ export interface SystemTrayIconProps extends RNProps {
tooltip?: string;
/**
- * Shows or hides the widget and its children. [QWidget: show](https://docs.nodegui.org/docs/api/NodeWidget#widgetshow)
+ * Shows or hides the widget and its children. [QWidget: show](https://docs.nodegui.org/docs/api/generated/classes/QWidget#widgetshow)
*/
visible?: boolean;
}
@@ -114,13 +114,15 @@ const setSystemTrayIconProps = (
*/
export class RNSystemTrayIcon extends QSystemTrayIcon implements RNComponent {
static tagName = "systemtrayicon";
+ contextMenu: QMenu | null = null;
setProps(newProps: SystemTrayIconProps, oldProps: SystemTrayIconProps): void {
setSystemTrayIconProps(this, newProps, oldProps);
}
- appendInitialChild(child: NodeWidget): void {
+ appendInitialChild(child: QWidget): void {
if (child instanceof QMenu) {
if (!this.contextMenu) {
+ this.contextMenu = child;
this.setContextMenu(child);
} else {
console.warn("SystemTrayIcon can't have more than one Menu.");
@@ -129,13 +131,13 @@ export class RNSystemTrayIcon extends QSystemTrayIcon implements RNComponent {
console.warn("SystemTrayIcon only supports Menu as its children");
}
}
- appendChild(child: NodeWidget): void {
+ appendChild(child: QWidget): void {
this.appendInitialChild(child);
}
- insertBefore(child: NodeWidget, beforeChild: NodeWidget): void {
+ insertBefore(child: QWidget, beforeChild: QWidget): void {
throwUnsupported(this);
}
- removeChild(child: NodeWidget): void {
+ removeChild(child: QWidget): void {
throwUnsupported(this);
}
}
diff --git a/src/components/Tab/RNTab.ts b/src/components/Tab/RNTab.ts
index 9333cce7..27219f68 100644
--- a/src/components/Tab/RNTab.ts
+++ b/src/components/Tab/RNTab.ts
@@ -3,7 +3,7 @@ import {
QTabWidgetSignals,
TabPosition,
QIcon,
- NodeWidget
+ QWidget
} from "@nodegui/nodegui";
import { ViewProps, setViewProps } from "../View/RNView";
import { RNComponent } from "../config";
@@ -56,13 +56,13 @@ export class RNTab extends QTabWidget implements RNComponent {
if (!(child instanceof RNTabItem)) {
throw new Error("Children of tab should be of type TabItem");
}
- const index = this.indexOf(beforeChild.actualTabWidget as NodeWidget);
- this.insertTab(index, child.actualTabWidget as NodeWidget, new QIcon(), "");
+ const index = this.indexOf(beforeChild.actualTabWidget as QWidget);
+ this.insertTab(index, child.actualTabWidget as QWidget, new QIcon(), "");
child.parentTab = this;
setTabItemProps(child, this, child.initialProps, {});
}
removeChild(child: RNTabItem): void {
- const childIndex = this.indexOf(child.actualTabWidget as NodeWidget);
+ const childIndex = this.indexOf(child.actualTabWidget as QWidget