create-gardener 2.1.3 → 2.1.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/README.md +108 -302
- package/package.json +1 -1
- package/template/.env +3 -0
- package/template/README.md +181 -0
- package/template/buildHelper.js +5 -0
- package/template/src/backend/controllers/gardener/hotReload.ts +34 -0
- package/template/src/backend/controllers/gardener/imageOptimiser.ts +114 -25
- package/template/src/backend/controllers/gardener/index.ts +1 -0
- package/template/src/backend/routes/gardener.route.ts +2 -1
- package/template/src/backend/server.ts +19 -1
- package/template/src/frontend/assets/remote/betterway.jpg +0 -0
- package/template/src/frontend/static/components/gardener/hotReloadbtn.js +25 -78
- package/template/src/frontend/static/gardenerDev.js +2 -18
- package/template/src/frontend/static/style.css +0 -77
- package/template/src/frontend/views/_.ejs +101 -89
- package/template/build/backend/controllers/gardener/addComponent.d.ts +0 -8
- package/template/build/backend/controllers/gardener/addComponent.d.ts.map +0 -1
- package/template/build/backend/controllers/gardener/addComponent.js +0 -19
- package/template/build/backend/controllers/gardener/addComponent.js.map +0 -1
- package/template/build/backend/controllers/gardener/addPage.d.ts +0 -3
- package/template/build/backend/controllers/gardener/addPage.d.ts.map +0 -1
- package/template/build/backend/controllers/gardener/addPage.js +0 -86
- package/template/build/backend/controllers/gardener/addPage.js.map +0 -1
- package/template/build/backend/controllers/gardener/createStatic.d.ts +0 -3
- package/template/build/backend/controllers/gardener/createStatic.d.ts.map +0 -1
- package/template/build/backend/controllers/gardener/createStatic.js +0 -63
- package/template/build/backend/controllers/gardener/createStatic.js.map +0 -1
- package/template/build/backend/controllers/gardener/imageOptimiser.d.ts +0 -3
- package/template/build/backend/controllers/gardener/imageOptimiser.d.ts.map +0 -1
- package/template/build/backend/controllers/gardener/imageOptimiser.js +0 -54
- package/template/build/backend/controllers/gardener/imageOptimiser.js.map +0 -1
- package/template/build/backend/controllers/gardener/index.d.ts +0 -6
- package/template/build/backend/controllers/gardener/index.d.ts.map +0 -1
- package/template/build/backend/controllers/gardener/index.js +0 -6
- package/template/build/backend/controllers/gardener/index.js.map +0 -1
- package/template/build/backend/controllers/gardener/saveTemplate.d.ts +0 -3
- package/template/build/backend/controllers/gardener/saveTemplate.d.ts.map +0 -1
- package/template/build/backend/controllers/gardener/saveTemplate.js +0 -36
- package/template/build/backend/controllers/gardener/saveTemplate.js.map +0 -1
- package/template/build/backend/libs/generateWebp.d.ts +0 -2
- package/template/build/backend/libs/generateWebp.d.ts.map +0 -1
- package/template/build/backend/libs/generateWebp.js +0 -16
- package/template/build/backend/libs/generateWebp.js.map +0 -1
- package/template/build/backend/routes/gardener.route.d.ts +0 -4
- package/template/build/backend/routes/gardener.route.d.ts.map +0 -1
- package/template/build/backend/routes/gardener.route.js +0 -18
- package/template/build/backend/routes/gardener.route.js.map +0 -1
- package/template/build/backend/server.d.ts +0 -2
- package/template/build/backend/server.d.ts.map +0 -1
- package/template/build/backend/server.js +0 -20
- package/template/build/backend/server.js.map +0 -1
- package/template/build/frontend/assets/favicon.png +0 -0
- package/template/build/frontend/assets/gardener.jpg +0 -0
- package/template/build/frontend/static/bundle/bundle._.js +0 -1
- package/template/build/frontend/static/bundle/bundle._about.js +0 -1
- package/template/build/frontend/static/bundle/bundle._kartik.js +0 -1
- package/template/build/frontend/static/bundle/bundle._new.js +0 -1
- package/template/build/frontend/static/bundle/bundle._ritish.js +0 -1
- package/template/build/frontend/static/cache/favicon_500x500.webp +0 -0
- package/template/build/frontend/static/cache/favicon_50x50.webp +0 -0
- package/template/build/frontend/static/cache/gardener_100x100.webp +0 -0
- package/template/build/frontend/static/cache/gardener_500x500.webp +0 -0
- package/template/build/frontend/static/cache/gardener_50x50.webp +0 -0
- package/template/build/frontend/static/components/copybtn.js +0 -99
- package/template/build/frontend/static/components/footer.js +0 -33
- package/template/build/frontend/static/components/gardener/errorBox.js +0 -47
- package/template/build/frontend/static/components/gardener/hotReloadbtn.js +0 -82
- package/template/build/frontend/static/components/gardener/pageOverlayBtn.js +0 -138
- package/template/build/frontend/static/components/gardener/parserWindow.js +0 -159
- package/template/build/frontend/static/components/nonui/api.js +0 -52
- package/template/build/frontend/static/components/nonui/navigation.js +0 -59
- package/template/build/frontend/static/components/notification.js +0 -67
- package/template/build/frontend/static/gardener.js +0 -160
- package/template/build/frontend/static/gardenerConfig.js +0 -1
- package/template/build/frontend/static/gardenerDev.js +0 -165
- package/template/build/frontend/static/global.js +0 -4
- package/template/build/frontend/static/pages/pages._.js +0 -25
- package/template/build/frontend/static/pages/pages._about.js +0 -2
- package/template/build/frontend/static/pages/pages._kartik.js +0 -2
- package/template/build/frontend/static/pages/pages._new.js +0 -2
- package/template/build/frontend/static/pages/pages._ritish.js +0 -2
- package/template/build/frontend/static/style.css +0 -2
- package/template/build/frontend/static/style2.css +0 -26
- package/template/build/frontend/style.css +0 -1045
- package/template/build/frontend/tailwind.css +0 -1
- package/template/build/frontend/views/_.ejs +0 -125
- package/template/build/frontend/views/_about.ejs +0 -126
- package/template/build/frontend/views/_kartik.ejs +0 -126
- package/template/build/frontend/views/_new.ejs +0 -126
- package/template/build/frontend/views/_ritish.ejs +0 -126
- package/template/build/frontend/views/partials/icons/clipboard.ejs +0 -1
- package/template/build/frontend/views/partials/icons/clipboardok.ejs +0 -1
- package/template/src/frontend/static/cache/favicon_500x500.webp +0 -0
- package/template/src/frontend/static/cache/favicon_50x50.webp +0 -0
- package/template/src/frontend/static/cache/gardener_100x100.webp +0 -0
- package/template/src/frontend/static/cache/gardener_500x500.webp +0 -0
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import fsp from "fs/promises";
|
|
3
|
-
import sharp from "sharp";
|
|
4
|
-
export default async function generateWebP(inputPath, outputPath, width, height) {
|
|
5
|
-
const cacheDir = path.dirname(outputPath);
|
|
6
|
-
await fsp.mkdir(cacheDir, { recursive: true });
|
|
7
|
-
await sharp(inputPath)
|
|
8
|
-
.resize(width, height, {
|
|
9
|
-
fit: "inside",
|
|
10
|
-
withoutEnlargement: true,
|
|
11
|
-
})
|
|
12
|
-
.webp({ quality: 100 })
|
|
13
|
-
.toFile(outputPath);
|
|
14
|
-
console.log("✅ Image successfully generated");
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=generateWebp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateWebp.js","sourceRoot":"","sources":["../../../src/backend/libs/generateWebp.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CACxC,SAAiB,EACjB,UAAkB,EAClB,KAAa,EACb,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAG/C,MAAM,KAAK,CAAC,SAAS,CAAC;SACnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;QACrB,GAAG,EAAE,QAAQ;QACb,kBAAkB,EAAE,IAAI;KACzB,CAAC;SACD,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;SACtB,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gardener.route.d.ts","sourceRoot":"","sources":["../../../src/backend/routes/gardener.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAChC,eAAe,MAAM,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Router } from "express";
|
|
2
|
-
import { addComponent, addPage, createStatic, imageOptimiser, saveTemplate } from "../controllers/gardener/index.js";
|
|
3
|
-
const router = Router();
|
|
4
|
-
export default router;
|
|
5
|
-
router.route("/static/cache/:name").get(imageOptimiser);
|
|
6
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
7
|
-
router.route("/createstatic").get(createStatic);
|
|
8
|
-
router.route('/addcomponent').post(addComponent);
|
|
9
|
-
router.route('/addpage').post(addPage);
|
|
10
|
-
router.route('/savetemplate').post(saveTemplate);
|
|
11
|
-
}
|
|
12
|
-
router.route('/').get((req, res) => res.render('_', { fileName: '_' }));
|
|
13
|
-
router.route("/new").get((req, res) => res.render("_new", { fileName: "_new" }));
|
|
14
|
-
router.route("/new").get((req, res) => res.render("_new", { fileName: "_new" }));
|
|
15
|
-
router.route("/about").get((req, res) => res.render("_about", { fileName: "_about" }));
|
|
16
|
-
router.route("/ritish").get((req, res) => res.render("_ritish", { fileName: "_ritish" }));
|
|
17
|
-
router.route("/kartik").get((req, res) => res.render("_kartik", { fileName: "_kartik" }));
|
|
18
|
-
//# sourceMappingURL=gardener.route.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gardener.route.js","sourceRoot":"","sources":["../../../src/backend/routes/gardener.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErH,MAAM,MAAM,GAAW,MAAM,EAAE,CAAC;AAChC,eAAe,MAAM,CAAC;AAKtB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAExD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnD,CAAC;AAMD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;AAChG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;AAChG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAC,EAAC,QAAQ,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC;AACtG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAC,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC;AACzG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAC,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// server.ts
|
|
2
|
-
import 'dotenv/config';
|
|
3
|
-
import express from 'express';
|
|
4
|
-
import frontendRoute from './routes/gardener.route.js';
|
|
5
|
-
import path from "path";
|
|
6
|
-
const app = express();
|
|
7
|
-
import { fileURLToPath } from "url";
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = path.dirname(__filename);
|
|
10
|
-
const staticFiles = path.resolve(__dirname, '..', 'frontend');
|
|
11
|
-
app.set('views', path.join(staticFiles, 'views'));
|
|
12
|
-
app.set("view engine", "ejs");
|
|
13
|
-
app.use(express.static(staticFiles));
|
|
14
|
-
app.use(express.json());
|
|
15
|
-
app.use(frontendRoute);
|
|
16
|
-
const PORT = process.env.PORT || 3000;
|
|
17
|
-
app.listen(PORT, () => {
|
|
18
|
-
console.log("server listening 🚀🚀🚀 PORT:", PORT);
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,eAAe,CAAC;AACvB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,aAAa,MAAM,4BAA4B,CAAA;AACtD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;AAE7D,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAClD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var j=n("body");function d(e){a(j,i({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function a(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){d(r)}}function O(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return d(r),null}}function $(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function f(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Original element is null or undefined");if(!t)throw new Error("New element is null or undefined");e.replaceWith(t)}catch(r){d(r)}}function i(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=O(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&$(r,e.txt);let l=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,c]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,c);else if(o in r&&!l.has(o))try{r[o]=c===""?!0:c}catch{r.setAttribute(o,c)}else r.setAttribute(o,c)}catch(p){console.warn(`Failed to set attribute ${o}:`,p)}return e.events&&Object.entries(e.events).forEach(([o,c])=>{try{if(typeof c!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,c)}catch(p){console.warn(`Failed to add event listener ${o}:`,p)}}),e.children&&e.children.forEach(o=>{try{a(r,i(o))}catch(c){console.warn("Failed to append child:",c)}}),r}catch(t){return d(t),null}}var h="prod";var m=n("#main");function w(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),P(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{m.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function P(e){a(m,i({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),m.style.transition=".2s",m.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function E(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",h!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}E();w();function s(e){console.log("clicked"),f(n(".notification"),L(e))}function L(e){return e?i({t:"div",cn:["notification","fixed","top-[-60px]","left-0","md:left-auto","md:right-[60px]","right-0","z-50","flex","justify-center","min-w-100","px-4","box-border"],children:[{t:"div",cn:["flex","items-center","w-full","max-w-sm","p-4","rounded-2xl","shadow-xl","text-white","backdrop-blur-md","bg-opacity-95",{success:"bg-[#2e7d32]",warning:"bg-[#ed6c02]",failure:"bg-[#d32f2f]"}[e.status]],children:[{t:"div",cn:["flex-1","text-sm","font-medium","tracking-wide"],txt:e.message}]}]}):null}function x(){return i({t:"button",events:{click:()=>{try{navigator.clipboard.writeText(n(".initCommand").innerText),f(".copybtn",x()),s({status:"success",message:"Copied"})}catch{s({status:"failure",message:"Couldn't Copy"})}}},cn:["copybtn","flex","items-center","justify-center","p-2","text-gray-400","hover:text-white","hover:bg-white/10","rounded","transition-all","duration-200","active:scale-95"],children:[{t:"span",cn:["w-5","h-5"],children:[{t:"svg",cn:["icon","icon-tabler","icons-tabler-outline","icon-tabler-clipboard-check"],attr:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},children:[{t:"path",attr:{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}},{t:"path",attr:{d:"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2"}},{t:"path",attr:{d:"M9 5a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2"}},{t:"path",attr:{d:"M9 14l2 2l4 -4"}}]}]}]})}var A=n("body");function k(e=!0){if(e){let t=i({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let l=new FormData(r.target),o=Object.fromEntries(l.entries()),c=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(p=>p.json());k(!1),window.location.href=`${o.page}`}catch(l){console.log(l)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});a(A,t),n(".pathinput").focus()}else n(".addpageform").remove()}var v=i({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:k}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),b=i({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>a(b,v),mouseleave:()=>v.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var D=n("body");var F={hotreload:!1},u,T,y=localStorage.getItem("hotreload");y===null?u=F.hotreload:y==="true"?u=!0:y==="false"&&(u=!1);function g(){let e=u,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),u=!u,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),T=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(T))}function C(){return i({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>g()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var S=n("body");h==="dev"&&(a(S,b),a(S,C()),g());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),g())});function N(e,t,r){try{typeof e=="string"&&(e=n(e)),e.addEventListener(t,r)}catch(l){d(`addElError: ${l}`)}}N(".copybtn","click",()=>{try{navigator.clipboard.writeText(n(".initCommand").innerText),f(".copybtn",x()),s({status:"success",message:"Copied"})}catch{s({status:"failure",message:"Couldn't Copy"})}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { gardener, fetchElement, replaceElement } from '../gardener.js'
|
|
3
|
-
import addNotification from './notification.js';
|
|
4
|
-
|
|
5
|
-
export function copybtn() {
|
|
6
|
-
return gardener({
|
|
7
|
-
"t": "button",
|
|
8
|
-
events: {
|
|
9
|
-
click: () => {
|
|
10
|
-
try {
|
|
11
|
-
navigator.clipboard.writeText(fetchElement('.initCommand').innerText)
|
|
12
|
-
replaceElement('.copybtn', copybtn());
|
|
13
|
-
addNotification({ status: 'success', message: 'Copied' })
|
|
14
|
-
}
|
|
15
|
-
catch (err) {
|
|
16
|
-
addNotification({
|
|
17
|
-
status: 'failure', message: "Couldn't Copy"
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"cn": [
|
|
24
|
-
"copybtn",
|
|
25
|
-
"flex",
|
|
26
|
-
"items-center",
|
|
27
|
-
"justify-center",
|
|
28
|
-
"p-2",
|
|
29
|
-
"text-gray-400",
|
|
30
|
-
"hover:text-white",
|
|
31
|
-
"hover:bg-white/10",
|
|
32
|
-
"rounded",
|
|
33
|
-
"transition-all",
|
|
34
|
-
"duration-200",
|
|
35
|
-
"active:scale-95"
|
|
36
|
-
],
|
|
37
|
-
"children": [
|
|
38
|
-
{
|
|
39
|
-
"t": "span",
|
|
40
|
-
"cn": [
|
|
41
|
-
"w-5",
|
|
42
|
-
"h-5"
|
|
43
|
-
],
|
|
44
|
-
"children": [
|
|
45
|
-
{
|
|
46
|
-
"t": "svg",
|
|
47
|
-
"cn": [
|
|
48
|
-
"icon",
|
|
49
|
-
"icon-tabler",
|
|
50
|
-
"icons-tabler-outline",
|
|
51
|
-
"icon-tabler-clipboard-check"
|
|
52
|
-
],
|
|
53
|
-
"attr": {
|
|
54
|
-
"xmlns": "http://www.w3.org/2000/svg",
|
|
55
|
-
"width": "24",
|
|
56
|
-
"height": "24",
|
|
57
|
-
"viewBox": "0 0 24 24",
|
|
58
|
-
"fill": "none",
|
|
59
|
-
"stroke": "currentColor",
|
|
60
|
-
"stroke-width": "2",
|
|
61
|
-
"stroke-linecap": "round",
|
|
62
|
-
"stroke-linejoin": "round"
|
|
63
|
-
},
|
|
64
|
-
"children": [
|
|
65
|
-
{
|
|
66
|
-
"t": "path",
|
|
67
|
-
"attr": {
|
|
68
|
-
"stroke": "none",
|
|
69
|
-
"d": "M0 0h24v24H0z",
|
|
70
|
-
"fill": "none"
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"t": "path",
|
|
75
|
-
"attr": {
|
|
76
|
-
"d": "M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2"
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"t": "path",
|
|
81
|
-
"attr": {
|
|
82
|
-
"d": "M9 5a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2"
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"t": "path",
|
|
87
|
-
"attr": {
|
|
88
|
-
"d": "M9 14l2 2l4 -4"
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
]
|
|
92
|
-
}
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
]
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { gardener, fetchElement, replaceElement } from '../gardener.js'
|
|
3
|
-
|
|
4
|
-
export function footer({mystery}) {
|
|
5
|
-
return gardener({
|
|
6
|
-
"t": "footer",
|
|
7
|
-
"cn": [
|
|
8
|
-
"bg-green-900",
|
|
9
|
-
"text-green-100",
|
|
10
|
-
"py-12",
|
|
11
|
-
"text-center"
|
|
12
|
-
],
|
|
13
|
-
"children": [
|
|
14
|
-
{
|
|
15
|
-
"t": "p",
|
|
16
|
-
"cn": [
|
|
17
|
-
"text-xl",
|
|
18
|
-
"italic"
|
|
19
|
-
],
|
|
20
|
-
"txt": "\"Because sometimes you don't need a forest. Just a garden.\""
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"t": "div",
|
|
24
|
-
"cn": [
|
|
25
|
-
"mt-6",
|
|
26
|
-
"text-sm",
|
|
27
|
-
"opacity-70"
|
|
28
|
-
],
|
|
29
|
-
"txt": "MIT Licensed | Built on Express & EJS "+mystery+""
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
})
|
|
33
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { gardener, fetchElement, appendElement } from '../../gardener.js'
|
|
2
|
-
|
|
3
|
-
const body = fetchElement('body');
|
|
4
|
-
|
|
5
|
-
export function gardenerError(error) {
|
|
6
|
-
appendElement(body, gardener({
|
|
7
|
-
t: 'div',
|
|
8
|
-
// Added: centering, shadow, border-left for "alert" feel, and high z-index
|
|
9
|
-
cn: [
|
|
10
|
-
'fixed', 'top-1/2', 'left-1/2', '-translate-x-1/2', '-translate-y-1/2',
|
|
11
|
-
'w-11/12', 'max-w-md', 'bg-white', 'text-gray-800', 'shadow-2xl',
|
|
12
|
-
'border-l-8', 'border-red-600', 'rounded-r-lg', 'z-[100]', 'p-0', 'overflow-hidden'
|
|
13
|
-
],
|
|
14
|
-
children: [
|
|
15
|
-
{
|
|
16
|
-
t: 'div',
|
|
17
|
-
cn: ['bg-red-50', 'p-4', 'flex', 'items-center', 'gap-3'],
|
|
18
|
-
children: [
|
|
19
|
-
{
|
|
20
|
-
t: 'h2',
|
|
21
|
-
cn: ['text-red-700', 'font-bold', 'text-lg', 'uppercase', 'tracking-wider'],
|
|
22
|
-
txt: '⚠️ System Error'
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
t: 'div',
|
|
28
|
-
cn: ['p-6', 'bg-white'],
|
|
29
|
-
children: [
|
|
30
|
-
{
|
|
31
|
-
t: 'p',
|
|
32
|
-
cn: ['font-mono', 'text-sm', 'bg-gray-100', 'p-3', 'rounded', 'border', 'border-gray-200', 'break-words'],
|
|
33
|
-
txt: error
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
t: 'button',
|
|
37
|
-
cn: ['mt-4', 'w-full', 'py-2', 'bg-gray-800', 'text-white', 'rounded', 'hover:bg-black', 'transition-colors', 'cursor-pointer'],
|
|
38
|
-
txt: 'Dismiss',
|
|
39
|
-
events: {
|
|
40
|
-
click: (e) => e.target.closest('.fixed').remove()
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
}))
|
|
47
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { gardener, fetchElement, appendElement } from '../../gardener.js'
|
|
2
|
-
import { gardenerError } from './errorBox.js';
|
|
3
|
-
|
|
4
|
-
const config = {
|
|
5
|
-
hotreload: false
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
let hotReload;
|
|
9
|
-
let hotReloadtimeout;
|
|
10
|
-
const localStore = localStorage.getItem('hotreload');
|
|
11
|
-
|
|
12
|
-
if (localStore === null) hotReload = config.hotreload;
|
|
13
|
-
else if (localStore === 'true') hotReload = true
|
|
14
|
-
else if (localStore === 'false') hotReload = false
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export function togglehotreload() {
|
|
18
|
-
const hr = hotReload;
|
|
19
|
-
const hrcheck = fetchElement('#hrcheckbox');
|
|
20
|
-
|
|
21
|
-
localStorage.setItem('hotreload', hr);
|
|
22
|
-
|
|
23
|
-
hotReload = !hotReload;
|
|
24
|
-
|
|
25
|
-
if (hr) {
|
|
26
|
-
hrcheck.style.background = '#66e666';
|
|
27
|
-
fetchElement('.hrcheckbox').checked = true;
|
|
28
|
-
localStorage.setItem('hotreload', 'true');
|
|
29
|
-
hotReloadtimeout = setTimeout(() => window.location.reload(), 1000);
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
hrcheck.style.background = 'red';
|
|
33
|
-
fetchElement('.hrcheckbox').checked = false;
|
|
34
|
-
localStorage.setItem('hotreload', 'false');
|
|
35
|
-
clearTimeout(hotReloadtimeout);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
//localStorage.setItem('hotreload', hotReload);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function hotReloadBtn() {
|
|
42
|
-
return gardener({
|
|
43
|
-
t: 'p',
|
|
44
|
-
cn: ['bg-gray-200', 'fixed', 'bottom-0', 'z-100', 'right-0', 'border-b-1', 'p-2', 'rounded-md'],
|
|
45
|
-
children: [
|
|
46
|
-
{
|
|
47
|
-
t: 'span',
|
|
48
|
-
txt: 'Press '
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
t: 'span',
|
|
52
|
-
cn: ['text-green-500', 'font-bold'],
|
|
53
|
-
txt: 'Alt+h'
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
t: 'span',
|
|
57
|
-
txt: ' to toggle Hot Reload'
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
t: 'form',
|
|
61
|
-
attr: {
|
|
62
|
-
id: 'hrcheckbox',
|
|
63
|
-
},
|
|
64
|
-
events: {
|
|
65
|
-
click: () => togglehotreload()
|
|
66
|
-
},
|
|
67
|
-
cn: ['p-2', 'bg-red-300'],
|
|
68
|
-
children: [{
|
|
69
|
-
t: 'label',
|
|
70
|
-
txt: 'Hot Reload ',
|
|
71
|
-
}
|
|
72
|
-
, {
|
|
73
|
-
t: 'input',
|
|
74
|
-
cn: ['hrcheckbox'],
|
|
75
|
-
attr: {
|
|
76
|
-
type: 'checkbox'
|
|
77
|
-
}
|
|
78
|
-
}]
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
})
|
|
82
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { gardener, fetchElement, appendElement } from '../../gardener.js'
|
|
2
|
-
|
|
3
|
-
const body = fetchElement('body');
|
|
4
|
-
|
|
5
|
-
function opnPagedialog(btn = true) {
|
|
6
|
-
if (btn) {
|
|
7
|
-
const dialog = gardener({
|
|
8
|
-
t: 'form', cn: ['addpageform', 'fixed', 'left-2/5', 'bg-gray-200', 'rounded-lg', 'block', 'top-2/5', 'p-2', 'flex', 'flex-col', 'p-5', 'gap-2'], events: {
|
|
9
|
-
submit: async (e) => {
|
|
10
|
-
try {
|
|
11
|
-
e.preventDefault()
|
|
12
|
-
const data = new FormData(e.target);
|
|
13
|
-
const input = Object.fromEntries(data.entries());
|
|
14
|
-
|
|
15
|
-
const response = await fetch('/addpage', {
|
|
16
|
-
method: 'POST',
|
|
17
|
-
headers: {
|
|
18
|
-
"Content-Type": 'application/json'
|
|
19
|
-
},
|
|
20
|
-
body: JSON.stringify(input)
|
|
21
|
-
}).then(res => res.json())
|
|
22
|
-
opnPagedialog(false)
|
|
23
|
-
window.location.href = `${input.page}`
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
console.log(err)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
}, children: [{
|
|
31
|
-
t: 'label',
|
|
32
|
-
txt: 'ENTER PATH FOR NEW PAGE'
|
|
33
|
-
}, { t: 'input', attr: { name: 'page' }, cn: ['pathinput'] }]
|
|
34
|
-
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
appendElement(body, dialog);
|
|
38
|
-
fetchElement('.pathinput').focus();
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
fetchElement('.addpageform').remove();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const pagebtns = gardener({
|
|
48
|
-
t: 'div',
|
|
49
|
-
cn: [
|
|
50
|
-
'fixed',
|
|
51
|
-
'bottom-20',
|
|
52
|
-
'right-4',
|
|
53
|
-
'flex',
|
|
54
|
-
'flex-col',
|
|
55
|
-
'gap-2',
|
|
56
|
-
'bg-white',
|
|
57
|
-
'shadow-lg',
|
|
58
|
-
'rounded-xl',
|
|
59
|
-
'p-3',
|
|
60
|
-
'z-50'
|
|
61
|
-
],
|
|
62
|
-
children: [
|
|
63
|
-
{
|
|
64
|
-
t: 'button',
|
|
65
|
-
cn: [
|
|
66
|
-
'px-4',
|
|
67
|
-
'py-2',
|
|
68
|
-
'bg-blue-500',
|
|
69
|
-
'text-white',
|
|
70
|
-
'rounded-lg',
|
|
71
|
-
'hover:bg-blue-600',
|
|
72
|
-
'transition'
|
|
73
|
-
],
|
|
74
|
-
children: [{ t: 'span', txt: 'New Page' }],
|
|
75
|
-
events: {
|
|
76
|
-
click: opnPagedialog
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
t: 'button',
|
|
81
|
-
cn: [
|
|
82
|
-
'px-4',
|
|
83
|
-
'py-2',
|
|
84
|
-
'bg-gray-800',
|
|
85
|
-
'text-white',
|
|
86
|
-
'rounded-lg',
|
|
87
|
-
'hover:bg-gray-900',
|
|
88
|
-
'transition'
|
|
89
|
-
],
|
|
90
|
-
children: [{ t: 'span', txt: 'Save Template' }],
|
|
91
|
-
events: {
|
|
92
|
-
click: async () => {
|
|
93
|
-
const result = await fetch('/savetemplate', {
|
|
94
|
-
method: 'POST',
|
|
95
|
-
headers: { "Content-Type": 'application/json' },
|
|
96
|
-
body: JSON.stringify({ path: fetchElement('#fileName').innerText })
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
const data = await result.json(); // ✅ fix
|
|
100
|
-
alert(data.message);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
export const addPagebtn = gardener({
|
|
109
|
-
t: 'div',
|
|
110
|
-
cn: ['fixed', 'bottom-4', 'right-4', 'z-50'],
|
|
111
|
-
events: {
|
|
112
|
-
mouseenter: () => appendElement(addPagebtn, pagebtns),
|
|
113
|
-
mouseleave: () => pagebtns.remove()
|
|
114
|
-
},
|
|
115
|
-
children: [
|
|
116
|
-
{
|
|
117
|
-
t: 'span',
|
|
118
|
-
// cn: ['pb-1.5', 'flex', 'items-center', 'justify-center', 'h-15', 'w-15', 'bg-black', 'text-white', 'fixed', 'bottom-22', 'right-2'],
|
|
119
|
-
|
|
120
|
-
cn: [
|
|
121
|
-
'flex',
|
|
122
|
-
'items-center',
|
|
123
|
-
'justify-center',
|
|
124
|
-
'h-14',
|
|
125
|
-
'w-14',
|
|
126
|
-
'bg-black',
|
|
127
|
-
'text-white',
|
|
128
|
-
'fixed',
|
|
129
|
-
'bottom-22',
|
|
130
|
-
'right-2',
|
|
131
|
-
'rounded-full',
|
|
132
|
-
'shadow-lg',
|
|
133
|
-
'cursor-pointer',
|
|
134
|
-
],
|
|
135
|
-
txt: 'GR'
|
|
136
|
-
}
|
|
137
|
-
]
|
|
138
|
-
});
|