@lukaskj/xmonkey 2.0.3 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/build.js CHANGED
@@ -1,8 +1,182 @@
1
- import { buildXmonkeyScript } from "./esbuild/build.js";
2
- const entryFile = process.argv[2];
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from))
10
+ if (!__hasOwnProp.call(to, key) && key !== except)
11
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ }
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+
24
+ // src/esbuild/build.ts
25
+ var esbuild = __toESM(require("esbuild"));
26
+ var import_esbuild_sass_plugin = require("esbuild-sass-plugin");
27
+
28
+ // src/esbuild/plugins/xmonkey-strip-metadata-plugin.ts
29
+ var import_promises = require("fs/promises");
30
+ function xMonkeyStripMetadataPlugin() {
31
+ return {
32
+ name: "xmonkey-strip-metadata-plugin",
33
+ setup(build2) {
34
+ let foundMetadata = false;
35
+ let metadataContent = "";
36
+ build2.onLoad({ filter: /.(ts|tsx)/, namespace: "file" }, async (args) => {
37
+ if (foundMetadata)
38
+ return;
39
+ const source = await (0, import_promises.readFile)(args.path, "utf8");
40
+ const scriptMetadataIndex = source.match(/@(ConsoleScript|UiScript)\(/)?.index;
41
+ if (!scriptMetadataIndex || scriptMetadataIndex < 0)
42
+ return;
43
+ foundMetadata = true;
44
+ const regex = /\@(ConsoleScript|UiScript)\([^\)]*\)(\.[^\)]*\))?/gi;
45
+ const metadataDecoratorMatcher = source.match(regex);
46
+ if (metadataDecoratorMatcher) {
47
+ metadataContent = metadataDecoratorMatcher.at(0);
48
+ const startJsonMetadataIndex = metadataContent.indexOf("{");
49
+ const endJsonMetadataIndex = metadataContent.lastIndexOf("}");
50
+ const metadataJsonString = metadataContent.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1);
51
+ const contents = source.replace(metadataJsonString, "");
52
+ const extension = args.path.split(".").pop();
53
+ const loader = extension === "tsx" ? "tsx" : "ts";
54
+ return { contents, loader };
55
+ }
56
+ return;
57
+ });
58
+ build2.onEnd(async (result) => {
59
+ if (!build2.initialOptions?.outfile || !build2.initialOptions?.bundle) {
60
+ console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
61
+ return;
62
+ }
63
+ if (!foundMetadata) {
64
+ console.error("ScriptMetadata decorator not found.");
65
+ return;
66
+ }
67
+ if (result.errors.length) {
68
+ console.error("Error building. Script Metadata cannot be added to final script.");
69
+ return;
70
+ }
71
+ const fileContents = await (0, import_promises.readFile)(build2.initialOptions.outfile);
72
+ const scriptMetadataString = getScriptMetadataString(metadataContent);
73
+ await (0, import_promises.writeFile)(build2.initialOptions.outfile, `${scriptMetadataString}
74
+
75
+ ${fileContents.toString()}`);
76
+ });
77
+ }
78
+ };
79
+ }
80
+ function getScriptMetadataString(scriptMetadataFunctionCallString) {
81
+ scriptMetadataFunctionCallString = scriptMetadataFunctionCallString.trim();
82
+ const startJsonMetadataIndex = scriptMetadataFunctionCallString.indexOf("{");
83
+ const endJsonMetadataIndex = scriptMetadataFunctionCallString.lastIndexOf("}");
84
+ if (startJsonMetadataIndex < 0 || endJsonMetadataIndex < 0) {
85
+ return "";
86
+ }
87
+ const metadataObject = JSON.parse(
88
+ scriptMetadataFunctionCallString.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1).replaceAll("\n", "").replaceAll(",}", "}")
89
+ );
90
+ const tag = "// ==UserScript==";
91
+ const tagEnd = "// ==/UserScript==";
92
+ const headersArr = [];
93
+ const spaces = 13;
94
+ for (const key in metadataObject) {
95
+ if (Array.isArray(metadataObject[key])) {
96
+ metadataObject[key].forEach((item) => {
97
+ headersArr.push(`${key.padEnd(spaces, " ")}${item}`);
98
+ });
99
+ } else {
100
+ headersArr.push(`${key.padEnd(spaces, " ")}${metadataObject[key]}`);
101
+ }
102
+ }
103
+ const headers = headersArr.map((h) => `// ${h}`).join("\n");
104
+ return `${tag}
105
+ ${headers}
106
+ ${tagEnd}`;
107
+ }
108
+
109
+ // src/esbuild/plugins/xmonkey-styles-plugin.ts
110
+ var import_promises2 = require("fs/promises");
111
+ function xMonkeyStylesPlugin() {
112
+ return {
113
+ name: "xmonkey-styles-plugin",
114
+ setup(build2) {
115
+ build2.onEnd(async (result) => {
116
+ if (!build2.initialOptions?.outfile || !build2.initialOptions?.bundle) {
117
+ console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
118
+ return;
119
+ }
120
+ if (!result.metafile) {
121
+ console.warn("ESBuild metafile not enabled. Style bundle skipped.");
122
+ return;
123
+ }
124
+ const outputs = result.metafile.outputs;
125
+ let cssFilePath = "";
126
+ for (const file in outputs) {
127
+ const ext = file.split(".").pop();
128
+ if (ext === "css") {
129
+ cssFilePath = file;
130
+ break;
131
+ }
132
+ }
133
+ if (!cssFilePath.length) {
134
+ console.warn("CSS output not generated. Style bundle skipped.");
135
+ return;
136
+ }
137
+ const jsOutFile = build2.initialOptions.outfile;
138
+ const cssContents = (await (0, import_promises2.readFile)(cssFilePath)).toString();
139
+ (0, import_promises2.appendFile)(jsOutFile, `
140
+ GM.addStyle("\\
141
+ ${cssContents.trim()}\\
142
+ ");`);
143
+ });
144
+ }
145
+ };
146
+ }
147
+
148
+ // src/esbuild/build.ts
149
+ async function buildXmonkeyScript(scriptBasePath) {
150
+ const entryFile2 = scriptBasePath;
151
+ console.info(`Building file: '${entryFile2}'`);
152
+ await esbuild.build({
153
+ entryPoints: [entryFile2],
154
+ outfile: "dist/index.js",
155
+ bundle: true,
156
+ treeShaking: true,
157
+ minify: process.env.DEBUG ? false : true,
158
+ platform: "browser",
159
+ format: "iife",
160
+ // target: "esnext",
161
+ sourcemap: false,
162
+ keepNames: true,
163
+ logLevel: "info",
164
+ metafile: true,
165
+ plugins: [
166
+ xMonkeyStripMetadataPlugin(),
167
+ // xMonkeyDevPlugin(),
168
+ (0, import_esbuild_sass_plugin.sassPlugin)({ style: "compressed" }),
169
+ xMonkeyStylesPlugin()
170
+ ]
171
+ });
172
+ }
173
+
174
+ // src/build.ts
175
+ var entryFile = process.argv[2];
3
176
  if (!entryFile) {
4
- console.error(`No entryfile specified. Try adding the script to build in the argument.`);
5
- console.error(`Example: npm run build src/example-script.ts`);
6
- process.exit(1);
177
+ console.error(`No entryfile specified. Try adding the script to build in the argument.`);
178
+ console.error(`Example: npm run build src/example-script.ts`);
179
+ process.exit(1);
7
180
  }
