nanosplash 2.5.3 → 3.0.1
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/.github/workflows/ci.yml +48 -0
- package/.prettierrc +10 -9
- package/LICENSE +1 -1
- package/README.md +139 -72
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +555 -0
- package/coverage/core/Dom.ts.html +565 -0
- package/coverage/core/Service.ts.html +790 -0
- package/coverage/core/Splash.ts.html +457 -0
- package/coverage/core/index.html +146 -0
- package/coverage/coverage-final.json +9043 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +131 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/types/Types.ts.html +121 -0
- package/coverage/types/index.html +116 -0
- package/dist/latest/cjs/ns.cjs +1 -0
- package/dist/latest/cjs/style.css +1 -0
- package/dist/latest/es/ns.js +306 -0
- package/dist/latest/es/style.css +1 -0
- package/dist/latest/iife/ns.iife.js +4 -0
- package/dist/versioned/3.0.1/cjs/ns.cjs +1 -0
- package/dist/versioned/3.0.1/cjs/style.css +1 -0
- package/dist/versioned/3.0.1/es/ns.js +306 -0
- package/dist/versioned/3.0.1/es/style.css +1 -0
- package/dist/versioned/3.0.1/iife/ns.iife.js +2 -0
- package/docs/index.6d66a821.js +1 -0
- package/docs/index.74dbd99e.css +1 -0
- package/docs/index.f34144dc.js +1 -0
- package/docs/index.html +90 -114
- package/index.html +87 -115
- package/package.json +50 -36
- package/src/sass/ns.sass +95 -0
- package/src/ts/core/Dom.ts +160 -0
- package/src/ts/core/Service.ts +235 -0
- package/src/ts/core/ServiceInterface.ts +60 -0
- package/src/ts/core/Splash.ts +124 -0
- package/src/ts/core/SplashInterface.ts +54 -0
- package/src/ts/main.ts +9 -0
- package/src/ts/types/Types.ts +12 -0
- package/src/ts/types/global.d.ts +14 -0
- package/tests/Dom.spec.ts +127 -0
- package/tests/Guid.spec.ts +21 -0
- package/tests/Service.spec.ts +119 -0
- package/tests/Splash.spec.ts +64 -0
- package/tsconfig.json +20 -16
- package/vite.config.ts +27 -13
- package/vite.demo.config.ts +16 -0
- package/.github/workflows/production.yml +0 -60
- package/.github/workflows/release.yml +0 -61
- package/_config.yml +0 -1
- package/dist/iife/manifest.json +0 -7
- package/dist/iife/nanosplash.iife.js +0 -1
- package/dist/module/manifest.json +0 -7
- package/dist/module/nanosplash.cjs.js +0 -1
- package/dist/module/nanosplash.es.js +0 -371
- package/dist/module/style.css +0 -1
- package/docs/nanosplash.iife.js +0 -6
- package/docs/style.css +0 -1
- package/docs/typedoc/.nojekyll +0 -1
- package/docs/typedoc/assets/highlight.css +0 -22
- package/docs/typedoc/assets/icons.css +0 -1043
- package/docs/typedoc/assets/icons.png +0 -0
- package/docs/typedoc/assets/icons@2x.png +0 -0
- package/docs/typedoc/assets/main.js +0 -52
- package/docs/typedoc/assets/search.js +0 -1
- package/docs/typedoc/assets/style.css +0 -1414
- package/docs/typedoc/assets/widgets.png +0 -0
- package/docs/typedoc/assets/widgets@2x.png +0 -0
- package/docs/typedoc/classes/Core_Nanosplash.default.html +0 -133
- package/docs/typedoc/index.html +0 -1
- package/docs/typedoc/modules/Core_Nanosplash.html +0 -1
- package/docs/typedoc/modules/types.html +0 -1
- package/favicon.svg +0 -15
- package/postcss.config.js +0 -8
- package/src/Core/Nanosplash.ts +0 -257
- package/src/Core/SplashInstance.ts +0 -298
- package/src/Exceptions/DestinationException.ts +0 -13
- package/src/Exceptions/Exception.ts +0 -9
- package/src/Exceptions/IllegalArgumentException.ts +0 -11
- package/src/Factory/NanosplashFactory.ts +0 -93
- package/src/Interfaces/ContextualAPIInterface.ts +0 -8
- package/src/Interfaces/IdentityInterface.ts +0 -3
- package/src/Interfaces/InsideInterface.ts +0 -5
- package/src/Interfaces/NanosplashInterface.ts +0 -8
- package/src/Interfaces/ProgressInterface.ts +0 -5
- package/src/Interfaces/ShowInterface.ts +0 -5
- package/src/Interfaces/WhileInterface.ts +0 -5
- package/src/Repositories/NanosplashRepository.ts +0 -82
- package/src/Tests/dom.spec.ts +0 -72
- package/src/Utilities/dom.ts +0 -49
- package/src/main.ts +0 -5
- package/src/style.sass +0 -88
- package/src/types.d.ts +0 -59
- package/update-all.sh +0 -3
- package/vite.iife.config.js +0 -72
- package/vite.mod.config.js +0 -71
- package/vite.site.config.js +0 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var S=Object.defineProperty;var N=(t,e,n)=>e in t?S(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var c=(t,e,n)=>(N(t,typeof e!="symbol"?e+"":e,n),n);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();const v="3.0.1";var u=(t=>(t.Add="add",t.Remove="remove",t))(u||{});const d=class d{constructor(){c(this,"id");c(this,"element");this.element=p(),this.element.id=this.id=d.generateGUID()}static generateGUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=Math.random()*16|0;return(e==="x"?n:n&3|8).toString(16)})}getNSContentElement(){return this.getNSElement().firstElementChild}getNSTextElement(){return this.getNSContentElement().firstElementChild}getId(){return this.id}getNSElement(){return this.element}setText(e){return this.getNSTextElement().innerText=e,e.length>0?this.showText():this.hideText(),this}showText(){return E(this.getNSTextElement()),this}hideText(){return I(this.getNSTextElement()),this}remove(){var e;return this.element&&((e=this.element.parentElement)==null||e.removeChild(this.element),delete this.element),this}};c(d,"NSClass","ns"),c(d,"NSHostClass","nsh");let a=d;function p(){return new DOMParser().parseFromString('<div class=ns><div class=nsc><div class=nst></div><div class=nss><svg viewBox="0 0 50 50"><circle class=path cx=25 cy=25 r=20 fill=none></circle></svg></div></div></div>',"text/html").body.firstChild}function y(t,e){e.children.length>0?e.insertBefore(t,e.children.item(0)):e.append(t)}function f(t,e){t==null||t.classList[e](a.NSHostClass)}function w(t){f(t.getNSElement().parentElement,u.Remove)}function E(t){t.style.display="flex"}function I(t){t.style.display="none"}function x(t){return t instanceof Element?t:document.querySelector(t||"")}function C(t){var e;return((e=t==null?void 0:t.classList)==null?void 0:e.contains(a.NSClass))??!1}function m(t,e){f(t.parentElement,u.Remove),f(e,u.Add),y(t,e)}function g(t){const e=t.firstElementChild;if(e!==null&&C(e)){const s=e.id;return h.getInstance().nsStack.find(l=>l.getId()===s)??null}return null}const i=class i{constructor(){c(this,"version");c(this,"nsStack");this.version=v,this.nsStack=[]}findIndex(e){return this.nsStack.findIndex(e)}find(e){return this.nsStack.find(e)}static getInstance(){return i.instance||(i.instance=new i),i.instance}static assignToWindow(){Object.defineProperty(window,i.WindowAccessorKey,{value:i.getInstance(),writable:!1})}static start(){i.assignToWindow(),window.addEventListener("load",()=>{window[i.WindowAccessorKey]instanceof i||i.assignToWindow()})}createNS(e){const n=new a;return n.setText(e||""),this.nsStack.push(n),n}cleanAndRemove(e){return w(e),e.remove().getId()}stackDelete(e){let n=this.findIndex(r=>r.getId()===e.getId());return n<0?null:(this.nsStack.splice(n,1),e.getId())}deleteNS(e){const n=this.find(e);return n?(this.cleanAndRemove(n),this.stackDelete(n)):null}show(e){let n=g(document.body);return n||(n=this.createNS(),m(n.getNSElement(),document.body)),n.setText(e||"").getId()}showInside(e,n){const r=x(e);if(r){let s=g(r);return s||(s=this.createNS()),m(s.getNSElement(),r),s.setText(n||"").getId()}return null}hide(){const e=this.nsStack.pop();return e?this.cleanAndRemove(e):null}hideAll(){this.nsStack.forEach(this.cleanAndRemove),this.nsStack.splice(0,this.nsStack.length)}hideId(e){return this.deleteNS(n=>n.getId()===e)}hideInside(e){const n=x(e),r=s=>s.getNSElement().parentElement===n;return n?this.deleteNS(r):null}};c(i,"WindowAccessorKey","ns"),c(i,"instance");let h=i;try{h.start()}catch(t){console.warn(t)}
|
package/docs/index.html
CHANGED
|
@@ -2,130 +2,106 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDEwIiBoZWlnaHQ9IjQwNCIgdmlld0JveD0iMCAwIDQxMCA0MDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0zOTkuNjQxIDU5LjUyNDZMMjE1LjY0MyAzODguNTQ1QzIxMS44NDQgMzk1LjMzOCAyMDIuMDg0IDM5NS4zNzggMTk4LjIyOCAzODguNjE4TDEwLjU4MTcgNTkuNTU2M0M2LjM4MDg3IDUyLjE4OTYgMTIuNjgwMiA0My4yNjY1IDIxLjAyODEgNDQuNzU4NkwyMDUuMjIzIDc3LjY4MjRDMjA2LjM5OCA3Ny44OTI0IDIwNy42MDEgNzcuODkwNCAyMDguNzc2IDc3LjY3NjNMMzg5LjExOSA0NC44MDU4QzM5Ny40MzkgNDMuMjg5NCA0MDMuNzY4IDUyLjE0MzQgMzk5LjY0MSA1OS41MjQ2WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPgo8cGF0aCBkPSJNMjkyLjk2NSAxLjU3NDRMMTU2LjgwMSAyOC4yNTUyQzE1NC41NjMgMjguNjkzNyAxNTIuOTA2IDMwLjU5MDMgMTUyLjc3MSAzMi44NjY0TDE0NC4zOTUgMTc0LjMzQzE0NC4xOTggMTc3LjY2MiAxNDcuMjU4IDE4MC4yNDggMTUwLjUxIDE3OS40OThMMTg4LjQyIDE3MC43NDlDMTkxLjk2NyAxNjkuOTMxIDE5NS4xNzIgMTczLjA1NSAxOTQuNDQzIDE3Ni42MjJMMTgzLjE4IDIzMS43NzVDMTgyLjQyMiAyMzUuNDg3IDE4NS45MDcgMjM4LjY2MSAxODkuNTMyIDIzNy41NkwyMTIuOTQ3IDIzMC40NDZDMjE2LjU3NyAyMjkuMzQ0IDIyMC4wNjUgMjMyLjUyNyAyMTkuMjk3IDIzNi4yNDJMMjAxLjM5OCAzMjIuODc1QzIwMC4yNzggMzI4LjI5NCAyMDcuNDg2IDMzMS4yNDkgMjEwLjQ5MiAzMjYuNjAzTDIxMi41IDMyMy41TDMyMy40NTQgMTAyLjA3MkMzMjUuMzEyIDk4LjM2NDUgMzIyLjEwOCA5NC4xMzcgMzE4LjAzNiA5NC45MjI4TDI3OS4wMTQgMTAyLjQ1NEMyNzUuMzQ3IDEwMy4xNjEgMjcyLjIyNyA5OS43NDYgMjczLjI2MiA5Ni4xNTgzTDI5OC43MzEgNy44NjY4OUMyOTkuNzY3IDQuMjczMTQgMjk2LjYzNiAwLjg1NTE4MSAyOTIuOTY1IDEuNTc0NFoiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcikiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9IjYuMDAwMTciIHkxPSIzMi45OTk5IiB4Mj0iMjM1IiB5Mj0iMzQ0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM0MUQxRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkQzNEZFIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhciIgeDE9IjE5NC42NTEiIHkxPSI4LjgxODE4IiB4Mj0iMjM2LjA3NiIgeTI9IjI5Mi45ODkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0ZGRUE4MyIvPgo8c3RvcCBvZmZzZXQ9IjAuMDgzMzMzMyIgc3RvcC1jb2xvcj0iI0ZGREQzNSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRkE4MDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K" />
|
|
6
|
-
<script src="https://cdn.tailwindcss.com"></script>
|
|
7
|
-
<link href="https://cdn.lineicons.com/3.0/lineicons.css" rel="stylesheet" />
|
|
8
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
9
6
|
<title>Nanosplash</title>
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
<link rel="stylesheet" href="/style.css">
|
|
7
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0" />
|
|
9
|
+
<script type="module" crossorigin src="/nanosplash/index.f34144dc.js"></script>
|
|
10
|
+
<link rel="stylesheet" href="/nanosplash/index.74dbd99e.css">
|
|
15
11
|
</head>
|
|
16
|
-
<body class="
|
|
17
|
-
<div
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<div class="
|
|
21
|
-
|
|
22
|
-
id="demo"
|
|
23
|
-
class="bg-pink-500 text-pink-200 p-3 cursor-pointer hover:text-white rounded-xl shadow-xl mt-8"
|
|
24
|
-
>
|
|
25
|
-
<i class="lni lni-play"></i>
|
|
26
|
-
Display demo
|
|
27
|
-
</div>
|
|
28
|
-
<a
|
|
29
|
-
href="#example"
|
|
30
|
-
class="bg-slate-500 text-slate-200 p-3 cursor-pointer hover:text-white rounded-xl shadow-xl mt-8"
|
|
31
|
-
>
|
|
32
|
-
Show examples
|
|
33
|
-
</a>
|
|
34
|
-
</div>
|
|
35
|
-
<div class="flex flex-col space-y-2 my-10">
|
|
36
|
-
<div class="flex space-x-2 justify-center">
|
|
37
|
-
<img src="https://badgen.net/npm/v/nanosplash" />
|
|
38
|
-
<img src="https://badgen.net/npm/types/nanosplash" />
|
|
39
|
-
<img src="https://badgen.net/npm/dw/nanosplash" />
|
|
40
|
-
</div>
|
|
41
|
-
<div class="flex space-x-2 justify-center">
|
|
42
|
-
<img src="https://badgen.net/bundlephobia/min/nanosplash" />
|
|
43
|
-
<img
|
|
44
|
-
src="https://badgen.net/bundlephobia/tree-shaking/nanosplash"
|
|
45
|
-
/>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
<div class="flex rounded-xl text-slate-400 shadow-xl overflow-hidden">
|
|
49
|
-
<div data-copy class="p-3 bg-slate-800 text-slate-400 font-mono">
|
|
50
|
-
<script src="https://unpkg.com/nanosplash/dist/iife/nanosplash.iife.js">
|
|
51
|
-
</div>
|
|
52
|
-
<div id="copy" class="bg-pink-500 text-pink-200 p-3 cursor-pointer hover:text-white">Copy</div>
|
|
53
|
-
</div>
|
|
54
|
-
<div class="mt-10 flex justify-content items-center divide-x-2 text-slate-400">
|
|
55
|
-
<a href="https://www.npmjs.com/package/nanosplash" target="_blank"><i class="lni lni-npm text-4xl hover:text-pink-500 px-5"></i></a>
|
|
56
|
-
<a href="https://github.com/isakhauge/nanosplash" target="_blank"><i class="lni lni-github-original text-2xl hover:text-pink-500 px-5"></i></a>
|
|
12
|
+
<body class="bg-slate-50 min-w-full min-h-screen">
|
|
13
|
+
<div
|
|
14
|
+
id="main"
|
|
15
|
+
class="min-h-screen flex flex-col justify-center items-center p-5 overflow-hidden">
|
|
16
|
+
<div class="text-slate-700 font-medium text-4xl md:text-4xl xl:text-5xl drop-shadow-md tracking-wide">
|
|
17
|
+
Nanosplash
|
|
57
18
|
</div>
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<
|
|
63
|
-
<
|
|
64
|
-
|
|
65
|
-
[promise1, 'Loading A'],<br>
|
|
66
|
-
[promise2, 'Loading B'],<br>
|
|
67
|
-
[promise3, 'Loading C'],<br>
|
|
68
|
-
).inside('#myDiv')
|
|
69
|
-
</div>
|
|
70
|
-
</div>
|
|
71
|
-
<div id="b" class="p-20 bg-slate-100 flex flex-col items-center">
|
|
72
|
-
<div class="text-xl mb-10">Handle async functions</div>
|
|
73
|
-
<div class="text-white bg-slate-800 p-5 rounded-xl shadow-2xl font-mono text-sm break-all">
|
|
74
|
-
ns.while(promise).show('Loading ...').inside('#myDiv')
|
|
75
|
-
</div>
|
|
19
|
+
<div class="mt-5 md:mt-10 flex max-w-md justify-center flex-wrap gap-x-1 gap-y-1 drop-shadow-md">
|
|
20
|
+
<img loading="lazy" src="https://badgen.net/npm/v/nanosplash" alt="Version">
|
|
21
|
+
<img loading="lazy" src="https://badgen.net/npm/license/nanosplash" alt="License">
|
|
22
|
+
<img loading="lazy" src="https://badgen.net/npm/types/nanosplash" alt="Types">
|
|
23
|
+
<img loading="lazy" src="https://badgen.net/bundlephobia/minzip/nanosplash" alt="Minzipped size">
|
|
24
|
+
<img loading="lazy" src="https://badgen.net/bundlephobia/dependency-count/nanosplash" alt="Dependency count">
|
|
25
|
+
<img loading="lazy" src="https://badgen.net/bundlephobia/tree-shaking/nanosplash" alt="Tree shaking">
|
|
76
26
|
</div>
|
|
77
|
-
<div
|
|
78
|
-
<
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
27
|
+
<div class="mt-5 md:mt-10 flex gap-x-3 w-full max-w-[500px] justify-center">
|
|
28
|
+
<button
|
|
29
|
+
id="run"
|
|
30
|
+
type="button"
|
|
31
|
+
class="py-2 px-3 bg-white text-slate-700 rounded-xl shadow flex items-center gap-x-2 ease-in-out duration-300 shadow-md hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
32
|
+
<span class="material-symbols-outlined">magic_button</span>
|
|
33
|
+
Run demo
|
|
34
|
+
</button>
|
|
35
|
+
<a
|
|
36
|
+
id="doc"
|
|
37
|
+
href="https://github.com/isakhauge/nanosplash"
|
|
38
|
+
type="button"
|
|
39
|
+
class="py-2 px-3 bg-white text-slate-700 rounded-xl shadow flex items-center gap-x-2 ease-in-out duration-300 shadow-md hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
40
|
+
<span class="material-symbols-outlined">menu_book</span>
|
|
41
|
+
Documentation
|
|
42
|
+
</a>
|
|
82
43
|
</div>
|
|
83
|
-
<div
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
44
|
+
<div
|
|
45
|
+
id="wrapper"
|
|
46
|
+
class="relative min-w-[300px] mt-5 md:mt-20 flex flex-col md:flex-row gap-y-5 md:gap-y-0 md:gap-x-5 justify-stretch items-stretch bg-white 00 p-10 md:p-10 xl:p-20 rounded-xl ease-in-out duration-500 shadow-md hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
47
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#wrapper</div>
|
|
48
|
+
<div
|
|
49
|
+
id="a"
|
|
50
|
+
class="relative bg-white p-8 md:p-10 xl:p-20 rounded-xl shadow-md ease-in-out duration-500 hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
51
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#a</div>
|
|
52
|
+
<div class="text-slate-500 text-base md:text-xl xl:text-2xl font-medium cursor-default">Element A</div>
|
|
89
53
|
</div>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
splash.moveTo('#b')
|
|
54
|
+
<div
|
|
55
|
+
id="b"
|
|
56
|
+
class="relative bg-white p-8 md:p-10 xl:p-20 rounded-xl shadow-md ease-in-out duration-500 hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
57
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#b</div>
|
|
58
|
+
<div class="text-slate-500 text-base md:text-xl xl:text-2xl font-medium cursor-default">Element B</div>
|
|
96
59
|
</div>
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
ns.hide()<br><br>
|
|
103
|
-
// Hides all instances.<br>
|
|
104
|
-
ns.hideAll()
|
|
60
|
+
<div
|
|
61
|
+
id="c"
|
|
62
|
+
class="relative bg-white p-8 md:p-10 xl:p-20 rounded-xl shadow-md ease-in-out duration-500 hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
63
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#c</div>
|
|
64
|
+
<div class="text-slate-500 text-base md:text-xl xl:text-2xl font-medium cursor-default">Element C</div>
|
|
105
65
|
</div>
|
|
106
66
|
</div>
|
|
107
67
|
</div>
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
68
|
+
|
|
69
|
+
<script>
|
|
70
|
+
const wait = (ms) => new Promise(r => setTimeout(r, ms))
|
|
71
|
+
const ref = (selector) => document.querySelector(selector)
|
|
72
|
+
const run = ref('#run')
|
|
73
|
+
run.onclick = async () => {
|
|
74
|
+
console.log('Running demo')
|
|
75
|
+
const sec = (n) => n * 1000
|
|
76
|
+
ns.show('Nanosplash')
|
|
77
|
+
await wait(sec(2))
|
|
78
|
+
ns.show('Tiny loading screen')
|
|
79
|
+
await wait(sec(2))
|
|
80
|
+
ns.show('For web artisans')
|
|
81
|
+
await wait(sec(2))
|
|
82
|
+
ns.hide()
|
|
83
|
+
ns.showInside('#wrapper', 'Display over elements')
|
|
84
|
+
await wait(sec(2.25))
|
|
85
|
+
ns.hide()
|
|
86
|
+
ns.showInside('#a', 'Like this')
|
|
87
|
+
await wait(sec(0.5))
|
|
88
|
+
ns.showInside('#b', 'This')
|
|
89
|
+
await wait(sec(0.5))
|
|
90
|
+
ns.showInside('#c', 'Or this')
|
|
91
|
+
await wait(sec(1))
|
|
92
|
+
ns.hideAll()
|
|
93
|
+
ns.show('Simple API')
|
|
94
|
+
await wait(sec(1.5))
|
|
95
|
+
ns.show('1.5kb minzipped')
|
|
96
|
+
await wait(sec(1.5))
|
|
97
|
+
ns.show('No dependencies')
|
|
98
|
+
await wait(sec(1.5))
|
|
99
|
+
ns.show('99% test coverage')
|
|
100
|
+
await wait(sec(1.5))
|
|
101
|
+
ns.show('Nanosplash')
|
|
102
|
+
await wait(sec(2))
|
|
103
|
+
ns.hide()
|
|
104
|
+
}
|
|
105
|
+
</script>
|
|
130
106
|
</body>
|
|
131
107
|
</html>
|
package/index.html
CHANGED
|
@@ -2,132 +2,104 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" type="image/svg+xml" href="favicon.svg" />
|
|
6
|
-
<script src="https://cdn.tailwindcss.com"></script>
|
|
7
|
-
<link href="https://cdn.lineicons.com/3.0/lineicons.css" rel="stylesheet" />
|
|
8
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
9
6
|
<title>Nanosplash</title>
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
<meta name="author" content="Isak Hauge" />
|
|
7
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0" />
|
|
13
9
|
</head>
|
|
14
|
-
<body class="
|
|
15
|
-
<div
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<div class="
|
|
19
|
-
|
|
20
|
-
id="demo"
|
|
21
|
-
class="bg-pink-500 text-pink-200 p-3 cursor-pointer hover:text-white rounded-xl shadow-xl mt-8"
|
|
22
|
-
>
|
|
23
|
-
<i class="lni lni-play"></i>
|
|
24
|
-
Display demo
|
|
25
|
-
</div>
|
|
26
|
-
<a
|
|
27
|
-
href="#example"
|
|
28
|
-
class="bg-slate-500 text-slate-200 p-3 cursor-pointer hover:text-white rounded-xl shadow-xl mt-8"
|
|
29
|
-
>
|
|
30
|
-
Show examples
|
|
31
|
-
</a>
|
|
32
|
-
</div>
|
|
33
|
-
<div class="flex flex-col space-y-2 my-10">
|
|
34
|
-
<div class="flex space-x-2 justify-center">
|
|
35
|
-
<img src="https://badgen.net/npm/v/nanosplash" />
|
|
36
|
-
<img src="https://badgen.net/npm/types/nanosplash" />
|
|
37
|
-
<img src="https://badgen.net/npm/dw/nanosplash" />
|
|
38
|
-
</div>
|
|
39
|
-
<div class="flex space-x-2 justify-center">
|
|
40
|
-
<img src="https://badgen.net/bundlephobia/min/nanosplash" />
|
|
41
|
-
<img
|
|
42
|
-
src="https://badgen.net/bundlephobia/tree-shaking/nanosplash"
|
|
43
|
-
/>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
<div class="flex rounded-xl text-slate-400 shadow-xl overflow-hidden">
|
|
47
|
-
<div data-copy class="p-3 bg-slate-800 text-slate-400 font-mono">
|
|
48
|
-
<script src="https://unpkg.com/nanosplash/dist/iife/nanosplash.iife.js">
|
|
49
|
-
</div>
|
|
50
|
-
<div id="copy" class="bg-pink-500 text-pink-200 p-3 cursor-pointer hover:text-white">Copy</div>
|
|
51
|
-
</div>
|
|
52
|
-
<div class="mt-10 flex justify-content items-center divide-x-2 text-slate-400">
|
|
53
|
-
<a href="https://www.npmjs.com/package/nanosplash" target="_blank"><i class="lni lni-npm text-4xl hover:text-pink-500 px-5"></i></a>
|
|
54
|
-
<a href="https://github.com/isakhauge/nanosplash" target="_blank"><i class="lni lni-github-original text-2xl hover:text-pink-500 px-5"></i></a>
|
|
10
|
+
<body class="bg-slate-50 min-w-full min-h-screen">
|
|
11
|
+
<div
|
|
12
|
+
id="main"
|
|
13
|
+
class="min-h-screen flex flex-col justify-center items-center p-5 overflow-hidden">
|
|
14
|
+
<div class="text-slate-700 font-medium text-4xl md:text-4xl xl:text-5xl drop-shadow-md tracking-wide">
|
|
15
|
+
Nanosplash
|
|
55
16
|
</div>
|
|
56
|
-
<
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
<
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
[promise1, 'Loading A'],<br>
|
|
64
|
-
[promise2, 'Loading B'],<br>
|
|
65
|
-
[promise3, 'Loading C'],<br>
|
|
66
|
-
).inside('#myDiv')
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
<div id="b" class="p-20 bg-slate-100 flex flex-col items-center">
|
|
70
|
-
<div class="text-xl mb-10">Handle async functions</div>
|
|
71
|
-
<div class="text-white bg-slate-800 p-5 rounded-xl shadow-2xl font-mono text-sm break-all">
|
|
72
|
-
ns.while(promise).show('Loading ...').inside('#myDiv')
|
|
73
|
-
</div>
|
|
17
|
+
<div class="mt-5 md:mt-10 flex max-w-md justify-center flex-wrap gap-x-1 gap-y-1 drop-shadow-md">
|
|
18
|
+
<img loading="lazy" src="https://badgen.net/npm/v/nanosplash" alt="Version">
|
|
19
|
+
<img loading="lazy" src="https://badgen.net/npm/license/nanosplash" alt="License">
|
|
20
|
+
<img loading="lazy" src="https://badgen.net/npm/types/nanosplash" alt="Types">
|
|
21
|
+
<img loading="lazy" src="https://badgen.net/bundlephobia/minzip/nanosplash" alt="Minzipped size">
|
|
22
|
+
<img loading="lazy" src="https://badgen.net/bundlephobia/dependency-count/nanosplash" alt="Dependency count">
|
|
23
|
+
<img loading="lazy" src="https://badgen.net/bundlephobia/tree-shaking/nanosplash" alt="Tree shaking">
|
|
74
24
|
</div>
|
|
75
|
-
<div
|
|
76
|
-
<
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
25
|
+
<div class="mt-5 md:mt-10 flex gap-x-3 w-full max-w-[500px] justify-center">
|
|
26
|
+
<button
|
|
27
|
+
id="run"
|
|
28
|
+
type="button"
|
|
29
|
+
class="py-2 px-3 bg-white text-slate-700 rounded-xl shadow flex items-center gap-x-2 ease-in-out duration-300 shadow-md hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
30
|
+
<span class="material-symbols-outlined">magic_button</span>
|
|
31
|
+
Run demo
|
|
32
|
+
</button>
|
|
33
|
+
<a
|
|
34
|
+
id="doc"
|
|
35
|
+
href="https://github.com/isakhauge/nanosplash"
|
|
36
|
+
type="button"
|
|
37
|
+
class="py-2 px-3 bg-white text-slate-700 rounded-xl shadow flex items-center gap-x-2 ease-in-out duration-300 shadow-md hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
38
|
+
<span class="material-symbols-outlined">menu_book</span>
|
|
39
|
+
Documentation
|
|
40
|
+
</a>
|
|
80
41
|
</div>
|
|
81
|
-
<div
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
42
|
+
<div
|
|
43
|
+
id="wrapper"
|
|
44
|
+
class="relative min-w-[300px] mt-5 md:mt-20 flex flex-col md:flex-row gap-y-5 md:gap-y-0 md:gap-x-5 justify-stretch items-stretch bg-white 00 p-10 md:p-10 xl:p-20 rounded-xl ease-in-out duration-500 shadow-md hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
45
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#wrapper</div>
|
|
46
|
+
<div
|
|
47
|
+
id="a"
|
|
48
|
+
class="relative bg-white p-8 md:p-10 xl:p-20 rounded-xl shadow-md ease-in-out duration-500 hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
49
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#a</div>
|
|
50
|
+
<div class="text-slate-500 text-base md:text-xl xl:text-2xl font-medium cursor-default">Element A</div>
|
|
87
51
|
</div>
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
splash.moveTo('#b')
|
|
52
|
+
<div
|
|
53
|
+
id="b"
|
|
54
|
+
class="relative bg-white p-8 md:p-10 xl:p-20 rounded-xl shadow-md ease-in-out duration-500 hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
55
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#b</div>
|
|
56
|
+
<div class="text-slate-500 text-base md:text-xl xl:text-2xl font-medium cursor-default">Element B</div>
|
|
94
57
|
</div>
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
ns.hide()<br><br>
|
|
101
|
-
// Hides all instances.<br>
|
|
102
|
-
ns.hideAll()
|
|
58
|
+
<div
|
|
59
|
+
id="c"
|
|
60
|
+
class="relative bg-white p-8 md:p-10 xl:p-20 rounded-xl shadow-md ease-in-out duration-500 hover:shadow-2xl hover:translate-y-[-2px] border border-[rgba(0,0,0,0.02)]">
|
|
61
|
+
<div class="absolute top-2 left-2 font-mono text-xs md:text-sm xl:text-base text-slate-500 cursor-default">#c</div>
|
|
62
|
+
<div class="text-slate-500 text-base md:text-xl xl:text-2xl font-medium cursor-default">Element C</div>
|
|
103
63
|
</div>
|
|
104
64
|
</div>
|
|
105
65
|
</div>
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
66
|
+
<script type="module" src="src/ts/main.ts"></script>
|
|
67
|
+
<script>
|
|
68
|
+
const wait = (ms) => new Promise(r => setTimeout(r, ms))
|
|
69
|
+
const ref = (selector) => document.querySelector(selector)
|
|
70
|
+
const run = ref('#run')
|
|
71
|
+
run.onclick = async () => {
|
|
72
|
+
console.log('Running demo')
|
|
73
|
+
const sec = (n) => n * 1000
|
|
74
|
+
ns.show('Nanosplash')
|
|
75
|
+
await wait(sec(2))
|
|
76
|
+
ns.show('Tiny loading screen')
|
|
77
|
+
await wait(sec(2))
|
|
78
|
+
ns.show('For web artisans')
|
|
79
|
+
await wait(sec(2))
|
|
80
|
+
ns.hide()
|
|
81
|
+
ns.showInside('#wrapper', 'Display over elements')
|
|
82
|
+
await wait(sec(2.25))
|
|
83
|
+
ns.hide()
|
|
84
|
+
ns.showInside('#a', 'Like this')
|
|
85
|
+
await wait(sec(0.5))
|
|
86
|
+
ns.showInside('#b', 'This')
|
|
87
|
+
await wait(sec(0.5))
|
|
88
|
+
ns.showInside('#c', 'Or this')
|
|
89
|
+
await wait(sec(1))
|
|
90
|
+
ns.hideAll()
|
|
91
|
+
ns.show('Simple API')
|
|
92
|
+
await wait(sec(1.5))
|
|
93
|
+
ns.show('1.5kb minzipped')
|
|
94
|
+
await wait(sec(1.5))
|
|
95
|
+
ns.show('No dependencies')
|
|
96
|
+
await wait(sec(1.5))
|
|
97
|
+
ns.show('99% test coverage')
|
|
98
|
+
await wait(sec(1.5))
|
|
99
|
+
ns.show('Nanosplash')
|
|
100
|
+
await wait(sec(2))
|
|
101
|
+
ns.hide()
|
|
130
102
|
}
|
|
131
|
-
</
|
|
103
|
+
</script>
|
|
132
104
|
</body>
|
|
133
105
|
</html>
|
package/package.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nanosplash",
|
|
3
|
-
"description": "The
|
|
4
|
-
"
|
|
3
|
+
"description": "The tiny loading screen for web artisans",
|
|
4
|
+
"private": false,
|
|
5
|
+
"version": "3.0.1",
|
|
6
|
+
"type": "module",
|
|
5
7
|
"author": {
|
|
6
8
|
"name": "Isak K. Hauge",
|
|
7
|
-
"email": "isakhauge@
|
|
9
|
+
"email": "isakhauge@icloud.com",
|
|
8
10
|
"url": "https://no.linkedin.com/in/isakhauge"
|
|
9
11
|
},
|
|
10
12
|
"keywords": [
|
|
@@ -30,45 +32,57 @@
|
|
|
30
32
|
"url": "https://github.com/isakhauge/nanosplash.git"
|
|
31
33
|
},
|
|
32
34
|
"license": "MIT",
|
|
33
|
-
"main": "./dist/
|
|
34
|
-
"module": "./dist/
|
|
35
|
-
"source": "./src/
|
|
36
|
-
"unpkg": "./dist/iife/
|
|
37
|
-
"style": "./dist/
|
|
35
|
+
"main": "./dist/latest/es/ns.js",
|
|
36
|
+
"module": "./dist/latest/es/ns.js",
|
|
37
|
+
"source": "./src/main.ts",
|
|
38
|
+
"unpkg": "./dist/latest/iife/ns.iife.js",
|
|
39
|
+
"style": "./dist/latest/es/style.css",
|
|
38
40
|
"exports": {
|
|
39
41
|
".": {
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
"types": {
|
|
43
|
+
"require": "./src/ts/types/global.d.ts",
|
|
44
|
+
"default": "./src/ts/types/global.d.ts"
|
|
45
|
+
},
|
|
46
|
+
"browser": {
|
|
47
|
+
"require": "./dist/latest/cjs/ns.cjs",
|
|
48
|
+
"default": "./dist/latest/es/ns.js"
|
|
49
|
+
},
|
|
50
|
+
"default": {
|
|
51
|
+
"require": "./dist/latest/cjs/ns.cjs",
|
|
52
|
+
"default": "./dist/latest/es/ns.js"
|
|
53
|
+
}
|
|
43
54
|
}
|
|
44
55
|
},
|
|
45
|
-
"types": "./src/types.d.ts",
|
|
56
|
+
"types": "./src/ts/types/global.d.ts",
|
|
46
57
|
"scripts": {
|
|
47
|
-
"dev": "vite
|
|
48
|
-
"build
|
|
49
|
-
"build
|
|
50
|
-
"build
|
|
51
|
-
"build": "tsc &&
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
58
|
+
"dev": "vite",
|
|
59
|
+
"build": "yarn build:all && yarn build:all:versioned && yarn build:demo",
|
|
60
|
+
"build:es": "tsc && cross-env entry=./src/ts/core/Service.ts format=es yarn vite build -m production --c vite.config.ts",
|
|
61
|
+
"build:cjs": "tsc && cross-env entry=./src/ts/core/Service.ts format=cjs yarn vite build -m production --c vite.config.ts",
|
|
62
|
+
"build:iife": "tsc && cross-env entry=./src/ts/main.ts format=iife yarn vite build -m production --c vite.config.ts",
|
|
63
|
+
"build:es:ver": "tsc && cross-env versioned=true entry=./src/ts/core/Service.ts format=es yarn vite build -m production --c vite.config.ts",
|
|
64
|
+
"build:cjs:ver": "tsc && cross-env versioned=true entry=./src/ts/core/Service.ts format=cjs yarn vite build -m production --c vite.config.ts",
|
|
65
|
+
"build:iife:ver": "tsc && cross-env versioned=true entry=./src/ts/main.ts format=iife yarn vite build -m production --c vite.config.ts",
|
|
66
|
+
"build:all": "yarn build:es && yarn build:cjs && yarn build:iife",
|
|
67
|
+
"build:all:versioned": "yarn build:es:ver && yarn build:cjs:ver && yarn build:iife:ver",
|
|
68
|
+
"build:demo": "tsc && vite build -m production --c vite.demo.config.ts",
|
|
69
|
+
"preview": "vite preview",
|
|
55
70
|
"test": "vitest",
|
|
56
|
-
"
|
|
71
|
+
"test:ui": "vitest --ui",
|
|
72
|
+
"coverage": "vitest --coverage"
|
|
57
73
|
},
|
|
58
74
|
"devDependencies": {
|
|
59
|
-
"@types/
|
|
60
|
-
"@types/
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"sass": "^1.
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"vite": "^2.9.12",
|
|
72
|
-
"vitest": "^0.15.1"
|
|
75
|
+
"@types/jsdom": "^21.1.2",
|
|
76
|
+
"@types/node": "^20.5.9",
|
|
77
|
+
"@types/rollup": "^0.54.0",
|
|
78
|
+
"@vitest/coverage-v8": "^0.34.3",
|
|
79
|
+
"@vitest/ui": "^0.34.3",
|
|
80
|
+
"cross-env": "^7.0.3",
|
|
81
|
+
"jsdom": "^22.1.0",
|
|
82
|
+
"sass": "^1.66.1",
|
|
83
|
+
"terser": "^5.19.3",
|
|
84
|
+
"typescript": "^5.2.2",
|
|
85
|
+
"vite": "^4.4.9",
|
|
86
|
+
"vitest": "^0.34.3"
|
|
73
87
|
}
|
|
74
|
-
}
|
|
88
|
+
}
|