Implement code splitting for codemirror

This commit is contained in:
Shweelan Samson authored and Zaid Abdulla committed 2018-12-26 00:22:07 -08:00
1 parent f79b9dc0f7
commit de759b8d93
7 files changed
+48 -6

No files matched your search

+2
View File
@@ -2,7 +2,9 @@
"env": {
"browser": true
},
"parser": "babel-eslint",
"parserOptions": {
"allowImportExportEverywhere": true,
"sourceType": "module",
"ecmaVersion": 8
}
+2 -3
View File
@@ -1,8 +1,7 @@
"use strict";
import m from "mithril";
import { fromTextArea as codeMirrorFromTextArea } from "codemirror";
import "codemirror/mode/javascript/javascript";
import { codeMirror } from "../dynamic-loader";
const singular = {
presets: "preset",
@@ -41,7 +40,7 @@ function createField(current, attr, focus) {
name: attr.id,
value: current.object[attr.id],
oncreate: _vnode => {
let editor = codeMirrorFromTextArea(_vnode.dom, {
let editor = codeMirror.fromTextArea(_vnode.dom, {
mode: "javascript",
lineNumbers: true
});
+22
View File
@@ -0,0 +1,22 @@
"use strict";
let codeMirror;
function loadCodeMirror() {
if (codeMirror) return Promise.resolve();
return new Promise((resolve, reject) => {
const promises = [
import(/* webpackChunkName: "codemirror" */ "codemirror"),
import(/* webpackChunkName: "codemirror" */ "codemirror/mode/javascript/javascript")
];
Promise.all(promises)
.then(modules => {
codeMirror = modules[0];
resolve();
})
.catch(reject);
});
}
export { loadCodeMirror, codeMirror };
+9 -1
View File
@@ -12,6 +12,7 @@ import putForm from "./components/put-form";
import * as overlay from "./overlay";
import * as smartQuery from "./smart-query";
import * as expressionParser from "../common/expression-parser";
import { loadCodeMirror } from "./dynamic-loader";
const PAGE_SIZE = config.ui.pageSize || 10;
@@ -106,7 +107,14 @@ function init(args) {
const sort = args.sort;
const filter = args.filter;
return Promise.resolve({ filter, sort });
return new Promise((resolve, reject) => {
loadCodeMirror()
.then(() => {
resolve({ filter, sort });
})
.catch(reject);
});
}
function renderTable(
+9 -1
View File
@@ -12,6 +12,7 @@ import putForm from "./components/put-form";
import * as overlay from "./overlay";
import * as smartQuery from "./smart-query";
import * as expressionParser from "../common/expression-parser";
import { loadCodeMirror } from "./dynamic-loader";
const PAGE_SIZE = config.ui.pageSize || 10;
@@ -106,7 +107,14 @@ function init(args) {
const sort = args.sort;
const filter = args.filter;
return Promise.resolve({ filter, sort });
return new Promise((resolve, reject) => {
loadCodeMirror()
.then(() => {
resolve({ filter, sort });
})
.catch(reject);
});
}
function renderTable(
+1
View File
@@ -22,6 +22,7 @@
"parsimmon": "^1.12.0"
},
"devDependencies": {
"babel-eslint": "^8.2.6",
"clean-webpack-plugin": "^0.1.19",
"copy-webpack-plugin": "^4.5.2",
"cssnano": "^4.0.5",
+3 -1
View File
@@ -1,6 +1,7 @@
const nodeExternals = require("webpack-node-externals");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const CleanWebpackPlugin = require("clean-webpack-plugin");
const path = require("path");
const mode = "production";
@@ -51,7 +52,8 @@ module.exports = [
mode: mode,
entry: "./client/app.js",
output: {
filename: "public/app.js"
path: path.resolve(__dirname, "dist/public"),
filename: "app.js"
}
}
];