8
181
  buildXmonkeyScript(entryFile);
182
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2VzYnVpbGQvYnVpbGQudHMiLCAiLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3R5bGVzLXBsdWdpbi50cyIsICIuLi9zcmMvYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHNhc3NQbHVnaW4gfSBmcm9tIFwiZXNidWlsZC1zYXNzLXBsdWdpblwiO1xuaW1wb3J0IHsgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLmpzXCI7XG5pbXBvcnQgeyB4TW9ua2V5U3R5bGVzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4uanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkWG1vbmtleVNjcmlwdChzY3JpcHRCYXNlUGF0aDogc3RyaW5nKSB7XG4gIC8vIGxldCBlbnRyeUZpbGUgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IGVudHJ5RmlsZSA9IHNjcmlwdEJhc2VQYXRoO1xuICBjb25zb2xlLmluZm8oYEJ1aWxkaW5nIGZpbGU6ICcke2VudHJ5RmlsZX0nYCk7XG5cbiAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgIG91dGZpbGU6IFwiZGlzdC9pbmRleC5qc1wiLFxuICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICB0cmVlU2hha2luZzogdHJ1ZSxcbiAgICBtaW5pZnk6IHByb2Nlc3MuZW52LkRFQlVHID8gZmFsc2UgOiB0cnVlLFxuICAgIHBsYXRmb3JtOiBcImJyb3dzZXJcIixcbiAgICBmb3JtYXQ6IFwiaWlmZVwiLFxuICAgIC8vIHRhcmdldDogXCJlc25leHRcIixcbiAgICBzb3VyY2VtYXA6IGZhbHNlLFxuICAgIGtlZXBOYW1lczogdHJ1ZSxcbiAgICBsb2dMZXZlbDogXCJpbmZvXCIsXG4gICAgbWV0YWZpbGU6IHRydWUsXG4gICAgcGx1Z2luczogW1xuICAgICAgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4oKSxcbiAgICAgIC8vIHhNb25rZXlEZXZQbHVnaW4oKSxcbiAgICAgIHNhc3NQbHVnaW4oeyBzdHlsZTogXCJjb21wcmVzc2VkXCIgfSksXG4gICAgICB4TW9ua2V5U3R5bGVzUGx1Z2luKCksXG4gICAgXSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBsZXQgZm91bmRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IG1ldGFkYXRhQ29udGVudCA9IFwiXCI7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4odHN8dHN4KS8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGZvdW5kTWV0YWRhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGNvbnN0IHNjcmlwdE1ldGFkYXRhSW5kZXggPSBzb3VyY2UubWF0Y2goL0AoQ29uc29sZVNjcmlwdHxVaVNjcmlwdClcXCgvKT8uaW5kZXg7XG5cbiAgICAgICAgaWYgKCFzY3JpcHRNZXRhZGF0YUluZGV4IHx8IHNjcmlwdE1ldGFkYXRhSW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIGZvdW5kTWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxAKENvbnNvbGVTY3JpcHR8VWlTY3JpcHQpXFwoW15cXCldKlxcKShcXC5bXlxcKV0qXFwpKT8vZ2k7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRGVjb3JhdG9yTWF0Y2hlciA9IHNvdXJjZS5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmIChtZXRhZGF0YURlY29yYXRvck1hdGNoZXIpIHtcbiAgICAgICAgICBtZXRhZGF0YUNvbnRlbnQgPSBtZXRhZGF0YURlY29yYXRvck1hdGNoZXIuYXQoMCkgYXMgc3RyaW5nO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFDb250ZW50XCIsIG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5pbmRleE9mKFwie1wiKTtcbiAgICAgICAgICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5sYXN0SW5kZXhPZihcIn1cIik7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGFKc29uU3RyaW5nID0gbWV0YWRhdGFDb250ZW50LnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gc291cmNlLnJlcGxhY2UobWV0YWRhdGFKc29uU3RyaW5nLCBcIlwiKTsgLy8gcmVtb3ZlIHRoZSBqc29uIG1ldGFkYXRhIGZyb20gc291cmNlXG4gICAgICAgICAgLy8gY29uc3QgY29udGVudHMgPSBzb3VyY2UucmVwbGFjZShyZWdleCwgXCJcIik7IC8vIHJlbW92ZSBAQ29uc29sZVNjcmlwdCh7Li4uLn0pIGZyb20gc291cmNlXG5cbiAgICAgICAgICAvLyBjb25zdCBjb250ZW50cyA9IHNvdXJjZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBhcmdzLnBhdGguc3BsaXQoXCIuXCIpLnBvcCgpO1xuXG4gICAgICAgICAgY29uc3QgbG9hZGVyID0gZXh0ZW5zaW9uID09PSBcInRzeFwiID8gXCJ0c3hcIiA6IFwidHNcIjtcblxuICAgICAgICAgIHJldHVybiB7IGNvbnRlbnRzLCBsb2FkZXIgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlNjcmlwdE1ldGFkYXRhIGRlY29yYXRvciBub3QgZm91bmQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBidWlsZGluZy4gU2NyaXB0IE1ldGFkYXRhIGNhbm5vdCBiZSBhZGRlZCB0byBmaW5hbCBzY3JpcHQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBzY3JpcHRNZXRhZGF0YVN0cmluZyA9IGdldFNjcmlwdE1ldGFkYXRhU3RyaW5nKG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlLCBgJHtzY3JpcHRNZXRhZGF0YVN0cmluZ31cXG5cXG4ke2ZpbGVDb250ZW50cy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0TWV0YWRhdGFTdHJpbmcoc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmc6IHN0cmluZykge1xuICBzY3JpcHRNZXRhZGF0YUZ1bmN0aW9uQ2FsbFN0cmluZyA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnRyaW0oKTtcbiAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmluZGV4T2YoXCJ7XCIpO1xuICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmxhc3RJbmRleE9mKFwifVwiKTtcbiAgaWYgKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXggPCAwIHx8IGVuZEpzb25NZXRhZGF0YUluZGV4IDwgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWV0YWRhdGFPYmplY3QgPSBKU09OLnBhcnNlKFxuICAgIHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nXG4gICAgICAuc3Vic3RyaW5nKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXgsIGVuZEpzb25NZXRhZGF0YUluZGV4ICsgMSlcbiAgICAgIC5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIix9XCIsIFwifVwiKSxcbiAgKTtcblxuICBjb25zdCB0YWcgPSBcIi8vID09VXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IHRhZ0VuZCA9IFwiLy8gPT0vVXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IGhlYWRlcnNBcnIgPSBbXTtcblxuICBjb25zdCBzcGFjZXMgPSAxMztcbiAgZm9yIChjb25zdCBrZXkgaW4gbWV0YWRhdGFPYmplY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YU9iamVjdFtrZXldKSkge1xuICAgICAgbWV0YWRhdGFPYmplY3Rba2V5XS5mb3JFYWNoKChpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhlYWRlcnNBcnIucHVzaChgJHtrZXkucGFkRW5kKHNwYWNlcywgXCIgXCIpfSR7aXRlbX1gKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzQXJyLnB1c2goYCR7a2V5LnBhZEVuZChzcGFjZXMsIFwiIFwiKX0ke21ldGFkYXRhT2JqZWN0W2tleV19YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IGhlYWRlcnNBcnIubWFwKChoKSA9PiBgLy8gJHtofWApLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBgJHt0YWd9XFxuJHtoZWFkZXJzfVxcbiR7dGFnRW5kfWA7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4TW9ua2V5U3R5bGVzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0eWxlcy1wbHVnaW5cIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5vdXRmaWxlIHx8ICFidWlsZC5pbml0aWFsT3B0aW9ucz8uYnVuZGxlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIldyb25nIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE9wdGlvbnMgJ2J1bmRsZScgbXVzdCBiZSBlbmFibGVkIGFuZCAnb3V0ZmlsZScgbXVzdCBiZSBzZXQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0Lm1ldGFmaWxlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiRVNCdWlsZCBtZXRhZmlsZSBub3QgZW5hYmxlZC4gU3R5bGUgYnVuZGxlIHNraXBwZWQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRwdXRzID0gcmVzdWx0Lm1ldGFmaWxlLm91dHB1dHM7XG4gICAgICAgIGxldCBjc3NGaWxlUGF0aCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBvdXRwdXRzKSB7XG4gICAgICAgICAgY29uc3QgZXh0ID0gZmlsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gICAgICAgICAgaWYgKGV4dCA9PT0gXCJjc3NcIikge1xuICAgICAgICAgICAgY3NzRmlsZVBhdGggPSBmaWxlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjc3NGaWxlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJDU1Mgb3V0cHV0IG5vdCBnZW5lcmF0ZWQuIFN0eWxlIGJ1bmRsZSBza2lwcGVkLlwiKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBqc091dEZpbGUgPSBidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlO1xuXG4gICAgICAgIGNvbnN0IGNzc0NvbnRlbnRzID0gKGF3YWl0IHJlYWRGaWxlKGNzc0ZpbGVQYXRoKSkudG9TdHJpbmcoKTtcbiAgICAgICAgYXBwZW5kRmlsZShqc091dEZpbGUsIGBcXG5HTS5hZGRTdHlsZShcIlxcXFxcXG4ke2Nzc0NvbnRlbnRzLnRyaW0oKX1cXFxcXFxuXCIpO2ApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBidWlsZFhtb25rZXlTY3JpcHQgfSBmcm9tIFwiLi9lc2J1aWxkL2J1aWxkLmpzXCI7XG5cbmNvbnN0IGVudHJ5RmlsZSA9IHByb2Nlc3MuYXJndlsyXTtcblxuaWYgKCFlbnRyeUZpbGUpIHtcbiAgY29uc29sZS5lcnJvcihgTm8gZW50cnlmaWxlIHNwZWNpZmllZC4gVHJ5IGFkZGluZyB0aGUgc2NyaXB0IHRvIGJ1aWxkIGluIHRoZSBhcmd1bWVudC5gKTtcbiAgY29uc29sZS5lcnJvcihgRXhhbXBsZTogbnBtIHJ1biBidWlsZCBzcmMvZXhhbXBsZS1zY3JpcHQudHNgKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5idWlsZFhtb25rZXlTY3JpcHQoZW50cnlGaWxlKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGNBQXlCO0FBQ3pCLGlDQUEyQjs7O0FDQTNCLHNCQUFvQztBQUU3QixTQUFTLDZCQUFxQztBQUNuRCxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNQSxRQUFPO0FBQ1gsVUFBSSxnQkFBZ0I7QUFDcEIsVUFBSSxrQkFBa0I7QUFFdEIsTUFBQUEsT0FBTSxPQUFPLEVBQUUsUUFBUSxhQUFhLFdBQVcsT0FBTyxHQUFHLE9BQU8sU0FBUztBQUN2RSxZQUFJO0FBQWU7QUFDbkIsY0FBTSxTQUFTLFVBQU0sMEJBQVMsS0FBSyxNQUFNLE1BQU07QUFDL0MsY0FBTSxzQkFBc0IsT0FBTyxNQUFNLDZCQUE2QixHQUFHO0FBRXpFLFlBQUksQ0FBQyx1QkFBdUIsc0JBQXNCO0FBQUc7QUFDckQsd0JBQWdCO0FBRWhCLGNBQU0sUUFBUTtBQUNkLGNBQU0sMkJBQTJCLE9BQU8sTUFBTSxLQUFLO0FBQ25ELFlBQUksMEJBQTBCO0FBQzVCLDRCQUFrQix5QkFBeUIsR0FBRyxDQUFDO0FBRS9DLGdCQUFNLHlCQUF5QixnQkFBZ0IsUUFBUSxHQUFHO0FBQzFELGdCQUFNLHVCQUF1QixnQkFBZ0IsWUFBWSxHQUFHO0FBQzVELGdCQUFNLHFCQUFxQixnQkFBZ0IsVUFBVSx3QkFBd0IsdUJBQXVCLENBQUM7QUFDckcsZ0JBQU0sV0FBVyxPQUFPLFFBQVEsb0JBQW9CLEVBQUU7QUFJdEQsZ0JBQU0sWUFBWSxLQUFLLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSTtBQUUzQyxnQkFBTSxTQUFTLGNBQWMsUUFBUSxRQUFRO0FBRTdDLGlCQUFPLEVBQUUsVUFBVSxPQUFPO0FBQUEsUUFDNUI7QUFFQTtBQUFBLE1BQ0YsQ0FBQztBQUVELE1BQUFBLE9BQU0sTUFBTSxPQUFPLFdBQVc7QUFDNUIsWUFBSSxDQUFDQSxPQUFNLGdCQUFnQixXQUFXLENBQUNBLE9BQU0sZ0JBQWdCLFFBQVE7QUFDbkUsa0JBQVEsTUFBTSx3RkFBd0Y7QUFDdEc7QUFBQSxRQUNGO0FBRUEsWUFBSSxDQUFDLGVBQWU7QUFDbEIsa0JBQVEsTUFBTSxxQ0FBcUM7QUFDbkQ7QUFBQSxRQUNGO0FBRUEsWUFBSSxPQUFPLE9BQU8sUUFBUTtBQUN4QixrQkFBUSxNQUFNLGtFQUFrRTtBQUNoRjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLGVBQWUsVUFBTSwwQkFBU0EsT0FBTSxlQUFlLE9BQU87QUFDaEUsY0FBTSx1QkFBdUIsd0JBQXdCLGVBQWU7QUFDcEUsa0JBQU0sMkJBQVVBLE9BQU0sZUFBZSxTQUFTLEdBQUcsb0JBQW9CO0FBQUE7QUFBQSxFQUFPLGFBQWEsU0FBUyxDQUFDLEVBQUU7QUFBQSxNQUN2RyxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsd0JBQXdCLGtDQUEwQztBQUN6RSxxQ0FBbUMsaUNBQWlDLEtBQUs7QUFDekUsUUFBTSx5QkFBeUIsaUNBQWlDLFFBQVEsR0FBRztBQUMzRSxRQUFNLHVCQUF1QixpQ0FBaUMsWUFBWSxHQUFHO0FBQzdFLE1BQUkseUJBQXlCLEtBQUssdUJBQXVCLEdBQUc7QUFDMUQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGlCQUFpQixLQUFLO0FBQUEsSUFDMUIsaUNBQ0csVUFBVSx3QkFBd0IsdUJBQXVCLENBQUMsRUFDMUQsV0FBVyxNQUFNLEVBQUUsRUFDbkIsV0FBVyxNQUFNLEdBQUc7QUFBQSxFQUN6QjtBQUVBLFFBQU0sTUFBTTtBQUNaLFFBQU0sU0FBUztBQUNmLFFBQU0sYUFBYSxDQUFDO0FBRXBCLFFBQU0sU0FBUztBQUNmLGFBQVcsT0FBTyxnQkFBZ0I7QUFDaEMsUUFBSSxNQUFNLFFBQVEsZUFBZSxHQUFHLENBQUMsR0FBRztBQUN0QyxxQkFBZSxHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQWtCO0FBQzdDLG1CQUFXLEtBQUssR0FBRyxJQUFJLE9BQU8sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUU7QUFBQSxNQUNyRCxDQUFDO0FBQUEsSUFDSCxPQUFPO0FBQ0wsaUJBQVcsS0FBSyxHQUFHLElBQUksT0FBTyxRQUFRLEdBQUcsQ0FBQyxHQUFHLGVBQWUsR0FBRyxDQUFDLEVBQUU7QUFBQSxJQUNwRTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFVBQVUsV0FBVyxJQUFJLENBQUMsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSTtBQUMxRCxTQUFPLEdBQUcsR0FBRztBQUFBLEVBQUssT0FBTztBQUFBLEVBQUssTUFBTTtBQUN0Qzs7O0FDL0ZBLElBQUFDLG1CQUFxQztBQUU5QixTQUFTLHNCQUE4QjtBQUM1QyxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNQyxRQUFPO0FBQ1gsTUFBQUEsT0FBTSxNQUFNLE9BQU8sV0FBVztBQUM1QixZQUFJLENBQUNBLE9BQU0sZ0JBQWdCLFdBQVcsQ0FBQ0EsT0FBTSxnQkFBZ0IsUUFBUTtBQUNuRSxrQkFBUSxNQUFNLHdGQUF3RjtBQUN0RztBQUFBLFFBQ0Y7QUFFQSxZQUFJLENBQUMsT0FBTyxVQUFVO0FBQ3BCLGtCQUFRLEtBQUsscURBQXFEO0FBQ2xFO0FBQUEsUUFDRjtBQUNBLGNBQU0sVUFBVSxPQUFPLFNBQVM7QUFDaEMsWUFBSSxjQUFjO0FBQ2xCLG1CQUFXLFFBQVEsU0FBUztBQUMxQixnQkFBTSxNQUFNLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSTtBQUNoQyxjQUFJLFFBQVEsT0FBTztBQUNqQiwwQkFBYztBQUNkO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFFQSxZQUFJLENBQUMsWUFBWSxRQUFRO0FBQ3ZCLGtCQUFRLEtBQUssaURBQWlEO0FBQzlEO0FBQUEsUUFDRjtBQUVBLGNBQU0sWUFBWUEsT0FBTSxlQUFlO0FBRXZDLGNBQU0sZUFBZSxVQUFNLDJCQUFTLFdBQVcsR0FBRyxTQUFTO0FBQzNELHlDQUFXLFdBQVc7QUFBQTtBQUFBLEVBQXNCLFlBQVksS0FBSyxDQUFDO0FBQUEsSUFBUztBQUFBLE1BQ3pFLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGOzs7QUZsQ0EsZUFBc0IsbUJBQW1CLGdCQUF3QjtBQUUvRCxRQUFNQyxhQUFZO0FBQ2xCLFVBQVEsS0FBSyxtQkFBbUJBLFVBQVMsR0FBRztBQUU1QyxRQUFjLGNBQU07QUFBQSxJQUNsQixhQUFhLENBQUNBLFVBQVM7QUFBQSxJQUN2QixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixhQUFhO0FBQUEsSUFDYixRQUFRLFFBQVEsSUFBSSxRQUFRLFFBQVE7QUFBQSxJQUNwQyxVQUFVO0FBQUEsSUFDVixRQUFRO0FBQUE7QUFBQSxJQUVSLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxJQUNWLFNBQVM7QUFBQSxNQUNQLDJCQUEyQjtBQUFBO0FBQUEsVUFFM0IsdUNBQVcsRUFBRSxPQUFPLGFBQWEsQ0FBQztBQUFBLE1BQ2xDLG9CQUFvQjtBQUFBLElBQ3RCO0FBQUEsRUFDRixDQUFDO0FBQ0g7OztBRzVCQSxJQUFNLFlBQVksUUFBUSxLQUFLLENBQUM7QUFFaEMsSUFBSSxDQUFDLFdBQVc7QUFDZCxVQUFRLE1BQU0seUVBQXlFO0FBQ3ZGLFVBQVEsTUFBTSw4Q0FBOEM7QUFDNUQsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFFQSxtQkFBbUIsU0FBUzsiLAogICJuYW1lcyI6IFsiYnVpbGQiLCAiaW1wb3J0X3Byb21pc2VzIiwgImJ1aWxkIiwgImVudHJ5RmlsZSJdCn0K
@@ -1,4 +1,3 @@
1
1
  import { IUiScript } from "../interfaces/ui-script.interface.js";
