@lukaskj/xmonkey 2.0.4 → 2.0.6

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.
Files changed (37) hide show
  1. package/dist/build.js +23 -3
  2. package/dist/console-script/console-script.decorator.d.ts +3 -0
  3. package/dist/console-script/index.d.ts +2 -0
  4. package/dist/console-script/index.js +2 -0
  5. package/dist/esbuild/build.js +2 -0
  6. package/dist/esbuild/plugins/xmonkey-output-stats-plugin.d.ts +2 -0
  7. package/dist/esbuild/plugins/xmonkey-output-stats-plugin.js +17 -0
  8. package/dist/esbuild/plugins/xmonkey-styles-plugin.js +1 -1
  9. package/dist/index.d.ts +0 -4
  10. package/dist/index.js +0 -4
  11. package/dist/styles/_base.scss +3 -0
  12. package/dist/styles/_utils.scss +74 -0
  13. package/dist/styles/_variables.scss +1 -0
  14. package/dist/styles/{xmonkey-wrapper.scss → _xmonkey-wrapper.scss} +18 -2
  15. package/dist/types.d.ts +3 -0
  16. package/dist/ui-script/index.d.ts +2 -0
  17. package/dist/ui-script/index.js +2 -0
  18. package/dist/ui-script/ui-script.decorator.d.ts +3 -0
  19. package/dist/{decorators → ui-script}/ui-script.decorator.js +0 -1
  20. package/dist/x-monkey-window-component.js +1 -1
  21. package/package.json +11 -5
  22. package/dist/decorators/console-script.decorator.d.ts +0 -3
  23. package/dist/decorators/ui-script.decorator.d.ts +0 -4
  24. package/dist/example-scripts/example-console-script.d.ts +0 -4
  25. package/dist/example-scripts/example-console-script.js +0 -28
  26. package/dist/example-scripts/example-ui-script.d.ts +0 -6
  27. package/dist/example-scripts/example-ui-script.js +0 -34
  28. package/dist/styles/base.scss +0 -4
  29. package/dist/styles/lit/_base.scss +0 -173
  30. package/dist/styles/lit/_util.scss +0 -340
  31. package/dist/styles/lit/index.scss +0 -2
  32. package/dist/styles/utils.css +0 -70
  33. /package/dist/{decorators → console-script}/console-script.decorator.js +0 -0
  34. /package/dist/{interfaces → console-script}/console-script.interface.d.ts +0 -0
  35. /package/dist/{interfaces → console-script}/console-script.interface.js +0 -0
  36. /package/dist/{interfaces → ui-script}/ui-script.interface.d.ts +0 -0
  37. /package/dist/{interfaces → ui-script}/ui-script.interface.js +0 -0
package/dist/build.js CHANGED
@@ -131,7 +131,7 @@ function xMonkeyStylesPlugin() {
131
131
  }
132
132
  }
133
133
  if (!cssFilePath.length) {
134
- console.warn("CSS output not generated. Style bundle skipped.");
134
+ console.warn("[-] StyleSheet output skipped.");
135
135
  return;
136
136
  }
137
137
  const jsOutFile = build2.initialOptions.outfile;
@@ -145,6 +145,25 @@ ${cssContents.trim()}\\
145
145
  };
146
146
  }
147
147
 
148
+ // src/esbuild/plugins/xmonkey-output-stats-plugin.ts
149
+ function xMonkeyOutputStatsPlugin() {
150
+ return {
151
+ name: "xmonkey-output-stats-plugin",
152
+ setup(build2) {
153
+ build2.onEnd(async (result) => {
154
+ const outputs = result.metafile?.outputs;
155
+ const outputTotal = Object.keys(outputs).reduce((prev, cur) => prev + outputs[cur].bytes, 0);
156
+ const bundleTotal = humanFileSize(outputTotal);
157
+ console.log("[*] Bundle total:", bundleTotal);
158
+ });
159
+ }
160
+ };
161
+ }
162
+ function humanFileSize(size) {
163
+ const i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024));
164
+ return (size / Math.pow(1024, i)).toFixed(1) + "" + ["b", "kB", "MB", "GB", "TB"][i];
165
+ }
166
+
148
167
  // src/esbuild/build.ts
149
168
  async function buildXmonkeyScript(scriptBasePath) {
150
169
  const entryFile2 = scriptBasePath;
@@ -166,7 +185,8 @@ async function buildXmonkeyScript(scriptBasePath) {
166
185
  xMonkeyStripMetadataPlugin(),
167
186
  // xMonkeyDevPlugin(),
168
187
  (0, import_esbuild_sass_plugin.sassPlugin)({ style: "compressed" }),
169
- xMonkeyStylesPlugin()
188
+ xMonkeyStylesPlugin(),
189
+ xMonkeyOutputStatsPlugin()
170
190
  ]
171
191
  });
172
192
  }
@@ -179,4 +199,4 @@ if (!entryFile) {
179
199
  process.exit(1);
180
200
  }
181
201
  buildXmonkeyScript(entryFile);
