mirror of
https://github.com/chinchang/web-maker.git
synced 2025-05-07 19:15:24 +02:00
more prettier to worker, migrating change from master branch
This commit is contained in:
parent
834536e315
commit
03e8e3e463
@ -103,9 +103,10 @@ export default class UserCodeMirror extends Component {
|
||||
},
|
||||
'Shift-Tab': function(editor) {
|
||||
if (options.prettier) {
|
||||
prettify(editor.getValue(), options.prettierParser).then(
|
||||
formattedCode => editor.setValue(formattedCode)
|
||||
);
|
||||
prettify({
|
||||
content: editor.getValue(),
|
||||
type: options.prettierParser
|
||||
}).then(formattedCode => editor.setValue(formattedCode));
|
||||
} else {
|
||||
CodeMirror.commands.indentAuto(editor);
|
||||
}
|
||||
|
@ -1326,17 +1326,18 @@ export default class App extends Component {
|
||||
return classes.join(' ');
|
||||
}
|
||||
|
||||
prettify(selectedFile) {
|
||||
prettifyHandler(selectedFile) {
|
||||
const currentItem = {
|
||||
...this.state.currentItem,
|
||||
files: [...this.state.currentItem.files]
|
||||
};
|
||||
const formattedContent = prettify(selectedFile);
|
||||
if (formattedContent !== selectedFile.content) {
|
||||
selectedFile.content = formattedContent;
|
||||
this.incrementUnsavedChanges();
|
||||
this.setState({ currentItem });
|
||||
}
|
||||
prettify({ file: selectedFile }).then(formattedContent => {
|
||||
if (formattedContent !== selectedFile.content) {
|
||||
selectedFile.content = formattedContent;
|
||||
this.incrementUnsavedChanges();
|
||||
this.setState({ currentItem });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -1375,7 +1376,7 @@ export default class App extends Component {
|
||||
onRenameFile={this.renameFileHandler.bind(this)}
|
||||
onFileDrop={this.fileDropHandler.bind(this)}
|
||||
onFolderSelect={this.folderSelectHandler.bind(this)}
|
||||
onPrettifyBtnClick={this.prettify.bind(this)}
|
||||
onPrettifyBtnClick={this.prettifyHandler.bind(this)}
|
||||
/>
|
||||
) : (
|
||||
<ContentWrap
|
||||
|
@ -1,13 +1,28 @@
|
||||
importScripts('./prettier/standalone.js');
|
||||
|
||||
function prettify({ content, type }) {
|
||||
let plugins, parser;
|
||||
if (type === 'js') {
|
||||
parser = 'babylon';
|
||||
importScripts('./prettier/parser-babylon.js');
|
||||
} else if (type === 'css') {
|
||||
parser = 'css';
|
||||
importScripts('./prettier/parser-postcss.js');
|
||||
let parser;
|
||||
switch (type) {
|
||||
case 'js':
|
||||
parser = 'babylon';
|
||||
importScripts('./prettier/parser-babylon.js')
|
||||
break;
|
||||
case 'json':
|
||||
parser = 'json';
|
||||
importScripts('./prettier/parser-babylon.js')
|
||||
break;
|
||||
case 'css':
|
||||
case 'scss':
|
||||
case 'sass':
|
||||
case 'less':
|
||||
parser = 'css';
|
||||
importScripts('./prettier/parser-postcss.js')
|
||||
break;
|
||||
case 'md':
|
||||
case 'markdown':
|
||||
parser = 'markdown';
|
||||
importScripts('./prettier/parser-markdown.js')
|
||||
break;
|
||||
}
|
||||
|
||||
if (!parser) {
|
||||
|
1
src/lib/prettier/parser-markdown.js
Normal file
1
src/lib/prettier/parser-markdown.js
Normal file
File diff suppressed because one or more lines are too long
46
src/utils.js
46
src/utils.js
@ -461,12 +461,16 @@ export function getFilenameFromUrl(url) {
|
||||
return url.match(/\/([^/]*)$/)[1];
|
||||
}
|
||||
|
||||
export function prettify(content, type = 'js') {
|
||||
export function prettify({ file, content, type }) {
|
||||
const d = deferred();
|
||||
if (file) {
|
||||
type = getExtensionFromFileName(file.name);
|
||||
content = file.content;
|
||||
}
|
||||
const worker = new Worker(
|
||||
chrome.extension
|
||||
? chrome.extension.getURL('lib/prettier-worker.js')
|
||||
: `${BASE_PATH}/lib/prettier-worker.js`
|
||||
: `${BASE_PATH !== '/' ? BASE_PATH : ''}/lib/prettier-worker.js`
|
||||
);
|
||||
worker.postMessage({ content, type });
|
||||
worker.addEventListener('message', e => {
|
||||
@ -481,41 +485,3 @@ if (window.IS_EXTENSION) {
|
||||
} else {
|
||||
document.body.classList.add('is-app');
|
||||
}
|
||||
|
||||
export function prettify(file) {
|
||||
const prettier = require('prettier/standalone');
|
||||
const fileExtension = getExtensionFromFileName(file.name);
|
||||
|
||||
let plugins, parser;
|
||||
switch (fileExtension) {
|
||||
case 'js':
|
||||
parser = 'babylon';
|
||||
plugins = [require('prettier/parser-babylon')];
|
||||
break;
|
||||
case 'json':
|
||||
parser = 'json';
|
||||
plugins = [require('prettier/parser-babylon')];
|
||||
break;
|
||||
case 'css':
|
||||
case 'scss':
|
||||
case 'sass':
|
||||
case 'less':
|
||||
parser = 'css';
|
||||
plugins = [require('prettier/parser-postcss')];
|
||||
break;
|
||||
case 'md':
|
||||
case 'markdown':
|
||||
parser = 'markdown';
|
||||
plugins = [require('prettier/parser-markdown')];
|
||||
break;
|
||||
}
|
||||
|
||||
if (!parser) {
|
||||
return file.content;
|
||||
}
|
||||
|
||||
return prettier.format(file.content, {
|
||||
parser,
|
||||
plugins
|
||||
});
|
||||
}
|
||||
|
52
yarn.lock
52
yarn.lock
@ -1136,11 +1136,7 @@ babel-plugin-syntax-export-extensions@^6.8.0:
|
||||
version "6.13.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
|
||||
|
||||
babel-plugin-syntax-flow@^6.18.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
|
||||
|
||||
babel-plugin-syntax-jsx@^6.0.0, babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
|
||||
babel-plugin-syntax-jsx@^6.0.0, babel-plugin-syntax-jsx@^6.8.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
|
||||
|
||||
@ -1360,13 +1356,6 @@ babel-plugin-transform-export-extensions@^6.22.0:
|
||||
babel-plugin-syntax-export-extensions "^6.8.0"
|
||||
babel-runtime "^6.22.0"
|
||||
|
||||
babel-plugin-transform-flow-strip-types@^6.22.0:
|
||||
version "6.22.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
|
||||
dependencies:
|
||||
babel-plugin-syntax-flow "^6.18.0"
|
||||
babel-runtime "^6.22.0"
|
||||
|
||||
babel-plugin-transform-inline-consecutive-adds@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz#15dae78921057f4004f8eafd79e15ddc5f12f426"
|
||||
@ -1408,26 +1397,6 @@ babel-plugin-transform-react-constant-elements@^6.23.0:
|
||||
dependencies:
|
||||
babel-runtime "^6.22.0"
|
||||
|
||||
babel-plugin-transform-react-display-name@^6.23.0:
|
||||
version "6.25.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
|
||||
dependencies:
|
||||
babel-runtime "^6.22.0"
|
||||
|
||||
babel-plugin-transform-react-jsx-self@^6.22.0:
|
||||
version "6.22.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
|
||||
dependencies:
|
||||
babel-plugin-syntax-jsx "^6.8.0"
|
||||
babel-runtime "^6.22.0"
|
||||
|
||||
babel-plugin-transform-react-jsx-source@^6.22.0:
|
||||
version "6.22.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
|
||||
dependencies:
|
||||
babel-plugin-syntax-jsx "^6.8.0"
|
||||
babel-runtime "^6.22.0"
|
||||
|
||||
babel-plugin-transform-react-jsx@^6.24.1:
|
||||
version "6.24.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
|
||||
@ -1487,7 +1456,7 @@ babel-polyfill@^6.2.0:
|
||||
core-js "^2.5.0"
|
||||
regenerator-runtime "^0.10.5"
|
||||
|
||||
babel-preset-env@^1.3.3, babel-preset-env@^1.7.0:
|
||||
babel-preset-env@^1.3.3:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
|
||||
dependencies:
|
||||
@ -1522,12 +1491,6 @@ babel-preset-env@^1.3.3, babel-preset-env@^1.7.0:
|
||||
invariant "^2.2.2"
|
||||
semver "^5.3.0"
|
||||
|
||||
babel-preset-flow@^6.23.0:
|
||||
version "6.23.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
|
||||
dependencies:
|
||||
babel-plugin-transform-flow-strip-types "^6.22.0"
|
||||
|
||||
babel-preset-jest@^21.2.0:
|
||||
version "21.2.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz#ff9d2bce08abd98e8a36d9a8a5189b9173b85638"
|
||||
@ -1563,17 +1526,6 @@ babel-preset-minify@^0.2.0:
|
||||
babel-plugin-transform-undefined-to-void "^6.8.3"
|
||||
lodash.isplainobject "^4.0.6"
|
||||
|
||||
babel-preset-react@^6.24.1:
|
||||
version "6.24.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
|
||||
dependencies:
|
||||
babel-plugin-syntax-jsx "^6.3.13"
|
||||
babel-plugin-transform-react-display-name "^6.23.0"
|
||||
babel-plugin-transform-react-jsx "^6.24.1"
|
||||
babel-plugin-transform-react-jsx-self "^6.22.0"
|
||||
babel-plugin-transform-react-jsx-source "^6.22.0"
|
||||
babel-preset-flow "^6.23.0"
|
||||
|
||||
babel-register@^6.24.1, babel-register@^6.26.0:
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
|
||||
|
Loading…
x
Reference in New Issue
Block a user