1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-29 17:50:09 +02:00

eslint fixes

This commit is contained in:
Kushagra Gour
2018-06-17 18:14:19 +05:30
parent 178a5f5d1b
commit d185518911
13 changed files with 1207 additions and 1072 deletions

View File

@@ -3,7 +3,7 @@
"browser": true "browser": true
}, },
"parser": "babel-eslint", "parser": "babel-eslint",
"extends": "eslint:recommended", "extends": ["eslint:recommended", "eslint-config-synacor"],
"rules": { "rules": {
"accessor-pairs": "error", "accessor-pairs": "error",
@@ -26,7 +26,13 @@
"eol-last": "off", "eol-last": "off",
"eqeqeq": "error", "eqeqeq": "error",
"func-names": "off", "func-names": "off",
"func-style": ["error", "declaration", { "allowArrowFunctions": true }], "func-style": [
"error",
"declaration",
{
"allowArrowFunctions": true
}
],
"generator-star-spacing": "error", "generator-star-spacing": "error",
"global-require": "off", "global-require": "off",
"guard-for-in": "error", "guard-for-in": "error",
@@ -165,7 +171,7 @@
"before": false "before": false
} }
], ],
"sort-imports": "error", "sort-imports": "off",
"sort-vars": "off", "sort-vars": "off",
"strict": ["error", "never"], "strict": ["error", "never"],
"template-curly-spacing": "error", "template-curly-spacing": "error",
@@ -174,7 +180,11 @@
"vars-on-top": "off", "vars-on-top": "off",
"wrap-regex": "error", "wrap-regex": "error",
"yield-star-spacing": "error", "yield-star-spacing": "error",
"yoda": ["error", "never"] "yoda": ["error", "never"],
"brace-style": "off",
"lines-around-comment": "off",
"react/sort-comp": "off",
"react/jsx-no-bind": "off"
}, },
"globals": { "globals": {
"ArrayBuffer": true, "ArrayBuffer": true,

View File

@@ -7,7 +7,7 @@
"build": "preact build --template src/index.html --no-prerender", "build": "preact build --template src/index.html --no-prerender",
"serve": "preact build && preact serve", "serve": "preact build && preact serve",
"dev": "preact watch --template src/index.html --https --no-prerender", "dev": "preact watch --template src/index.html --https --no-prerender",
"lint": "eslint src", "lint": "eslint src/components/*.jsx",
"test": "jest ./tests", "test": "jest ./tests",
"precommit": "lint-staged" "precommit": "lint-staged"
}, },

View File

