From 451e7e7daafe95181019c36bb1098eddcccb5552 Mon Sep 17 00:00:00 2001 From: TekH Date: Fri, 19 Sep 2025 10:36:14 +0200 Subject: [PATCH] feat(lazy): created to handle lazy loading --- .../Views/Shared/_Layout.cshtml | 1 + EnvelopeGenerator.Web/bundleconfig.json | 6 +++++ .../wwwroot/js/api-service.js | 2 +- EnvelopeGenerator.Web/wwwroot/js/lazy.js | 22 +++++++++++++++++++ EnvelopeGenerator.Web/wwwroot/js/lazy.min.js | 1 + 5 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 EnvelopeGenerator.Web/wwwroot/js/lazy.js create mode 100644 EnvelopeGenerator.Web/wwwroot/js/lazy.min.js diff --git a/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml b/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml index bbbb1340..e1835d3b 100644 --- a/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml +++ b/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml @@ -50,6 +50,7 @@ + diff --git a/EnvelopeGenerator.Web/bundleconfig.json b/EnvelopeGenerator.Web/bundleconfig.json index d382de45..c66c7e1f 100644 --- a/EnvelopeGenerator.Web/bundleconfig.json +++ b/EnvelopeGenerator.Web/bundleconfig.json @@ -5,6 +5,12 @@ "wwwroot/js/app.js" ] }, + { + "outputFileName": "wwwroot/js/lazy.min.js", + "inputFiles": [ + "wwwroot/js/lazy.js" + ] + }, { "outputFileName": "wwwroot/js/api-service.min.js", "inputFiles": [ diff --git a/EnvelopeGenerator.Web/wwwroot/js/api-service.js b/EnvelopeGenerator.Web/wwwroot/js/api-service.js index 81d88cac..6f900442 100644 --- a/EnvelopeGenerator.Web/wwwroot/js/api-service.js +++ b/EnvelopeGenerator.Web/wwwroot/js/api-service.js @@ -20,7 +20,7 @@ const url = { get envKey() { if (!this.__envKey) { - this.__envKey = + this.__envKey = typeof envKey !== "undefined" ? envKey : document.querySelector('meta[name="env-key"]').getAttribute('content'); diff --git a/EnvelopeGenerator.Web/wwwroot/js/lazy.js b/EnvelopeGenerator.Web/wwwroot/js/lazy.js new file mode 100644 index 00000000..13e42b53 --- /dev/null +++ b/EnvelopeGenerator.Web/wwwroot/js/lazy.js @@ -0,0 +1,22 @@ +class Lazy { + #factory; + #initialized = false; + #value; + + constructor(factory) { + this.#factory = factory; + } + + get initialized() { + return this.#initialized; + } + + get value() { + if (!this.#initialized) { + this.#initialized = true; + this.#value = this.#factory(); + this.#factory = null; + } + return this.#value; + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Web/wwwroot/js/lazy.min.js b/EnvelopeGenerator.Web/wwwroot/js/lazy.min.js new file mode 100644 index 00000000..90d25d4d --- /dev/null +++ b/EnvelopeGenerator.Web/wwwroot/js/lazy.min.js @@ -0,0 +1 @@ +class Lazy{#factory;#initialized=false;#value;constructor(n){this.#factory=n}get initialized(){return this.#initialized}get value(){return this.#initialized||(this.#initialized=!0,this.#value=this.#factory(),this.#factory=null),this.#value}} \ No newline at end of file