2
2
  import { ClassConstructor, ScriptInfo } from "../types";
3
- import "../styles/base.scss";
4
3
  export declare function UiScript<T extends IUiScript>(_metadata: ScriptInfo): (_target: ClassConstructor<T>) => void;
@@ -1,6 +1,5 @@
1
1
  import { h, render } from "preact";
2
2
  import { XMonkeyWindowComponent } from "../x-monkey-window-component.js";
3
- import "../styles/base.scss";
4
3
  export function UiScript(_metadata) {
5
4
  return function (_target) {
6
5
  const scriptObject = new _target();
@@ -0,0 +1,3 @@
1
+ @use "variables";
2
+ @use "utils";
3
+ @use "xmonkey-wrapper";
@@ -0,0 +1,74 @@
1
+ /* https://gist.github.com/jonsuh/b2347347480105874cda110b2afc53f4 */
2
+ /* Flexbox
3
+ // ================================================== */
4
+
5
+ @use "variables" as vars;
6
+ ##{vars.$xmonkey-wrapper} {
7
+ .d-f { display: flex !important; flex-direction: column; }
8
+ .d-if { display: inline-flex !important; flex-direction: column; }
9
+
10
+ /* Flex direction */
11
+ .fd-r { flex-direction: row; } /* Default */
12
+ .fd-rr { flex-direction: row-reverse; }
13
+ .fd-c { flex-direction: column; }
14
+ .fd-cr { flex-direction: column-reverse; }
15
+
16
+
17
+ /* Flex wrap */
18
+ .fw-n { flex-wrap: nowrap; } /* Default */
19
+ .fw-w { flex-wrap: wrap; }
20
+ .fw-wr { flex-wrap: wrap-reverse; }
21
+
22
+
23
+ /* Justify content */
24
+ .jc-fe { justify-content: flex-end; }
25
+ .jc-fs { justify-content: flex-start; } /* Default */
26
+ .jc-c { justify-content: center; }
27
+ .jc-sa { justify-content: space-around; }
28
+ .jc-sb { justify-content: space-between; }
29
+
30
+
31
+ /* Align items */
32
+ .ai-fs { align-items: flex-start; }
33
+ .ai-c { align-items: center; }
34
+ .ai-fe { align-items: flex-end; }
35
+ .ai-s { align-items: stretch; } /* Default */
36
+ .ai-b { align-items: baseline; }
37
+
38
+
39
+ /* Flex grow */
40
+ .fg-0 { flex-grow: 0; } /* Default */
41
+ .fg-1 { flex-grow: 1; }
42
+
43
+
44
+ /* Flex shrink */
45
+ .fs-0 { flex-shrink: 0; }
46
+ .fs-1 { flex-shrink: 1; } /* Default */
47
+
48
+
49
+ /* Flex basis */
50
+ .fb-a { flex-basis: auto; } /* Default */
51
+ .fb-0 { flex-basis: 0; }
52
+
53
+
54
+ /* Align self */
55
+ .as-a { align-self: auto; } /* Default */
56
+ .as-fs { align-self: flex-start; }
57
+ .as-c { align-self: center; }
58
+ .as-fe { align-self: flex-end; }
59
+ .as-s { align-self: stretch; }
60
+ .as-b { align-self: baseline }
61
+
62
+
63
+ .noselect {
64
+ -webkit-touch-callout: none; /* iOS Safari */
65
+ -webkit-user-select: none; /* Safari */
66
+ -khtml-user-select: none; /* Konqueror HTML */
67
+ -moz-user-select: none; /* Old versions of Firefox */
68
+ -ms-user-select: none; /* Internet Explorer/Edge */
69
+ user-select: none; /* Non-prefixed version, currently
70
+ supported by Chrome, Edge, Opera and Firefox */
71
+ }
72
+
73
+ .hidden {display: none !important;}
74
+ }
@@ -1,6 +1,7 @@
1
1
  $xmonkey-wrapper: "__xmwr";
2
2
  $xmonkey-container: "xmwr_c";
3
3
  $xmonkey-header: "xmwr-h";
4
+ $xmonkey-body: "xmwr-b";
4
5
 
5
6
 
6
7
  $font-family: Verdana;
@@ -2,17 +2,27 @@
2
2
  @use "colors";
3
3
 
4
4
  ##{vars.$xmonkey-wrapper} {
5
- width: 250px;
5
+ width: 200px;
6
6
  position: absolute;
7
7
  top: 10px;
8
8
  left: 10px;
9
- background-color: rgba(colors.$bg, 0.9);
9
+ background-color: rgba(colors.$bg, 0.99);
10
10
  border-radius: vars.$border-radius;
11
11
  z-index: 999999;
12
12
  overflow: hidden;
13
13
 
14
+ font-family: vars.$font-family;
15
+ font-size: 12px;
14
16
  * {
17
+ font-size: 12px;
18
+ font-family: vars.$font-family;
15
19
  color: colors.$white;
20
+ button {
21
+ color: colors.$black;
22
+ }
23
+ }
24
+ pre {
25
+ overflow: auto;
16
26
  }
17
27
 
18
28
  input,
@@ -39,9 +49,15 @@
39
49
  }
