mirror of
https://github.com/chinchang/web-maker.git
synced 2025-05-11 04:45:42 +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) {
|
'Shift-Tab': function(editor) {
|
||||||
if (options.prettier) {
|
if (options.prettier) {
|
||||||
prettify(editor.getValue(), options.prettierParser).then(
|
prettify({
|
||||||
formattedCode => editor.setValue(formattedCode)
|
content: editor.getValue(),
|
||||||
);
|
type: options.prettierParser
|
||||||
|
}).then(formattedCode => editor.setValue(formattedCode));
|
||||||
} else {
|
} else {
|
||||||
CodeMirror.commands.indentAuto(editor);
|
CodeMirror.commands.indentAuto(editor);
|
||||||
}
|
}
|
||||||
|
@ -1326,17 +1326,18 @@ export default class App extends Component {
|
|||||||
return classes.join(' ');
|
return classes.join(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
prettify(selectedFile) {
|
prettifyHandler(selectedFile) {
|
||||||
const currentItem = {
|
const currentItem = {
|
||||||
...this.state.currentItem,
|
...this.state.currentItem,
|
||||||
files: [...this.state.currentItem.files]
|
files: [...this.state.currentItem.files]
|
||||||
};
|
};
|
||||||
const formattedContent = prettify(selectedFile);
|
prettify({ file: selectedFile }).then(formattedContent => {
|
||||||
if (formattedContent !== selectedFile.content) {
|
if (formattedContent !== selectedFile.content) {
|
||||||
selectedFile.content = formattedContent;
|
selectedFile.content = formattedContent;
|
||||||
this.incrementUnsavedChanges();
|
this.incrementUnsavedChanges();
|
||||||
this.setState({ currentItem });
|
this.setState({ currentItem });
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@ -1375,7 +1376,7 @@ export default class App extends Component {
|
|||||||
onRenameFile={this.renameFileHandler.bind(this)}
|
onRenameFile={this.renameFileHandler.bind(this)}
|
||||||
onFileDrop={this.fileDropHandler.bind(this)}
|
onFileDrop={this.fileDropHandler.bind(this)}
|
||||||
onFolderSelect={this.folderSelectHandler.bind(this)}
|
onFolderSelect={this.folderSelectHandler.bind(this)}
|
||||||
onPrettifyBtnClick={this.prettify.bind(this)}
|
onPrettifyBtnClick={this.prettifyHandler.bind(this)}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<ContentWrap
|
<ContentWrap
|
||||||
|
@ -1,13 +1,28 @@
|
|||||||
importScripts('./prettier/standalone.js');
|
importScripts('./prettier/standalone.js');
|
||||||
|
|
||||||
function prettify({ content, type }) {
|
function prettify({ content, type }) {
|
||||||
let plugins, parser;
|
let parser;
|
||||||
if (type === 'js') {
|
switch (type) {
|
||||||
parser = 'babylon';
|
case 'js':
|
||||||
importScripts('./prettier/parser-babylon.js');
|
parser = 'babylon';
|
||||||
} else if (type === 'css') {
|
importScripts('./prettier/parser-babylon.js')
|
||||||
parser = 'css';
|
break;
|
||||||
importScripts('./prettier/parser-postcss.js');
|
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) {
|
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];
|
return url.match(/\/([^/]*)$/)[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
export function prettify(content, type = 'js') {
|
export function prettify({ file, content, type }) {
|
||||||
const d = deferred();
|
const d = deferred();
|
||||||
|
if (file) {
|
||||||
|
type = getExtensionFromFileName(file.name);
|
||||||
|
content = file.content;
|
||||||
|
}
|
||||||
const worker = new Worker(
|
const worker = new Worker(
|
||||||
chrome.extension
|
chrome.extension
|
||||||
? chrome.extension.getURL('lib/prettier-worker.js')
|
? 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.postMessage({ content, type });
|
||||||
worker.addEventListener('message', e => {
|
worker.addEventListener('message', e => {
|
||||||
@ -481,41 +485,3 @@ if (window.IS_EXTENSION) {
|
|||||||
} else {
|
} else {
|
||||||
document.body.classList.add('is-app');
|
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"
|
version "6.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
|
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:
|
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-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:
|
|
||||||
version "6.18.0"
|
version "6.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
|
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-plugin-syntax-export-extensions "^6.8.0"
|
||||||
babel-runtime "^6.22.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:
|
babel-plugin-transform-inline-consecutive-adds@^0.2.0:
|
||||||
version "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"
|
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:
|
dependencies:
|
||||||
babel-runtime "^6.22.0"
|
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:
|
babel-plugin-transform-react-jsx@^6.24.1:
|
||||||
version "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"
|
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"
|
core-js "^2.5.0"
|
||||||
regenerator-runtime "^0.10.5"
|
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"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
|
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1522,12 +1491,6 @@ babel-preset-env@^1.3.3, babel-preset-env@^1.7.0:
|
|||||||
invariant "^2.2.2"
|
invariant "^2.2.2"
|
||||||
semver "^5.3.0"
|
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:
|
babel-preset-jest@^21.2.0:
|
||||||
version "21.2.0"
|
version "21.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz#ff9d2bce08abd98e8a36d9a8a5189b9173b85638"
|
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"
|
babel-plugin-transform-undefined-to-void "^6.8.3"
|
||||||
lodash.isplainobject "^4.0.6"
|
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:
|
babel-register@^6.24.1, babel-register@^6.26.0:
|
||||||
version "6.26.0"
|
version "6.26.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
|
resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user