From 9e3c7ac478d0c16a2ac8c79546753e28e5ebc32e Mon Sep 17 00:00:00 2001 From: Vince Vuong Date: Tue, 28 Nov 2017 16:55:18 -0800 Subject: [PATCH 01/19] Update README.md --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 388a945..0c04814 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ -# ReactPrimer · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ReactPrimer/ReactPrimer/blob/master/LICENSE.md) [![GitHub (pre-)release](https://img.shields.io/github/release/qubyte/rubidium/all.svg)](https://github.com/ReactPrimer/ReactPrimer/releases/tag/0.0.0.0.2) +# ReactPrimer · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ReactPrimer/ReactPrimer/blob/master/LICENSE.md) [![GitHub release](https://img.shields.io/github/release/qubyte/rubidium.svg)](https://github.com/ReactPrimer/ReactPrimer/releases/tag/1.0.0) +

React Primer is a component prototyping tool that generates fully connected class component code.

@@ -14,17 +15,18 @@ ###### MacOS -1. [Download](https://github.com/ReactPrimer/ReactPrimer/releases/download/0.0.0.0.2/ReactPrimer.dmg) the latest release .dmg file. +1. [Download](https://github.com/ReactPrimer/ReactPrimer/releases/download/1.0.0/ReactPrimer.dmg) the latest release .dmg file. 2. Open the installer. 3. Move React Primer to your local application folder. ###### Windows -1. [Download](https://github.com/ReactPrimer/ReactPrimer/releases/download/0.0.0.0.2/React-Primer_1.0.0_amd64.deb) the latest .exe file. -2. Unpackage the .exe file. +1. [Download](https://github.com/ReactPrimer/ReactPrimer/releases/download/1.0.0/ReactPrimer-win32-x64.zip) the latest .zip file. +2. Unpackage the .zip file. +3. Shortcut .exe file to destktop. 3. Follow installation process. ###### Linux -1. [Download](https://github.com/ReactPrimer/ReactPrimer/releases/download/0.0.0.0.2/React-Primer_1.0.0_amd64.deb) the latest .deb file. +1. [Download](https://github.com/ReactPrimer/ReactPrimer/releases/download/1.0.0/React-Primer_1.0.0_amd64.deb) the latest .deb file. 2. Unpackage the .deb file. 3. Find the executable in usr/lib/React-Primer. From 343726e9ef39c549b1ce6fe57b66932dfc3db81e Mon Sep 17 00:00:00 2001 From: Vince Vuong Date: Thu, 30 Nov 2017 12:01:06 -0800 Subject: [PATCH 02/19] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 0c04814..fbd537c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ + +

ReactPrimer

