working on client lib
This commit is contained in:
parent
53287779f2
commit
e383c03435
|
@ -9,7 +9,6 @@ import nodeglobals from 'rollup-plugin-node-globals';
|
||||||
import copy from 'rollup-plugin-copy';
|
import copy from 'rollup-plugin-copy';
|
||||||
import browsersync from "rollup-plugin-browsersync";
|
import browsersync from "rollup-plugin-browsersync";
|
||||||
import proxy from "http-proxy-middleware";
|
import proxy from "http-proxy-middleware";
|
||||||
import corePackageJson from "../core/package.json";
|
|
||||||
|
|
||||||
const target = 'http://localhost:4001';
|
const target = 'http://localhost:4001';
|
||||||
const _builderProxy = proxy('/_builder', {
|
const _builderProxy = proxy('/_builder', {
|
||||||
|
@ -48,15 +47,6 @@ const coreExternal = [
|
||||||
"@nx-js/compiler-util"
|
"@nx-js/compiler-util"
|
||||||
];
|
];
|
||||||
|
|
||||||
const globals = {
|
|
||||||
"lodash/fp": "fp",
|
|
||||||
lodash: "_",
|
|
||||||
lunr: "lunr",
|
|
||||||
"safe-buffer": "safe_buffer",
|
|
||||||
shortid:"shortid",
|
|
||||||
"@nx-js/compiler-util":"compiler_util"
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
input: 'src/main.js',
|
input: 'src/main.js',
|
||||||
output: {
|
output: {
|
||||||
|
@ -64,13 +54,7 @@ export default {
|
||||||
format: 'iife',
|
format: 'iife',
|
||||||
name: 'app',
|
name: 'app',
|
||||||
file: `${outputpath}/bundle.js`
|
file: `${outputpath}/bundle.js`
|
||||||
//globals
|
|
||||||
},
|
},
|
||||||
/*external: [
|
|
||||||
"lodash", "lodash/fp", "date-fns",
|
|
||||||
"lunr", "safe-buffer", "shortid",
|
|
||||||
"@nx-js/compiler-util"
|
|
||||||
],*/
|
|
||||||
plugins: [
|
plugins: [
|
||||||
copy({
|
copy({
|
||||||
targets: [
|
targets: [
|
||||||
|
|
|
@ -17,4 +17,4 @@ export const loadLib = async (appName, lib, allLibs) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const makeLibraryUrl = (appName, lib) =>
|
export const makeLibraryUrl = (appName, lib) =>
|
||||||
`/_builder/api/${appName}/componentlibrary?lib=${encodeURI(lib)}`
|
`/${appName}/componentlibrary?lib=${encodeURI(lib)}`
|
|
@ -0,0 +1,6 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
release/
|
||||||
|
dist/
|
|
@ -1,4 +1,4 @@
|
||||||
{
|
module.exports = ({
|
||||||
"presets": ["@babel/preset-env"],
|
"presets": ["@babel/preset-env"],
|
||||||
"sourceMaps": "inline",
|
"sourceMaps": "inline",
|
||||||
"retainLines": true,
|
"retainLines": true,
|
||||||
|
@ -9,4 +9,4 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
});
|
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +1,55 @@
|
||||||
{
|
{
|
||||||
"name": "budibase-client-library",
|
"name": "budibase-builder",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"description": "Client library for talking to budibase web server",
|
"license": "AGPL-3.0",
|
||||||
"main": "index.js",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"build": "rollup -c",
|
||||||
|
"test": "jest"
|
||||||
|
},
|
||||||
|
"jest": {
|
||||||
|
"globals": {
|
||||||
|
"GLOBALS": {
|
||||||
|
"client": "web"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"testURL": "http://jest-breaks-if-this-does-not-exist",
|
||||||
|
"moduleNameMapper": {
|
||||||
|
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/internals/mocks/fileMock.js",
|
||||||
|
"\\.(css|less|sass|scss)$": "identity-obj-proxy"
|
||||||
|
},
|
||||||
|
"moduleFileExtensions": [
|
||||||
|
"js"
|
||||||
|
],
|
||||||
|
"moduleDirectories": [
|
||||||
|
"node_modules"
|
||||||
|
],
|
||||||
|
"transform": {
|
||||||
|
"^.+js$": "babel-jest"
|
||||||
|
},
|
||||||
|
"transformIgnorePatterns": [
|
||||||
|
"/node_modules/(?!svelte).+\\.js$"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@nx-js/compiler-util": "^2.0.0",
|
||||||
|
"date-fns": "^1.29.0",
|
||||||
|
"lodash": "^4.17.15",
|
||||||
|
"lunr": "^2.3.5",
|
||||||
|
"shortid": "^2.2.8",
|
||||||
|
"svelte": "^3.9.2"
|
||||||
},
|
},
|
||||||
"keywords": [
|
|
||||||
"budibase"
|
|
||||||
],
|
|
||||||
"author": "Michael Shanks",
|
|
||||||
"license": "MPL-2.0",
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.4.4",
|
"@babel/core": "^7.5.5",
|
||||||
"@babel/core": "^7.4.5",
|
"@babel/plugin-transform-runtime": "^7.5.5",
|
||||||
"@babel/plugin-transform-runtime": "^7.4.4",
|
"@babel/preset-env": "^7.5.5",
|
||||||
"@babel/preset-env": "^7.4.5",
|
"@babel/runtime": "^7.5.5",
|
||||||
"babel-jest": "^23.6.0",
|
"babel-jest": "^24.8.0",
|
||||||
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
|
|
||||||
"cross-env": "^5.1.4",
|
|
||||||
"jest": "^24.8.0",
|
"jest": "^24.8.0",
|
||||||
"regenerator-runtime": "^0.11.1",
|
|
||||||
"rollup": "^1.12.0",
|
"rollup": "^1.12.0",
|
||||||
"rollup-plugin-commonjs": "^10.0.0",
|
"rollup-plugin-commonjs": "^10.0.0",
|
||||||
"rollup-plugin-local-resolve": "^1.0.7",
|
"rollup-plugin-node-builtins": "^2.1.2",
|
||||||
"rollup-plugin-node-resolve": "^5.0.0"
|
"rollup-plugin-node-globals": "^1.4.0",
|
||||||
|
"rollup-plugin-node-resolve": "^5.2.0",
|
||||||
|
"rollup-plugin-terser": "^4.0.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
import resolve from 'rollup-plugin-node-resolve';
|
||||||
|
import commonjs from 'rollup-plugin-commonjs';
|
||||||
|
import builtins from 'rollup-plugin-node-builtins';
|
||||||
|
import nodeglobals from 'rollup-plugin-node-globals';
|
||||||
|
import { terser } from 'rollup-plugin-terser';
|
||||||
|
|
||||||
|
const lodash_fp_exports = [
|
||||||
|
"find", "isUndefined", "split",
|
||||||
|
"last", "union", "reduce",
|
||||||
|
"cloneDeep", "some"];
|
||||||
|
|
||||||
|
const lodash_exports = [
|
||||||
|
"flow","reduce", "constant", "head", "isEmpty",
|
||||||
|
"tail", "findIndex", "startsWith",
|
||||||
|
"join", "dropRight", "takeRight",
|
||||||
|
"trim", "split", "includes", "replace",
|
||||||
|
"isArray", "isString", "isInteger",
|
||||||
|
"isDate", "toNumber", "isUndefined",
|
||||||
|
"isNull", "isNaN"];
|
||||||
|
|
||||||
|
const coreExternal = [
|
||||||
|
"lodash", "lodash/fp", "date-fns",
|
||||||
|
"lunr", "safe-buffer", "shortid",
|
||||||
|
"@nx-js/compiler-util"
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
input: 'src/index.js',
|
||||||
|
output: {
|
||||||
|
sourcemap: true,
|
||||||
|
format: 'iife',
|
||||||
|
name: 'app',
|
||||||
|
file: `./dist/budibase-client.js`
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
|
||||||
|
resolve({
|
||||||
|
preferBuiltins:true,
|
||||||
|
browser:true,
|
||||||
|
dedupe: importee => {
|
||||||
|
return coreExternal.includes(importee);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
commonjs({
|
||||||
|
namedExports: {
|
||||||
|
"lodash/fp": lodash_fp_exports,
|
||||||
|
"lodash":lodash_exports,
|
||||||
|
"shortid": ["generate"]
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
builtins(),
|
||||||
|
nodeglobals(),
|
||||||
|
terser()
|
||||||
|
],
|
||||||
|
watch: {
|
||||||
|
clearScreen: false
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
export {
|
||||||
|
$
|
||||||
|
} from "../../../core/src/common";
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
import { initialise } from "./initialise";
|
||||||
|
|
||||||
|
initialise();
|
|
@ -0,0 +1,35 @@
|
||||||
|
import { writable } from "svelte/store";
|
||||||
|
import { initialiseComponent } from "./initialiseComponent";
|
||||||
|
|
||||||
|
export const initialise = async (document, appDefinition, pageDefinition) => {
|
||||||
|
for(let stylesheet of pageDefinition.stylesheets) {
|
||||||
|
addStylesheet(document, stylesheet);
|
||||||
|
}
|
||||||
|
|
||||||
|
const componentLibraries = {};
|
||||||
|
|
||||||
|
for(let lib of appDefinition.componentLibraries) {
|
||||||
|
componentLibraries[lib] = await import(
|
||||||
|
componentLibraryUrl(lib, appDefinition.appRootPath));
|
||||||
|
}
|
||||||
|
|
||||||
|
const store = writable({});
|
||||||
|
|
||||||
|
initialiseComponent(allComponents, componentLibraries, store)(
|
||||||
|
appDefinition.rootProps,
|
||||||
|
document.body);
|
||||||
|
}
|
||||||
|
const componentLibraryUrl = (lib, rootUrlPath) =>
|
||||||
|
`${rootPath}/api/componentlibrary?lib=${encodeURI(lib)}`
|
||||||
|
|
||||||
|
const addStylesheet = (document, url) => {
|
||||||
|
|
||||||
|
const head = document.head;
|
||||||
|
const link = document.createElement("link");
|
||||||
|
|
||||||
|
link.type = "text/css";
|
||||||
|
link.rel = "stylesheet";
|
||||||
|
link.href = url;
|
||||||
|
|
||||||
|
head.appendChild(link);
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
import {
|
||||||
|
find,
|
||||||
|
isUndefined,
|
||||||
|
split,
|
||||||
|
last
|
||||||
|
} from "lodash/fp";
|
||||||
|
|
||||||
|
import { $ } from "./core/common";
|
||||||
|
|
||||||
|
export const initialiseComponent = (allComponents, componentLibraries, store) => (props, htmlElement) => {
|
||||||
|
|
||||||
|
const rootComponent = getRootComponent(
|
||||||
|
props._component, allComponents);
|
||||||
|
|
||||||
|
const _app = {
|
||||||
|
initialiseComponent: initialiseComponent(allComponents, componentLibraries, store),
|
||||||
|
store
|
||||||
|
};
|
||||||
|
|
||||||
|
const {componentName, libName} = splitName(
|
||||||
|
rootComponent.name);
|
||||||
|
|
||||||
|
new (componentLibraries[libName][componentName])({
|
||||||
|
target: htmlElement,
|
||||||
|
props: {...props, _app}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getRootComponent = (componentName, allComponents) => {
|
||||||
|
const component = find(c => c.name === componentName)(allComponents);
|
||||||
|
|
||||||
|
if(isRootComponent(component)) return component;
|
||||||
|
|
||||||
|
return getRootComponent(component.inherits, allComponents);
|
||||||
|
}
|
||||||
|
|
||||||
|
const isRootComponent = c => isUndefined(c.inherits);
|
||||||
|
|
||||||
|
|
||||||
|
const splitName = fullname => {
|
||||||
|
const componentName = $(fullname, [
|
||||||
|
split("/"),
|
||||||
|
last
|
||||||
|
]);
|
||||||
|
|
||||||
|
const libName =fullname.substring(
|
||||||
|
0, fullname.length - componentName.length - 1);
|
||||||
|
|
||||||
|
return {libName, componentName};
|
||||||
|
}
|
|
@ -1,43 +1,43 @@
|
||||||
main.svelte-j8mzr7{height:100%;width:100%;font-family:"Lato", Helvetica, Arial, sans-serif}
|
main.svelte-j8mzr7{height:100%;width:100%;font-family:"Lato", Helvetica, Arial, sans-serif}
|
||||||
.root.svelte-fkeby9{height:100%;width:100%;display:flex;flex-direction:column}.top-nav.svelte-fkeby9{flex:0 0 auto;height:25px;background:white;border-style:solid;border-width:0px 0px 1px 0px;border-color:var(--lightslate);padding:5px;width:100%}.content.svelte-fkeby9{flex:1 1 auto;width:100%;height:100px}.content.svelte-fkeby9>div.svelte-fkeby9{height:100%;width:100%}.topnavitem.svelte-fkeby9{cursor:pointer;color:var(--slate);padding:0px 15px}.topnavitem.svelte-fkeby9:hover{color:var(--secondary75)}.active.svelte-fkeby9{color:var(--secondary100)}
|
|
||||||
.root.svelte-e4n7zy{position:fixed;margin:0 auto;text-align:center;top:20%;width:100%}.inner.svelte-e4n7zy{display:inline-block;margin:auto}.logo.svelte-e4n7zy{width:300px;margin-bottom:40px}.root.svelte-e4n7zy .option{width:250px}.app-link.svelte-e4n7zy{margin-top:10px;display:block}
|
.root.svelte-e4n7zy{position:fixed;margin:0 auto;text-align:center;top:20%;width:100%}.inner.svelte-e4n7zy{display:inline-block;margin:auto}.logo.svelte-e4n7zy{width:300px;margin-bottom:40px}.root.svelte-e4n7zy .option{width:250px}.app-link.svelte-e4n7zy{margin-top:10px;display:block}
|
||||||
.root.svelte-q8uz1n{height:100%;display:flex}.content.svelte-q8uz1n{flex:1 1 auto;height:100%;background-color:var(--white);margin:0}.nav.svelte-q8uz1n{flex:0 1 auto;width:300px;height:100%}
|
.root.svelte-fkeby9{height:100%;width:100%;display:flex;flex-direction:column}.top-nav.svelte-fkeby9{flex:0 0 auto;height:25px;background:white;border-style:solid;border-width:0px 0px 1px 0px;border-color:var(--lightslate);padding:5px;width:100%}.content.svelte-fkeby9{flex:1 1 auto;width:100%;height:100px}.content.svelte-fkeby9>div.svelte-fkeby9{height:100%;width:100%}.topnavitem.svelte-fkeby9{cursor:pointer;color:var(--slate);padding:0px 15px}.topnavitem.svelte-fkeby9:hover{color:var(--secondary75)}.active.svelte-fkeby9{color:var(--secondary100)}
|
||||||
button.svelte-bxuckr{border-style:none;background-color:rgba(0,0,0,0);cursor:pointer;outline:none}button.svelte-bxuckr:hover{color:var(--hovercolor)}button.svelte-bxuckr:active{outline:none}
|
button.svelte-bxuckr{border-style:none;background-color:rgba(0,0,0,0);cursor:pointer;outline:none}button.svelte-bxuckr:hover{color:var(--hovercolor)}button.svelte-bxuckr:active{outline:none}
|
||||||
.border-normal.svelte-7rfkdx{border-radius:var(--borderradiusall)}.border-left.svelte-7rfkdx{border-radius:var(--borderradius) 0 0 var(--borderradius)}.border-right.svelte-7rfkdx{border-radius:0 var(--borderradius) var(--borderradius) 0}.border-middle.svelte-7rfkdx{border-radius:0}button.svelte-7rfkdx{border-style:solid;padding:7px 15px;cursor:pointer}.primary.svelte-7rfkdx{background-color:var(--primary100);border-color:var(--primary100);color:var(--white)}.primary.svelte-7rfkdx:hover{background-color:var(--primary75);border-color:var(--primary75)}.primary.svelte-7rfkdx:active{background-color:var(--primarydark);border-color:var(--primarydark)}.primary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--primary100);color:var(--primary100)}.primary-outline.svelte-7rfkdx:hover{background-color:var(--primary10)}.primary-outline.svelte-7rfkdx:pressed{background-color:var(--primary25)}.secondary.svelte-7rfkdx{background-color:var(--secondary100);border-color:var(--secondary100);color:var(--white)}.secondary.svelte-7rfkdx:hover{background-color:var(--secondary75);border-color:var(--secondary75)}.secondary.svelte-7rfkdx:pressed{background-color:var(--secondarydark);border-color:var(--secondarydark)}.secondary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--secondary100);color:var(--secondary100)}.secondary-outline.svelte-7rfkdx:hover{background-color:var(--secondary10)}.secondary-outline.svelte-7rfkdx:pressed{background-color:var(--secondary25)}.success.svelte-7rfkdx{background-color:var(--success100);border-color:var(--success100);color:var(--white)}.success.svelte-7rfkdx:hover{background-color:var(--success75);border-color:var(--success75)}.success.svelte-7rfkdx:pressed{background-color:var(--successdark);border-color:var(--successdark)}.success-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--success100);color:var(--success100)}.success-outline.svelte-7rfkdx:hover{background-color:var(--success10)}.success-outline.svelte-7rfkdx:pressed{background-color:var(--success25)}.deletion.svelte-7rfkdx{background-color:var(--deletion100);border-color:var(--deletion100);color:var(--white)}.deletion.svelte-7rfkdx:hover{background-color:var(--deletion75);border-color:var(--deletion75)}.deletion.svelte-7rfkdx:pressed{background-color:var(--deletiondark);border-color:var(--deletiondark)}.deletion-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--deletion100);color:var(--deletion100)}.deletion-outline.svelte-7rfkdx:hover{background-color:var(--deletion10)}.deletion-outline.svelte-7rfkdx:pressed{background-color:var(--deletion25)}
|
.border-normal.svelte-7rfkdx{border-radius:var(--borderradiusall)}.border-left.svelte-7rfkdx{border-radius:var(--borderradius) 0 0 var(--borderradius)}.border-right.svelte-7rfkdx{border-radius:0 var(--borderradius) var(--borderradius) 0}.border-middle.svelte-7rfkdx{border-radius:0}button.svelte-7rfkdx{border-style:solid;padding:7px 15px;cursor:pointer}.primary.svelte-7rfkdx{background-color:var(--primary100);border-color:var(--primary100);color:var(--white)}.primary.svelte-7rfkdx:hover{background-color:var(--primary75);border-color:var(--primary75)}.primary.svelte-7rfkdx:active{background-color:var(--primarydark);border-color:var(--primarydark)}.primary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--primary100);color:var(--primary100)}.primary-outline.svelte-7rfkdx:hover{background-color:var(--primary10)}.primary-outline.svelte-7rfkdx:pressed{background-color:var(--primary25)}.secondary.svelte-7rfkdx{background-color:var(--secondary100);border-color:var(--secondary100);color:var(--white)}.secondary.svelte-7rfkdx:hover{background-color:var(--secondary75);border-color:var(--secondary75)}.secondary.svelte-7rfkdx:pressed{background-color:var(--secondarydark);border-color:var(--secondarydark)}.secondary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--secondary100);color:var(--secondary100)}.secondary-outline.svelte-7rfkdx:hover{background-color:var(--secondary10)}.secondary-outline.svelte-7rfkdx:pressed{background-color:var(--secondary25)}.success.svelte-7rfkdx{background-color:var(--success100);border-color:var(--success100);color:var(--white)}.success.svelte-7rfkdx:hover{background-color:var(--success75);border-color:var(--success75)}.success.svelte-7rfkdx:pressed{background-color:var(--successdark);border-color:var(--successdark)}.success-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--success100);color:var(--success100)}.success-outline.svelte-7rfkdx:hover{background-color:var(--success10)}.success-outline.svelte-7rfkdx:pressed{background-color:var(--success25)}.deletion.svelte-7rfkdx{background-color:var(--deletion100);border-color:var(--deletion100);color:var(--white)}.deletion.svelte-7rfkdx:hover{background-color:var(--deletion75);border-color:var(--deletion75)}.deletion.svelte-7rfkdx:pressed{background-color:var(--deletiondark);border-color:var(--deletiondark)}.deletion-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--deletion100);color:var(--deletion100)}.deletion-outline.svelte-7rfkdx:hover{background-color:var(--deletion10)}.deletion-outline.svelte-7rfkdx:pressed{background-color:var(--deletion25)}
|
||||||
|
.root.svelte-q8uz1n{height:100%;display:flex}.content.svelte-q8uz1n{flex:1 1 auto;height:100%;background-color:var(--white);margin:0}.nav.svelte-q8uz1n{flex:0 1 auto;width:300px;height:100%}
|
||||||
.root.svelte-1dih19s{display:grid;grid-template-columns:[uiNav] 250px [preview] auto [properties] 300px;height:100%;width:100%}.ui-nav.svelte-1dih19s{grid-column-start:uiNav;background-color:var(--primary10);height:100%}.properties-pane.svelte-1dih19s{grid-column-start:properties;background-color:var(--primary10);height:100%}.pages-list-container.svelte-1dih19s{padding-top:20px}.nav-group-header.svelte-1dih19s{font-size:10pt;padding-left:10px}.nav-items-container.svelte-1dih19s{padding-top:10px}.nav-group-header.svelte-1dih19s{display:grid;grid-template-columns:[icon] auto [title] 1fr [button] auto;padding:10px 2px 0px 7px}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(1){padding:0px 7px 0px 0px;vertical-align:bottom;grid-column-start:icon;margin-right:5px}.nav-group-header.svelte-1dih19s>span.svelte-1dih19s:nth-child(2){margin-left:5px;vertical-align:bottom;grid-column-start:title;margin-top:auto}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(3){vertical-align:bottom;grid-column-start:button;cursor:pointer;color:var(--slate)}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(3):hover{color:var(--primary75)}
|
.root.svelte-1dih19s{display:grid;grid-template-columns:[uiNav] 250px [preview] auto [properties] 300px;height:100%;width:100%}.ui-nav.svelte-1dih19s{grid-column-start:uiNav;background-color:var(--primary10);height:100%}.properties-pane.svelte-1dih19s{grid-column-start:properties;background-color:var(--primary10);height:100%}.pages-list-container.svelte-1dih19s{padding-top:20px}.nav-group-header.svelte-1dih19s{font-size:10pt;padding-left:10px}.nav-items-container.svelte-1dih19s{padding-top:10px}.nav-group-header.svelte-1dih19s{display:grid;grid-template-columns:[icon] auto [title] 1fr [button] auto;padding:10px 2px 0px 7px}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(1){padding:0px 7px 0px 0px;vertical-align:bottom;grid-column-start:icon;margin-right:5px}.nav-group-header.svelte-1dih19s>span.svelte-1dih19s:nth-child(2){margin-left:5px;vertical-align:bottom;grid-column-start:title;margin-top:auto}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(3){vertical-align:bottom;grid-column-start:button;cursor:pointer;color:var(--slate)}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(3):hover{color:var(--primary75)}
|
||||||
h4.svelte-o0id5a{margin-top:20px}
|
h4.svelte-o0id5a{margin-top:20px}
|
||||||
.root.svelte-apja7r{height:100%;position:relative}.actions-header.svelte-apja7r{flex:0 1 auto}.node-view.svelte-apja7r{overflow-y:auto;flex:1 1 auto}
|
|
||||||
.root.svelte-zy9ybu{height:100%;background-color:var(--primary10)}.items-root.svelte-zy9ybu{display:flex;flex-direction:column;max-height:100%;height:10px}.hierarchy.svelte-zy9ybu{flex:1 1 auto}.hierarchy-title-row.svelte-zy9ybu{padding:15px 7px;font-size:12pt;display:flex;font-weight:bold}.hierarchy-title.svelte-zy9ybu{flex:auto 1 1}.space-filler.svelte-zy9ybu{flex:1 1 auto}
|
|
||||||
.root.svelte-1qmjs65{padding:10px}.edit-button.svelte-1qmjs65{cursor:pointer;color:var(--white)}tr.svelte-1qmjs65:hover .edit-button.svelte-1qmjs65{color:var(--secondary75)}
|
|
||||||
.root.svelte-183dehm{height:100%;border-style:solid;border-color:var(--lightslate);border-width:0px 0px 0px 1px}.padding.svelte-183dehm{padding:0px 5px 0px 10px}.title.svelte-183dehm{background-color:white;padding:3px;display:grid;grid-template-columns:[name] 1fr [actions] auto}.title.svelte-183dehm>div.svelte-183dehm:nth-child(1){grid-column-start:name;color:var(--secondary100)}.title.svelte-183dehm>div.svelte-183dehm:nth-child(2){grid-column-start:actions}.section-header.svelte-183dehm{font-style:italic;color:var(--slate);border-style:solid;border-color:var(--lightslate);border-width:0px 0px 1px 0px}.section-header.svelte-183dehm{vertical-align:middle;margin-top:20px}
|
|
||||||
.root.svelte-ffb307{padding-bottom:10px;padding-left:10px;font-size:16px;color:var(--secondary50)}.hierarchy-item.svelte-ffb307{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-ffb307:hover{color:var(--secondary75)}.component.svelte-ffb307{margin-left:5px}.selected.svelte-ffb307{color:var(--primary100)}.title.svelte-ffb307{margin-left:10px}
|
|
||||||
h1.svelte-2ukyrk{font-size:1.2em}
|
|
||||||
.section-container.svelte-1t0x31f{padding:15px;border-style:dotted;border-width:1px;border-color:var(--lightslate);border-radius:2px}.section-container.svelte-1t0x31f:nth-child(1){margin-bottom:15px}.row-text.svelte-1t0x31f{margin-right:15px;color:var(--primary100)}input.svelte-1t0x31f{margin-right:15px}p.svelte-1t0x31f>span.svelte-1t0x31f{margin-left:30px}.header.svelte-1t0x31f{display:grid;grid-template-columns:[title] 1fr [icon] auto}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(1){grid-column-start:title}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(2){grid-column-start:icon}
|
|
||||||
.component-preview.svelte-1jir83x{display:grid;grid-template-rows:[top] 1fr [middle] auto [bottom] 1fr;grid-template-columns:[left] 1fr [middle] auto [right] 1fr;grid-column-start:preview;height:100%}.component-container.svelte-1jir83x{grid-row-start:middle;grid-column-start:middle}
|
|
||||||
.root.svelte-zzs4qg{padding:10px}
|
|
||||||
.root.svelte-1cnqtw{color:var(--secondary50)}.hierarchy-item.svelte-1cnqtw{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-1cnqtw:hover{color:var(--secondary75)}.component.svelte-1cnqtw{margin-left:5px}.currentfolder.svelte-1cnqtw{color:var(--secondary100)}.selected.svelte-1cnqtw{color:var(--primary100)}.title.svelte-1cnqtw{margin-left:10px}
|
.root.svelte-1cnqtw{color:var(--secondary50)}.hierarchy-item.svelte-1cnqtw{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-1cnqtw:hover{color:var(--secondary75)}.component.svelte-1cnqtw{margin-left:5px}.currentfolder.svelte-1cnqtw{color:var(--secondary100)}.selected.svelte-1cnqtw{color:var(--primary100)}.title.svelte-1cnqtw{margin-left:10px}
|
||||||
.root.svelte-kswv5p{height:100%;padding:15px}.fields-table.svelte-kswv5p{margin:10px;border-collapse:collapse}.add-field-button.svelte-kswv5p{margin-left:15px;cursor:pointer}.edit-button.svelte-kswv5p{cursor:pointer;color:var(--white)}.edit-button.svelte-kswv5p:hover{color:var(--secondary75)}th.svelte-kswv5p{text-align:left}td.svelte-kswv5p{padding:5px 30px 5px 0px;margin:0}thead.svelte-kswv5p>tr.svelte-kswv5p{border-width:0px 0px 1px 0px;border-style:solid;border-color:var(--secondary75);margin-bottom:20px}tbody.svelte-kswv5p>tr.svelte-kswv5p{border-width:0px 0px 1px 0px;border-style:solid;border-color:var(--primary10)}tbody.svelte-kswv5p>tr.svelte-kswv5p:hover{background-color:var(--primary10)}tbody.svelte-kswv5p>tr:hover .edit-button.svelte-kswv5p{color:var(--secondary75)}.index-container.svelte-kswv5p{border-style:solid;border-width:0 0 1px 0;border-color:var(--secondary25);padding:10px;margin-bottom:5px}.index-label.svelte-kswv5p{color:var(--slate)}.index-name.svelte-kswv5p{font-weight:bold;color:var(--primary100)}.index-container.svelte-kswv5p code.svelte-kswv5p{margin:0;display:inline;background-color:var(--primary10);color:var(--secondary100);padding:3px}.index-field-row.svelte-kswv5p{margin-top:7px}
|
.root.svelte-183dehm{height:100%;border-style:solid;border-color:var(--lightslate);border-width:0px 0px 0px 1px}.padding.svelte-183dehm{padding:0px 5px 0px 10px}.title.svelte-183dehm{background-color:white;padding:3px;display:grid;grid-template-columns:[name] 1fr [actions] auto}.title.svelte-183dehm>div.svelte-183dehm:nth-child(1){grid-column-start:name;color:var(--secondary100)}.title.svelte-183dehm>div.svelte-183dehm:nth-child(2){grid-column-start:actions}.section-header.svelte-183dehm{font-style:italic;color:var(--slate);border-style:solid;border-color:var(--lightslate);border-width:0px 0px 1px 0px}.section-header.svelte-183dehm{vertical-align:middle;margin-top:20px}
|
||||||
.root.svelte-1q40nqm{display:block;font-size:13pt;width:100%;cursor:pointer}.title.svelte-1q40nqm{font:var(--bodytext);padding-top:10px;padding-right:5px;padding-bottom:10px;color:var(--secondary100)}.title.svelte-1q40nqm:hover{background-color:var(--secondary10)}
|
h1.svelte-2ukyrk{font-size:1.2em}
|
||||||
.root.svelte-pq2tmv{height:100%;padding:15px}.allowed-records.svelte-pq2tmv{margin:20px 0px}.allowed-records.svelte-pq2tmv>span.svelte-pq2tmv{margin-right:30px}
|
.root.svelte-ffb307{padding-bottom:10px;padding-left:10px;font-size:16px;color:var(--secondary50)}.hierarchy-item.svelte-ffb307{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-ffb307:hover{color:var(--secondary75)}.component.svelte-ffb307{margin-left:5px}.selected.svelte-ffb307{color:var(--primary100)}.title.svelte-ffb307{margin-left:10px}
|
||||||
.root.svelte-1bn4xbe{display:block;font-size:12pt;width:100%;cursor:pointer}.title.svelte-1bn4xbe{padding-top:5px;padding-right:5px;padding-bottom:5px;color:var(--secondary100)}.title.svelte-1bn4xbe:hover{background-color:var(--secondary10)}.active.svelte-1bn4xbe{background-color:var(--primary10)}
|
.section-container.svelte-1t0x31f{padding:15px;border-style:dotted;border-width:1px;border-color:var(--lightslate);border-radius:2px}.section-container.svelte-1t0x31f:nth-child(1){margin-bottom:15px}.row-text.svelte-1t0x31f{margin-right:15px;color:var(--primary100)}input.svelte-1t0x31f{margin-right:15px}p.svelte-1t0x31f>span.svelte-1t0x31f{margin-left:30px}.header.svelte-1t0x31f{display:grid;grid-template-columns:[title] 1fr [icon] auto}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(1){grid-column-start:title}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(2){grid-column-start:icon}
|
||||||
.dropdown-background.svelte-179p8ge{position:fixed;top:0;left:0;width:100vw;height:100vh}.root.svelte-179p8ge{cursor:pointer;z-index:1}.dropdown-content.svelte-179p8ge{position:absolute;background-color:var(--white);min-width:160px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;font-weight:normal;border-style:solid;border-width:1px;border-color:var(--secondary10)}.dropdown-content.svelte-179p8ge:not(:focus){display:none}.action-row.svelte-179p8ge{padding:7px 10px;cursor:pointer}.action-row.svelte-179p8ge:hover{background-color:var(--primary100);color:var(--white)}
|
.root.svelte-1ersoxu{padding:15px}.help-text.svelte-1ersoxu{color:var(--slate);font-size:10pt}
|
||||||
|
.component-preview.svelte-1jir83x{display:grid;grid-template-rows:[top] 1fr [middle] auto [bottom] 1fr;grid-template-columns:[left] 1fr [middle] auto [right] 1fr;grid-column-start:preview;height:100%}.component-container.svelte-1jir83x{grid-row-start:middle;grid-column-start:middle}
|
||||||
|
.root.svelte-zy9ybu{height:100%;background-color:var(--primary10)}.items-root.svelte-zy9ybu{display:flex;flex-direction:column;max-height:100%;height:10px}.hierarchy.svelte-zy9ybu{flex:1 1 auto}.hierarchy-title-row.svelte-zy9ybu{padding:15px 7px;font-size:12pt;display:flex;font-weight:bold}.hierarchy-title.svelte-zy9ybu{flex:auto 1 1}.space-filler.svelte-zy9ybu{flex:1 1 auto}
|
||||||
|
.root.svelte-apja7r{height:100%;position:relative}.actions-header.svelte-apja7r{flex:0 1 auto}.node-view.svelte-apja7r{overflow-y:auto;flex:1 1 auto}
|
||||||
|
.root.svelte-1qmjs65{padding:10px}.edit-button.svelte-1qmjs65{cursor:pointer;color:var(--white)}tr.svelte-1qmjs65:hover .edit-button.svelte-1qmjs65{color:var(--secondary75)}
|
||||||
|
.root.svelte-zzs4qg{padding:10px}
|
||||||
.root.svelte-d6wwkb{display:flex}.root.svelte-d6wwkb:last-child{border-radius:0 var(--borderradius) var(--borderradius) 0}.root.svelte-d6wwkb:first-child{border-radius:var(--borderradius) 0 0 var(--borderradius)}.root.svelte-d6wwkb:not(:first-child):not(:last-child){border-radius:0}
|
.root.svelte-d6wwkb{display:flex}.root.svelte-d6wwkb:last-child{border-radius:0 var(--borderradius) var(--borderradius) 0}.root.svelte-d6wwkb:first-child{border-radius:var(--borderradius) 0 0 var(--borderradius)}.root.svelte-d6wwkb:not(:first-child):not(:last-child){border-radius:0}
|
||||||
.info-text.svelte-um9cf7{font-size:0.8em;color:var(--slate)}
|
.info-text.svelte-um9cf7{font-size:0.8em;color:var(--slate)}
|
||||||
.nav-item.svelte-1y614ns{padding:7px;font-size:12pt;font-weight:bold;cursor:pointer;flex:0 0 auto}.nav-item.svelte-1y614ns:hover{background-color:var(--primary10)}.active.svelte-1y614ns{background-color:var(--primary10)}
|
|
||||||
.root.svelte-1tilbnf{padding:5px;top:0;width:100%}
|
|
||||||
.component.svelte-13tuzj8{padding:5px;border-style:solid;border-width:0 0 1px 0;border-color:var(--lightslate);cursor:pointer}.component.svelte-13tuzj8:hover{background-color:var(--primary10)}.component.svelte-13tuzj8>.title.svelte-13tuzj8{font-size:13pt;color:var(--secondary100)}.component.svelte-13tuzj8>.description.svelte-13tuzj8{font-size:10pt;color:var(--primary75);font-style:italic}
|
|
||||||
.edit-button.svelte-9z4fqi{cursor:pointer;color:var(--white)}tr.svelte-9z4fqi:hover .edit-button.svelte-9z4fqi{color:var(--secondary75)}
|
|
||||||
.root.svelte-1sxai5n{font-size:10pt}.padding.svelte-1sxai5n{padding:0 10px}.inherited-title.svelte-1sxai5n{margin-top:40px;display:grid;grid-template-columns:[name] 1fr [actions] auto;border-style:solid;border-width:0px 0px 1px 0px;border-color:var(--lightslate);font-style:italic}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(1){grid-column-start:name;color:var(--slate)}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(2){grid-column-start:actions;color:var(--secondary100)}
|
|
||||||
.title.svelte-1pp53c5{padding:3px;background-color:white;color:var(--secondary100);border-style:solid;border-width:1px 0 0 0;border-color:var(--lightslate)}.title.svelte-1pp53c5>span.svelte-1pp53c5{margin-left:10px}
|
.title.svelte-1pp53c5{padding:3px;background-color:white;color:var(--secondary100);border-style:solid;border-width:1px 0 0 0;border-color:var(--lightslate)}.title.svelte-1pp53c5>span.svelte-1pp53c5{margin-left:10px}
|
||||||
|
.root.svelte-1sxai5n{font-size:10pt}.padding.svelte-1sxai5n{padding:0 10px}.inherited-title.svelte-1sxai5n{margin-top:40px;display:grid;grid-template-columns:[name] 1fr [actions] auto;border-style:solid;border-width:0px 0px 1px 0px;border-color:var(--lightslate);font-style:italic}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(1){grid-column-start:name;color:var(--slate)}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(2){grid-column-start:actions;color:var(--secondary100)}
|
||||||
|
.component.svelte-13tuzj8{padding:5px;border-style:solid;border-width:0 0 1px 0;border-color:var(--lightslate);cursor:pointer}.component.svelte-13tuzj8:hover{background-color:var(--primary10)}.component.svelte-13tuzj8>.title.svelte-13tuzj8{font-size:13pt;color:var(--secondary100)}.component.svelte-13tuzj8>.description.svelte-13tuzj8{font-size:10pt;color:var(--primary75);font-style:italic}
|
||||||
|
.root.svelte-1bn4xbe{display:block;font-size:12pt;width:100%;cursor:pointer}.title.svelte-1bn4xbe{padding-top:5px;padding-right:5px;padding-bottom:5px;color:var(--secondary100)}.title.svelte-1bn4xbe:hover{background-color:var(--secondary10)}.active.svelte-1bn4xbe{background-color:var(--primary10)}
|
||||||
|
.nav-item.svelte-1y614ns{padding:7px;font-size:12pt;font-weight:bold;cursor:pointer;flex:0 0 auto}.nav-item.svelte-1y614ns:hover{background-color:var(--primary10)}.active.svelte-1y614ns{background-color:var(--primary10)}
|
||||||
|
.dropdown-background.svelte-179p8ge{position:fixed;top:0;left:0;width:100vw;height:100vh}.root.svelte-179p8ge{cursor:pointer;z-index:1}.dropdown-content.svelte-179p8ge{position:absolute;background-color:var(--white);min-width:160px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;font-weight:normal;border-style:solid;border-width:1px;border-color:var(--secondary10)}.dropdown-content.svelte-179p8ge:not(:focus){display:none}.action-row.svelte-179p8ge{padding:7px 10px;cursor:pointer}.action-row.svelte-179p8ge:hover{background-color:var(--primary100);color:var(--white)}
|
||||||
|
.root.svelte-1tilbnf{padding:5px;top:0;width:100%}
|
||||||
|
.root.svelte-1q40nqm{display:block;font-size:13pt;width:100%;cursor:pointer}.title.svelte-1q40nqm{font:var(--bodytext);padding-top:10px;padding-right:5px;padding-bottom:10px;color:var(--secondary100)}.title.svelte-1q40nqm:hover{background-color:var(--secondary10)}
|
||||||
|
.root.svelte-pq2tmv{height:100%;padding:15px}.allowed-records.svelte-pq2tmv{margin:20px 0px}.allowed-records.svelte-pq2tmv>span.svelte-pq2tmv{margin-right:30px}
|
||||||
|
.root.svelte-kswv5p{height:100%;padding:15px}.fields-table.svelte-kswv5p{margin:10px;border-collapse:collapse}.add-field-button.svelte-kswv5p{margin-left:15px;cursor:pointer}.edit-button.svelte-kswv5p{cursor:pointer;color:var(--white)}.edit-button.svelte-kswv5p:hover{color:var(--secondary75)}th.svelte-kswv5p{text-align:left}td.svelte-kswv5p{padding:5px 30px 5px 0px;margin:0}thead.svelte-kswv5p>tr.svelte-kswv5p{border-width:0px 0px 1px 0px;border-style:solid;border-color:var(--secondary75);margin-bottom:20px}tbody.svelte-kswv5p>tr.svelte-kswv5p{border-width:0px 0px 1px 0px;border-style:solid;border-color:var(--primary10)}tbody.svelte-kswv5p>tr.svelte-kswv5p:hover{background-color:var(--primary10)}tbody.svelte-kswv5p>tr:hover .edit-button.svelte-kswv5p{color:var(--secondary75)}.index-container.svelte-kswv5p{border-style:solid;border-width:0 0 1px 0;border-color:var(--secondary25);padding:10px;margin-bottom:5px}.index-label.svelte-kswv5p{color:var(--slate)}.index-name.svelte-kswv5p{font-weight:bold;color:var(--primary100)}.index-container.svelte-kswv5p code.svelte-kswv5p{margin:0;display:inline;background-color:var(--primary10);color:var(--secondary100);padding:3px}.index-field-row.svelte-kswv5p{margin-top:7px}
|
||||||
.edit-button.svelte-neetem{cursor:pointer;color:var(--white)}tr.svelte-neetem:hover .edit-button.svelte-neetem{color:var(--secondary75)}
|
.edit-button.svelte-neetem{cursor:pointer;color:var(--white)}tr.svelte-neetem:hover .edit-button.svelte-neetem{color:var(--secondary75)}
|
||||||
textarea.svelte-1ooq0hh{padding:3px;background:var(--darkslate);color:var(--white);font-family:'Courier New', Courier, monospace;width:95%;height:100px}
|
.edit-button.svelte-9z4fqi{cursor:pointer;color:var(--white)}tr.svelte-9z4fqi:hover .edit-button.svelte-9z4fqi{color:var(--secondary75)}
|
||||||
input.svelte-66516k{margin-right:7px}
|
|
||||||
.error-container.svelte-jwy920{padding:10px;border-style:solid;border-color:var(--deletion100);border-radius:var(--borderradiusall);background:var(--deletion75)}.error-row.svelte-jwy920{padding:5px 0px}
|
|
||||||
.root.svelte-woqcuf{display:grid;grid-template-columns:[name] 1fr [actions] auto}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(1){grid-column-start:name;color:var(--secondary50)}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(2){grid-column-start:actions}.selectedname.svelte-woqcuf{font-weight:bold;color:var(--secondary)}
|
|
||||||
.root.svelte-w5on8s{padding:3px 5px 7px 10px;border-style:dotted;border-width:0 0 1px 0;border-color:var(--primary25)}
|
.root.svelte-w5on8s{padding:3px 5px 7px 10px;border-style:dotted;border-width:0 0 1px 0;border-color:var(--primary25)}
|
||||||
|
input.svelte-66516k{margin-right:7px}
|
||||||
|
.root.svelte-woqcuf{display:grid;grid-template-columns:[name] 1fr [actions] auto}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(1){grid-column-start:name;color:var(--secondary50)}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(2){grid-column-start:actions}.selectedname.svelte-woqcuf{font-weight:bold;color:var(--secondary)}
|
||||||
|
.error-container.svelte-jwy920{padding:10px;border-style:solid;border-color:var(--deletion100);border-radius:var(--borderradiusall);background:var(--deletion75)}.error-row.svelte-jwy920{padding:5px 0px}
|
||||||
|
textarea.svelte-1ooq0hh{padding:3px;background:var(--darkslate);color:var(--white);font-family:'Courier New', Courier, monospace;width:95%;height:100px}
|
||||||
.root.svelte-bv289q{padding:10px}.option-container.svelte-bv289q{border-style:dotted;border-width:1px;border-color:var(--primary75);padding:3px;margin-right:5px}
|
.root.svelte-bv289q{padding:10px}.option-container.svelte-bv289q{border-style:dotted;border-width:1px;border-color:var(--primary75);padding:3px;margin-right:5px}
|
||||||
.addelement-container.svelte-jliz3p{cursor:pointer;padding:3px 0px;text-align:center}.addelement-container.svelte-jliz3p:hover{background-color:var(--primary25)}.item-container.svelte-jliz3p{padding-left:3px;background:var(--secondary10)}
|
.addelement-container.svelte-jliz3p{cursor:pointer;padding:3px 0px;text-align:center}.addelement-container.svelte-jliz3p:hover{background-color:var(--primary25)}.item-container.svelte-jliz3p{padding-left:3px;background:var(--secondary10)}
|
||||||
textarea.svelte-1wfv4cc{width:300px;height:200px}
|
textarea.svelte-1wfv4cc{width:300px;height:200px}
|
||||||
.root.svelte-1ersoxu{padding:15px}.help-text.svelte-1ersoxu{color:var(--slate);font-size:10pt}
|
|
||||||
|
|
||||||
/*# sourceMappingURL=bundle.css.map */
|
/*# sourceMappingURL=bundle.css.map */
|
File diff suppressed because one or more lines are too long
|
@ -31455,7 +31455,7 @@
|
||||||
|
|
||||||
/******/ });
|
/******/ });
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=feather.js.map
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var feather$1 = unwrapExports(feather);
|
var feather$1 = unwrapExports(feather);
|
||||||
|
|
|
@ -10,6 +10,7 @@ module.exports = () => ({
|
||||||
latestPackagesFolder: "appPackages",
|
latestPackagesFolder: "appPackages",
|
||||||
extraMasterPlugins: {},
|
extraMasterPlugins: {},
|
||||||
dev:true,
|
dev:true,
|
||||||
customizeMaster: appDefinition => appDefinition
|
customizeMaster: appDefinition => appDefinition,
|
||||||
|
useAppRootPath: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,13 @@ module.exports = () => ({
|
||||||
customizeMaster: appDefinition => appDefinition,
|
customizeMaster: appDefinition => appDefinition,
|
||||||
|
|
||||||
// false for production - serves builder if true
|
// false for production - serves builder if true
|
||||||
dev:false
|
dev:false,
|
||||||
|
|
||||||
|
// flags whethers your apps should make server requests to '/<your app name>/<the route>'
|
||||||
|
// should only be set to true if you are routed via a domain, and are rewriting
|
||||||
|
// the "your.domain.com" to "/<your app name>"
|
||||||
|
useAppRootPath: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
|
@ -12,7 +12,7 @@ const {
|
||||||
saveDerivedComponent,
|
saveDerivedComponent,
|
||||||
renameDerivedComponent,
|
renameDerivedComponent,
|
||||||
deleteDerivedComponent,
|
deleteDerivedComponent,
|
||||||
getComponentLibraryPath
|
componentLibraryInfo
|
||||||
} = require("../utilities/builder");
|
} = require("../utilities/builder");
|
||||||
|
|
||||||
const builderPath = resolve(__dirname, "../builder");
|
const builderPath = resolve(__dirname, "../builder");
|
||||||
|
@ -161,12 +161,12 @@ module.exports = (config, app) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.get("/_builder/api/:appname/componentlibrary", async (ctx) => {
|
.get("/:appname/componentlibrary", async (ctx) => {
|
||||||
const {appPath, libPath} = await getComponentLibraryPath(
|
const info = await componentLibraryInfo(
|
||||||
config,
|
config,
|
||||||
ctx.params.appname,
|
ctx.params.appname,
|
||||||
ctx.query.lib);
|
ctx.query.lib);
|
||||||
await send(ctx, libPath, { root: appPath });
|
await send(ctx, info.libDir, { root: info.components._lib });
|
||||||
})
|
})
|
||||||
.post("/_builder/api/:appname/derivedcomponent", async (ctx) => {
|
.post("/_builder/api/:appname/derivedcomponent", async (ctx) => {
|
||||||
await saveDerivedComponent(
|
await saveDerivedComponent(
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
"koa-session": "^5.12.0",
|
"koa-session": "^5.12.0",
|
||||||
"koa-static": "^5.0.0",
|
"koa-static": "^5.0.0",
|
||||||
"lodash": "^4.17.13",
|
"lodash": "^4.17.13",
|
||||||
|
"squirrelly": "^7.5.0",
|
||||||
"tar-fs": "^2.0.0",
|
"tar-fs": "^2.0.0",
|
||||||
"uuid": "^3.3.2",
|
"uuid": "^3.3.2",
|
||||||
"yargs": "^13.2.4"
|
"yargs": "^13.2.4"
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
const {
|
||||||
|
appPackageFolder
|
||||||
|
} = require("../createAppPackage");
|
||||||
|
const { componentLibraryInfo } = require("./componentLibraryInfo");
|
||||||
|
const {
|
||||||
|
stat, ensureDir, pathExists,
|
||||||
|
constants, copyFile, writeFile,
|
||||||
|
readFile
|
||||||
|
} = require("fs-extra");
|
||||||
|
const { join } = require("path");
|
||||||
|
const sqrl = require('squirrelly');
|
||||||
|
|
||||||
|
module.exports = async (config, appname, pageName, pages, appdefinition) => {
|
||||||
|
|
||||||
|
const appPath = appPackageFolder(config, appname);
|
||||||
|
|
||||||
|
await buildClientAppDefinition(
|
||||||
|
config, appname,
|
||||||
|
appdefinition, componentLibraries,
|
||||||
|
appPath, appRootPath)
|
||||||
|
|
||||||
|
await buildIndexHtml(
|
||||||
|
config, appname, appPath,
|
||||||
|
pageName, pages);
|
||||||
|
|
||||||
|
await copyClientLib(appPath);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const publicPath = async appPath => join(appPath, "public");
|
||||||
|
const rootPath = (config, appname) => config.useAppRootPath ? `/${appname}` : "";
|
||||||
|
|
||||||
|
const copyClientLib = async appPath => {
|
||||||
|
var sourcepath = require.resolve("budibase-client",{
|
||||||
|
basedir: appPath
|
||||||
|
});
|
||||||
|
var destPath = join(publicPath(appPath), "budibase-client.js");
|
||||||
|
|
||||||
|
await copyFile(sourcepath, destPath, constants.COPYFILE_FICLONE);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const buildIndexHtml = async (config, appname, appPath, pageName, pages) => {
|
||||||
|
|
||||||
|
|
||||||
|
const appPublicPath = publicPath(appPath);
|
||||||
|
const appRootPath = rootPath(config, appname);
|
||||||
|
|
||||||
|
const stylesheetUrl = s =>
|
||||||
|
s.indexOf('http://') === 0 || s.indexOf('https://') === 0
|
||||||
|
? s
|
||||||
|
: `/${rootPath(config, appname)}/${s}`;
|
||||||
|
|
||||||
|
|
||||||
|
const templateObj = {
|
||||||
|
title = pages[pageName].index.title || "Budibase App",
|
||||||
|
favicon = `${appRootPath}/${pages[pageName].index.favicon || "/assets/favicon.png"}`,
|
||||||
|
stylesheets = pages.stylesheets.map(stylesheetUrl),
|
||||||
|
appRootPath
|
||||||
|
}
|
||||||
|
|
||||||
|
const indexHtmlTemplate = await readFile(
|
||||||
|
resolve(__dirname, "index.template.html"));
|
||||||
|
|
||||||
|
const indexHtmlPath = join(appPublicPath, "index.html");
|
||||||
|
|
||||||
|
await writeFile(
|
||||||
|
indexHtmlPath,
|
||||||
|
sqrl.Render(indexHtmlTemplate, templateObj),
|
||||||
|
{flag:"w+"});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const buildClientAppDefinition = async (config, appname, appdefinition, pages, appPath) => {
|
||||||
|
|
||||||
|
const componentLibraries = [];
|
||||||
|
const appPublicPath = publicPath(appPath);
|
||||||
|
const appRootPath = rootPath(config, appname);
|
||||||
|
|
||||||
|
for(let lib of pages.componentLibraries) {
|
||||||
|
const info = await componentLibraryInfo(appPath, lib);
|
||||||
|
const source = join(info.libDir, info.components._lib);
|
||||||
|
const destDir = join(appPublicPath, "lib", info.libDir.replace(appPath, ""));
|
||||||
|
await ensureDir(destDir);
|
||||||
|
|
||||||
|
const destPath = join(destDir, info.components._lib);
|
||||||
|
componentLibraries.push(destPath);
|
||||||
|
|
||||||
|
let shouldCopy = !(await pathExists(destPath));
|
||||||
|
if(!shouldCopy) {
|
||||||
|
const destStat = await stat(destPath);
|
||||||
|
const sourceStat = await stat(source);
|
||||||
|
shouldCopy = destStat.ctimeMs !== sourceStat.ctimeMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(shouldCopy) {
|
||||||
|
await copyFile(source, destPath, constants.COPYFILE_FICLONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const filename = join(appPublicPath, "clientAppDefinition.js");
|
||||||
|
|
||||||
|
await writeFile(filename,
|
||||||
|
`window['##BUDIBASE_APPDEFINITION##'] = {
|
||||||
|
hierarchy: ${JSON.stringify(appdefinition.hierarchy)},
|
||||||
|
componentLibraries: ${JSON.stringify(componentLibraries)},
|
||||||
|
appRootPath: '${appRootPath}'
|
||||||
|
}`);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
const {
|
||||||
|
readJSON, exists
|
||||||
|
} = require("fs-extra");
|
||||||
|
const { resolve } = require("path");
|
||||||
|
|
||||||
|
const getLibDir = (appPath, libname) => require.resolve(libname, {
|
||||||
|
basedir: appPath
|
||||||
|
});
|
||||||
|
|
||||||
|
const getComponentsFilepath = libPath =>
|
||||||
|
resolve(libPath, "components.json");
|
||||||
|
|
||||||
|
module.exports.componentsFilepath = (appPath, libname) =>
|
||||||
|
getComponentsFilepath(getLibDir(appPath, libname));
|
||||||
|
|
||||||
|
module.exports.componentLibraryInfo = async (appPath, libname) => {
|
||||||
|
|
||||||
|
const libDir = getLibDir(appPath, libname);
|
||||||
|
const componentsPath = getComponentsFilepath(libDir);
|
||||||
|
|
||||||
|
if(!await exists(componentsPath)) {
|
||||||
|
const e = new Error(`could not find components definition file at ${componentsPath}`);
|
||||||
|
e.statusCode = 404;
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return ({
|
||||||
|
components: await readJSON(componentsPath),
|
||||||
|
libDir,
|
||||||
|
componentsPath
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
const err = `could not parse JSON - ${componentsPath} : ${e.message}`;
|
||||||
|
throw new Error(err);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,11 @@
|
||||||
const {
|
const {
|
||||||
appPackageFolder,
|
appPackageFolder,
|
||||||
appsFolder
|
appsFolder
|
||||||
} = require("./createAppPackage");
|
} = require("../createAppPackage");
|
||||||
const {
|
const {
|
||||||
readJSON,
|
readJSON,
|
||||||
writeJSON,
|
writeJSON,
|
||||||
readdir,
|
readdir,
|
||||||
exists,
|
|
||||||
stat,
|
stat,
|
||||||
ensureDir,
|
ensureDir,
|
||||||
rename,
|
rename,
|
||||||
|
@ -14,7 +13,6 @@ const {
|
||||||
rmdir
|
rmdir
|
||||||
} = require("fs-extra");
|
} = require("fs-extra");
|
||||||
const {
|
const {
|
||||||
resolve,
|
|
||||||
join,
|
join,
|
||||||
dirname
|
dirname
|
||||||
} = require("path");
|
} = require("path");
|
||||||
|
@ -22,12 +20,13 @@ const { $ } = require("budibase-core").common;
|
||||||
const {
|
const {
|
||||||
keys,
|
keys,
|
||||||
reduce,
|
reduce,
|
||||||
some,
|
|
||||||
keyBy,
|
keyBy,
|
||||||
filter
|
filter
|
||||||
} = require("lodash/fp");
|
} = require("lodash/fp");
|
||||||
const {merge} = require("lodash");
|
const {merge} = require("lodash");
|
||||||
|
|
||||||
|
const { componentLibraryInfo } = require("./componentLibraryInfo");
|
||||||
|
|
||||||
module.exports.getPackageForBuilder = async (config, appname) => {
|
module.exports.getPackageForBuilder = async (config, appname) => {
|
||||||
const appPath = appPackageFolder(config, appname);
|
const appPath = appPackageFolder(config, appname);
|
||||||
|
|
||||||
|
@ -108,42 +107,14 @@ module.exports.deleteDerivedComponent = async (config, appname, name) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.getComponentLibraryPath = async (config, appname, libname) => {
|
module.exports.componentLibraryInfo = componentLibraryInfo;
|
||||||
const appPath = appPackageFolder(config, appname);
|
|
||||||
const components = await getComponentsFile(appPath, libname);
|
|
||||||
return ({
|
|
||||||
appPath,
|
|
||||||
libPath:join(libname, components._lib.path)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const getComponentsFile = async (appPath, libname) => {
|
|
||||||
const isRelative = some(c => c === libname.substring(0,1))
|
|
||||||
("./~\\".split(""));
|
|
||||||
|
|
||||||
const componentsPath = isRelative
|
|
||||||
? resolve(appPath, libname, "components.json")
|
|
||||||
: resolve(libname, "components.json");
|
|
||||||
|
|
||||||
if(!await exists(componentsPath)) {
|
|
||||||
const e = new Error(`could not find components definition file at ${componentsPath}`);
|
|
||||||
e.statusCode = 404;
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
return await readJSON(componentsPath);
|
|
||||||
} catch(e) {
|
|
||||||
const err = `could not parse JSON - ${componentsPath} : ${e.message}`;
|
|
||||||
throw new Error(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const getRootComponents = async (appPath, pages ,lib) => {
|
const getRootComponents = async (appPath, pages ,lib) => {
|
||||||
|
|
||||||
const componentsInLibrary = async (libname) => {
|
const componentsInLibrary = async (libname) => {
|
||||||
|
|
||||||
const components = await getComponentsFile(appPath, libname);
|
const { components } = await componentLibraryInfo(appPath, libname);
|
||||||
|
|
||||||
return $(components, [
|
return $(components, [
|
||||||
keys,
|
keys,
|
|
@ -0,0 +1,22 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset='utf8'>
|
||||||
|
<meta name='viewport' content='width=device-width'>
|
||||||
|
|
||||||
|
<title>{{ title }}</title>
|
||||||
|
<link rel='icon' type='image/png' href='{{ favicon }}'>
|
||||||
|
|
||||||
|
{{ each(stylesheets) }}
|
||||||
|
<link rel='stylesheet' href='{{ @this }}'>
|
||||||
|
{{ /each }}
|
||||||
|
|
||||||
|
<script src='{{ appRootPath }}/budibase-client.js'></script>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body id="app">
|
||||||
|
<script src='{{ appRootPath }}/clientAppDefinition.js'></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -3572,6 +3572,11 @@ split-string@^3.0.1, split-string@^3.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
extend-shallow "^3.0.0"
|
extend-shallow "^3.0.0"
|
||||||
|
|
||||||
|
squirrelly@^7.5.0:
|
||||||
|
version "7.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/squirrelly/-/squirrelly-7.5.0.tgz#76b42e2771639433bff3e60fd66aa6b04f25e8d0"
|
||||||
|
integrity sha512-7GtawPwwkVPnG9hqfQRjrziHxWLHAoJ3tlYvhmSayDNoovIufIQXRF0G/QA8sUTCSPzzSBkPSN0CuTlcvE7Dow==
|
||||||
|
|
||||||
sshpk@^1.7.0:
|
sshpk@^1.7.0:
|
||||||
version "1.16.1"
|
version "1.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
|
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
|
||||||
|
|
Loading…
Reference in New Issue