182
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2VzYnVpbGQvYnVpbGQudHMiLCAiLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3R5bGVzLXBsdWdpbi50cyIsICIuLi9zcmMvYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHNhc3NQbHVnaW4gfSBmcm9tIFwiZXNidWlsZC1zYXNzLXBsdWdpblwiO1xuaW1wb3J0IHsgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLmpzXCI7XG5pbXBvcnQgeyB4TW9ua2V5U3R5bGVzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4uanNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkWG1vbmtleVNjcmlwdChzY3JpcHRCYXNlUGF0aDogc3RyaW5nKSB7XG4gIC8vIGxldCBlbnRyeUZpbGUgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IGVudHJ5RmlsZSA9IHNjcmlwdEJhc2VQYXRoO1xuICBjb25zb2xlLmluZm8oYEJ1aWxkaW5nIGZpbGU6ICcke2VudHJ5RmlsZX0nYCk7XG5cbiAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgIG91dGZpbGU6IFwiZGlzdC9pbmRleC5qc1wiLFxuICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICB0cmVlU2hha2luZzogdHJ1ZSxcbiAgICBtaW5pZnk6IHByb2Nlc3MuZW52LkRFQlVHID8gZmFsc2UgOiB0cnVlLFxuICAgIHBsYXRmb3JtOiBcImJyb3dzZXJcIixcbiAgICBmb3JtYXQ6IFwiaWlmZVwiLFxuICAgIC8vIHRhcmdldDogXCJlc25leHRcIixcbiAgICBzb3VyY2VtYXA6IGZhbHNlLFxuICAgIGtlZXBOYW1lczogdHJ1ZSxcbiAgICBsb2dMZXZlbDogXCJpbmZvXCIsXG4gICAgbWV0YWZpbGU6IHRydWUsXG4gICAgcGx1Z2luczogW1xuICAgICAgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4oKSxcbiAgICAgIC8vIHhNb25rZXlEZXZQbHVnaW4oKSxcbiAgICAgIHNhc3NQbHVnaW4oeyBzdHlsZTogXCJjb21wcmVzc2VkXCIgfSksXG4gICAgICB4TW9ua2V5U3R5bGVzUGx1Z2luKCksXG4gICAgXSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBsZXQgZm91bmRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IG1ldGFkYXRhQ29udGVudCA9IFwiXCI7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4odHN8dHN4KS8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGZvdW5kTWV0YWRhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGNvbnN0IHNjcmlwdE1ldGFkYXRhSW5kZXggPSBzb3VyY2UubWF0Y2goL0AoQ29uc29sZVNjcmlwdHxVaVNjcmlwdClcXCgvKT8uaW5kZXg7XG5cbiAgICAgICAgaWYgKCFzY3JpcHRNZXRhZGF0YUluZGV4IHx8IHNjcmlwdE1ldGFkYXRhSW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIGZvdW5kTWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxAKENvbnNvbGVTY3JpcHR8VWlTY3JpcHQpXFwoW15cXCldKlxcKShcXC5bXlxcKV0qXFwpKT8vZ2k7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRGVjb3JhdG9yTWF0Y2hlciA9IHNvdXJjZS5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmIChtZXRhZGF0YURlY29yYXRvck1hdGNoZXIpIHtcbiAgICAgICAgICBtZXRhZGF0YUNvbnRlbnQgPSBtZXRhZGF0YURlY29yYXRvck1hdGNoZXIuYXQoMCkgYXMgc3RyaW5nO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFDb250ZW50XCIsIG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5pbmRleE9mKFwie1wiKTtcbiAgICAgICAgICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5sYXN0SW5kZXhPZihcIn1cIik7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGFKc29uU3RyaW5nID0gbWV0YWRhdGFDb250ZW50LnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gc291cmNlLnJlcGxhY2UobWV0YWRhdGFKc29uU3RyaW5nLCBcIlwiKTsgLy8gcmVtb3ZlIHRoZSBqc29uIG1ldGFkYXRhIGZyb20gc291cmNlXG4gICAgICAgICAgLy8gY29uc3QgY29udGVudHMgPSBzb3VyY2UucmVwbGFjZShyZWdleCwgXCJcIik7IC8vIHJlbW92ZSBAQ29uc29sZVNjcmlwdCh7Li4uLn0pIGZyb20gc291cmNlXG5cbiAgICAgICAgICAvLyBjb25zdCBjb250ZW50cyA9IHNvdXJjZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBhcmdzLnBhdGguc3BsaXQoXCIuXCIpLnBvcCgpO1xuXG4gICAgICAgICAgY29uc3QgbG9hZGVyID0gZXh0ZW5zaW9uID09PSBcInRzeFwiID8gXCJ0c3hcIiA6IFwidHNcIjtcblxuICAgICAgICAgIHJldHVybiB7IGNvbnRlbnRzLCBsb2FkZXIgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlNjcmlwdE1ldGFkYXRhIGRlY29yYXRvciBub3QgZm91bmQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBidWlsZGluZy4gU2NyaXB0IE1ldGFkYXRhIGNhbm5vdCBiZSBhZGRlZCB0byBmaW5hbCBzY3JpcHQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBzY3JpcHRNZXRhZGF0YVN0cmluZyA9IGdldFNjcmlwdE1ldGFkYXRhU3RyaW5nKG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlLCBgJHtzY3JpcHRNZXRhZGF0YVN0cmluZ31cXG5cXG4ke2ZpbGVDb250ZW50cy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0TWV0YWRhdGFTdHJpbmcoc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmc6IHN0cmluZykge1xuICBzY3JpcHRNZXRhZGF0YUZ1bmN0aW9uQ2FsbFN0cmluZyA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnRyaW0oKTtcbiAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmluZGV4T2YoXCJ7XCIpO1xuICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmxhc3RJbmRleE9mKFwifVwiKTtcbiAgaWYgKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXggPCAwIHx8IGVuZEpzb25NZXRhZGF0YUluZGV4IDwgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWV0YWRhdGFPYmplY3QgPSBKU09OLnBhcnNlKFxuICAgIHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nXG4gICAgICAuc3Vic3RyaW5nKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXgsIGVuZEpzb25NZXRhZGF0YUluZGV4ICsgMSlcbiAgICAgIC5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIix9XCIsIFwifVwiKSxcbiAgKTtcblxuICBjb25zdCB0YWcgPSBcIi8vID09VXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IHRhZ0VuZCA9IFwiLy8gPT0vVXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IGhlYWRlcnNBcnIgPSBbXTtcblxuICBjb25zdCBzcGFjZXMgPSAxMztcbiAgZm9yIChjb25zdCBrZXkgaW4gbWV0YWRhdGFPYmplY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YU9iamVjdFtrZXldKSkge1xuICAgICAgbWV0YWRhdGFPYmplY3Rba2V5XS5mb3JFYWNoKChpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhlYWRlcnNBcnIucHVzaChgJHtrZXkucGFkRW5kKHNwYWNlcywgXCIgXCIpfSR7aXRlbX1gKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzQXJyLnB1c2goYCR7a2V5LnBhZEVuZChzcGFjZXMsIFwiIFwiKX0ke21ldGFkYXRhT2JqZWN0W2tleV19YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IGhlYWRlcnNBcnIubWFwKChoKSA9PiBgLy8gJHtofWApLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBgJHt0YWd9XFxuJHtoZWFkZXJzfVxcbiR7dGFnRW5kfWA7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4TW9ua2V5U3R5bGVzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0eWxlcy1wbHVnaW5cIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5vdXRmaWxlIHx8ICFidWlsZC5pbml0aWFsT3B0aW9ucz8uYnVuZGxlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIldyb25nIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE9wdGlvbnMgJ2J1bmRsZScgbXVzdCBiZSBlbmFibGVkIGFuZCAnb3V0ZmlsZScgbXVzdCBiZSBzZXQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0Lm1ldGFmaWxlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiRVNCdWlsZCBtZXRhZmlsZSBub3QgZW5hYmxlZC4gU3R5bGUgYnVuZGxlIHNraXBwZWQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRwdXRzID0gcmVzdWx0Lm1ldGFmaWxlLm91dHB1dHM7XG4gICAgICAgIGxldCBjc3NGaWxlUGF0aCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBvdXRwdXRzKSB7XG4gICAgICAgICAgY29uc3QgZXh0ID0gZmlsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gICAgICAgICAgaWYgKGV4dCA9PT0gXCJjc3NcIikge1xuICAgICAgICAgICAgY3NzRmlsZVBhdGggPSBmaWxlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjc3NGaWxlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJDU1Mgb3V0cHV0IG5vdCBnZW5lcmF0ZWQuIFN0eWxlIGJ1bmRsZSBza2lwcGVkLlwiKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBqc091dEZpbGUgPSBidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlO1xuXG4gICAgICAgIGNvbnN0IGNzc0NvbnRlbnRzID0gKGF3YWl0IHJlYWRGaWxlKGNzc0ZpbGVQYXRoKSkudG9TdHJpbmcoKTtcbiAgICAgICAgYXBwZW5kRmlsZShqc091dEZpbGUsIGBcXG5HTS5hZGRTdHlsZShcIlxcXFxcXG4ke2Nzc0NvbnRlbnRzLnRyaW0oKX1cXFxcXFxuXCIpO2ApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBidWlsZFhtb25rZXlTY3JpcHQgfSBmcm9tIFwiLi9lc2J1aWxkL2J1aWxkLmpzXCI7XG5cbmNvbnN0IGVudHJ5RmlsZSA9IHByb2Nlc3MuYXJndlsyXTtcblxuaWYgKCFlbnRyeUZpbGUpIHtcbiAgY29uc29sZS5lcnJvcihgTm8gZW50cnlmaWxlIHNwZWNpZmllZC4gVHJ5IGFkZGluZyB0aGUgc2NyaXB0IHRvIGJ1aWxkIGluIHRoZSBhcmd1bWVudC5gKTtcbiAgY29uc29sZS5lcnJvcihgRXhhbXBsZTogbnBtIHJ1biBidWlsZCBzcmMvZXhhbXBsZS1zY3JpcHQudHNgKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5idWlsZFhtb25rZXlTY3JpcHQoZW50cnlGaWxlKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGNBQXlCO0FBQ3pCLGlDQUEyQjs7O0FDQTNCLHNCQUFvQztBQUU3QixTQUFTLDZCQUFxQztBQUNuRCxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNQSxRQUFPO0FBQ1gsVUFBSSxnQkFBZ0I7QUFDcEIsVUFBSSxrQkFBa0I7QUFFdEIsTUFBQUEsT0FBTSxPQUFPLEVBQUUsUUFBUSxhQUFhLFdBQVcsT0FBTyxHQUFHLE9BQU8sU0FBUztBQUN2RSxZQUFJO0FBQWU7QUFDbkIsY0FBTSxTQUFTLFVBQU0sMEJBQVMsS0FBSyxNQUFNLE1BQU07QUFDL0MsY0FBTSxzQkFBc0IsT0FBTyxNQUFNLDZCQUE2QixHQUFHO0FBRXpFLFlBQUksQ0FBQyx1QkFBdUIsc0JBQXNCO0FBQUc7QUFDckQsd0JBQWdCO0FBRWhCLGNBQU0sUUFBUTtBQUNkLGNBQU0sMkJBQTJCLE9BQU8sTUFBTSxLQUFLO0FBQ25ELFlBQUksMEJBQTBCO0FBQzVCLDRCQUFrQix5QkFB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
202
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2VzYnVpbGQvYnVpbGQudHMiLCAiLi4vc3JjL2VzYnVpbGQvcGx1Z2lucy94bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktc3R5bGVzLXBsdWdpbi50cyIsICIuLi9zcmMvZXNidWlsZC9wbHVnaW5zL3htb25rZXktb3V0cHV0LXN0YXRzLXBsdWdpbi50cyIsICIuLi9zcmMvYnVpbGQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHNhc3NQbHVnaW4gfSBmcm9tIFwiZXNidWlsZC1zYXNzLXBsdWdpblwiO1xuaW1wb3J0IHsgeE1vbmtleVN0cmlwTWV0YWRhdGFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3htb25rZXktc3RyaXAtbWV0YWRhdGEtcGx1Z2luLmpzXCI7XG5pbXBvcnQgeyB4TW9ua2V5U3R5bGVzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bW9ua2V5LXN0eWxlcy1wbHVnaW4uanNcIjtcbmltcG9ydCB7IHhNb25rZXlPdXRwdXRTdGF0c1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMveG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFhtb25rZXlTY3JpcHQoc2NyaXB0QmFzZVBhdGg6IHN0cmluZykge1xuICAvLyBsZXQgZW50cnlGaWxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuICBjb25zdCBlbnRyeUZpbGUgPSBzY3JpcHRCYXNlUGF0aDtcbiAgY29uc29sZS5pbmZvKGBCdWlsZGluZyBmaWxlOiAnJHtlbnRyeUZpbGV9J2ApO1xuXG4gIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICBvdXRmaWxlOiBcImRpc3QvaW5kZXguanNcIixcbiAgICBidW5kbGU6IHRydWUsXG4gICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgbWluaWZ5OiBwcm9jZXNzLmVudi5ERUJVRyA/IGZhbHNlIDogdHJ1ZSxcbiAgICBwbGF0Zm9ybTogXCJicm93c2VyXCIsXG4gICAgZm9ybWF0OiBcImlpZmVcIixcbiAgICAvLyB0YXJnZXQ6IFwiZXNuZXh0XCIsXG4gICAgc291cmNlbWFwOiBmYWxzZSxcbiAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgbG9nTGV2ZWw6IFwiaW5mb1wiLFxuICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgIHBsdWdpbnM6IFtcbiAgICAgIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCksXG4gICAgICAvLyB4TW9ua2V5RGV2UGx1Z2luKCksXG4gICAgICBzYXNzUGx1Z2luKHsgc3R5bGU6IFwiY29tcHJlc3NlZFwiIH0pLFxuICAgICAgeE1vbmtleVN0eWxlc1BsdWdpbigpLFxuICAgICAgeE1vbmtleU91dHB1dFN0YXRzUGx1Z2luKCksXG4gICAgXSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlTdHJpcE1ldGFkYXRhUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0cmlwLW1ldGFkYXRhLXBsdWdpblwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBsZXQgZm91bmRNZXRhZGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IG1ldGFkYXRhQ29udGVudCA9IFwiXCI7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4odHN8dHN4KS8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGZvdW5kTWV0YWRhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGNvbnN0IHNjcmlwdE1ldGFkYXRhSW5kZXggPSBzb3VyY2UubWF0Y2goL0AoQ29uc29sZVNjcmlwdHxVaVNjcmlwdClcXCgvKT8uaW5kZXg7XG5cbiAgICAgICAgaWYgKCFzY3JpcHRNZXRhZGF0YUluZGV4IHx8IHNjcmlwdE1ldGFkYXRhSW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIGZvdW5kTWV0YWRhdGEgPSB0cnVlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxAKENvbnNvbGVTY3JpcHR8VWlTY3JpcHQpXFwoW15cXCldKlxcKShcXC5bXlxcKV0qXFwpKT8vZ2k7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRGVjb3JhdG9yTWF0Y2hlciA9IHNvdXJjZS5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmIChtZXRhZGF0YURlY29yYXRvck1hdGNoZXIpIHtcbiAgICAgICAgICBtZXRhZGF0YUNvbnRlbnQgPSBtZXRhZGF0YURlY29yYXRvck1hdGNoZXIuYXQoMCkgYXMgc3RyaW5nO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFDb250ZW50XCIsIG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5pbmRleE9mKFwie1wiKTtcbiAgICAgICAgICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IG1ldGFkYXRhQ29udGVudC5sYXN0SW5kZXhPZihcIn1cIik7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGFKc29uU3RyaW5nID0gbWV0YWRhdGFDb250ZW50LnN1YnN0cmluZyhzdGFydEpzb25NZXRhZGF0YUluZGV4LCBlbmRKc29uTWV0YWRhdGFJbmRleCArIDEpO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gc291cmNlLnJlcGxhY2UobWV0YWRhdGFKc29uU3RyaW5nLCBcIlwiKTsgLy8gcmVtb3ZlIHRoZSBqc29uIG1ldGFkYXRhIGZyb20gc291cmNlXG4gICAgICAgICAgLy8gY29uc3QgY29udGVudHMgPSBzb3VyY2UucmVwbGFjZShyZWdleCwgXCJcIik7IC8vIHJlbW92ZSBAQ29uc29sZVNjcmlwdCh7Li4uLn0pIGZyb20gc291cmNlXG5cbiAgICAgICAgICAvLyBjb25zdCBjb250ZW50cyA9IHNvdXJjZS5yZXBsYWNlKHJlZ2V4LCBcIlwiKTtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBhcmdzLnBhdGguc3BsaXQoXCIuXCIpLnBvcCgpO1xuXG4gICAgICAgICAgY29uc3QgbG9hZGVyID0gZXh0ZW5zaW9uID09PSBcInRzeFwiID8gXCJ0c3hcIiA6IFwidHNcIjtcblxuICAgICAgICAgIHJldHVybiB7IGNvbnRlbnRzLCBsb2FkZXIgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkVuZChhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghYnVpbGQuaW5pdGlhbE9wdGlvbnM/Lm91dGZpbGUgfHwgIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5idW5kbGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiV3JvbmcgYnVpbGQgY29uZmlndXJhdGlvbi4gT3B0aW9ucyAnYnVuZGxlJyBtdXN0IGJlIGVuYWJsZWQgYW5kICdvdXRmaWxlJyBtdXN0IGJlIHNldC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlNjcmlwdE1ldGFkYXRhIGRlY29yYXRvciBub3QgZm91bmQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBidWlsZGluZy4gU2NyaXB0IE1ldGFkYXRhIGNhbm5vdCBiZSBhZGRlZCB0byBmaW5hbCBzY3JpcHQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBzY3JpcHRNZXRhZGF0YVN0cmluZyA9IGdldFNjcmlwdE1ldGFkYXRhU3RyaW5nKG1ldGFkYXRhQ29udGVudCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRmaWxlLCBgJHtzY3JpcHRNZXRhZGF0YVN0cmluZ31cXG5cXG4ke2ZpbGVDb250ZW50cy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0TWV0YWRhdGFTdHJpbmcoc2NyaXB0TWV0YWRhdGFGdW5jdGlvbkNhbGxTdHJpbmc6IHN0cmluZykge1xuICBzY3JpcHRNZXRhZGF0YUZ1bmN0aW9uQ2FsbFN0cmluZyA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLnRyaW0oKTtcbiAgY29uc3Qgc3RhcnRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmluZGV4T2YoXCJ7XCIpO1xuICBjb25zdCBlbmRKc29uTWV0YWRhdGFJbmRleCA9IHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nLmxhc3RJbmRleE9mKFwifVwiKTtcbiAgaWYgKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXggPCAwIHx8IGVuZEpzb25NZXRhZGF0YUluZGV4IDwgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWV0YWRhdGFPYmplY3QgPSBKU09OLnBhcnNlKFxuICAgIHNjcmlwdE1ldGFkYXRhRnVuY3Rpb25DYWxsU3RyaW5nXG4gICAgICAuc3Vic3RyaW5nKHN0YXJ0SnNvbk1ldGFkYXRhSW5kZXgsIGVuZEpzb25NZXRhZGF0YUluZGV4ICsgMSlcbiAgICAgIC5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIix9XCIsIFwifVwiKSxcbiAgKTtcblxuICBjb25zdCB0YWcgPSBcIi8vID09VXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IHRhZ0VuZCA9IFwiLy8gPT0vVXNlclNjcmlwdD09XCI7XG4gIGNvbnN0IGhlYWRlcnNBcnIgPSBbXTtcblxuICBjb25zdCBzcGFjZXMgPSAxMztcbiAgZm9yIChjb25zdCBrZXkgaW4gbWV0YWRhdGFPYmplY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YU9iamVjdFtrZXldKSkge1xuICAgICAgbWV0YWRhdGFPYmplY3Rba2V5XS5mb3JFYWNoKChpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhlYWRlcnNBcnIucHVzaChgJHtrZXkucGFkRW5kKHNwYWNlcywgXCIgXCIpfSR7aXRlbX1gKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzQXJyLnB1c2goYCR7a2V5LnBhZEVuZChzcGFjZXMsIFwiIFwiKX0ke21ldGFkYXRhT2JqZWN0W2tleV19YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IGhlYWRlcnNBcnIubWFwKChoKSA9PiBgLy8gJHtofWApLmpvaW4oXCJcXG5cIik7XG4gIHJldHVybiBgJHt0YWd9XFxuJHtoZWFkZXJzfVxcbiR7dGFnRW5kfWA7XG59XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4TW9ua2V5U3R5bGVzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ4bW9ua2V5LXN0eWxlcy1wbHVnaW5cIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIWJ1aWxkLmluaXRpYWxPcHRpb25zPy5vdXRmaWxlIHx8ICFidWlsZC5pbml0aWFsT3B0aW9ucz8uYnVuZGxlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIldyb25nIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE9wdGlvbnMgJ2J1bmRsZScgbXVzdCBiZSBlbmFibGVkIGFuZCAnb3V0ZmlsZScgbXVzdCBiZSBzZXQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0Lm1ldGFmaWxlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiRVNCdWlsZCBtZXRhZmlsZSBub3QgZW5hYmxlZC4gU3R5bGUgYnVuZGxlIHNraXBwZWQuXCIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdXRwdXRzID0gcmVzdWx0Lm1ldGFmaWxlLm91dHB1dHM7XG4gICAgICAgIGxldCBjc3NGaWxlUGF0aCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBvdXRwdXRzKSB7XG4gICAgICAgICAgY29uc3QgZXh0ID0gZmlsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gICAgICAgICAgaWYgKGV4dCA9PT0gXCJjc3NcIikge1xuICAgICAgICAgICAgY3NzRmlsZVBhdGggPSBmaWxlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjc3NGaWxlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbLV0gU3R5bGVTaGVldCBvdXRwdXQgc2tpcHBlZC5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QganNPdXRGaWxlID0gYnVpbGQuaW5pdGlhbE9wdGlvbnMub3V0ZmlsZTtcblxuICAgICAgICBjb25zdCBjc3NDb250ZW50cyA9IChhd2FpdCByZWFkRmlsZShjc3NGaWxlUGF0aCkpLnRvU3RyaW5nKCk7XG4gICAgICAgIGFwcGVuZEZpbGUoanNPdXRGaWxlLCBgXFxuR00uYWRkU3R5bGUoXCJcXFxcXFxuJHtjc3NDb250ZW50cy50cmltKCl9XFxcXFxcblwiKTtgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iLCAiLy8gc3RhdFN5bmMoXCIuL2Rpc3QvaW5kZXguanNcIikuc2l6ZSAvIDEwMjRcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcImVzYnVpbGRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHhNb25rZXlPdXRwdXRTdGF0c1BsdWdpbigpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwieG1vbmtleS1vdXRwdXQtc3RhdHMtcGx1Z2luXCIsXG4gICAgc2V0dXAoYnVpbGQpIHtcbiAgICAgIGJ1aWxkLm9uRW5kKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgb3V0cHV0cyA9IHJlc3VsdC5tZXRhZmlsZT8ub3V0cHV0cyBhcyBhbnk7XG4gICAgICAgIGNvbnN0IG91dHB1dFRvdGFsID0gT2JqZWN0LmtleXMob3V0cHV0cykucmVkdWNlKChwcmV2LCBjdXIpID0+IHByZXYgKyBvdXRwdXRzW2N1cl0uYnl0ZXMsIDApO1xuICAgICAgICBjb25zdCBidW5kbGVUb3RhbCA9IGh1bWFuRmlsZVNpemUob3V0cHV0VG90YWwpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIlsqXSBCdW5kbGUgdG90YWw6XCIsIGJ1bmRsZVRvdGFsKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGh1bWFuRmlsZVNpemUoc2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IGkgPSBzaXplID09IDAgPyAwIDogTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgcmV0dXJuIChzaXplIC8gTWF0aC5wb3coMTAyNCwgaSkpLnRvRml4ZWQoMSkgKyBcIlwiICsgW1wiYlwiLCBcImtCXCIsIFwiTUJcIiwgXCJHQlwiLCBcIlRCXCJdW2ldO1xufVxuIiwgImltcG9ydCB7IGJ1aWxkWG1vbmtleVNjcmlwdCB9IGZyb20gXCIuL2VzYnVpbGQvYnVpbGQuanNcIjtcblxuY29uc3QgZW50cnlGaWxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuXG5pZiAoIWVudHJ5RmlsZSkge1xuICBjb25zb2xlLmVycm9yKGBObyBlbnRyeWZpbGUgc3BlY2lmaWVkLiBUcnkgYWRkaW5nIHRoZSBzY3JpcHQgdG8gYnVpbGQgaW4gdGhlIGFyZ3VtZW50LmApO1xuICBjb25zb2xlLmVycm9yKGBFeGFtcGxlOiBucG0gcnVuIGJ1aWxkIHNyYy9leGFtcGxlLXNjcmlwdC50c2ApO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmJ1aWxkWG1vbmtleVNjcmlwdChlbnRyeUZpbGUpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsY0FBeUI7QUFDekIsaUNBQTJCOzs7QUNBM0Isc0JBQW9DO0FBRTdCLFNBQVMsNkJBQXFDO0FBQ25ELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU1BLFFBQU87QUFDWCxVQUFJLGdCQUFnQjtBQUNwQixVQUFJLGtCQUFrQjtBQUV0QixNQUFBQSxPQUFNLE9BQU8sRUFBRSxRQUFRLGFBQWEsV0FBVyxPQUFPLEdBQUcsT0FBTyxTQUFTO0FBQ3ZFLFlBQUk7QUFBZTtBQUNuQixjQUFNLFNBQVMsVUFBTSwwQkFBUyxLQUFLLE1BQU0sTUFBTTtBQUMvQyxjQUFNLHNCQUFzQixPQUFPLE1BQU0sNkJBQTZCLEdBQUc7QUFFekUsWUFBSSxD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QUksS0FBSyxJQUFJLElBQUksQ0FBQztBQUNwRSxVQUFRLE9BQU8sS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLE1BQU0sTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3JGOzs7QUhoQkEsZUFBc0IsbUJBQW1CLGdCQUF3QjtBQUUvRCxRQUFNQyxhQUFZO0FBQ2xCLFVBQVEsS0FBSyxtQkFBbUJBLFVBQVMsR0FBRztBQUU1QyxRQUFjLGNBQU07QUFBQSxJQUNsQixhQUFhLENBQUNBLFVBQVM7QUFBQSxJQUN2QixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixhQUFhO0FBQUEsSUFDYixRQUFRLFFBQVEsSUFBSSxRQUFRLFFBQVE7QUFBQSxJQUNwQyxVQUFVO0FBQUEsSUFDVixRQUFRO0FBQUE7QUFBQSxJQUVSLFdBQVc7QUFBQSxJQUNYLFdBQVc7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxJQUNWLFNBQVM7QUFBQSxNQUNQLDJCQUEyQjtBQUFBO0FBQUEsVUFFM0IsdUNBQVcsRUFBRSxPQUFPLGFBQWEsQ0FBQztBQUFBLE1BQ2xDLG9CQUFvQjtBQUFBLE1BQ3BCLHlCQUF5QjtBQUFBLElBQzNCO0FBQUEsRUFDRixDQUFDO0FBQ0g7OztBSTlCQSxJQUFNLFlBQVksUUFBUSxLQUFLLENBQUM7QUFFaEMsSUFBSSxDQUFDLFdBQVc7QUFDZCxVQUFRLE1BQU0seUVBQXlFO0FBQ3ZGLFVBQVEsTUFBTSw4Q0FBOEM7QUFDNUQsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFFQSxtQkFBbUIsU0FBUzsiLAogICJuYW1lcyI6IFsiYnVpbGQiLCAiaW1wb3J0X3Byb21pc2VzIiwgImJ1aWxkIiwgImJ1aWxkIiwgImVudHJ5RmlsZSJdCn0K
@@ -0,0 +1,3 @@
1
+ import { IConsoleScript } from "./console-script.interface.js";
2
+ import { ClassConstructor, ScriptInfo } from "../types.js";
3
+ export declare function ConsoleScript<T extends IConsoleScript>(_metadata: ScriptInfo): (target: ClassConstructor<T>) => void;
@@ -0,0 +1,2 @@
1
+ export * from "./console-script.decorator.js";
2
+ export * from "./console-script.interface.js";
@@ -0,0 +1,2 @@
1
+ export * from "./console-script.decorator.js";
2
+ export * from "./console-script.interface.js";
@@ -2,6 +2,7 @@ import * as esbuild from "esbuild";
2
2
  import { sassPlugin } from "esbuild-sass-plugin";