+ + [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ReactPrimer/ReactPrimer/blob/master/LICENSE.md) [![GitHub release](https://img.shields.io/github/release/qubyte/rubidium.svg)](https://github.com/ReactPrimer/ReactPrimer/releases/tag/1.0.0) From b70b9d6704c1c3dd73180cd7bef65738ee3e42de Mon Sep 17 00:00:00 2001 From: Vince Vuong Date: Thu, 30 Nov 2017 12:03:42 -0800 Subject: [PATCH 03/19] Update README.md --- README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.md b/README.md index fbd537c..16ab997 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,3 @@ - -

ReactPrimer

- - [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ReactPrimer/ReactPrimer/blob/master/LICENSE.md) [![GitHub release](https://img.shields.io/github/release/qubyte/rubidium.svg)](https://github.com/ReactPrimer/ReactPrimer/releases/tag/1.0.0) - - - # ReactPrimer · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ReactPrimer/ReactPrimer/blob/master/LICENSE.md) [![GitHub release](https://img.shields.io/github/release/qubyte/rubidium.svg)](https://github.com/ReactPrimer/ReactPrimer/releases/tag/1.0.0) From 247c158635785cc6abe3b969b8845c8bb1073fad Mon Sep 17 00:00:00 2001 From: Ken Date: Fri, 1 Dec 2017 13:54:52 -0800 Subject: [PATCH 04/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 16ab997..cfd7a09 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ ###### Linux 1. [Download](https://github.com/ReactPrimer/ReactPrimer/releases/download/1.0.0/React-Primer_1.0.0_amd64.deb) the latest .deb file. 2. Unpackage the .deb file. -3. Find the executable in usr/lib/React-Primer. +3. Type in React-Primer from the terminal. ## Usage From 7c48f75317288163619ebd64c28320de7ba3d623 Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Sat, 2 Dec 2017 20:29:57 -0800 Subject: [PATCH 05/19] implemented functionality to update component names --- src/App.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/App.js b/src/App.js index c6cc9b5..6c833b6 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import ReactDOM from 'react-dom'; -import SortableTree, { removeNodeAtPath } from 'react-sortable-tree'; +import SortableTree, { removeNodeAtPath, changeNodeAtPath } from 'react-sortable-tree'; import NewCompForm from './NewCompForm'; import './App.css' const IPC = require('electron').ipcRenderer; @@ -27,7 +27,6 @@ class App extends Component { this.exportFiles = this.exportFiles.bind(this); this.saveFile = this.saveFile.bind(this); this.openFile = this.openFile.bind(this); - } // Helper function creates an array of all component names to be used for form dropdown. @@ -143,7 +142,6 @@ class App extends Component { }) } - render() { // Nodekey used to identify node to be removed. const getNodeKey = ({ treeIndex }) => treeIndex; @@ -179,6 +177,8 @@ class App extends Component { // button for removing component generateNodeProps={({ node, path }) => ({ buttons: [ + // , , ], + title: ( + { + const title = this.formatName(event.target.value); + + this.setState(state => ({ + treeData: changeNodeAtPath({ + treeData: state.treeData, + path, + getNodeKey, + newNode: { ...node, title }, + }), + })); + }} + /> + ), + })} />
- logo + {/* logo */}
From 0a6150778ee7759aa8f194c57ef58051182d4e6a Mon Sep 17 00:00:00 2001 From: Christian Varisco Date: Fri, 8 Dec 2017 13:03:03 +0100 Subject: [PATCH 06/19] Add stage-2 presets to dev env --- .babelrc | 2 +- package-lock.json | 112 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 23 +++++----- webpack.config.js | 2 +- 4 files changed, 126 insertions(+), 13 deletions(-) diff --git a/.babelrc b/.babelrc index 0578679..ecad980 100644 --- a/.babelrc +++ b/.babelrc @@ -1,3 +1,3 @@ { - "presets": ["react", "es2015"] + "presets": ["react", "es2015", "stage-2"] } diff --git a/package-lock.json b/package-lock.json index b55e399..d0c85a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -565,6 +565,17 @@ } } }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", @@ -620,6 +631,18 @@ "babel-types": "6.26.0" } }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", @@ -816,6 +839,24 @@ "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", "dev": true }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", @@ -846,6 +887,17 @@ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", "dev": true }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", @@ -857,6 +909,31 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", @@ -1090,6 +1167,16 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-react-display-name": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", @@ -1278,6 +1365,31 @@ "babel-preset-flow": "6.23.0" } }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } + }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", diff --git a/package.json b/package.json index 07f071d..a29cf99 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "babel-jest": "^21.2.0", "babel-loader": "^7.1.2", "babel-preset-react": "^6.23.0", + "babel-preset-stage-2": "^6.18.0", "css-loader": "^0.26.1", "electron": "~1.7.8", "electron-builder": "^19.45.4", @@ -51,16 +52,16 @@ "webpack": "^2.7.0" }, "dependencies": { - "about-window": "^1.8.0", - "babel-preset-es2015": "^6.24.1", - "electron-packager-interactive": "^0.1.2", - "enzyme": "^3.2.0", - "enzyme-adapter-react-16": "^1.1.0", - "enzyme-to-json": "^3.2.2", - "path": "^0.12.7", - "react": "^16.0.0", - "react-dom": "^16.0.0", - "react-sortable-tree": "^1.5.0", - "react-test-renderer": "^16.1.1" + "about-window": "1.8.0", + "babel-preset-es2015": "6.24.1", + "electron-packager-interactive": "0.1.2", + "enzyme": "3.2.0", + "enzyme-adapter-react-16": "1.1.0", + "enzyme-to-json": "3.2.2", + "path": "0.12.7", + "react": "16.0.0", + "react-dom": "16.0.0", + "react-sortable-tree": "1.5.0", + "react-test-renderer": "16.1.1" } } diff --git a/webpack.config.js b/webpack.config.js index 915f522..ebc4d63 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -16,7 +16,7 @@ module.exports = { exclude: /node_modules/, loader: 'babel-loader', query: { - presets: ['react',"es2015"] + presets: ['react',"es2015", "stage-2"] } }, { From 6224fddc5f503b905f7acd850410839ba371cf3d Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Fri, 15 Dec 2017 16:10:22 -0800 Subject: [PATCH 07/19] added flow to babel presets --- .babelrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.babelrc b/.babelrc index 0578679..4d8fec1 100644 --- a/.babelrc +++ b/.babelrc @@ -1,3 +1,3 @@ { - "presets": ["react", "es2015"] + "presets": ["react", "es2015", "stage-0", "flow"] } From 7dd8015aa76e23cd780a96619d21a48ce13e0617 Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Fri, 15 Dec 2017 16:10:56 -0800 Subject: [PATCH 08/19] added flow-bin and flow running scripts --- package.json | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 07f071d..3f5e2be 100644 --- a/package.json +++ b/package.json @@ -2,16 +2,17 @@ "name": "React-Primer", "productName": "ReactPrimer", "version": "1.0.0", - "description": "Production Project", "main": "main.js", "scripts": { + "flow": "flow", + "flow status": "flow status", "test": "jest", "dev": "webpack", "start": "electron .", "package-win": "electron-packager . --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/png/32x32.png --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"React Primer\"", "create-installer-win": "node installers/windows/createinstaller.js", - "package-linux": "electron-packager . Reactprimer --overwrite --asar=true --platform=linux --arch=x64 --icon=assets/icons/png/256x256.png --prune=true --out=release-builds", - "create-debian-installer": "electron-installer-debian --src release-builds/Reactprimer-linux-x64/ --arch amd64 --config debian.json", + "package-linux": "electron-packager . React-Primer --overwrite --asar=true --platform=linux --arch=x64 --icon=assets/icons/png/256x256.png --prune=true --out=release-builds", + "create-debian-installer": "electron-installer-debian --src release-builds/React-Primer-linux-x64/ --arch amd64 --config debian.json", "package-mac": "electron-packager . --overwrite --platform=darwin --arch=x64 --icon=assets/icons/mac/icon.icns --prune=true --out=release-builds", "installer-mac": "electron-installer-dmg ./release-builds/ReactPrimer-darwin-x64/ReactPrimer.app ReactPrimer" }, @@ -31,9 +32,11 @@ "author": "KVK", "license": "CC0-1.0", "devDependencies": { + "babel-cli": "^6.26.0", "babel-core": "^6.23.1", "babel-jest": "^21.2.0", "babel-loader": "^7.1.2", + "babel-preset-flow": "^6.23.0", "babel-preset-react": "^6.23.0", "css-loader": "^0.26.1", "electron": "~1.7.8", @@ -45,6 +48,7 @@ "electron-winstaller": "^2.6.3", "extract-text-webpack-plugin": "^2.0.0-rc.3", "file-loader": "^0.9.0", + "flow-bin": "^0.61.0", "identity-obj-proxy": "^3.0.0", "jest": "^21.2.1", "sinon": "^4.1.2", From 30177853d2ad4a4470328cc9ca60bd2fba997db4 Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Fri, 15 Dec 2017 16:11:27 -0800 Subject: [PATCH 09/19] updated flowconfig to ignore node_modules --- .flowconfig | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .flowconfig diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 0000000..7bb3e7b --- /dev/null +++ b/.flowconfig @@ -0,0 +1,11 @@ +[ignore] +.*/node_modules/.* +[include] + +[libs] + +[lints] + +[options] + +[strict] From 97052b0e40f75a0d647a0370d8eff72eb8adc085 Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Fri, 15 Dec 2017 16:15:07 -0800 Subject: [PATCH 10/19] commented out hot reloading --- main.js | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/main.js b/main.js index 490e84c..b3aa5a1 100644 --- a/main.js +++ b/main.js @@ -12,7 +12,7 @@ const BrowserWindow = electron.BrowserWindow const IPC = require('electron').ipcMain; const { dialog } = require('electron'); const Menu = electron.Menu; -const openAboutWindow = require('about-window').default; +// const openAboutWindow = require('about-window').default; // required node modules const path = require('path'); @@ -24,7 +24,7 @@ const fileContent = require('./fileContent.js'); const flattenComponent = require('./flattenComponent.js'); // for development - Hot-Reloading -// require('electron-reload')(__dirname); + // require('electron-reload')(__dirname); // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. @@ -35,7 +35,7 @@ function createWindow() { mainWindow = new BrowserWindow({ titleBarStyle: 'hidden', width: 720, - height: 420, + height: 450, minWidth: 645, minHeight: 360, icon: path.join(__dirname, './assets/icons/png/128x128.png') @@ -48,31 +48,31 @@ function createWindow() { })) // About React-Primer window in menu - const menu = Menu.buildFromTemplate([ - { - label: 'React Primer', - submenu: [ - { - label: 'About React Primer', - click: () => openAboutWindow({ - icon_path: path.join(__dirname, './assets/icons/png/256x256.png'), - copyright: 'Copyright © 2017 React Primer. All Rights Reserved.', - homepage: 'http://react-primer.com/', - bug_report_url: 'https://github.com/ReactPrimer/ReactPrimer/issues', - description: "React Prototyping Tool" - }) - }, - { - label: 'Quit', - accelerator: 'CmdOrCtrl+Q', - click: () => { - app.quit(); - } - }, - ] - } - ]); - Menu.setApplicationMenu(menu); + // const menu = Menu.buildFromTemplate([ + // { + // label: 'React Primer', + // submenu: [ + // { + // label: 'About React Primer', + // click: () => openAboutWindow({ + // icon_path: path.join(__dirname, './assets/icons/png/256x256.png'), + // copyright: 'Copyright © 2017 React Primer. All Rights Reserved.', + // homepage: 'http://react-primer.com/', + // bug_report_url: 'https://github.com/ReactPrimer/ReactPrimer/issues', + // description: "React Prototyping Tool" + // }) + // }, + // { + // label: 'Quit', + // accelerator: 'CmdOrCtrl+Q', + // click: () => { + // app.quit(); + // } + // }, + // ] + // } + // ]); + // Menu.setApplicationMenu(menu); // Open the DevTools. // mainWindow.webContents.openDevTools() From 82b919e2ac7863791a6c481f1507946d96b4beb8 Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Fri, 15 Dec 2017 16:16:03 -0800 Subject: [PATCH 11/19] changed css for input editing --- src/App.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/App.css b/src/App.css index 8e3dfde..cea62ed 100644 --- a/src/App.css +++ b/src/App.css @@ -6,7 +6,7 @@ body { font-family: 'Nunito Sans', sans-serif; margin: 0; height: 100%; - -webkit-app-region: drag; + /*-webkit-app-region: drag;*/ } /* class for tree node created*/ @@ -91,7 +91,7 @@ body { } .sortable-tree { - -webkit-app-region: no-drag; + /*-webkit-app-region: no-drag;*/ flex: 10; } @@ -126,7 +126,7 @@ h1 { font-weight: 300; font-size: 1em; color: #D9D9D9; - -webkit-app-region: no-drag; + /*-webkit-app-region: no-drag;*/ } .form { @@ -134,7 +134,7 @@ h1 { grid-row-end: 32; font-size: .8em; color: #D9D9D9; - -webkit-app-region: no-drag; + /*-webkit-app-region: no-drag;*/ background-color: #4C5259; } @@ -159,7 +159,7 @@ form { .save-load-container { grid-row-start: 99; grid-row-end: 100; - -webkit-app-region: no-drag; + /*-webkit-app-region: no-drag;*/ display: flex; justify-content: center; } @@ -187,7 +187,7 @@ form { .button-container { grid-row-start: 100; grid-row-end: 101; - -webkit-app-region: no-drag; + /*-webkit-app-region: no-drag;*/ } .export { From 7b95204b35c6e22326a6d796f51f8443821e4239 Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Fri, 15 Dec 2017 16:32:53 -0800 Subject: [PATCH 12/19] added back about menu --- main.js | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/main.js b/main.js index b3aa5a1..4ebba87 100644 --- a/main.js +++ b/main.js @@ -12,7 +12,7 @@ const BrowserWindow = electron.BrowserWindow const IPC = require('electron').ipcMain; const { dialog } = require('electron'); const Menu = electron.Menu; -// const openAboutWindow = require('about-window').default; +const openAboutWindow = require('about-window').default; // required node modules const path = require('path'); @@ -48,31 +48,31 @@ function createWindow() { })) // About React-Primer window in menu - // const menu = Menu.buildFromTemplate([ - // { - // label: 'React Primer', - // submenu: [ - // { - // label: 'About React Primer', - // click: () => openAboutWindow({ - // icon_path: path.join(__dirname, './assets/icons/png/256x256.png'), - // copyright: 'Copyright © 2017 React Primer. All Rights Reserved.', - // homepage: 'http://react-primer.com/', - // bug_report_url: 'https://github.com/ReactPrimer/ReactPrimer/issues', - // description: "React Prototyping Tool" - // }) - // }, - // { - // label: 'Quit', - // accelerator: 'CmdOrCtrl+Q', - // click: () => { - // app.quit(); - // } - // }, - // ] - // } - // ]); - // Menu.setApplicationMenu(menu); + const menu = Menu.buildFromTemplate([ + { + label: 'React Primer', + submenu: [ + { + label: 'About React Primer', + click: () => openAboutWindow({ + icon_path: path.join(__dirname, './assets/icons/png/256x256.png'), + copyright: 'Copyright © 2017 React Primer. All Rights Reserved.', + homepage: 'http://react-primer.com/', + bug_report_url: 'https://github.com/ReactPrimer/ReactPrimer/issues', + description: "React Prototyping Tool" + }) + }, + { + label: 'Quit', + accelerator: 'CmdOrCtrl+Q', + click: () => { + app.quit(); + } + }, + ] + } + ]); + Menu.setApplicationMenu(menu); // Open the DevTools. // mainWindow.webContents.openDevTools() From 2643235fd154713f2887e43afa8192786320482a Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Fri, 15 Dec 2017 16:33:22 -0800 Subject: [PATCH 13/19] added back webkits --- src/App.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/App.css b/src/App.css index bfe125e..789feb1 100644 --- a/src/App.css +++ b/src/App.css @@ -6,7 +6,7 @@ body { font-family: 'Nunito Sans', sans-serif; margin: 0; height: 100%; - /*-webkit-app-region: drag;*/ + -webkit-app-region: drag; } /* class for tree node created*/ @@ -126,7 +126,7 @@ h1 { font-weight: 300; font-size: 1em; color: #D9D9D9; - /*-webkit-app-region: no-drag;*/ + -webkit-app-region: no-drag; } .form { @@ -159,7 +159,7 @@ form { .save-load-container { grid-row-start: 99; grid-row-end: 100; - /*-webkit-app-region: no-drag;*/ + -webkit-app-region: no-drag; display: flex; justify-content: center; } From 55c11f1d50c9a47668ae5ad58f004dc95e8d77d1 Mon Sep 17 00:00:00 2001 From: Ken Date: Sat, 16 Dec 2017 12:22:42 -0800 Subject: [PATCH 14/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cfd7a09..7564a71 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# ReactPrimer · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ReactPrimer/ReactPrimer/blob/master/LICENSE.md) [![GitHub release](https://img.shields.io/github/release/qubyte/rubidium.svg)](https://github.com/ReactPrimer/ReactPrimer/releases/tag/1.0.0) +# ReactPrimer · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ReactPrimer/ReactPrimer/blob/master/LICENSE.md) [![GitHub release](https://img.shields.io/github/release/qubyte/rubidium.svg)](https://github.com/ReactPrimer/ReactPrimer/releases/tag/1.0.0)

From 603dda6feb007c982850ff2ff2ad0b901498dabf Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Thu, 21 Dec 2017 10:07:04 -0800 Subject: [PATCH 15/19] filecontent type checked with flow --- fileContent.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fileContent.js b/fileContent.js index 3d853b1..3eecb0c 100644 --- a/fileContent.js +++ b/fileContent.js @@ -1,11 +1,13 @@ +// @flow + //this function will return the component template to be populated in the project folder -function fileContent(component) { - let content = ""; - const cache = {}; +function fileContent(component: Object): string { + let content: string = ""; + const cache: Object = {}; content += "import React, { Component } from 'react';\n"; - for (let i = 0; i < component.children.length; i++) { + for (let i: number = 0; i < component.children.length; i++) { if (!cache[component.children[i].title]) { cache[component.children[i].title] = true; content += `import ${component.children[i].title} from './${component.children[i].title}.jsx'\n`; @@ -17,7 +19,7 @@ function fileContent(component) { content += ` return (\n`; content += `
\n`; - for (let i = 0; i < component.children.length; i++) { + for (let i: number = 0; i < component.children.length; i++) { content += ` <${component.children[i].title} />\n`; } content += `
\n`; From 7baedc545d4b5f09174da55ee37be8e11ce460cb Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Thu, 21 Dec 2017 10:07:31 -0800 Subject: [PATCH 16/19] flattencomp type checked with flow --- flattenComponent.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/flattenComponent.js b/flattenComponent.js index 5746fa0..5daa5f3 100644 --- a/flattenComponent.js +++ b/flattenComponent.js @@ -1,8 +1,10 @@ +// @flow + // functionality to flatten component tree data structure. -function flattenComponent(components, flattened = []) { - components.forEach((element, index) => { - let obj = {}; +function flattenComponent(components: Array, flattened: Array = []): Array { + components.forEach((element: Object, index: number) => { + let obj: Object = {}; obj['title'] = element.title; obj['children'] = element.children; flattened.push(obj); From 1c757f4a031acea5eabafe9453ade6147c736369 Mon Sep 17 00:00:00 2001 From: kenhughlee Date: Thu, 25 Jan 2018 13:01:17 -0800 Subject: [PATCH 17/19] completed front end implementation of toggling stateless or stateful function --- src/App.js | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/App.js b/src/App.js index 2bf0f3f..975e08b 100644 --- a/src/App.js +++ b/src/App.js @@ -12,6 +12,7 @@ class App extends Component { treeData: [{ title: 'App', expanded: true, + isStateful: true, children: [] }], newName: '', @@ -27,8 +28,22 @@ class App extends Component { this.exportFiles = this.exportFiles.bind(this); this.saveFile = this.saveFile.bind(this); this.openFile = this.openFile.bind(this); + this.default = this.default.bind(this); } + default(node,path,getNodeKey) { + if (!('isStateful' in node)) { + this.setState(state => ({ + treeData: changeNodeAtPath({ + treeData: state.treeData, + path, + getNodeKey, + newNode: { ...node, isStateful:true } + }) + })) + } + } + // Helper function creates an array of all component names to be used for form dropdown. extractCompNames(components, flattened = [], cache = {}) { components.forEach((element, index) => { @@ -145,6 +160,7 @@ class App extends Component { render() { // Nodekey used to identify node to be removed. const getNodeKey = ({ treeIndex }) => treeIndex; + let isStateful = true; return (
@@ -176,9 +192,24 @@ class App extends Component { onChange={treeData => this.setState({ treeData })} // button for removing component generateNodeProps={({ node, path }) => ({ + + //set to default stateful=true + default: this.default(node,path,getNodeKey), + buttons: [ - // , + + , +