From 28307f817f5ba53e96917ee3b898a6292a30c825 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 24 Oct 2019 14:11:06 +0300 Subject: [PATCH] xpub editor --- editors/xpub/README.md | 68 +++++++++++++++ editors/xpub/config-overrides.js | 43 ++++++++++ editors/xpub/package.json | 31 +++++++ editors/xpub/public/favicon.ico | Bin 0 -> 22382 bytes editors/xpub/public/index.html | 43 ++++++++++ editors/xpub/public/logo192.png | Bin 0 -> 8581 bytes editors/xpub/public/logo512.png | Bin 0 -> 22920 bytes editors/xpub/public/manifest.json | 25 ++++++ editors/xpub/public/robots.txt | 2 + editors/xpub/src/Xpub.js | 28 +++++++ editors/xpub/src/index.js | 11 +++ editors/xpub/src/serviceWorker.js | 135 ++++++++++++++++++++++++++++++ package.json | 1 + 13 files changed, 387 insertions(+) create mode 100644 editors/xpub/README.md create mode 100644 editors/xpub/config-overrides.js create mode 100644 editors/xpub/package.json create mode 100644 editors/xpub/public/favicon.ico create mode 100644 editors/xpub/public/index.html create mode 100644 editors/xpub/public/logo192.png create mode 100644 editors/xpub/public/logo512.png create mode 100644 editors/xpub/public/manifest.json create mode 100644 editors/xpub/public/robots.txt create mode 100644 editors/xpub/src/Xpub.js create mode 100644 editors/xpub/src/index.js create mode 100644 editors/xpub/src/serviceWorker.js diff --git a/editors/xpub/README.md b/editors/xpub/README.md new file mode 100644 index 000000000..89b278ae3 --- /dev/null +++ b/editors/xpub/README.md @@ -0,0 +1,68 @@ +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.<br /> +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.<br /> +You will also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.<br /> +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn build` + +Builds the app for production to the `build` folder.<br /> +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.<br /> +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `yarn eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting + +### Analyzing the Bundle Size + +This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size + +### Making a Progressive Web App + +This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app + +### Advanced Configuration + +This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration + +### Deployment + +This section has moved here: https://facebook.github.io/create-react-app/docs/deployment + +### `yarn build` fails to minify + +This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/editors/xpub/config-overrides.js b/editors/xpub/config-overrides.js new file mode 100644 index 000000000..226a6d615 --- /dev/null +++ b/editors/xpub/config-overrides.js @@ -0,0 +1,43 @@ +module.exports = function override(config, env) { + config.module = { + rules: [ + { + oneOf: [ + { + test: /\.js$/, + loader: "babel-loader", + exclude: /node_modules/, + options: { + presets: [ + [require("@babel/preset-env"), { modules: false }], + require("@babel/preset-react") + ], + plugins: [require("@babel/plugin-proposal-class-properties")] + } + }, + { + test: /\.module\.css$/, + use: [ + "style-loader", + { + loader: "css-loader", + options: { + modules: true + } + } + ] + }, + { + test: /\.css$/, + use: ["style-loader", "css-loader"] + }, + { + test: /\.svg$/, + use: "svg-inline-loader" + } + ] + } + ] + }; + return config; +}; diff --git a/editors/xpub/package.json b/editors/xpub/package.json new file mode 100644 index 000000000..8866d3917 --- /dev/null +++ b/editors/xpub/package.json @@ -0,0 +1,31 @@ +{ + "name": "xpub", + "version": "0.0.1", + "private": true, + "dependencies": { + "react": "^16.8.6", + "react-dom": "^16.8.6", + "styled-components": "^4.2.0", + "wax-prosemirror-core": "0.0.1", + "wax-prosemirror-schema": "0.0.1", + "wax-prosemirror-themes": "0.0.1", + "wax-prosemirror-layouts": "0.0.1", + "wax-prosemirror-components": "0.0.1" + }, + "scripts": { + "start": "react-app-rewired start", + "build": "react-app-rewired build", + "test": "react-app-rewired test --env=jsdom", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": [">0.2%", "not dead", "not ie <= 11", "not op_mini all"], + "devDependencies": { + "react-app-rewired": "^2.1.1", + "react-scripts": "3.2.0", + "babel-loader": "8.0.6", + "babel-eslint": "10.0.3" + } +} diff --git a/editors/xpub/public/favicon.ico b/editors/xpub/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c2c86b859eaa20639adf92ff979c2be8d580433e GIT binary patch literal 22382 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 QPNaAH_W=L@JAozeZ|l@fegFUf literal 0 HcmV?d00001 diff --git a/editors/xpub/public/index.html b/editors/xpub/public/index.html new file mode 100644 index 000000000..c240d2ca8 --- /dev/null +++ b/editors/xpub/public/index.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta name="theme-color" content="#000000" /> + <meta + name="description" + content="Web site created using create-react-app" + /> + <link rel="apple-touch-icon" href="logo192.png" /> + <!-- + manifest.json provides metadata used when your web app is installed on a + user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ + --> + <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> + <!-- + Notice the use of %PUBLIC_URL% in the tags above. + It will be replaced with the URL of the `public` folder during the build. + Only files inside the `public` folder can be referenced from the HTML. + + Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will + work correctly both with client-side routing and a non-root public URL. + Learn how to configure a non-root public URL by running `npm run build`. + --> + <title>React App</title> + </head> + <body> + <noscript>You need to enable JavaScript to run this app.</noscript> + <div id="root"></div> + <!-- + This HTML file is a template. + If you open it directly in the browser, you will see an empty page. + + You can add webfonts, meta tags, or analytics to this file. + The build step will place the bundled scripts into the <body> tag. + + To begin the development, run `npm start` or `yarn start`. + To create a production bundle, use `npm run build` or `yarn build`. + --> + </body> +</html> diff --git a/editors/xpub/public/logo192.png b/editors/xpub/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fa313abf53936aefc517dbd583b724a57199d415 GIT binary patch literal 8581 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�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 literal 0 HcmV?d00001 diff --git a/editors/xpub/public/logo512.png b/editors/xpub/public/logo512.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5d4b5e235ab9d880c202a6a7f7d3e35e115d8c GIT binary patch literal 22920 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 b!B~?t+WWKS5u5)CcMJGaRz{_UZlwPKNp@r} literal 0 HcmV?d00001 diff --git a/editors/xpub/public/manifest.json b/editors/xpub/public/manifest.json new file mode 100644 index 000000000..080d6c77a --- /dev/null +++ b/editors/xpub/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/editors/xpub/public/robots.txt b/editors/xpub/public/robots.txt new file mode 100644 index 000000000..01b0f9a10 --- /dev/null +++ b/editors/xpub/public/robots.txt @@ -0,0 +1,2 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * diff --git a/editors/xpub/src/Xpub.js b/editors/xpub/src/Xpub.js new file mode 100644 index 000000000..89cba947c --- /dev/null +++ b/editors/xpub/src/Xpub.js @@ -0,0 +1,28 @@ +import React, { Component } from "react"; +import { Wax, CreateSchema } from "wax-prosemirror-core"; +import { DefaultSchema } from "wax-prosemirror-schema"; +import "wax-prosemirror-layouts/layouts/default-layout.css"; +import "wax-prosemirror-themes/themes/default-theme.css"; + +const plugins = []; +const keys = {}; + +const options = { + schema: new CreateSchema(DefaultSchema) +}; + +class Xpub extends Component { + render() { + return ( + <Wax + options={options} + autoFocus + placeholder="Type Something..." + theme="default" + layout="default" + /> + ); + } +} + +export default Xpub; diff --git a/editors/xpub/src/index.js b/editors/xpub/src/index.js new file mode 100644 index 000000000..0ddc7b463 --- /dev/null +++ b/editors/xpub/src/index.js @@ -0,0 +1,11 @@ +import React from "react"; +import ReactDOM from "react-dom"; +import Xpub from "./Xpub"; +import * as serviceWorker from "./serviceWorker"; + +ReactDOM.render(<Xpub />, document.getElementById("root")); + +// If you want your app to work offline and load faster, you can change +// unregister() to register() below. Note this comes with some pitfalls. +// Learn more about service workers: https://bit.ly/CRA-PWA +serviceWorker.unregister(); diff --git a/editors/xpub/src/serviceWorker.js b/editors/xpub/src/serviceWorker.js new file mode 100644 index 000000000..f8c7e50c2 --- /dev/null +++ b/editors/xpub/src/serviceWorker.js @@ -0,0 +1,135 @@ +// This optional code is used to register a service worker. +// register() is not called by default. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on subsequent visits to a page, after all the +// existing tabs open on the page have been closed, since previously cached +// resources are updated in the background. + +// To learn more about the benefits of this model and instructions on how to +// opt-in, read https://bit.ly/CRA-PWA + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.1/8 is considered localhost for IPv4. + window.location.hostname.match( + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ + ) +); + +export function register(config) { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit https://bit.ly/CRA-PWA' + ); + }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); + } + }); + } +} + +function registerValidSW(swUrl, config) { + navigator.serviceWorker + .register(swUrl) + .then(registration => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker == null) { + return; + } + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the updated precached content has been fetched, + // but the previous service worker will still serve the older + // content until all client tabs are closed. + console.log( + 'New content is available and will be used when all ' + + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' + ); + + // Execute callback + if (config && config.onUpdate) { + config.onUpdate(registration); + } + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + + // Execute callback + if (config && config.onSuccess) { + config.onSuccess(registration); + } + } + } + }; + }; + }) + .catch(error => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl, config) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl) + .then(response => { + // Ensure service worker exists, and that we really are getting a JS file. + const contentType = response.headers.get('content-type'); + if ( + response.status === 404 || + (contentType != null && contentType.indexOf('javascript') === -1) + ) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then(registration => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl, config); + } + }) + .catch(() => { + console.log( + 'No internet connection found. App is running in offline mode.' + ); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready.then(registration => { + registration.unregister(); + }); + } +} diff --git a/package.json b/package.json index d6f1ba337..8b36e8208 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "clean:root": "rm -rf node_modules", "reset": "yarn clean && yarn", "build": "lerna run build --concurrency=1 --stream", +"xpub": "cd editors/xpub && yarn start", "editoria": "cd editors/editoria && yarn start", "default": "cd editors/default && yarn start" }, -- GitLab