3
3
  import { xMonkeyStripMetadataPlugin } from "./plugins/xmonkey-strip-metadata-plugin.js";
4
4
  import { xMonkeyStylesPlugin } from "./plugins/xmonkey-styles-plugin.js";
5
+ import { xMonkeyOutputStatsPlugin } from "./plugins/xmonkey-output-stats-plugin.js";
5
6
  export async function buildXmonkeyScript(scriptBasePath) {
6
7
  const entryFile = scriptBasePath;
7
8
  console.info(`Building file: '${entryFile}'`);
@@ -21,6 +22,7 @@ export async function buildXmonkeyScript(scriptBasePath) {
21
22
  xMonkeyStripMetadataPlugin(),
22
23
  sassPlugin({ style: "compressed" }),
23
24
  xMonkeyStylesPlugin(),
25
+ xMonkeyOutputStatsPlugin(),
24
26
  ],
25
27
  });
26
28
  }
@@ -0,0 +1,2 @@
1
+ import { Plugin } from "esbuild";
2
+ export declare function xMonkeyOutputStatsPlugin(): Plugin;
@@ -0,0 +1,17 @@
1
+ export function xMonkeyOutputStatsPlugin() {
2
+ return {
3
+ name: "xmonkey-output-stats-plugin",
4
+ setup(build) {
5
+ build.onEnd(async (result) => {
6
+ const outputs = result.metafile?.outputs;
7
+ const outputTotal = Object.keys(outputs).reduce((prev, cur) => prev + outputs[cur].bytes, 0);
8
+ const bundleTotal = humanFileSize(outputTotal);
9
+ console.log("[*] Bundle total:", bundleTotal);
10
+ });
11
+ },
12
+ };
13
+ }
14
+ function humanFileSize(size) {
15
+ const i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024));
16
+ return (size / Math.pow(1024, i)).toFixed(1) + "" + ["b", "kB", "MB", "GB", "TB"][i];
17
+ }
@@ -22,7 +22,7 @@ export function xMonkeyStylesPlugin() {
22
22
  }