40
50
  }
41
51
 
52
+ .#{vars.$xmonkey-body} {
53
+ padding: 3px;
54
+ }
55
+
42
56
  .#{vars.$xmonkey-header} {
43
57
  height: 15px;
44
58
  line-height: 15px !important;
59
+ background-color: colors.$primary;
60
+ width: 100%;
45
61
  // border-top-left-radius: vars.$border-radius;
46
62
  // border-top-right-radius: vars.$border-radius;
47
63
  .xmwr-x {
@@ -5,7 +5,7 @@ export function XMonkeyWindowComponent(props) {
5
5
  function toggleMinimize() {
6
6
  setMinimized(!minimized);
7
7
  }
8
- return (_jsxs("div", { className: "xmwr_c d--f fd--c ai--c jc--sb", children: [_jsxs("div", { className: "xmwr-h w-100 m0 d--f fd--r jc--c bg-primary noselect", children: [_jsx("div", { className: "xmwr-title m0", children: props.title }), _jsx(MinimizeButton, { toggleMinimize: toggleMinimize, minimized: minimized })] }), _jsx("div", { className: `xmwr-b w-100 d--f jc--c ` + (minimized ? "b-collapsed" : ""), children: props.children })] }));
8
+ return (_jsxs("div", { className: "xmwr_c d-f fd-c ai-c jc-sb", children: [_jsxs("div", { className: "xmwr-h w-100 m0 d-f fd-r jc-c bg-primary noselect", children: [_jsx("div", { className: "xmwr-title m0", children: props.title }), _jsx(MinimizeButton, { toggleMinimize: toggleMinimize, minimized: minimized })] }), _jsx("div", { className: `xmwr-b w-100 d-f jc-c ` + (minimized ? "b-collapsed" : ""), children: props.children })] }));
9
9
  }
10
10
  function MinimizeButton({ minimized, toggleMinimize }) {
11
11
  const minimizeChar = minimized ? "+" : "-";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lukaskj/xmonkey",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "author": "lukaskj",
5
5
  "license": "ISC",
6
6
  "scripts": {
@@ -8,15 +8,16 @@
8
8
  "prebuild": "pnpm run clean",
9
9
  "prepublish": "pnpm run build",
10
10
  "build:old": "node esbuild/build.mjs",
11
- "build": "pnpm build:esm && pnpm copy-styles",
11
+ "build": "pnpm build:esm && pnpm build:bin && pnpm copy-styles",
12
12
  "build:esm": "tsc -p tsconfig.build.json",
13
13
  "build:cjs": "tsc -p tsconfig.build.json --module CommonJS --outDir dist/cjs",
14
+ "build:bin": "esbuild src/build.ts --platform=node --format=cjs --packages=external --bundle --sourcemap=inline --outfile=dist/build.js",
14
15
  "build:prod": "pnpm run lint && pnpm run build",
15
16
  "build:dev": "DEBUG=1 node esbuild/build.mjs",
16
17
  "build:debug": "DEBUG=1 node esbuild/build.mjs",
17
18
  "copy-styles": "cp -R src/styles/ dist/styles",
18
19
  "dev": "nodemon",
19
- "start": "tsx --watch ./src/index.ts",
20
+ "start": "tsx ./src/build.ts",
20
21
  "format": "prettier --write src/",
21
22
  "lint": "tsc --noEmit && eslint \"{src,apps,libs,test}/**/*.{ts,tsx}\" --fix",
22
23
  "test": "jest --config ./jest.config.js --maxWorkers=1",
@@ -70,6 +71,7 @@
70
71
  },
71
72
  "exports": {
72
73
  ".": "./dist/index.js",
74
+ "./styles/*": "./dist/styles/*",
73
75
  "./decorators": "./dist/decorators/*",
74
76
  "./interfaces": "./dist/interfaces/*"
75
77
  },
@@ -1,4 +0,0 @@
1
- import { IConsoleScript } from "@lukaskj/xmonkey";
2
- export declare class ExampleConsoleScript implements IConsoleScript {
3
- execute(): Promise<void>;
4
- }
@@ -1,28 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { sleep } from "../utils/sleep.js";
8
- import { ConsoleScript } from "@lukaskj/xmonkey";
9
- let ExampleConsoleScript = class ExampleConsoleScript {
10
- async execute() {
11
- for (let i = 0; i < 50; i++) {
12
- console.log("Executing script...", i + 1, location.href);
13
- await sleep(20);
14
- }
15
- }
16
- };
17
- ExampleConsoleScript = __decorate([
18
- ConsoleScript({
19
- "@name": "Example Console Script",
20
- "@namespace": "console-scripts",
21
- "@match": "https://en.wikipedia.org/*",
22
- "@version": "1.0",
23
- "@author": "-",
24
- "@description": "Example Console Script Description",
25
- "@grant": ["GM.addStyle"],
26
- })
27
- ], ExampleConsoleScript);
28
- export { ExampleConsoleScript };
@@ -1,6 +0,0 @@
1
- import { IUiScript } from "../interfaces/ui-script.interface.js";
2
- import "./example-scss.scss";
3
- export declare class ExampleUiScript implements IUiScript {
4
- title: string;
5
- render(): import("preact").JSX.Element;
6
- }
@@ -1,34 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "preact/jsx-runtime";
8
- import { UiScript } from "../decorators/ui-script.decorator.js";
9
- import { useState } from "preact/hooks";
10
- import "./example-scss.scss";
11
- let ExampleUiScript = class ExampleUiScript {
12
- title = "Example UI Script";
13
- render() {
14
- return _jsx(JsxUiExample, {});
15
- }
16
- };
17
- ExampleUiScript = __decorate([
18
- UiScript({
19
- "@name": "Example Console Script",
20
- "@namespace": "console-scripts",
21
- "@match": "https://en.wikipedia.org/*",
22
- "@version": "1.0",
23
- "@author": "-",
24
- "@description": "Example Console Script Description",
25
- "@grant": ["GM.addStyle"],
26
- })
27
- ], ExampleUiScript);
28
- export { ExampleUiScript };
29
- function JsxUiExample() {
30
- const [count, setCount] = useState(0);
31
- const increment = () => setCount(count + 1);
32
- const decrement = () => setCount((currentCount) => currentCount - 1);
33
- return (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Count: ", count] }), _jsxs("div", { class: "w-100 d--f jc--c", children: [_jsx("button", { class: "btn small primary", onClick: increment, children: "Increment" }), _jsx("button", { class: "btn small primary", onClick: decrement, children: "Decrement" })] })] }));
34
- }
@@ -1,4 +0,0 @@
1
- @use "variables";
2
- @use "./xmonkey-wrapper.scss";
3
- @use "./utils.css";
4
- @use "lit"
@@ -1,173 +0,0 @@
1
- @use "../variables" as vars;
2
- @use "../colors";
3
- /*
4
- * Lit v0.1
5
- * Primary Color set to: #FA0
6
- * Font set to: Nunito
7
- */
8
-
9
- $input-padding: 3px;
10
-
11
- ##{vars.$xmonkey-wrapper} {
12
- font-family: vars.$font-family;
13
- * {
14
- box-sizing: border-box;
15
- font-size: 12px;
16
- font-family: vars.$font-family;
17
- margin: 2.5px 0;
18
- }
19
- pre {
20
- overflow: auto;
21
- }
22
-
23
- .col,
24
- .row {
25
- padding: 0 3px;
26
- }
27
- .col {
28
- flex-direction: column;
29
- }
30
-
31
- .row {
32
- flex-direction: row;
33
- flex-wrap: wrap;
34
- }
35
-
36
- .w-100,
37
- .row {
38
- width: 100%;
39
- }
40
-
41
- .card:focus,
42
- .xcard:focus,
43
- hr {
44
- outline: 0;
45
- border: solid colors.$primary;
46
- }
47
-
48
- .card,
49
- .xcard,
50
- pre {
51
- padding: $input-padding;
52
- border: solid colors.$white;
53
- }
54
-
55
- a:hover,
56
- .btn:hover {
57
- opacity: 0.8;
58
- }
59
-
60
- .c {
61
- max-width: 60em;
62
- padding: $input-padding;
63
- margin: auto;
64
- font: 1em/1.6 vars.$font;
65
- }
66
-
67
- h6 {
68
- font: 100 1em vars.$font;
69
- }
70
-
71
- h5 {
72
- font: 100 1.2em vars.$font;
73
- }
74
-
75
- h3 {
76
- font: 100 2em vars.$font;
77
- }
78
-
79
- h4 {
80
- font: 100 1.5em vars.$font;
81
- }
82
-
83
- h2 {
84
- font: 100 2.2em vars.$font;
85
- }
86
-
87
- h1 {
88
- font: 100 2.5em vars.$font;
89
- }
90
-
91
- a {
92
- color: colors.$primary;
93
- text-decoration: none;
94
- }
95
-
96
- td,
97
- th {
98
- padding: $input-padding;
99
- text-align: left;
100
- border-bottom: solid colors.$white;
101
- }
102
-
103
- .btn {
104
- padding: $input-padding;
105
- text-transform: uppercase;
106
- background: colors.$white;
107
- color: colors.$black;
108
- border: solid colors.$white;
109
- font: 1em vars.$font;
110
-
111
- &.primary {
112
- color: colors.$white;
113
- background: colors.$primary;
114
- border: solid colors.$primary;
115
- }
116
-
117
- &.secondary {
118
- color: colors.$white;
119
- background: colors.$secondary;
120
- border: solid colors.$secondary;
121
- }
122
-
123
- &.success {
124
- color: colors.$white;
125
- background: colors.$success;
126
- border: solid colors.$success;
127
- }
128
-
129
- &.warning {
130
- color: colors.$white;
131
- background: colors.$warning;
132
- border: solid colors.$warning;
133
- }
134
-
135
- &.error {
136
- color: colors.$white;
137
- background: colors.$error;
138
- border: solid colors.$error;
139
- }
140
-
141
- &.info {
142
- color: colors.$white;
143
- background: colors.$info;
144
- border: solid colors.$info;
145
- }
146
- }
147
-
148
- @media (min-width: 35em) {
149
- .\31 {
150
- width: 5%;
151
- }
152
-
153
- .\33 {
154
- width: 22%;
155
- }
156
-
157
- .\34 {
158
- width: 30%;
159
- }
160
-
161
- .\35 {
162
- width: 40%;
163
- }
164
-
165
- .\32 {
166
- width: 15%;
167
- }
168
-
169
- .\36 {
170
- width: 50%;
171
- }
172
- }
173
- }
@@ -1,340 +0,0 @@
1
- @use "../variables" as vars;
2
- @use "../colors";
3
-
4
- ##{vars.$xmonkey-wrapper} {
5
- /*Colors*/
6
-
7
- .white {
8
- color: #fff;
9
- }
10
- .bg-white {
11
- background-color: #fff;
12
- }
13
- .b-white {
14
- border-color: #fff;
15
- }
16
- .gray {
17
- color: colors.$gray;
18
- }
19
- .bg-gray {
20
- background-color: colors.$gray;
21
- }
22
- .b-gray {
23
- border-color: colors.$gray;
24
- }
25
- .black {
26
- color: #000;
27
- }
28
- .bg-black {
29
- background-color: #000;
30
- }
31
- .b-black {
32
- border-color: #000;
33
- }
34
- .accent {
35
- color: colors.$secondary;
36
- }
37
- .bg-accent {
38
- background-color: colors.$secondary;
39
- }
40
- .b-accent {
41
- border-color: colors.$secondary;
42
- }
43
- .warning {
44
- color: colors.$warning;
45
- }
46
- .bg-warning {
47
- background-color: colors.$warning;
48
- }
49
- .b-warning {
50
- border-color: colors.$warning;
51
- }
52
- .error {
53
- color: colors.$error;
54
- }
55
- .bg-error {
56
- background-color: colors.$error;
57
- }
58
- .b-error {
59
- border-color: colors.$error;
60
- }
61
- .success {
62
- color: colors.$success;
63
- }
64
- .bg-success {
65
- background-color: colors.$success;
66
- }
67
- .b-success {
68
- border-color: colors.$success;
69
- }
70
- .info {
71
- color: colors.$info;
72
- }
73
- .bg-info {
74
- background-color: colors.$info;
75
- }
76
- .b-info {
77
- border-color: colors.$info;
78
- }
79
- .bg-primary {
80
- background-color: colors.$primary;
81
- }
82
- .b-primary {
83
- border-color: colors.$primary;
84
- }
85
-
86
- /*Margin+Padding*/
87
-
88
- .m0 {
89
- margin: 0;
90
- }
91
-
92
- .m1 {
93
- margin: 0.5em;
94
- }
95
-
96
- .m2 {
97
- margin: 1em;
98
- }
99
-
100
- .m3 {
101
- margin: 2em;
102
- }
103
-
104
- .m4 {
105
- margin: 4em;
106
- }
107
-
108
- .mt0 {
109
- margin-top: 0;
110
- }
111
-
112
- .mt1 {
113
- margin-top: 0.5em;
114
- }
115
-
116
- .mt2 {
117
- margin-top: 1em;
118
- }
119
-
120
- .mt3 {
121
- margin-top: 2em;
122
- }
123
-
124
- .mt4 {
125
- margin-top: 4em;
126
- }
127
-
128
- .mr0 {
129
- margin-right: 0;
130
- }
131
-
132
- .mr1 {
133
- margin-right: 0.5em;
134
- }
135
-
136
- .mr2 {
137
- margin-right: 1em;
138
- }
139
-
140
- .mr3 {
141
- margin-right: 2em;
142
- }
143
-
144
- .mr4 {
145
- margin-right: 4em;
146
- }
147
-
148
- .mb0 {
149
- margin-bottom: 0;
150
- }
151
-
152
- .mb1 {
153
- margin-bottom: 0.5em;
154
- }
155
-
156
- .mb2 {
157
- margin-bottom: 1em;
158
- }
159
-
160
- .mb3 {
161
- margin-bottom: 2em;
162
- }
163
-
164
- .mb4 {
165
- margin-bottom: 4em;
166
- }
167
-
168
- .ml0 {
169
- margin-left: 0;
170
- }
171
-
172
- .ml1 {
173
- margin-left: 0.5em;
174
- }
175
-
176
- .ml2 {
177
- margin-left: 1em;
178
- }
179
-
180
- .ml3 {
181
- margin-left: 2em;
182
- }
183
-
184
- .ml4 {
185
- margin-left: 4em;
186
- }
187
-
188
- .p0 {
189
- padding: 0;
190
- }
191
-
192
- .p1 {
193
- padding: 0.5em;
194
- }
195
-
196
- .p2 {
197
- padding: 1em;
198
- }
199
-
200
- .p3 {
201
- padding: 2em;
202
- }
203
-
204
- .p4 {
205
- padding: 4em;
206
- }
207
-
208
- .pv0 {
209
- padding-top: 0;
210
- padding-bottom: 0;
211
- }
212
-
213
- .pv1 {
214
- padding-top: 0.5em;
215
- padding-bottom: 0.5em;
216
- }
217
-
218
- .pv2 {
219
- padding-top: 1em;
220
- padding-bottom: 1em;
221
- }
222
-
223
- .pv3 {
224
- padding-top: 2em;
225
- padding-bottom: 2em;
226
- }
227
-
228
- .pv4 {
229
- padding-top: 4em;
230
- padding-bottom: 4em;
231
- }
232
-
233
- .ph0 {
234
- padding-right: 0;
235
- padding-left: 0;
236
- }
237
-
238
- .ph1 {
239
- padding-right: 0.5em;
240
- padding-left: 0.5em;
241
- }
242
-
243
- .ph2 {
244
- padding-right: 1em;
245
- padding-left: 1em;
246
- }
247
-
248
- .ph3 {
249
- padding-right: 2em;
250
- padding-left: 2em;
251
- }
252
-
253
- .ph4 {
254
- padding-right: 4em;
255
- padding-left: 4em;
256
- }
257
-
258
- /*Misc Utilities*/
259
- .gapless {
260
- border-spacing: 0;
261
- }
262
- .vc {
263
- position: relative;
264
- top: 40%;
265
- transform: perspective(1px) translateY(-45%);
266
- }
267
- .pill {
268
- border-radius: 9999px;
269
- }
270
- .rounded {
271
- border-radius: 4px;
272
- }
273
- .tc {
274
- text-align: center;
275
- }
276
- .mega {
277
- font-size: 3.5em;
278
- }
279
- .large {
280
- font-size: 1.5em;
281
- }
282
- .small {
283
- font-size: 0.8em;
284
- }
285
- .caps {
286
- text-transform: uppercase;
287
- }
288
- .tracked {
289
- letter-spacing: 0.1em;
290
- }
291
- .vh-100 {
292
- height: 100vh;
293
- }
294
-
295
- .inline {
296
- display: inline-block;
297
- }
298
- .bold {
299
- font-weight: 700;
300
- }
301
- .normal {
302
- font-weight: 400;
303
- }
304
- .light {
305
- font-weight: 300;
306
- }
307
- .dim {
308
- opacity: 1;
309
- transition: opacity 0.15s ease-in;
310
- }
311
-
312
- .dim:hover,
313
- .dim:focus {
314
- opacity: 0.5;
315
- transition: opacity 0.15s ease-in;
316
- }
317
- .ta-center {
318
- text-align: center;
319
- }
320
- .ta-left {
321
- text-align: left;
322
- }
323
- .ta-right {
324
- text-align: right;
325
- }
326
-
327
- .w-10 {width: 10% !important;}
328
- .w-20 {width: 20% !important;}
329
- .w-30 {width: 30% !important;}
330
- .w-40 {width: 40% !important;}
331
- .w-48 {width: 48% !important;}
332
- .w-50 {width: 50% !important;}
333
- .w-60 {width: 60% !important;}
334
- .w-70 {width: 70% !important;}
335
- .w-80 {width: 80% !important;}
336
- .w-90 {width: 90% !important;}
337
- .w-100 {width: 100% !important;}
338
- .fg-0 {flex-grow: 0!important;}
339
- .fg-1 {flex-grow: 1!important;}
340
- }
@@ -1,2 +0,0 @@
1
- @use "base";
2
- @use "util";
@@ -1,70 +0,0 @@
1
- /* https://gist.github.com/jonsuh/b2347347480105874cda110b2afc53f4 */
2
- /* Flexbox
3
- // ================================================== */
4
- .d--f { display: flex !important; flex-direction: column; }
5
- .d--if { display: inline-flex !important; flex-direction: column; }
6
-
7
- /* Flex direction */
8
- .fd--r { flex-direction: row; } /* Default */
9
- .fd--rr { flex-direction: row-reverse; }
10
- .fd--c { flex-direction: column; }
11
- .fd--cr { flex-direction: column-reverse; }
12
-
13
-
14
- /* Flex wrap */
15
- .fw--n { flex-wrap: nowrap; } /* Default */
16
- .fw--w { flex-wrap: wrap; }
17
- .fw--wr { flex-wrap: wrap-reverse; }
18
-
19
-
20
- /* Justify content */
21
- .jc--fe { justify-content: flex-end; }
22
- .jc--fs { justify-content: flex-start; } /* Default */
23
- .jc--c { justify-content: center; }
24
- .jc--sa { justify-content: space-around; }
25
- .jc--sb { justify-content: space-between; }
26
-
27
-
28
- /* Align items */
29
- .ai--fs { align-items: flex-start; }
30
- .ai--c { align-items: center; }
31
- .ai--fe { align-items: flex-end; }
32
- .ai--s { align-items: stretch; } /* Default */
33
- .ai--b { align-items: baseline; }
34
-
35
-
36
- /* Flex grow */
37
- .fg--0 { flex-grow: 0; } /* Default */
38
- .fg--1 { flex-grow: 1; }
39
-
40
-
41
- /* Flex shrink */
42
- .fs--0 { flex-shrink: 0; }
43
- .fs--1 { flex-shrink: 1; } /* Default */
44
-
45
-
46
- /* Flex basis */
47
- .fb--a { flex-basis: auto; } /* Default */
48
- .fb--0 { flex-basis: 0; }
49
-
50
-
51
- /* Align self */
52
- .as--a { align-self: auto; } /* Default */
53
- .as--fs { align-self: flex-start; }
54
- .as--c { align-self: center; }
55
- .as--fe { align-self: flex-end; }
56
- .as--s { align-self: stretch; }
57
- .as--b { align-self: baseline }
58
-
59
-
60
- .noselect {
61
- -webkit-touch-callout: none; /* iOS Safari */
62
- -webkit-user-select: none; /* Safari */
63
- -khtml-user-select: none; /* Konqueror HTML */
64
- -moz-user-select: none; /* Old versions of Firefox */
65
- -ms-user-select: none; /* Internet Explorer/Edge */
66
- user-select: none; /* Non-prefixed version, currently
67
- supported by Chrome, Edge, Opera and Firefox */
68
- }
69
-
70
- .hidden {display: none !important;}