├── .all-contributorsrc ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── docs.yml ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── examples └── README.md ├── extras └── assets │ ├── nodegui.png │ └── nodegui_white.png ├── package.json ├── src ├── components │ ├── AbstractComponents │ │ └── RNAbstractButton.ts │ ├── Action │ │ ├── RNAction.ts │ │ └── index.ts │ ├── AnimatedImage │ │ ├── RNAnimatedImage.ts │ │ └── index.ts │ ├── BoxView │ │ ├── RNBoxView.ts │ │ └── index.ts │ ├── Button │ │ ├── RNButton.ts │ │ └── index.ts │ ├── Calendar │ │ ├── RNCalendar.ts │ │ └── index.ts │ ├── CheckBox │ │ ├── RNCheckBox.ts │ │ └── index.ts │ ├── ColorDialog │ │ ├── RNColorDialog.ts │ │ └── index.ts │ ├── ComboBox │ │ ├── RNComboBox.ts │ │ └── index.ts │ ├── Dial │ │ ├── RNDial.ts │ │ └── index.ts │ ├── Dialog │ │ ├── RNDialog.ts │ │ └── index.ts │ ├── ErrorPrompt │ │ ├── RNErrorPrompt.ts │ │ └── index.ts │ ├── FileDialog │ │ ├── RNFileDialog.ts │ │ └── index.ts │ ├── FontDialog │ │ ├── RNFontDialog.ts │ │ └── index.ts │ ├── GridView │ │ ├── GridColumn │ │ │ ├── RNGridColumn.ts │ │ │ └── index.ts │ │ ├── GridRow │ │ │ ├── RNGridRow.ts │ │ │ └── index.ts │ │ ├── RNGridView.ts │ │ ├── index.ts │ │ └── utils.ts │ ├── Image │ │ ├── RNImage.ts │ │ └── index.ts │ ├── InputDialog │ │ ├── RNInputDialog.ts │ │ └── index.ts │ ├── LineEdit │ │ ├── RNLineEdit.ts │ │ └── index.ts │ ├── List │ │ ├── RNList.ts │ │ └── index.ts │ ├── ListItem │ │ ├── RNListItem.ts │ │ └── index.ts │ ├── Menu │ │ ├── RNMenu.ts │ │ └── index.ts │ ├── MenuBar │ │ ├── RNMenuBar.ts │ │ └── index.ts │ ├── PlainTextEdit │ │ ├── RNPlainTextEdit.ts │ │ └── index.ts │ ├── ProgressBar │ │ ├── RNProgressBar.ts │ │ └── index.ts │ ├── ProgressDialog │ │ ├── RNProgressDialog.ts │ │ └── index.ts │ ├── RadioButton │ │ ├── RNRadioButton.ts │ │ └── index.ts │ ├── ScrollArea │ │ ├── RNScrollArea.ts │ │ └── index.ts │ ├── Slider │ │ ├── RNSlider.ts │ │ └── index.ts │ ├── SpinBox │ │ ├── RNSpinBox.ts │ │ └── index.ts │ ├── SystemTrayIcon │ │ ├── RNSystemTrayIcon.ts │ │ └── index.ts │ ├── Tab │ │ ├── RNTab.ts │ │ └── index.ts │ ├── TabItem │ │ ├── RNTabItem.ts │ │ └── index.ts │ ├── Table │ │ ├── RNTable.ts │ │ └── index.ts │ ├── TableItem │ │ ├── RNTableItem.ts │ │ └── index.ts │ ├── Text │ │ ├── RNText.ts │ │ └── index.ts │ ├── View │ │ ├── RNView.ts │ │ └── index.ts │ ├── Window │ │ ├── RNWindow.ts │ │ └── index.ts │ └── config.ts ├── demo.tsx ├── development │ ├── hot-reload.ts │ └── types.ts ├── hooks │ └── index.ts ├── index.ts ├── reconciler │ └── index.ts ├── renderer │ └── index.ts └── utils │ └── helpers.ts ├── tsconfig.json ├── website ├── .gitignore ├── README.md ├── blog │ └── 2019-05-30-welcome.md ├── docs │ ├── api │ │ ├── classes │ │ │ ├── renderer.md │ │ │ ├── rnaction.md │ │ │ ├── rngridcolumn.md │ │ │ ├── rngridrow.md │ │ │ ├── rnmenu.md │ │ │ └── rnmenubar.md │ │ ├── globals.md │ │ ├── index.md │ │ ├── interfaces │ │ │ ├── _react_proxy_.reactproxycomponent.md │ │ │ ├── abstractbuttonprops.md │ │ │ ├── actionprops.md │ │ │ ├── animatedimageprops.md │ │ │ ├── boxviewprops.md │ │ │ ├── buttonprops.md │ │ │ ├── checkboxprops.md │ │ │ ├── comboboxprops.md │ │ │ ├── datawithoffset.md │ │ │ ├── dialprops.md │ │ │ ├── gridviewprops.md │ │ │ ├── imageprops.md │ │ │ ├── lineeditprops.md │ │ │ ├── menubarprops.md │ │ │ ├── menuprops.md │ │ │ ├── plaintexteditprops.md │ │ │ ├── progressbarprops.md │ │ │ ├── radiobuttonprops.md │ │ │ ├── scrollareaprops.md │ │ │ ├── sliderprops.md │ │ │ ├── spinboxprops.md │ │ │ ├── systemtrayiconprops.md │ │ │ ├── tabitemprops.md │ │ │ ├── tabprops.md │ │ │ ├── textprops.md │ │ │ ├── viewprops.md │ │ │ └── windowprops.md │ │ └── modules │ │ │ └── _react_proxy_.md │ ├── doc1.md │ ├── guides │ │ ├── custom-nodegui-native-plugin.md │ │ ├── debugging-in-vscode.md │ │ ├── debugging.md │ │ ├── getting-started.md │ │ ├── handle-events.md │ │ ├── images.md │ │ ├── layout.md │ │ ├── networking.md │ │ ├── packaging.md │ │ ├── scroll-view.md │ │ ├── styling.md │ │ ├── tutorial.md │ │ └── using-native-node-modules.md │ ├── mdx.md │ └── scripts │ │ └── fixdocs.js ├── docusaurus.config.js ├── package.json ├── sidebars.js ├── src │ ├── components │ │ ├── CodeExample.js │ │ ├── CreateNativeApps.js │ │ ├── Features.js │ │ ├── Hero.js │ │ ├── SplitView.js │ │ ├── Talks.js │ │ ├── Try.js │ │ ├── common.js │ │ └── styles.css │ ├── css │ │ └── custom.css │ └── pages │ │ ├── index.js │ │ └── styles.module.css ├── static │ ├── CNAME │ └── img │ │ ├── box-layout-1.png │ │ ├── box-layout-2.png │ │ ├── code-sample.png │ │ ├── demo.png │ │ ├── favicon.ico │ │ ├── flex-layout-1.png │ │ ├── grid-layout-1.png │ │ ├── logo-circle.png │ │ ├── logo.png │ │ ├── logo.svg │ │ ├── logox200.png │ │ ├── undraw_code_review.svg │ │ ├── undraw_docusaurus_mountain.svg │ │ ├── undraw_docusaurus_react.svg │ │ ├── undraw_docusaurus_tree.svg │ │ ├── undraw_react.svg │ │ ├── undraw_website_setup.svg │ │ └── undraw_windows.svg ├── website │ └── sidebars.js └── yarn.lock └── yarn.lock /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. Mac, Linux or Windows] 28 | - NodeGUI version 29 | - React NodeGUI version 30 | - OS Version 31 | 32 | 33 | **Additional context** 34 | Add any other context about the problem here. 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: documentation 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | gh-release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v1 13 | - uses: actions/setup-node@v1 14 | with: 15 | node-version: "14.x" 16 | - name: Add key to allow access to repository 17 | env: 18 | SSH_AUTH_SOCK: /tmp/ssh_agent.sock 19 | run: | 20 | mkdir -p ~/.ssh 21 | ssh-keyscan github.com >> ~/.ssh/known_hosts 22 | echo "${{ secrets.GH_PAGES_DEPLOY }}" > ~/.ssh/id_rsa 23 | chmod 600 ~/.ssh/id_rsa 24 | cat <> ~/.ssh/config 25 | Host github.com 26 | HostName github.com 27 | IdentityFile ~/.ssh/id_rsa 28 | EOT 29 | - name: Release to GitHub Pages 30 | env: 31 | USE_SSH: true 32 | GIT_USER: git 33 | run: | 34 | git config --global user.email "actions@gihub.com" 35 | git config --global user.name "gh-actions" 36 | npm install --ignore-scripts 37 | npm run docs 38 | cd website 39 | if [ -e yarn.lock ]; then 40 | yarn install --frozen-lockfile 41 | elif [ -e package-lock.json ]; then 42 | npm ci 43 | else 44 | npm i 45 | fi 46 | yarn deploy 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .vscode 3 | *.log 4 | dist/ -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | examples -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Atul R 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | # Examples 2 | 3 | Examples have now moved to a repo of their own 4 | 5 | They are all available at: 6 | 7 | https://github.com/nodegui/examples 8 | -------------------------------------------------------------------------------- /extras/assets/nodegui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodegui/react-nodegui/87c844050c86e0eb548c3e6e8c57bd40d5174546/extras/assets/nodegui.png -------------------------------------------------------------------------------- /extras/assets/nodegui_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodegui/react-nodegui/87c844050c86e0eb548c3e6e8c57bd40d5174546/extras/assets/nodegui_white.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@nodegui/react-nodegui", 3 | "version": "0.14.0", 4 | "description": "React Native for building cross platform desktop applications", 5 | "main": "dist/index.js", 6 | "typings": "dist/index.d.ts", 7 | "files": [ 8 | "dist" 9 | ], 10 | "author": "Atul R ", 11 | "private": false, 12 | "license": "MIT", 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/nodegui/react-nodegui.git" 16 | }, 17 | "scripts": { 18 | "build": "tsc", 19 | "dev": "tsc && qode ./dist/demo.js", 20 | "docs": "typedoc && node ./website/docs/scripts/fixdocs.js" 21 | }, 22 | "dependencies": { 23 | "@nodegui/nodegui": "^0.57.1", 24 | "@types/react-reconciler": "^0.18.0", 25 | "phin": "3.5.1", 26 | "react-deep-force-update": "^2.1.3", 27 | "react-proxy": "^2.0.8", 28 | "react-reconciler": "^0.25.1" 29 | }, 30 | "peerDependencies": { 31 | "react": "^16.14.0" 32 | }, 33 | "devDependencies": { 34 | "@types/node": "^16.11.0", 35 | "@types/react": "^16.14.0", 36 | "prettier": "^2.3.2", 37 | "react": "^16.14.0", 38 | "typedoc": "^0.17.8", 39 | "typedoc-plugin-markdown": "^2.4.2", 40 | "typescript": "^4.4.4" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/components/AbstractComponents/RNAbstractButton.ts: -------------------------------------------------------------------------------- 1 | import { QIcon, QSize, QAbstractButtonSignals } from "@nodegui/nodegui"; 2 | import { ViewProps, setViewProps } from "../View/RNView"; 3 | import { QAbstractButton } from "@nodegui/nodegui"; 4 | 5 | /** 6 | * The Button component provides ability to add and manipulate native button widgets. It is based on 7 | * [NodeGui's QPushButton](https://docs.nodegui.org/docs/api/generated/classes/QPushButton). 8 | * ## Example 9 | * ```javascript 10 | * import React from "react"; 11 | * import { Renderer, Button, Window } from "@nodegui/react-nodegui"; 12 | * const App = () => { 13 | * return ( 14 | * 15 | *