aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/launch.json188
-rw-r--r--src/client/views/collections/CollectionDockingView.tsx2
-rw-r--r--src/client/views/collections/TabDocView.tsx27
-rw-r--r--src/fields/Doc.ts3
-rw-r--r--webpack.config.js162
5 files changed, 183 insertions, 199 deletions
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 9692c79d9..ce9f50f67 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -4,110 +4,86 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
- {
- "type": "chrome",
- "request": "launch",
- "name": "Launch Chrome against localhost",
- "sourceMaps": true,
- "breakOnLoad": true,
- "url": "http://localhost:1050/login",
- "webRoot": "${workspaceFolder}",
- "runtimeArgs": [
- "--experimental-modules"
- ]
- },
- {
- "type": "chrome",
- "request": "launch",
- "name": "Launch Chromium against localhost",
- "sourceMaps": true,
- "breakOnLoad": true,
- "url": "http://localhost:1050/login",
- "webRoot": "${workspaceFolder}",
- "runtimeExecutable": "/usr/bin/chromium",
- "runtimeArgs": [
- "--experimental-modules"
- ]
- },
- {
- "type": "firefox",
- "request": "launch",
- "name": "Launch Firefox against localhost",
- "reAttach": true,
- "url": "http://localhost:1050/login",
- "webRoot": "${workspaceFolder}",
- "pathMappings": [
- {
- "url": "webpack://dash/src",
- "path": "${workspaceFolder}/src"
- }
- ]
- },
- {
- "type": "chrome",
- "request": "launch",
- "name": "Launch Chrome against Dash server",
- "sourceMaps": true,
- "breakOnLoad": true,
- "url": "https://browndash.com/login",
- "webRoot": "${workspaceFolder}"
- },
- {
- "type": "node",
- "request": "attach",
- "name": "Typescript Server",
- "protocol": "inspector",
- "port": 9229,
- "localRoot": "${workspaceFolder}",
- "remoteRoot": "${workspaceFolder}"
- },
- {
- "type": "node",
- "request": "launch",
- "name": "Current TS File",
- "runtimeExecutable": "npx",
- "runtimeArgs": [
- "ts-node-dev",
- "--nolazy",
- "--inspect",
- "--",
- "${relativeFile}"
- ],
- "port": 9229
- },
- {
- "type": "node",
- "request": "launch",
- "name": "Mocha Tests",
- "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
- "args": [
- "-r",
- "ts-node/register",
- "--timeout",
- "999999",
- "--colors",
- "${workspaceFolder}/test/**/*.ts"
- ],
- "console": "integratedTerminal",
- "internalConsoleOptions": "openOnSessionStart",
- "protocol": "inspector"
- },
- {
- "type": "node",
- "request": "launch",
- "name": "Mocha Current File",
- "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
- "args": [
- "-r",
- "ts-node/register",
- "--timeout",
- "999999",
- "--colors",
- "${file}"
- ],
- "console": "integratedTerminal",
- "internalConsoleOptions": "openOnSessionStart",
- "protocol": "inspector"
- }
+ {
+ "type": "chrome",
+ "request": "launch",
+ "name": "Launch Chrome against localhost",
+ "sourceMaps": true,
+ "breakOnLoad": true,
+ "url": "http://localhost:1050/login",
+ "webRoot": "${workspaceFolder}",
+ "runtimeArgs": ["--experimental-modules"]
+ },
+ {
+ "type": "chrome",
+ "request": "launch",
+ "name": "Launch Chromium against localhost",
+ "sourceMaps": true,
+ "breakOnLoad": true,
+ "url": "http://localhost:1050/login",
+ "webRoot": "${workspaceFolder}",
+ "runtimeExecutable": "/usr/bin/chromium",
+ "runtimeArgs": ["--experimental-modules"]
+ },
+ {
+ "type": "firefox",
+ "request": "launch",
+ "name": "Launch Firefox against localhost",
+ "reAttach": true,
+ "url": "http://localhost:1050/login",
+ "webRoot": "${workspaceFolder}",
+ "pathMappings": [
+ {
+ "url": "webpack://dash/src",
+ "path": "${workspaceFolder}/src"
+ }
+ ]
+ },
+ {
+ "type": "chrome",
+ "request": "launch",
+ "name": "Launch Chrome against Dash server",
+ "sourceMaps": true,
+ "breakOnLoad": true,
+ "url": "https://browndash.com/login",
+ "webRoot": "${workspaceFolder}"
+ },
+ {
+ "type": "node",
+ "request": "attach",
+ "name": "Typescript Server",
+ "protocol": "inspector",
+ "port": 9229,
+ "localRoot": "${workspaceFolder}",
+ "remoteRoot": "${workspaceFolder}"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Current TS File",
+ "runtimeExecutable": "npx",
+ "runtimeArgs": ["ts-node-dev", "--nolazy", "--inspect", "--", "${relativeFile}"],
+ "port": 9229
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Mocha Tests",
+ "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+ "args": ["-r", "ts-node/register", "--timeout", "999999", "--colors", "${workspaceFolder}/test/**/*.ts"],
+ "console": "integratedTerminal",
+ "internalConsoleOptions": "openOnSessionStart",
+ "protocol": "inspector"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "Mocha Current File",
+ "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+ "args": ["-r", "ts-node/register", "--timeout", "999999", "--colors", "${file}"],
+ "console": "integratedTerminal",
+ "internalConsoleOptions": "openOnSessionStart",
+ "protocol": "inspector"
+ }
]
-} \ No newline at end of file
+}
diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx
index 39e2cc17d..6d70cc0d2 100644
--- a/src/client/views/collections/CollectionDockingView.tsx
+++ b/src/client/views/collections/CollectionDockingView.tsx
@@ -175,7 +175,7 @@ export class CollectionDockingView extends CollectionSubView() {
@undoBatch
@action
public static AddSplit(document: Doc, pullSide: string, stack?: any, panelName?: string) {
- if (document._viewType === CollectionViewType.Docking) return DashboardView.openDashboard(document);
+ if (document?._viewType === CollectionViewType.Docking) return DashboardView.openDashboard(document);
if (!CollectionDockingView.Instance) return false;
const tab = Array.from(CollectionDockingView.Instance.tabMap).find(tab => tab.DashDoc === document);
if (tab) {
diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx
index 2d08b1c09..ec291e72c 100644
--- a/src/client/views/collections/TabDocView.tsx
+++ b/src/client/views/collections/TabDocView.tsx
@@ -212,11 +212,11 @@ export class TabDocView extends React.Component<TabDocViewProps> {
@action
public static PinDoc(docs: Doc | Doc[], pinProps?: PinProps) {
const docList = docs instanceof Doc ? [docs] : docs;
- const batch = UndoManager.StartBatch('pinning doc');
// all docs will be added to the ActivePresentation as stored on CurrentUserUtils
const curPres = Doc.ActivePresentation;
- curPres &&
+ if (curPres) {
+ const batch = UndoManager.StartBatch('pinning doc');
docList.forEach(doc => {
// Edge Case 1: Cannot pin document to itself
if (doc === curPres) {
@@ -301,18 +301,19 @@ export class TabDocView extends React.Component<TabDocViewProps> {
PresBox.Instance?._selectedArray.clear();
pinDoc && PresBox.Instance?._selectedArray.set(pinDoc, undefined); //Update selected array
});
- if (
- CollectionDockingView.Instance &&
- !Array.from(CollectionDockingView.Instance.tabMap)
- .map(d => d.DashDoc)
- .includes(curPres)
- ) {
- const docs = Cast(Doc.MyOverlayDocs.data, listSpec(Doc), []);
- if (docs.includes(curPres)) docs.splice(docs.indexOf(curPres), 1);
- CollectionDockingView.AddSplit(curPres, 'right');
- setTimeout(() => DocumentManager.Instance.jumpToDocument(docList.lastElement(), false, undefined, []), 100); // keeps the pinned doc in view since the sidebar shifts things
+ if (
+ CollectionDockingView.Instance &&
+ !Array.from(CollectionDockingView.Instance.tabMap)
+ .map(d => d.DashDoc)
+ .includes(curPres)
+ ) {
+ const docs = Cast(Doc.MyOverlayDocs.data, listSpec(Doc), []);
+ if (docs.includes(curPres)) docs.splice(docs.indexOf(curPres), 1);
+ CollectionDockingView.AddSplit(curPres, 'right');
+ setTimeout(() => DocumentManager.Instance.jumpToDocument(docList.lastElement(), false, undefined, []), 100); // keeps the pinned doc in view since the sidebar shifts things
+ }
+ setTimeout(batch.end, 500); // need to wait until dockingview (goldenlayout) updates all its structurs
}
- setTimeout(batch.end, 500); // need to wait until dockingview (goldenlayout) updates all its structurs
}
componentDidMount() {
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index 0c7504913..8d56ebf8c 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -211,6 +211,7 @@ export class Doc extends RefField {
}
public static set ActivePage(val) {
Doc.UserDoc().activePage = val;
+ DocServer.UPDATE_SERVER_CACHE();
}
public static get ActiveDashboard() {
return DocCast(Doc.UserDoc().activeDashboard);
@@ -228,7 +229,7 @@ export class Doc extends RefField {
return DocCast(Doc.UserDoc().activePresentation);
}
public static set ActivePresentation(val) {
- Doc.UserDoc().activePresentation = val;
+ Doc.UserDoc().activePresentation = new PrefetchProxy(val);
}
constructor(id?: FieldId, forceSave?: boolean) {
super(id);
diff --git a/webpack.config.js b/webpack.config.js
index 5a954db19..01625988c 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,38 +1,38 @@
-var path = require('path');
-var webpack = require('webpack');
-const CopyWebpackPlugin = require("copy-webpack-plugin");
+const path = require('path');
+const webpack = require('webpack');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
-const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
+const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const plugins = [
- new CopyWebpackPlugin([{
- from: "deploy",
- to: path.join(__dirname, "build")
- }]),
+ new CopyWebpackPlugin([
+ {
+ from: 'deploy',
+ to: path.join(__dirname, 'build'),
+ },
+ ]),
new HtmlWebpackPlugin({
title: 'Caching',
}),
new ForkTsCheckerWebpackPlugin({
tslint: true,
// memoryLimit: 4096,
- useTypescriptIncrementalApi: true
+ useTypescriptIncrementalApi: true,
}),
- new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'], }),
- new webpack.ProvidePlugin({ process: 'process/browser', }),
+ new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }),
+ new webpack.ProvidePlugin({ process: 'process/browser' }),
new webpack.HotModuleReplacementPlugin(),
];
function transferEnvironmentVariables() {
- const prefix = "_CLIENT_";
- const {
- parsed
- } = require('dotenv').config();
+ const prefix = '_CLIENT_';
+ const { parsed } = require('dotenv').config();
if (!parsed) {
return;
}
const resolvedClientSide = Object.keys(parsed).reduce((mapping, envKey) => {
if (envKey.startsWith(prefix)) {
- mapping[`process.env.${envKey.replace(prefix, "")}`] = JSON.stringify(parsed[envKey]);
+ mapping[`process.env.${envKey.replace(prefix, '')}`] = JSON.stringify(parsed[envKey]);
}
return mapping;
}, {});
@@ -44,18 +44,18 @@ transferEnvironmentVariables();
module.exports = {
mode: 'development',
entry: {
- bundle: ["./src/client/views/Main.tsx", 'webpack-hot-middleware/client?reload=true'],
- viewer: ["./src/debug/Viewer.tsx", 'webpack-hot-middleware/client?reload=true'],
- repl: ["./src/debug/Repl.tsx", 'webpack-hot-middleware/client?reload=true'],
- test: ["./src/debug/Test.tsx", 'webpack-hot-middleware/client?reload=true'],
- inkControls: ["./src/mobile/InkControls.tsx", 'webpack-hot-middleware/client?reload=true'],
- mobileInterface: ["./src/client/views/Main.tsx", 'webpack-hot-middleware/client?reload=true'],
+ bundle: ['./src/client/views/Main.tsx', 'webpack-hot-middleware/client?reload=true'],
+ viewer: ['./src/debug/Viewer.tsx', 'webpack-hot-middleware/client?reload=true'],
+ repl: ['./src/debug/Repl.tsx', 'webpack-hot-middleware/client?reload=true'],
+ test: ['./src/debug/Test.tsx', 'webpack-hot-middleware/client?reload=true'],
+ inkControls: ['./src/mobile/InkControls.tsx', 'webpack-hot-middleware/client?reload=true'],
+ mobileInterface: ['./src/client/views/Main.tsx', 'webpack-hot-middleware/client?reload=true'],
},
- devtool: "source-map",
+ devtool: 'source-map',
output: {
- filename: "[name].js",
- path: path.resolve(__dirname, "build"),
- publicPath: "/",
+ filename: '[name].js',
+ path: path.resolve(__dirname, 'build'),
+ publicPath: '/',
},
resolve: {
extensions: ['.js', '.ts', '.tsx'],
@@ -68,67 +68,73 @@ module.exports = {
crypto: false,
assert: false,
os: false,
- path: require.resolve("path-browserify"),
- http: require.resolve("http-browserify"),
- https: require.resolve("https-browserify"),
- stream: require.resolve("stream-browserify"),
- buffer: require.resolve("buffer")
- }
+ path: require.resolve('path-browserify'),
+ http: require.resolve('http-browserify'),
+ https: require.resolve('https-browserify'),
+ stream: require.resolve('stream-browserify'),
+ buffer: require.resolve('buffer'),
+ },
},
module: {
- rules: [{
- test: [/\.tsx?$/],
- use: [{
- loader: 'ts-loader',
- options: {
- transpileOnly: true
- }
- }]
- },
- {
- test: /\.m?js/,
- resolve: {
- fullySpecified: false
- }
- },
- {
- test: /\.(woff|woff2|ttf|eot|otf|svg)$/,
- use: 'file-loader?name=fonts/[name].[ext]!static'
- },
- {
- test: /\.scss|css$/,
- use: [{
- loader: "style-loader"
+ rules: [
+ {
+ test: [/\.tsx?$/],
+ use: [
+ {
+ loader: 'ts-loader',
+ options: {
+ transpileOnly: true,
+ },
+ },
+ ],
},
{
- loader: "css-loader"
+ test: /\.m?js/,
+ resolve: {
+ fullySpecified: false,
+ },
},
{
- loader: "sass-loader"
+ test: /\.(woff|woff2|ttf|eot|otf|svg)$/,
+ use: 'file-loader?name=fonts/[name].[ext]!static',
+ },
+ {
+ test: /\.scss|css$/,
+ use: [
+ {
+ loader: 'style-loader',
+ },
+ {
+ loader: 'css-loader',
+ },
+ {
+ loader: 'sass-loader',
+ },
+ ],
+ },
+ {
+ test: /\.(jpg|png|pdf)$/,
+ use: [
+ {
+ loader: 'file-loader',
+ },
+ ],
+ },
+ {
+ test: /\.(png|jpg|gif)$/i,
+ use: [
+ {
+ loader: 'url-loader',
+ options: {
+ limit: 8192,
+ },
+ },
+ ],
},
- ]
- },
- {
- test: /\.(jpg|png|pdf)$/,
- use: [{
- loader: 'file-loader'
- }]
- },
- {
- test: /\.(png|jpg|gif)$/i,
- use: [{
- loader: 'url-loader',
- options: {
- limit: 8192
- }
- }]
- }
],
noParse: [require.resolve('typescript/lib/typescript.js')],
},
plugins,
- externals: [
- 'child_process'
- ],
-}; \ No newline at end of file
+ externals: ['child_process'],
+};