diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7f76f35..5252036 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,6 +1,5 @@
{
"files.exclude": {
- // "**/node_modules/**": true,
- "**/node_modules/[^b]**": true
+ "**/node_modules/**": true
}
}
diff --git a/addon/content/solid-example/panorama/layout/custom_game/app.xml b/addon/content/solid-example/panorama/layout/custom_game/app.xml
deleted file mode 100644
index e212465..0000000
--- a/addon/content/solid-example/panorama/layout/custom_game/app.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addon/content/solid-example/panorama/layout/custom_game/lowhud.xml b/addon/content/solid-example/panorama/layout/custom_game/lowhud.xml
new file mode 100644
index 0000000..d351cfb
--- /dev/null
+++ b/addon/content/solid-example/panorama/layout/custom_game/lowhud.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addon/content/solid-example/panorama/layout/custom_game/shop.xml b/addon/content/solid-example/panorama/layout/custom_game/shop.xml
new file mode 100644
index 0000000..97ed0fe
--- /dev/null
+++ b/addon/content/solid-example/panorama/layout/custom_game/shop.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addon/content/solid-example/panorama/scripts/custom_game/app.js b/addon/content/solid-example/panorama/scripts/custom_game/app.js
deleted file mode 100644
index ee021fb..0000000
--- a/addon/content/solid-example/panorama/scripts/custom_game/app.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'; const require = GameUI.__require;
-
-var libs = require('./libs.js');
-
-function Item(props) {
- let [root, setRoot] = libs.createSignal(null);
- let [text, setText] = libs.createSignal('');
- let el;
- libs.onMount(() => {
- $.Msg('onMount ', el);
- });
- libs.createEffect(() => {
- $.Msg('effect root ', root());
- }, root);
- return (() => {
- const _el$ = libs.createElement("Panel", {
- id: "root"
- }, null),
- _el$2 = libs.createElement("Label", {}, _el$);
- const _ref$ = el;
- typeof _ref$ === "function" ? libs.use(_ref$, _el$) : el = _el$;
- libs.effect(_$p => libs.setProp(_el$2, "text", text(), _$p));
- return _el$;
- })();
-}
-function HelloWorld() {
- return (() => {
- const _el$3 = libs.createElement("Panel", {}, null);
- libs.createTextNode(`Hello World!`, _el$3);
- libs.setProp(_el$3, "style", {
- flowChildren: 'right'
- });
- libs.insert(_el$3, libs.createComponent(Item, {
- show: true
- }, _el$3), null);
- return _el$3;
- })();
-}
-libs.render(() => libs.createComponent(HelloWorld, {}, null), $('#app'));
diff --git a/addon/content/solid-example/panorama/scripts/custom_game/libs.js b/addon/content/solid-example/panorama/scripts/custom_game/libs.js
index 27ba7b3..0866076 100644
--- a/addon/content/solid-example/panorama/scripts/custom_game/libs.js
+++ b/addon/content/solid-example/panorama/scripts/custom_game/libs.js
@@ -40,34 +40,10 @@ function createRoot(fn, detachedOwner) {
Owner = owner;
}
}
-function createSignal(value, options) {
- options = options ? Object.assign({}, signalOptions, options) : signalOptions;
- const s = {
- value,
- observers: null,
- observerSlots: null,
- comparator: options.equals || undefined
- };
- const setter = value => {
- if (typeof value === "function") {
- value = value(s.value);
- }
- return writeSignal(s, value);
- };
- return [readSignal.bind(s), setter];
-}
function createRenderEffect(fn, value, options) {
const c = createComputation(fn, value, false, STALE);
updateComputation(c);
}
-function createEffect(fn, value, options) {
- runEffects = runUserEffects;
- const c = createComputation(fn, value, false, STALE),
- s = SuspenseContext && lookup(Owner, SuspenseContext.id);
- if (s) c.suspense = s;
- c.user = true;
- Effects ? Effects.push(c) : updateComputation(c);
-}
function createMemo(fn, value, options) {
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
const c = createComputation(fn, value, true, 0);
@@ -85,10 +61,6 @@ function untrack(fn) {
Listener = listener;
return result;
}
-function onMount(fn) {
- createEffect(() => untrack(fn));
-}
-let SuspenseContext;
function readSignal() {
const runningTransition = Transition ;
if (this.sources && (this.state || runningTransition )) {
@@ -240,15 +212,6 @@ function completeUpdates(wait) {
function runQueue(queue) {
for (let i = 0; i < queue.length; i++) runTop(queue[i]);
}
-function runUserEffects(queue) {
- let i,
- userLength = 0;
- for (i = 0; i < queue.length; i++) {
- const e = queue[i];
- if (!e.user) runTop(e);else queue[userLength++] = e;
- }
- for (i = 0; i < userLength; i++) runTop(queue[i]);
-}
function lookUpstream(node, ignore) {
const runningTransition = Transition ;
node.state = 0;
@@ -309,9 +272,6 @@ function handleError(err) {
err = castError(err);
throw err;
}
-function lookup(owner, key) {
- return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
-}
function createComponent$1(Comp, props) {
return untrack(() => Comp(props || {}));
}
@@ -627,33 +587,6 @@ function createRenderer(options) {
return renderer;
}
-/******************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-
-function __rest(s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
-}
-
const StyleKeyAutoConvertToPixelList = [
'x',
'y',
@@ -686,7 +619,7 @@ const { render: _render, effect, memo, createComponent, createElement, createTex
use } = createRenderer({
// @ts-ignore
createElement(type, props, parent) {
- const { id, snippet, vars, dialogVariables, text } = props, _props = __rest(props, ["id", "snippet", "vars", "dialogVariables", "text"]);
+ const { id, snippet, vars, dialogVariables, text, ..._props } = props;
const el = $.CreatePanelWithProperties(type, parent || $.GetContextPanel(), id || '', _props);
if (vars) {
setDialogVariables(el, vars, {});
@@ -735,44 +668,6 @@ use } = createRenderer({
}
return node.paneltype === 'Label';
},
- setProperty(node, name, value, prev) {
- if (!node || !node.IsValid()) {
- return;
- }
- if (name === 'class' || name === 'className') {
- applyClassNames(node, value, prev || '');
- }
- else if (name === 'classList') {
- updateClassList(node, value);
- }
- else if (name === 'style') {
- applyStyles(node, value, prev);
- }
- else if (name === 'vars' || name === 'dialogVariables') {
- setDialogVariables(node, value, prev);
- }
- else if (name === 'inputnamespace') {
- node.SetInputNamespace(value || '');
- }
- else if (name === 'draggable') {
- node.SetDraggable(value === true);
- }
- else if (name === 'acceptsfocus') {
- node.SetAcceptsFocus(value === true);
- }
- else if (name.startsWith('on')) {
- setPanelEvent(node, name, value);
- }
- else {
- if (hasOwn.call(node, name)) {
- // @ts-ignore
- node[name] = value;
- }
- else {
- node.SetAttributeString(name, String(value));
- }
- }
- },
insertNode(parent, node, anchor) {
if (!parent || !parent.IsValid() || !node || !node.IsValid()) {
return;
@@ -820,6 +715,44 @@ use } = createRenderer({
return;
}
return el;
+ },
+ setProperty(node, name, value, prev) {
+ if (!node || !node.IsValid()) {
+ return;
+ }
+ if (name === 'class' || name === 'className') {
+ applyClassNames(node, value, prev || '');
+ }
+ else if (name === 'classList') {
+ updateClassList(node, value);
+ }
+ else if (name === 'style') {
+ applyStyles(node, value, prev);
+ }
+ else if (name === 'vars' || name === 'dialogVariables') {
+ setDialogVariables(node, value, prev);
+ }
+ else if (name === 'inputnamespace') {
+ node.SetInputNamespace(value || '');
+ }
+ else if (name === 'draggable') {
+ node.SetDraggable(value === true);
+ }
+ else if (name === 'acceptsfocus') {
+ node.SetAcceptsFocus(value === true);
+ }
+ else if (name.startsWith('on')) {
+ setPanelEvent(node, name, value);
+ }
+ else {
+ if (hasOwn.call(node, name)) {
+ // @ts-ignore
+ node[name] = value;
+ }
+ else {
+ node.SetAttributeString(name, String(value));
+ }
+ }
}
});
const renderPanoramaSymbol = Symbol('render');
@@ -922,13 +855,7 @@ function setDialogVariables(node, vars, prev) {
}
exports.createComponent = createComponent;
-exports.createEffect = createEffect;
exports.createElement = createElement;
-exports.createSignal = createSignal;
exports.createTextNode = createTextNode;
-exports.effect = effect;
-exports.insert = insert;
-exports.onMount = onMount;
exports.render = render;
exports.setProp = setProp;
-exports.use = use;
diff --git a/addon/content/solid-example/panorama/scripts/custom_game/lowhud.js b/addon/content/solid-example/panorama/scripts/custom_game/lowhud.js
new file mode 100644
index 0000000..8dc9e32
--- /dev/null
+++ b/addon/content/solid-example/panorama/scripts/custom_game/lowhud.js
@@ -0,0 +1,15 @@
+'use strict'; const require = GameUI.__require;
+
+var libs = require('./libs.js');
+
+function App() {
+ return (() => {
+ const _el$ = libs.createElement("Panel", {}, null);
+ libs.createTextNode(`Hello World!`, _el$);
+ libs.setProp(_el$, "style", {
+ flowChildren: 'right'
+ });
+ return _el$;
+ })();
+}
+libs.render(() => libs.createComponent(App, {}, null), $('#app'));
diff --git a/addon/content/solid-example/panorama/scripts/custom_game/shop.js b/addon/content/solid-example/panorama/scripts/custom_game/shop.js
new file mode 100644
index 0000000..8dc9e32
--- /dev/null
+++ b/addon/content/solid-example/panorama/scripts/custom_game/shop.js
@@ -0,0 +1,15 @@
+'use strict'; const require = GameUI.__require;
+
+var libs = require('./libs.js');
+
+function App() {
+ return (() => {
+ const _el$ = libs.createElement("Panel", {}, null);
+ libs.createTextNode(`Hello World!`, _el$);
+ libs.setProp(_el$, "style", {
+ flowChildren: 'right'
+ });
+ return _el$;
+ })();
+}
+libs.render(() => libs.createComponent(App, {}, null), $('#app'));
diff --git a/babel.config.js b/babel.config.js
deleted file mode 100644
index f22a156..0000000
--- a/babel.config.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = {
- targets: 'node 8.2',
- comments: false,
- presets: [
- '@babel/preset-env',
- '@babel/preset-typescript',
- [
- 'babel-preset-solid-panorama',
- {
- moduleName: 'solid-panorama-runtime',
- generate: 'universal'
- }
- ]
- ],
- plugins: ['@babel/plugin-transform-typescript']
-};
diff --git a/build.ts b/build.ts
deleted file mode 100644
index f78be31..0000000
--- a/build.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-import chokidar from 'chokidar';
-import {
- readdirSync,
- readFileSync,
- statSync,
- existsSync,
- Stats,
- writeFileSync
-} from 'fs';
-import * as rollup from 'rollup';
-import path from 'path';
-import chalk from 'chalk';
-import {
- PreloadTemplates,
- RenderPanoramaXML,
- RenderPanoramaXMLOptions
-} from 'dota2-panorama-xml-static-element';
-import glob from 'glob';
-import { readFile } from 'fs/promises';
-import GetRollupWatchOptions from './build-rollup-config';
-
-const cli_prefix = `[${chalk.magenta('Panorama')}]`;
-const rootPath = path_step(path.join(__dirname, 'src'));
-
-function path_step(p: string) {
- return p.replace(/\\/g, '/');
-}
-
-function file_color(s: string) {
- return chalk.green(s);
-}
-
-function isDir(p: string) {
- return statSync(p).isDirectory();
-}
-
-/**
- * 启动Rollup编译
- */
-function StartRollup(): void {
- let options: rollup.RollupWatchOptions = GetRollupWatchOptions(rootPath);
- let watcher = rollup.watch(options);
-
- // 监听错误
- watcher.on('event', async evt => {
- if (evt.code === 'ERROR') {
- const f = path_step(evt.error.loc?.file || '').replace(
- rootPath + '/',
- ''
- );
- console.log(
- cli_prefix +
- ' Build Error: ' +
- chalk.red(f) +
- ': ' +
- chalk.yellow(evt.error.loc?.line)
- );
- console.log(
- cli_prefix + ' Build Error: ' + chalk.red(evt.error.message)
- );
- }
- });
-
- watcher.on('change', p => {
- console.log(cli_prefix + ' ✒️ ' + file_color(path.basename(p)));
- });
-}
-
-/**
- * 复制XML
- */
-async function onXMLChange(filePath: string, stats?: Stats | undefined) {
- let dir = path.dirname(filePath);
- while (path.basename(path.join(dir, '..')) !== 'pages') {
- dir = path.join(dir, '..');
- }
- let dirName = path.basename(dir);
- const fileName = path.basename(filePath).replace('.xml', '');
- console.log(
- cli_prefix +
- ' 🐤 ' +
- file_color(`${fileName}.xml`) +
- ' >> ' +
- chalk.blue(dirName + '.xml')
- );
- const triggerFile = path.join(dir, `${dirName}.xml`);
-
- let content = await RenderPanoramaXML(triggerFile, {
- indentation: ' ',
- templateRoots: [path.join(rootPath, 'Components'), dir],
- snippetsFiles: glob.sync(
- path
- .join(rootPath, 'Components/Snippets/**/*.xml')
- .replace(/\\/g, '/')
- )
- });
- writeFileSync(
- `./content/vue_example/panorama/layout/custom_game/${dirName}.xml`,
- content
- );
-}
-
-/**
- * 任务入口
- */
-export default async function TaskPUI() {
- StartRollup();
- // 监听XML
- // const xmlFiles = glob.sync(path.join(rootPath, '**/*.xml'));
- // const watchXML = chokidar.watch(
- // [...xmlFiles, path.join(rootPath, '**/*.xml')],
- // { ignoreInitial: false }
- // );
- // watchXML.on('change', onXMLChange);
- // watchXML.on('add', onXMLChange);
-}
-
-TaskPUI();
diff --git a/package.json b/package.json
index 653e59f..92ec54c 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
"author": "RobinCode",
"license": "MIT",
"scripts": {
- "start": "ts-node -r ./build-write-file.ts build.ts",
+ "start": "ts-node -r ./scripts/build-write-file.ts ./scripts/build.ts",
"build": "rollup -c"
},
"dependencies": {
@@ -14,6 +14,7 @@
"@babel/plugin-transform-typescript": "^7.20.0",
"@babel/preset-env": "^7.19.4",
"@babel/preset-typescript": "^7.18.6",
+ "@babel/types": "^7.20.2",
"@moddota/panorama-types": "^1.21.0",
"@rollup/plugin-alias": "^4.0.2",
"@rollup/plugin-babel": "^6.0.2",
@@ -23,13 +24,16 @@
"@rollup/plugin-typescript": "^9.0.2",
"@rollup/plugin-url": "^8.0.1",
"@types/babel__core": "^7.1.19",
+ "@types/cli-color": "^2.0.2",
"@types/fs-extra": "^9.0.13",
"@types/glob": "^8.0.0",
"@types/node": "^18.11.7",
"babel-plugin-jsx-panorama-expressions": "^0.1.2",
+ "babel-plugin-macros": "^3.1.0",
+ "babel-plugin-panorama-all-in-jsx": "^0.1.3",
"babel-preset-solid-panorama": "^0.1.3",
- "chalk": "4.1.2",
"chokidar": "^3.5.3",
+ "cli-color": "^2.0.3",
"dota2-panorama-xml-static-element": "^0.0.4",
"fs-extra": "^10.1.0",
"glob": "^8.0.3",
@@ -37,7 +41,7 @@
"rollup": "^3.2.3",
"sass": "^1.55.0",
"solid-js": "^1.6.1",
- "solid-panorama-runtime": "^0.1.6",
+ "solid-panorama-runtime": "^0.1.8",
"ts-node": "^10.9.1",
"typescript": "~4.8.4"
}
diff --git a/build-rollup-config.ts b/scripts/build-rollup-config.ts
similarity index 61%
rename from build-rollup-config.ts
rename to scripts/build-rollup-config.ts
index 826c642..2d50178 100644
--- a/build-rollup-config.ts
+++ b/scripts/build-rollup-config.ts
@@ -10,26 +10,24 @@ import chalk from 'chalk';
import { existsSync, readdirSync, statSync } from 'node:fs';
import alias from '@rollup/plugin-alias';
import replace from '@rollup/plugin-replace';
-import compatiblePanorama from './plugins/compatible-panorama';
-
-const cli_prefix = `[${chalk.magenta('Panorama')}]`;
-
-function isDir(p: string) {
- return statSync(p).isDirectory();
-}
+import compatiblePanorama from '../plugins/compatible-panorama';
+import { isDir, Panorama } from './utils';
+import { rollupPluginXML } from './rollup-plugin-xml';
export default function GetRollupWatchOptions(rootPath: string) {
// 入口文件夹
- const Dirs = readdirSync(rootPath).filter(
+ const entryFiles = readdirSync(rootPath).filter(
v =>
+ v !== 'common' &&
isDir(path.join(rootPath, v)) &&
- v !== 'global' &&
- existsSync(path.join(rootPath, `${v}/${v}.ts`))
+ existsSync(path.join(rootPath, `${v}/${v}.tsx`))
);
- console.log(Dirs.map(v => cli_prefix + ' 👁️ ' + v).join('\n'));
+ console.log(entryFiles.map(v => Panorama + ' 👁️ ' + v).join('\n'));
const options: RollupWatchOptions = {
- input: path.join(rootPath, `./app.tsx`),
+ input: entryFiles.map(v => {
+ return path.join(rootPath, `./${v}/${v}.tsx`);
+ }),
output: {
sourcemap: false,
dir: 'addon/content/solid-example/panorama/scripts/custom_game',
@@ -52,7 +50,22 @@ export default function GetRollupWatchOptions(rootPath: string) {
comments: false,
exclude: 'node_modules/**',
extensions: ['.js', '.ts', '.tsx'],
- babelHelpers: 'bundled'
+ babelHelpers: 'bundled',
+ presets: [
+ ['@babel/preset-env', { targets: { node: '8.2' } }],
+ '@babel/preset-typescript',
+ [
+ 'babel-preset-solid-panorama',
+ {
+ moduleName: 'solid-panorama-runtime',
+ generate: 'universal'
+ }
+ ]
+ ],
+ plugins: [
+ '@babel/plugin-transform-typescript',
+ 'babel-plugin-macros'
+ ]
}),
alias({
entries: [
@@ -72,7 +85,13 @@ export default function GetRollupWatchOptions(rootPath: string) {
// }),
commonjs(),
nodeResolve(),
- compatiblePanorama()
+ compatiblePanorama(),
+ rollupPluginXML({
+ dir: join(
+ __dirname,
+ '../addon/content/solid-example/panorama/layout/custom_game'
+ )
+ })
]
};
diff --git a/build-write-file.ts b/scripts/build-write-file.ts
similarity index 100%
rename from build-write-file.ts
rename to scripts/build-write-file.ts
diff --git a/scripts/build.ts b/scripts/build.ts
new file mode 100644
index 0000000..f49c49c
--- /dev/null
+++ b/scripts/build.ts
@@ -0,0 +1,64 @@
+import chokidar from 'chokidar';
+import {
+ readdirSync,
+ readFileSync,
+ statSync,
+ existsSync,
+ Stats,
+ writeFileSync
+} from 'fs';
+import * as rollup from 'rollup';
+import path from 'path';
+import {
+ PreloadTemplates,
+ RenderPanoramaXML,
+ RenderPanoramaXMLOptions
+} from 'dota2-panorama-xml-static-element';
+import glob from 'glob';
+import { readFile } from 'fs/promises';
+import GetRollupWatchOptions from './build-rollup-config';
+import { fileColor, normalizedPath, Panorama } from './utils';
+import color from 'cli-color';
+
+const rootPath = normalizedPath(path.join(__dirname, '../src'));
+
+/**
+ * 启动Rollup编译
+ */
+function StartRollup(): void {
+ let options: rollup.RollupWatchOptions = GetRollupWatchOptions(rootPath);
+ let watcher = rollup.watch(options);
+
+ // 监听错误
+ watcher.on('event', async evt => {
+ if (evt.code === 'ERROR') {
+ const f = normalizedPath(evt.error.loc?.file || '').replace(
+ rootPath + '/',
+ ''
+ );
+ console.log(
+ Panorama +
+ ' Build Error: ' +
+ color.red(f) +
+ ': ' +
+ color.yellow(evt.error.loc?.line)
+ );
+ console.log(
+ Panorama + ' Build Error: ' + color.red(evt.error.message)
+ );
+ }
+ });
+
+ watcher.on('change', p => {
+ console.log(Panorama + ' ✒️ ' + fileColor(path.basename(p)));
+ });
+}
+
+/**
+ * 任务入口
+ */
+export default async function TaskPUI() {
+ StartRollup();
+}
+
+TaskPUI();
diff --git a/scripts/rollup-plugin-xml.ts b/scripts/rollup-plugin-xml.ts
new file mode 100644
index 0000000..fd9e368
--- /dev/null
+++ b/scripts/rollup-plugin-xml.ts
@@ -0,0 +1,32 @@
+import { Plugin } from 'rollup';
+import {
+ formatXML,
+ getAllCacheXML
+} from 'babel-plugin-panorama-all-in-jsx/xml.macro';
+import { basename, join } from 'node:path';
+import { ensureDir, writeFile } from 'fs-extra';
+
+export function rollupPluginXML(options: {
+ dir: string;
+ resolvePath?: (filename: string) => string | undefined;
+}): Plugin {
+ return {
+ name: 'rollup-plugin-xml',
+ async generateBundle() {
+ const cache = getAllCacheXML();
+ for (const [filename, root] of Object.entries(cache)) {
+ let outPath = '';
+ if (options.resolvePath) {
+ outPath = options.resolvePath(filename) || '';
+ }
+ if (!outPath) {
+ outPath = join(
+ options.dir,
+ basename(filename).replace(/\.tsx?$/, '.xml')
+ );
+ }
+ await writeFile(outPath, formatXML(root));
+ }
+ }
+ };
+}
diff --git a/scripts/utils.ts b/scripts/utils.ts
new file mode 100644
index 0000000..b30cc09
--- /dev/null
+++ b/scripts/utils.ts
@@ -0,0 +1,16 @@
+import { statSync } from 'fs';
+import color from 'cli-color';
+
+export function normalizedPath(p: string): string {
+ return p.replace(/\\/g, '/');
+}
+
+export const Panorama = `[${color.magenta('Panorama')}]`;
+
+export function fileColor(s: string) {
+ return color.green(s);
+}
+
+export function isDir(p: string) {
+ return statSync(p).isDirectory();
+}
diff --git a/src/app.tsx b/src/app.tsx
deleted file mode 100644
index 70b7a13..0000000
--- a/src/app.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { createEffect, createSignal, onMount, ParentComponent } from 'solid-js';
-import { render } from 'solid-panorama-runtime';
-
-function Item(props: { show: boolean }) {
- let [root, setRoot] = createSignal(null);
- let [text, setText] = createSignal('');
- let el: Panel | undefined;
-
- onMount(() => {
- $.Msg('onMount ', el);
- });
-
- createEffect(() => {
- $.Msg('effect root ', root());
- }, root);
-
- return (
-
-
-
- );
-}
-
-function HelloWorld() {
- return (
-
- Hello World!
-
-
- );
-}
-
-render(() => , $('#app'));
diff --git a/src/lowhud/lowhud.tsx b/src/lowhud/lowhud.tsx
new file mode 100644
index 0000000..5f45fb1
--- /dev/null
+++ b/src/lowhud/lowhud.tsx
@@ -0,0 +1,24 @@
+import { createEffect, createSignal, onMount, ParentComponent } from 'solid-js';
+import { render } from 'solid-panorama-runtime';
+import xml from 'babel-plugin-panorama-all-in-jsx/xml.macro';
+
+xml(
+
+
+
+
+
+
+
+
+
+
+
+
+);
+
+function App() {
+ return Hello World!;
+}
+
+render(() => , $('#app'));
diff --git a/src/shop/shop.tsx b/src/shop/shop.tsx
new file mode 100644
index 0000000..e59655f
--- /dev/null
+++ b/src/shop/shop.tsx
@@ -0,0 +1,24 @@
+import { createEffect, createSignal, onMount, ParentComponent } from 'solid-js';
+import { render } from 'solid-panorama-runtime';
+import xml from 'babel-plugin-panorama-all-in-jsx/xml.macro';
+
+xml(
+
+
+
+
+
+
+
+
+
+
+
+
+);
+
+function App() {
+ return Hello World!;
+}
+
+render(() => , $('#app'));
diff --git a/tsconfig.json b/tsconfig.json
index 68be9a1..826b3c4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,11 +1,10 @@
{
- "include": ["./*.ts"],
+ "include": ["**/*.ts"],
"compilerOptions": {
"rootDir": ".",
"noImplicitAny": true,
"experimentalDecorators": true,
"allowJs": true,
- "inlineSourceMap": true,
"moduleResolution": "Node",
"esModuleInterop": true,
"strict": true,
diff --git a/yarn.lock b/yarn.lock
index 681155a..e34c050 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10,7 +10,7 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@babel/code-frame@^7.18.6":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
@@ -898,6 +898,13 @@
"@babel/helper-validator-option" "^7.18.6"
"@babel/plugin-transform-typescript" "^7.18.6"
+"@babel/runtime@^7.12.5":
+ version "7.20.1"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9"
+ integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==
+ dependencies:
+ regenerator-runtime "^0.13.10"
+
"@babel/runtime@^7.8.4":
version "7.20.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a"
@@ -939,6 +946,15 @@
"@babel/helper-validator-identifier" "^7.19.1"
to-fast-properties "^2.0.0"
+"@babel/types@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842"
+ integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==
+ dependencies:
+ "@babel/helper-string-parser" "^7.19.4"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ to-fast-properties "^2.0.0"
+
"@cspotcode/source-map-support@^0.8.0":
version "0.8.1"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
@@ -1127,6 +1143,11 @@
dependencies:
"@babel/types" "^7.3.0"
+"@types/cli-color@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@types/cli-color/-/cli-color-2.0.2.tgz#01bd593722a12c26ec84c170ab251fe2d35856c5"
+ integrity sha512-1ErQIcmNHtNViGKTtB/TIKqMkC2RkKI2nBneCr9hSCPo9H05g9VzjlaXPW3H0vaI8zFGjJZvSav+VKDKCtKgKA==
+
"@types/estree@*", "@types/estree@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
@@ -1157,6 +1178,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.7.tgz#8ccef136f240770c1379d50100796a6952f01f94"
integrity sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
"@types/resolve@1.20.2":
version "1.20.2"
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975"
@@ -1184,13 +1210,6 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
-ansi-styles@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
@@ -1214,6 +1233,23 @@ babel-plugin-jsx-panorama-expressions@^0.1.2:
"@babel/types" "^7.16.0"
html-entities "2.3.2"
+babel-plugin-macros@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
+ integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cosmiconfig "^7.0.0"
+ resolve "^1.19.0"
+
+babel-plugin-panorama-all-in-jsx@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-panorama-all-in-jsx/-/babel-plugin-panorama-all-in-jsx-0.1.3.tgz#297273ae4afb1e465d4ab2acb6e61cde2e4ef2f1"
+ integrity sha512-VJvXlVnmBv3Vx4X/S2rMd3L9LKT5vWrjsm4CVb/WMNIbQdu7WZPNAsL/3dk5Lmz+9MjdnGquBenBXd8pltLg1g==
+ dependencies:
+ babel-plugin-macros "^3.1.0"
+ xml-js "^1.6.11"
+
babel-plugin-polyfill-corejs2@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122"
@@ -1298,19 +1334,16 @@ call-bind@^1.0.0, call-bind@^1.0.2:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
caniuse-lite@^1.0.30001400:
version "1.0.30001427"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz#d3a749f74be7ae0671fbec3a4eea18576e8ad646"
integrity sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ==
-chalk@4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
- integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
chalk@^2.0.0, chalk@^2.4.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@@ -1335,6 +1368,17 @@ chalk@^2.0.0, chalk@^2.4.1:
optionalDependencies:
fsevents "~2.3.2"
+cli-color@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879"
+ integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==
+ dependencies:
+ d "^1.0.1"
+ es5-ext "^0.10.61"
+ es6-iterator "^2.0.3"
+ memoizee "^0.4.15"
+ timers-ext "^0.1.7"
+
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@@ -1342,23 +1386,11 @@ color-convert@^1.9.0:
dependencies:
color-name "1.1.3"
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1381,6 +1413,17 @@ core-js-compat@^3.25.1:
dependencies:
browserslist "^4.21.4"
+cosmiconfig@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
+ integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
create-require@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
@@ -1402,6 +1445,14 @@ csstype@^3.1.0:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
+d@1, d@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
+ integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
+ dependencies:
+ es5-ext "^0.10.50"
+ type "^1.0.1"
+
debug@^4.1.0, debug@^4.1.1:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
@@ -1487,6 +1538,42 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
+ version "0.10.62"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
+ integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
+ dependencies:
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.3"
+ next-tick "^1.1.0"
+
+es6-iterator@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+ integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
+ dependencies:
+ d "1"
+ es5-ext "^0.10.35"
+ es6-symbol "^3.1.1"
+
+es6-symbol@^3.1.1, es6-symbol@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
+ integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
+ dependencies:
+ d "^1.0.1"
+ ext "^1.1.2"
+
+es6-weak-map@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53"
+ integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==
+ dependencies:
+ d "1"
+ es5-ext "^0.10.46"
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.1"
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -1507,6 +1594,21 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+event-emitter@^0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+ integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+ext@^1.1.2:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
+ integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
+ dependencies:
+ type "^2.7.2"
+
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -1625,11 +1727,6 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
-has-flag@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
has-property-descriptors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
@@ -1671,6 +1768,14 @@ immutable@^4.0.0:
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef"
integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -1780,6 +1885,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-promise@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
+ integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
+
is-reference@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
@@ -1848,6 +1958,11 @@ json-parse-better-errors@^1.0.1:
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
json5@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
@@ -1862,6 +1977,11 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
@@ -1877,6 +1997,13 @@ lodash.debounce@^4.0.8:
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+lru-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
+ integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==
+ dependencies:
+ es5-ext "~0.10.2"
+
magic-string@^0.26.4:
version "0.26.7"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
@@ -1896,6 +2023,20 @@ make-error@^1.1.1:
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+memoizee@^0.4.15:
+ version "0.4.15"
+ resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72"
+ integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==
+ dependencies:
+ d "^1.0.1"
+ es5-ext "^0.10.53"
+ es6-weak-map "^2.0.3"
+ event-emitter "^0.3.5"
+ is-promise "^2.2.2"
+ lru-queue "^0.1.0"
+ next-tick "^1.1.0"
+ timers-ext "^0.1.7"
+
memorystream@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
@@ -1925,6 +2066,11 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+next-tick@1, next-tick@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
+ integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
+
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
@@ -1992,6 +2138,13 @@ once@^1.3.0:
dependencies:
wrappy "1"
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -2000,6 +2153,16 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -2022,6 +2185,11 @@ path-type@^3.0.0:
dependencies:
pify "^3.0.0"
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@@ -2115,7 +2283,12 @@ regjsparser@^0.9.1:
dependencies:
jsesc "~0.5.0"
-resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1:
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -2149,6 +2322,11 @@ sass@^1.55.0:
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
+sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
"semver@2 || 3 || 4 || 5", semver@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -2197,10 +2375,10 @@ solid-js@^1.6.1:
dependencies:
csstype "^3.1.0"
-solid-panorama-runtime@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/solid-panorama-runtime/-/solid-panorama-runtime-0.1.6.tgz#34ed0358df9a60c2fc7d232af0448fcea18510e5"
- integrity sha512-140s8uYK8AdYky9o+InWm1js9Q3YmaRMUy6eoLhwYJ0YIxCu7oH5u9GtwIDQDAMX2MTqYutf5sDKTtZMna6xaA==
+solid-panorama-runtime@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/solid-panorama-runtime/-/solid-panorama-runtime-0.1.8.tgz#4487cf84e6a439cbf5522f1e5184b237a3081822"
+ integrity sha512-5gHkEhNigJfiGMuOYrCClOjpGIbUaongpmav4koxtRqUnhUK4mm1SECVOr/5OTO3EH8lR+XQdUNtp4ulZKVSyw==
dependencies:
"@moddota/panorama-types" "^1.21.0"
@@ -2279,18 +2457,19 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+timers-ext@^0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
+ integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
+ dependencies:
+ es5-ext "~0.10.46"
+ next-tick "1"
+
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -2327,6 +2506,16 @@ tslib@^2.0.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+type@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
+ integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
+
+type@^2.7.2:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
+ integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
+
typescript@~4.8.4:
version "4.8.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6"
@@ -2421,11 +2610,23 @@ xml-formatter@^2.6.1:
dependencies:
xml-parser-xo "^3.2.0"
+xml-js@^1.6.11:
+ version "1.6.11"
+ resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9"
+ integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==
+ dependencies:
+ sax "^1.2.4"
+
xml-parser-xo@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/xml-parser-xo/-/xml-parser-xo-3.2.0.tgz#c633ab55cf1976d6b03ab4a6a85045093ac32b73"
integrity sha512-8LRU6cq+d7mVsoDaMhnkkt3CTtAs4153p49fRo+HIB3I1FD1o5CeXRjRH29sQevIfVJIcPjKSsPU/+Ujhq09Rg==
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"