23
23
  }
24
24
  if (!cssFilePath.length) {
25
- console.warn("CSS output not generated. Style bundle skipped.");
25
+ console.warn("[-] StyleSheet output skipped.");
26
26
  return;
27
27
  }
28
28
  const jsOutFile = build.initialOptions.outfile;
package/dist/index.d.ts CHANGED
@@ -1,4 +0,0 @@
1
- export * from "./decorators/console-script.decorator.js";
2
- export * from "./decorators/ui-script.decorator.js";
3
- export * from "./interfaces/console-script.interface.js";
4
- export * from "./interfaces/ui-script.interface.js";
package/dist/index.js CHANGED
@@ -1,4 +0,0 @@
1
- export * from "./decorators/console-script.decorator.js";
2
- export * from "./decorators/ui-script.decorator.js";
3
- export * from "./interfaces/console-script.interface.js";
4
- export * from "./interfaces/ui-script.interface.js";
@@ -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 {
package/dist/types.d.ts CHANGED
@@ -26,3 +26,6 @@ export type AnyType = string | number | boolean | AnyObject;
26
26
  export type WithRequired<T, K extends keyof T> = T & {
27
27
  [P in K]-?: T[P];
28
28
  };
29
+ export type Complete<T> = {
30
+ [P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined;
31
+ };
@@ -0,0 +1,2 @@
1
+ export * from "./ui-script.decorator.js";
2
+ export * from "./ui-script.interface.js";
@@ -0,0 +1,2 @@
1
+ export * from "./ui-script.decorator.js";
2
+ export * from "./ui-script.interface.js";
@@ -0,0 +1,3 @@
1
+ import { IUiScript } from "./ui-script.interface.js";
2
+ import { ClassConstructor, ScriptInfo } from "../types.js";
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();
@@ -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.4",
3
+ "version": "2.0.6",
4
4
  "author": "lukaskj",
5
5
  "license": "ISC",
6
6
  "scripts": {
@@ -17,7 +17,7 @@
17
17
  "build:debug": "DEBUG=1 node esbuild/build.mjs",
18
18
  "copy-styles": "cp -R src/styles/ dist/styles",
19
19
  "dev": "nodemon",
20
- "start": "tsx --watch ./src/index.ts",
20
+ "start": "tsx ./src/build.ts",
21
21
  "format": "prettier --write src/",
22
22
  "lint": "tsc --noEmit && eslint \"{src,apps,libs,test}/**/*.{ts,tsx}\" --fix",
23
23
  "test": "jest --config ./jest.config.js --maxWorkers=1",
@@ -71,9 +71,15 @@
71
71
  },
72
72
  "exports": {
73
73
  ".": "./dist/index.js",
74
- "./styles/*": "./dist/styles/*",
75
- "./decorators": "./dist/decorators/*",
76
- "./interfaces": "./dist/interfaces/*"
74
+ "./styles": "./dist/styles/_base.scss",
75
+ "./console-script": {
76
+ "types": "./dist/console-script/index.d.ts",
77
+ "import": "./dist/console-script/index.js"
78
+ },
79
+ "./ui-script": {
80
+ "types": "./dist/ui-script/index.d.ts",
81
+ "import": "./dist/ui-script/index.js"
82
+ }
77
83
  },
78
84
  "main": "dist/index.js",
79
85
  "module": "dist/index.js",
@@ -1,3 +0,0 @@
1
- import { IConsoleScript } from "../interfaces/console-script.interface.js";
2
- import { ClassConstructor, ScriptInfo } from "../types";
3
- export declare function ConsoleScript<T extends IConsoleScript>(_metadata: ScriptInfo): (target: ClassConstructor<T>) => void;
@@ -1,4 +0,0 @@
1
- import { IUiScript } from "../interfaces/ui-script.interface.js";
2
- import { ClassConstructor, ScriptInfo } from "../types";
3
- import "../styles/base.scss";
4
- export declare function UiScript<T extends IUiScript>(_metadata: ScriptInfo): (_target: ClassConstructor<T>) => void;
@@ -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 "@lukaskj/xmonkey";
2
- import "@lukaskj/xmonkey/styles/base.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 "@lukaskj/xmonkey";
9
- import "@lukaskj/xmonkey/styles/base.scss";
10
- import { useState } from "preact/hooks";
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;}