@@ -1,5 +1,4 @@
import { h, Component } from 'preact'; import { h, Component } from 'preact';
import { log } from '../utils';
export class Alerts extends Component { export class Alerts extends Component {
shouldComponentUpdate(nextProps, nextState) { shouldComponentUpdate(nextProps, nextState) {

View File

@@ -2,7 +2,7 @@ import { h, Component } from 'preact';
import UserCodeMirror from './UserCodeMirror.jsx'; import UserCodeMirror from './UserCodeMirror.jsx';
import { computeHtml, computeCss, computeJs } from '../computes'; import { computeHtml, computeCss, computeJs } from '../computes';
import { modes, HtmlModes, CssModes, JsModes } from '../codeModes'; import { modes, HtmlModes, CssModes, JsModes } from '../codeModes';
import { log, writeFile, loadJS, getCompleteHtml, BASE_PATH } from '../utils'; import { log, writeFile, loadJS, getCompleteHtml } from '../utils';
import { SplitPane } from './SplitPane.jsx'; import { SplitPane } from './SplitPane.jsx';
import { trackEvent } from '../analytics'; import { trackEvent } from '../analytics';
import CodeMirror from '../CodeMirror'; import CodeMirror from '../CodeMirror';
@@ -40,8 +40,8 @@ export default class ContentWrap extends Component {
return ( return (
this.state.isConsoleOpen !== nextState.isConsoleOpen || this.state.isConsoleOpen !== nextState.isConsoleOpen ||
this.state.isCssSettingsModalOpen !== nextState.isCssSettingsModalOpen || this.state.isCssSettingsModalOpen !== nextState.isCssSettingsModalOpen ||
this.state.codeSplitSizes != nextState.codeSplitSizes || this.state.codeSplitSizes !== nextState.codeSplitSizes ||
this.state.mainSplitSizes != nextState.mainSplitSizes || this.state.mainSplitSizes !== nextState.mainSplitSizes ||
this.props.currentLayoutMode !== nextProps.currentLayoutMode || this.props.currentLayoutMode !== nextProps.currentLayoutMode ||
this.props.currentItem !== nextProps.currentItem this.props.currentItem !== nextProps.currentItem
); );
@@ -420,9 +420,8 @@ export default class ContentWrap extends Component {
getCodeSplitSizes() { getCodeSplitSizes() {
if (this.props.currentItem && this.props.currentItem.sizes) { if (this.props.currentItem && this.props.currentItem.sizes) {
return this.props.currentItem.sizes; return this.props.currentItem.sizes;
} else {
return [33.33, 33.33, 33.33];
} }
return [33.33, 33.33, 33.33];
} }
mainSplitDragEndHandler() { mainSplitDragEndHandler() {

View File

@@ -22,7 +22,11 @@ export default class CssSettingsModal extends Component {
<h1>Atomic CSS Settings</h1> <h1>Atomic CSS Settings</h1>
<h3> <h3>
Configure Atomizer settings.{' '} Configure Atomizer settings.{' '}
<a href="https://github.com/acss-io/atomizer#api" target="_blank"> <a
href="https://github.com/acss-io/atomizer#api"
target="_blank"
rel="noopener noreferrer"
>
Read more Read more
</a>{' '} </a>{' '}
about available settings. about available settings.

View File

@@ -148,7 +148,11 @@ export default class Footer extends Component {
</svg> </svg>
</A> </A>
</div> </div>
<a href="https://webmakerapp.com/" target="_blank"> <a
href="https://webmakerapp.com/"
target="_blank"
rel="noopener noreferrer"
>
<div class="logo" /> <div class="logo" />
</a> </a>
&copy; &copy;
@@ -189,6 +193,7 @@ export default class Footer extends Component {
aria-label="Tweet about 'Web Maker'" aria-label="Tweet about 'Web Maker'"
href="http://twitter.com/share?url=https://webmakerapp.com/&text=Web Maker - A blazing fast %26 offline web playground! via @webmakerApp&related=webmakerApp&hashtags=web,frontend,playground,offline" href="http://twitter.com/share?url=https://webmakerapp.com/&text=Web Maker - A blazing fast %26 offline web playground! via @webmakerApp&related=webmakerApp&hashtags=web,frontend,playground,offline"
target="_blank" target="_blank"
rel="noopener noreferrer"
> >
<svg <svg
style={{ style={{
@@ -206,6 +211,7 @@ export default class Footer extends Component {
class="footer__link ml-1 hint--rounded hint--top-right hide-on-mobile" class="footer__link ml-1 hint--rounded hint--top-right hide-on-mobile"
aria-label="Support the developer by pledging some amount" aria-label="Support the developer by pledging some amount"
target="_blank" target="_blank"
rel="noopener noreferrer"
> >
Support the developer Support the developer
</A> </A>

View File

@@ -1,158 +1,202 @@
import { h, Component } from 'preact'; import { h } from 'preact';
import Modal from './Modal.jsx'; import Modal from './Modal.jsx';
export default class Header extends Component { export function HelpModal(props) {
render() { return (
return ( <Modal show={props.show} closeHandler={props.closeHandler}>
<Modal show={this.props.show} closeHandler={this.props.closeHandler}> <h1>
<h1> <div class="web-maker-with-tag">Web Maker</div>
<div class="web-maker-with-tag">Web Maker</div> <small style="font-size:14px;"> v3.2.0</small>
<small style="font-size:14px;"> v3.2.0</small> </h1>
</h1>
<div> <div>
<p> <p>
Made with Made with
<span style="margin-right: 8px;">💖</span> & <span style="margin-right: 8px;">💖</span> &
<span style="margin-right: 8px;">🙌</span> by <span style="margin-right: 8px;">🙌</span> by
<a href="https://twitter.com/chinchang457" target="_blank"> <a
Kushagra Gour href="https://twitter.com/chinchang457"
</a> target="_blank"
</p> rel="noopener noreferrer"
<p> >
<a href="/docs" target="_blank"> Kushagra Gour
Read the documentation </a>
</a>. </p>
</p> <p>
<p> <a href="/docs" target="_blank" rel="noopener noreferrer">
Tweet out your feature requests, comments & suggestions to Read the documentation
<a target="_blank" href="https://twitter.com/webmakerApp"> </a>.
@webmakerApp </p>
</a>. <p>
</p> Tweet out your feature requests, comments & suggestions to
<p> <a
Like this extension? Please target="_blank"
<a rel="noopener noreferrer"
href="https://chrome.google.com/webstore/detail/web-maker/lkfkkhfhhdkiemehlpkgjeojomhpccnh/reviews" href="https://twitter.com/webmakerApp"
target="_blank" >
> @webmakerApp
rate it here </a>.
</a>. </p>
</p> <p>
<p> Like this extension? Please
<button <a
aria-label="Support the developer" href="https://chrome.google.com/webstore/detail/web-maker/lkfkkhfhhdkiemehlpkgjeojomhpccnh/reviews"
d-click="openSupportDeveloperModal" target="_blank"
data-event-action="supportDeveloperHelpBtnClick" rel="noopener noreferrer"
class="btn btn-icon" >
> rate it here
<svg> </a>.
<use xlinkHref="#gift-icon" /> </p>
</svg>Support the developer <p>
</button> <button
<a aria-label="Support the developer"
aria-label="Rate Web Maker" d-click="openSupportDeveloperModal"
href="https://chrome.google.com/webstore/detail/web-maker/lkfkkhfhhdkiemehlpkgjeojomhpccnh/reviews" data-event-action="supportDeveloperHelpBtnClick"
target="_blank" class="btn btn-icon"
class="btn btn-icon" >
> <svg>
<svg> <use xlinkHref="#gift-icon" />
<use xlinkHref="#heart-icon" /> </svg>Support the developer
</svg>Share Web Maker </button>
</a> <a
<a aria-label="Rate Web Maker"
aria-label="Chat" href="https://chrome.google.com/webstore/detail/web-maker/lkfkkhfhhdkiemehlpkgjeojomhpccnh/reviews"
href="https://web-maker.slack.com" target="_blank"
target="_blank" rel="noopener noreferrer"
class="btn btn-icon" class="btn btn-icon"
> >
<svg> <svg>
<use xlinkHref="#chat-icon" /> <use xlinkHref="#heart-icon" />
</svg>Chat </svg>Share Web Maker
</a> </a>
<a <a
aria-label="Report a Bug" aria-label="Chat"
href="https://github.com/chinchang/web-maker/issues" href="https://web-maker.slack.com"
target="_blank" target="_blank"
class="btn btn-icon" rel="noopener noreferrer"
> class="btn btn-icon"
<svg> >
<use xlinkHref="#bug-icon" /> <svg>
</svg>Report a bug <use xlinkHref="#chat-icon" />
</a> </svg>Chat
</p> </a>
<a
aria-label="Report a Bug"
href="https://github.com/chinchang/web-maker/issues"
target="_blank"
rel="noopener noreferrer"
class="btn btn-icon"
>
<svg>
<use xlinkHref="#bug-icon" />
</svg>Report a bug
</a>
</p>
<p> <p>
<h3>Awesome libraries used</h3> <h3>Awesome libraries used</h3>
<ul> <ul>
<li> <li>
<a target="_blank" href="https://kushagragour.in/lab/hint/"> <a
Hint.css target="_blank"
</a>{' '} rel="noopener noreferrer"
& href="https://kushagragour.in/lab/hint/"
<a >
target="_blank" Hint.css
href="https://github.com/chinchang/screenlog.js" </a>{' '}
> &
Screenlog.js <a
</a>{' '} target="_blank"
- By me :) rel="noopener noreferrer"
</li> href="https://github.com/chinchang/screenlog.js"
<li> >
<a Screenlog.js
target="_blank" </a>{' '}
href="https://nathancahill.github.io/Split.js/" - By me :)
> </li>
Split.js <li>
</a>{' '} <a
- Nathan Cahill target="_blank"
</li> rel="noopener noreferrer"
<li> href="https://nathancahill.github.io/Split.js/"
<a target="_blank" href="https://codemirror.net/"> >
Codemirror Split.js
</a>{' '} </a>{' '}
- Marijn Haverbeke - Nathan Cahill
</li> </li>
<li> <li>
<a target="_blank" href="https://emmet.io/"> <a
Emmet target="_blank"
</a>{' '} rel="noopener noreferrer"
- Sergey Chikuyonok href="https://codemirror.net/"
</li> >
<li> Codemirror
<a target="_blank" href="http://esprima.org/"> </a>{' '}
Esprima - Marijn Haverbeke
</a>{' '} </li>
- Ariya Hidayat <li>
</li> <a
<li> target="_blank"
<a target="_blank" href="https://github.com/enjalot/Inlet"> rel="noopener noreferrer"
Inlet href="https://emmet.io/"
</a>{' '} >
- Ian Johnson Emmet
</li> </a>{' '}
<li> - Sergey Chikuyonok
<a target="_blank" href="https://webmakerapp.com/"> </li>
Web Maker! <li>
</a>{' '} <a
- whhat! target="_blank"
</li> rel="noopener noreferrer"
</ul> href="http://esprima.org/"
</p> >
Esprima
</a>{' '}
- Ariya Hidayat
</li>
<li>
<a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/enjalot/Inlet"
>
Inlet
</a>{' '}
- Ian Johnson
</li>
<li>
<a
target="_blank"
rel="noopener noreferrer"
href="https://webmakerapp.com/"
>
Web Maker!
</a>{' '}
- whhat!
</li>
</ul>
</p>
<p> <p>
<h3>License</h3> <h3>License</h3>
"Web Maker" is "Web Maker" is
<a target="_blank" href="https://github.com/chinchang/web-maker"> <a
open-source target="_blank"
</a>{' '} rel="noopener noreferrer"
under the href="https://github.com/chinchang/web-maker"
<a href="https://opensource.org/licenses/MIT" target="_blank"> >
MIT License open-source
</a>. </a>{' '}
</p> under the
</div> <a
</Modal> href="https://opensource.org/licenses/MIT"
); target="_blank"
} rel="noopener noreferrer"
>
MIT License
</a>.
</p>
</div>
</Modal>
);
} }

View File

@@ -1,92 +1,94 @@
import { h, Component } from 'preact'; import { h } from 'preact';
import Modal from './Modal'; import Modal from './Modal';
export default class KeyboardShortcutsModal extends Component { export function KeyboardShortcutsModal({ show, closeHandler }) {
render() { return (
return ( <Modal show={show} closeHandler={closeHandler}>
<Modal show={this.props.show} closeHandler={this.props.closeHandler}> <h1>Keyboard Shortcuts</h1>
<h1>Keyboard Shortcuts</h1>
<div class="flex"> <div class="flex">
<div> <div>
<h2>Global</h2> <h2>Global</h2>
<p> <p>
<span class="kbd-shortcut__keys">Ctrl/ + Shift + ?</span> <span class="kbd-shortcut__keys">Ctrl/ + Shift + ?</span>
<span class="kbd-shortcut__details">See keyboard shortcuts</span> <span class="kbd-shortcut__details">See keyboard shortcuts</span>
</p> </p>
<p> <p>
<span class="kbd-shortcut__keys">Ctrl/ + Shift + 5</span> <span class="kbd-shortcut__keys">Ctrl/ + Shift + 5</span>
<span class="kbd-shortcut__details">Refresh preview</span> <span class="kbd-shortcut__details">Refresh preview</span>
</p> </p>
<p> <p>
<span class="kbd-shortcut__keys">Ctrl/ + S</span> <span class="kbd-shortcut__keys">Ctrl/ + S</span>
<span class="kbd-shortcut__details">Save current creations</span> <span class="kbd-shortcut__details">Save current creations</span>
</p> </p>
<p> <p>
<span class="kbd-shortcut__keys">Ctrl/ + O</span> <span class="kbd-shortcut__keys">Ctrl/ + O</span>
<span class="kbd-shortcut__details"> <span class="kbd-shortcut__details">
Open list of saved creations Open list of saved creations
</span> </span>
</p> </p>
<p> <p>
<span class="kbd-shortcut__keys">Ctrl + L</span> <span class="kbd-shortcut__keys">Ctrl + L</span>
<span class="kbd-shortcut__details"> <span class="kbd-shortcut__details">
Clear console (works when console input is focused) Clear console (works when console input is focused)
</span> </span>
</p> </p>
<p> <p>
<span class="kbd-shortcut__keys">Esc</span> <span class="kbd-shortcut__keys">Esc</span>
<span class="kbd-shortcut__details"> <span class="kbd-shortcut__details">
Close saved creations panel & modals Close saved creations panel & modals
</span> </span>
</p> </p>
</div>
<div class="ml-2">
<h2>Editor</h2>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + F</span>
<span class="kbd-shortcut__details">Find</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + G</span>
<span class="kbd-shortcut__details">Select next match</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + Shift + G</span>
<span class="kbd-shortcut__details">Select previous match</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + Opt/Alt + F</span>
<span class="kbd-shortcut__details">Find & replace</span>
</p>
<p>
<span class="kbd-shortcut__keys">Shift + Tab</span>
<span class="kbd-shortcut__details">Realign code</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + ]</span>
<span class="kbd-shortcut__details">Indent code right</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + [</span>
<span class="kbd-shortcut__details">Indent code left</span>
</p>
<p>
<span class="kbd-shortcut__keys">Tab</span>
<span class="kbd-shortcut__details">
Emmet code completion{' '}
<a href="https://emmet.io/" target="_blank">
Read more
</a>
</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + /</span>
<span class="kbd-shortcut__details">Single line comment</span>
</p>
</div>
</div> </div>
</Modal> <div class="ml-2">
); <h2>Editor</h2>
} <p>
<span class="kbd-shortcut__keys">Ctrl/ + F</span>
<span class="kbd-shortcut__details">Find</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + G</span>
<span class="kbd-shortcut__details">Select next match</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + Shift + G</span>
<span class="kbd-shortcut__details">Select previous match</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + Opt/Alt + F</span>
<span class="kbd-shortcut__details">Find & replace</span>
</p>
<p>
<span class="kbd-shortcut__keys">Shift + Tab</span>
<span class="kbd-shortcut__details">Realign code</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + ]</span>
<span class="kbd-shortcut__details">Indent code right</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + [</span>
<span class="kbd-shortcut__details">Indent code left</span>
</p>
<p>
<span class="kbd-shortcut__keys">Tab</span>
<span class="kbd-shortcut__details">
Emmet code completion{' '}
<a
href="https://emmet.io/"
target="_blank"
rel="noopener noreferrer"
>
Read more
</a>
</span>
</p>
<p>
<span class="kbd-shortcut__keys">Ctrl/ + /</span>
<span class="kbd-shortcut__details">Single line comment</span>
</p>
</div>
</div>
</Modal>
);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,38 +1,30 @@
import { h, Component } from 'preact'; import { h } from 'preact';
const DEFAULT_PROFILE_IMG = const DEFAULT_PROFILE_IMG =
"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='#ccc' d='M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z' /%3E%3C/svg%3E"; "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='#ccc' d='M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z' /%3E%3C/svg%3E";
export default class Profile extends Component { export function Profile({ user, logoutBtnHandler }) {
render() { return (
return ( <div class="tac">
<div class="tac"> <img
<img height="80"
height="80" class="profile-modal__avatar-img"
class="profile-modal__avatar-img" src={user ? user.photoURL || DEFAULT_PROFILE_IMG : ''}
src={ id="profileAvatarImg"
this.props.user alt="Profile image"
? this.props.user.photoURL || DEFAULT_PROFILE_IMG />
: '' <h3 id="profileUserName" class="mb-2">
} {user && user.displayName ? user.displayName : 'Anonymous Creator'}
id="profileAvatarImg" </h3>
alt="Profile image" <p>
/> <button
<h3 id="profileUserName" class="mb-2"> class="btn"
{this.props.user && this.props.user.displayName aria-label="Logout from your account"
? this.props.user.displayName onClick={logoutBtnHandler}
: 'Anonymous Creator'} >
</h3> Logout
<p> </button>
<button </p>
class="btn" </div>
aria-label="Logout from your account" );
onClick={this.props.logoutBtnHandler}
>
Logout
</button>
</p>
</div>
);
}
} }

View File

@@ -1,5 +1,5 @@
import { h, Component } from 'preact'; import { h, Component } from 'preact';
import { getHumanDate } from '../utils'; import { log, getHumanDate } from '../utils';
import { trackEvent } from '../analytics'; import { trackEvent } from '../analytics';
import { itemService } from '../itemService'; import { itemService } from '../itemService';
import { alertsService } from '../notifications'; import { alertsService } from '../notifications';

View File

@@ -13,12 +13,20 @@ export default class SupportDeveloperModal extends Component {
<h1>Support the Developer</h1> <h1>Support the Developer</h1>
<p> <p>
Hi,{' '} Hi,{' '}
<a href="https://kushagragour.in" target="_blank"> <a
href="https://kushagragour.in"
target="_blank"
rel="noopener noreferrer"
>
Kushagra Kushagra
</a>{' '} </a>{' '}
here! Web Maker is a free and open-source project. To keep myself here! Web Maker is a free and open-source project. To keep myself
motivated for working on such open-source and free{' '} motivated for working on such open-source and free{' '}
<a href="https://kushagragour.in/lab/" target="_blank"> <a
href="https://kushagragour.in/lab/"
target="_blank"
rel="noopener noreferrer"
>
side projects side projects
</a>, I am accepting donations. Your pledge, no matter how small, </a>, I am accepting donations. Your pledge, no matter how small,
will act as an appreciation towards my work and keep me going will act as an appreciation towards my work and keep me going
@@ -35,6 +43,7 @@ export default class SupportDeveloperModal extends Component {
class="onboard-selection" class="onboard-selection"
href="https://patreon.com/kushagra" href="https://patreon.com/kushagra"
target="_blank" target="_blank"
rel="noopener noreferrer"
aria-label="Make a monthly pledge on Patreon" aria-label="Make a monthly pledge on Patreon"
> >
<img src="patreon.png" height="60" alt="Become a patron image" /> <img src="patreon.png" height="60" alt="Become a patron image" />
@@ -47,6 +56,7 @@ export default class SupportDeveloperModal extends Component {
<a <a
href="https://www.paypal.me/kushagragour" href="https://www.paypal.me/kushagragour"
target="_blank" target="_blank"
rel="noopener noreferrer"
aria-label="Make a one time donation on Paypal" aria-label="Make a one time donation on Paypal"
> >
Or, make a one time donation Or, make a one time donation

View File

@@ -1,5 +1,4 @@
import { h, Component } from 'preact'; import { h, Component } from 'preact';
import { Router } from 'preact-router';
import MainHeader from './MainHeader.jsx'; import MainHeader from './MainHeader.jsx';
import ContentWrap from './ContentWrap.jsx'; import ContentWrap from './ContentWrap.jsx';
@@ -7,7 +6,6 @@ import Footer from './Footer.jsx';
import SavedItemPane from './SavedItemPane.jsx'; import SavedItemPane from './SavedItemPane.jsx';
import AddLibrary from './AddLibrary.jsx'; import AddLibrary from './AddLibrary.jsx';
import Modal from './Modal.jsx'; import Modal from './Modal.jsx';
import HelpModal from './HelpModal.jsx';
import Login from './Login.jsx'; import Login from './Login.jsx';
import { import {
log, log,
@@ -19,7 +17,7 @@ import {
} from '../utils'; } from '../utils';
import { itemService } from '../itemService'; import { itemService } from '../itemService';
import '../db'; import '../db';
import Notifications from './Notifications'; import { Notifications } from './Notifications';
import Settings from './Settings.jsx'; import Settings from './Settings.jsx';
import { modes, HtmlModes, CssModes, JsModes } from '../codeModes'; import { modes, HtmlModes, CssModes, JsModes } from '../codeModes';
import { trackEvent } from '../analytics'; import { trackEvent } from '../analytics';
@@ -27,14 +25,15 @@ import { deferred } from '../deferred';
import { alertsService } from '../notifications'; import { alertsService } from '../notifications';
import firebase from 'firebase/app'; import firebase from 'firebase/app';
import 'firebase/auth'; import 'firebase/auth';
import Profile from './Profile'; import { Profile } from './Profile';
import { auth } from '../auth'; import { auth } from '../auth';
import SupportDeveloperModal from './SupportDeveloperModal'; import SupportDeveloperModal from './SupportDeveloperModal';
import KeyboardShortcutsModal from './KeyboardShortcutsModal'; import { KeyboardShortcutsModal } from './KeyboardShortcutsModal';
import { takeScreenshot } from '../takeScreenshot'; import { takeScreenshot } from '../takeScreenshot';
import AskToImportModal from './AskToImportModal'; import AskToImportModal from './AskToImportModal';
import { Alerts } from './Alerts'; import { Alerts } from './Alerts';
import Portal from 'preact-portal'; import Portal from 'preact-portal';
import { HelpModal } from './HelpModal';
if (module.hot) { if (module.hot) {
require('preact/debug'); require('preact/debug');