@adelalawdi/fnon2 2.0.0
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 +1167 -0
- package/fnon.min.css +1 -0
- package/fnon.min.js +1 -0
- package/index.html +3888 -0
- package/package.json +27 -0
package/fnon.min.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--fnon-font: "Quicksand", sans-serif;--fnon-z-overlay: 4000;--fnon-z-modal: 4001;--fnon-z-hint: 5000;--fnon-z-wait: 6000;--fnon-radius: 10px;--fnon-transition: .25s ease}.fnon-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--fnon-z-overlay);background:#0006;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--fnon-transition);pointer-events:none}.fnon-overlay.fnon-active{opacity:1;pointer-events:all}.fnon-overlay-hidden{pointer-events:none!important;opacity:0!important}.fnon-task-bar{position:fixed;bottom:0;left:0;right:0;z-index:calc(var(--fnon-z-modal) + 20);display:flex;align-items:center;gap:4px;padding:4px 8px;background:#2d3748;box-shadow:0 -2px 8px #0003;font-family:var(--fnon-font)}.fnon-task-bar-btn{font-family:var(--fnon-font);font-size:.78rem;padding:4px 12px;border:none;border-radius:4px;background:#ffffff26;color:#fff;cursor:pointer;transition:background .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.fnon-task-bar-btn:hover{background:#ffffff40}.fnon-modal{font-family:var(--fnon-font);background:var(--fnon-bg, #fff);border-radius:var(--fnon-radius);border:2px solid var(--fnon-title-background, #029eff);box-shadow:0 20px 60px #0003;max-width:480px;width:90%;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;transform:translateY(30px) scale(.97);transition:transform var(--fnon-transition),opacity var(--fnon-transition);opacity:0}.fnon-modal.fnon-active{transform:translateY(0) scale(1);opacity:1}.fnon-modal.fnon-minimized{display:none!important}.fnon-modal-title{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--fnon-title-background, #029eff);color:var(--fnon-title-color, #fff);font-weight:600;font-size:1rem;-webkit-user-select:none;user-select:none;cursor:grab}.fnon-modal-title:active{cursor:grabbing}.fnon-dragging{transition:none!important}.fnon-dragging .fnon-modal-title{cursor:grabbing}.fnon-modal-title-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fnon-modal-controls{display:flex;align-items:center;gap:4px;margin-left:12px}.fnon-modal-controls button{background:none;border:none;color:inherit;cursor:pointer;padding:2px 6px;font-size:14px;line-height:1;border-radius:4px;opacity:.8;transition:opacity .15s}.fnon-modal-controls button:hover{opacity:1;background:#ffffff26}.fnon-modal-controls button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.fnon-modal-body{padding:20px;font-size:.95rem;line-height:1.6;color:#2d3748;overflow-y:auto;flex:1}.fnon-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid #e2e8f0}.fnon-btn{font-family:var(--fnon-font);font-size:.82rem;font-weight:600;padding:8px 20px;border:none;border-radius:6px;cursor:pointer;transition:opacity .15s,transform .1s}.fnon-btn:hover{opacity:.88;transform:translateY(-1px)}.fnon-btn:active{transform:translateY(0)}.fnon-btn:focus-visible{outline:2px solid #c53030;outline-offset:2px}.fnon-btn{background:var(--fnon-btn-ok-background, #029eff);color:var(--fnon-btn-ok-color, #fff);box-shadow:0 2px 6px #00000026}.fnon-btn-light{background:#f8f9fa;color:#2d3748;box-shadow:0 1px 3px #0000001a}.fnon-btn-light:focus-visible{outline:2px solid #029eff;outline-offset:2px}.fnon-btn-danger{background:#ff6b6b;color:#fff}.fnon-btn-success{background:#39da8a;color:#fff}.fnon-btn-warning{background:#fdd347;color:#2d3748}.fnon-btn-info{background:#48dbfb;color:#2d3748}.fnon-btn-dark{background:#222f3e;color:#fff}.fnon-breaking{position:fixed;left:0;right:0;z-index:calc(var(--fnon-z-modal) + 10);font-family:var(--fnon-font);background:var(--fnon-title-background, #ff6b6b);color:var(--fnon-title-color, #fff);box-shadow:0 4px 20px #0003;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .25s;opacity:0}.fnon-breaking.fnon-breaking-top{top:0;transform:translateY(-100%)}.fnon-breaking.fnon-breaking-bottom{bottom:0;transform:translateY(100%);box-shadow:0 -4px 20px #0003}.fnon-breaking.fnon-breaking-active{transform:translateY(0)!important;opacity:1}.fnon-breaking-inner{display:flex;align-items:center;gap:16px;padding:12px 20px;max-width:1100px;margin:0 auto;flex-wrap:wrap}.fnon-breaking-headline{font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;background:#0003;padding:4px 10px;border-radius:4px;white-space:nowrap}.fnon-breaking-body{flex:1;font-size:.92rem;line-height:1.5}.fnon-breaking-buttons{display:flex;gap:6px}.fnon-breaking-buttons .fnon-btn{font-size:.78rem;padding:5px 14px}.fnon-breaking-close{background:none;border:none;color:inherit;cursor:pointer;padding:4px;opacity:.7;transition:opacity .15s;line-height:0}.fnon-breaking-close:hover{opacity:1}.fnon-breaking-close svg{width:18px;height:18px;fill:currentColor}.fnon-hint-container{position:fixed;z-index:var(--fnon-z-hint);pointer-events:none}.fnon-hint-container.right-top{top:16px;right:16px}.fnon-hint-container.right-center{top:50%;right:16px;transform:translateY(-50%)}.fnon-hint-container.right-bottom{bottom:16px;right:16px}.fnon-hint-container.left-top{top:16px;left:16px}.fnon-hint-container.left-center{top:50%;left:16px;transform:translateY(-50%)}.fnon-hint-container.left-bottom{bottom:16px;left:16px}.fnon-hint-container.center-top{top:16px;left:50%;transform:translate(-50%)}.fnon-hint-container.center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.fnon-hint-container.center-bottom{bottom:16px;left:50%;transform:translate(-50%)}.fnon-hint{font-family:var(--fnon-font);display:flex;align-items:flex-start;gap:10px;padding:12px 16px;margin-bottom:8px;border-radius:8px;box-shadow:0 4px 14px #0000001a;pointer-events:all;max-width:360px;font-size:.88rem;line-height:1.5;transition:transform .3s ease,opacity .3s ease;opacity:0;transform:translate(40px)}.fnon-hint.fnon-hint-active{opacity:1;transform:translate(0)}.fnon-hint.fnon-hint-left-top,.fnon-hint.fnon-hint-left-center,.fnon-hint.fnon-hint-left-bottom{transform:translate(-40px)}.fnon-hint.fnon-hint-left-top.fnon-hint-active,.fnon-hint.fnon-hint-left-center.fnon-hint-active,.fnon-hint.fnon-hint-left-bottom.fnon-hint-active{transform:translate(0)}.fnon-hint.fnon-hint-right-top,.fnon-hint.fnon-hint-right-center,.fnon-hint.fnon-hint-right-bottom{transform:translate(40px)}.fnon-hint.fnon-hint-right-top.fnon-hint-active,.fnon-hint.fnon-hint-right-center.fnon-hint-active,.fnon-hint.fnon-hint-right-bottom.fnon-hint-active{transform:translate(0)}.fnon-hint.fnon-hint-center-top,.fnon-hint.fnon-hint-center-bottom,.fnon-hint.fnon-hint-center-center{transform:translateY(-20px)}.fnon-hint.fnon-hint-center-top.fnon-hint-active,.fnon-hint.fnon-hint-center-bottom.fnon-hint-active,.fnon-hint.fnon-hint-center-center.fnon-hint-active{transform:translateY(0)}.fnon-hint-icon{flex-shrink:0}.fnon-hint-icon svg{width:var(--fnon-icon-w, 20px);height:var(--fnon-icon-h, 20px);display:block}.fnon-hint-progress{position:absolute;bottom:0;left:0;height:3px;border-radius:0 0 0 8px;animation:fnon-hint-progress-shrink var(--display-dur, 4s) linear forwards}@keyframes fnon-hint-progress-shrink{0%{width:100%}to{width:0%}}.fnon-hint-content{flex:1;min-width:0}.fnon-hint-title{font-weight:600;font-size:.9rem;margin-bottom:2px}.fnon-hint-message{font-size:.85rem}.fnon-hint-close{background:none;border:none;cursor:pointer;padding:2px;opacity:.5;font-size:18px;line-height:1;transition:opacity .15s;color:inherit}.fnon-hint-close:hover{opacity:.8}.fnon-hint-close:focus-visible{outline:2px solid currentColor;outline-offset:2px}.fnon-wait-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--fnon-z-wait);background:#fff9;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .25s;pointer-events:none}.fnon-wait-overlay.fnon-wait-active{opacity:1;pointer-events:all}.fnon-wait-box{text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}.fnon-wait-text{font-family:var(--fnon-font);font-size:1rem;color:#2d3748;font-weight:500}.fnon-box-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;z-index:10;border-radius:inherit}.fnon-box-inner{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.fnon-box-label{font-family:var(--fnon-font);font-size:.85rem;color:#2d3748}.fnon-sp-orbit{--fnon-sp-size: 48px;width:var(--fnon-sp-size);height:var(--fnon-sp-size);position:relative}.fnon-sp-orbit-dot{position:absolute;width:100%;height:100%;border-radius:50%;border:3px solid transparent;border-top-color:var(--fnon-sp-color, #029eff);animation:fnon-spin .8s linear infinite}.fnon-sp-orbit-dot:after{content:"";position:absolute;top:4px;left:4px;right:4px;bottom:4px;border-radius:50%;border:3px solid transparent;border-bottom-color:var(--fnon-sp-color, #029eff);animation:fnon-spin .5s linear infinite reverse}.fnon-sp-pulse{--fnon-sp-size: 48px;display:flex;align-items:center;justify-content:center;gap:5px;height:var(--fnon-sp-size)}.fnon-sp-pulse-bar{width:5px;height:60%;background:var(--fnon-sp-color, #39DA8A);border-radius:3px;animation:fnon-pulse .6s ease-in-out infinite alternate}.fnon-sp-pulse-bar:nth-child(2){animation-delay:.2s;height:90%}.fnon-sp-pulse-bar:nth-child(3){animation-delay:.4s;height:60%}.fnon-sp-spin{--fnon-sp-size: 48px;width:var(--fnon-sp-size);height:var(--fnon-sp-size)}.fnon-sp-spin-ring{width:100%;height:100%;border:4px solid #e2e8f0;border-top-color:var(--fnon-sp-color, #029eff);border-radius:50%;animation:fnon-spin .75s linear infinite}@keyframes fnon-spin{to{transform:rotate(360deg)}}@keyframes fnon-pulse{0%{transform:scaleY(.6)}to{transform:scaleY(1)}}.fnon-modal-sm{max-width:360px}.fnon-modal-nl{max-width:480px}.fnon-modal-lg{max-width:640px}.fnon-modal-xl{max-width:800px}.fnon-modal-fl{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;max-width:none!important;width:100%!important;max-height:none!important;height:100%!important;margin:0!important;border-radius:0!important;box-shadow:none!important}.fnon-hidden{display:none!important}.fnon-dp{font-family:var(--fnon-font, "Quicksand", sans-serif);-webkit-user-select:none;user-select:none;background:var(--dp-bg);--dp-accent: #029eff;--dp-bg: #fff;--dp-text: #2d3748;--dp-border: #e2e8f0;--dp-hover: #ebf8ff;--dp-other: #a0aec0;--dp-disabled: #e2e8f0;--dp-selected: #029eff;--dp-selected-text: #fff;--dp-range: #ebf8ff;--dp-popup-bg: #fff;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.12);--dp-today-ring: #029eff}.fnon-dp.fnon-dp-dark{--dp-bg: #0f172a;--dp-text: #e2e8f0;--dp-border: #334155;--dp-hover: #1e293b;--dp-other: #64748b;--dp-disabled: #334155;--dp-selected: #0284c7;--dp-selected-text: #fff;--dp-range: #1e3a5f;--dp-popup-bg: #1e293b;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.4);--dp-today-ring: #38bdf8}.fnon-dp-header{display:flex;align-items:center;gap:4px;padding:.75rem .75rem 0;position:relative}.fnon-dp-nav{background:none;border:1px solid var(--dp-border);border-radius:6px;width:32px;height:32px;font-size:1.2rem;cursor:pointer;color:var(--dp-text);display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;line-height:1}.fnon-dp-nav:hover{background:var(--dp-hover);border-color:var(--dp-accent);color:var(--dp-accent)}.fnon-dp-nav:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-nav.fnon-dp-nav-disabled{opacity:.25;cursor:not-allowed;pointer-events:none}.fnon-dp-label{flex:1;text-align:center;background:none;border:1px solid transparent;border-radius:6px;padding:.3rem .5rem;font-size:.9rem;font-weight:600;cursor:pointer;color:var(--dp-text);transition:all .15s;font-family:inherit}.fnon-dp-label:hover{background:var(--dp-hover);border-color:var(--dp-border)}.fnon-dp-label:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:.5rem .75rem .25rem}.fnon-dp-dow{text-align:center;font-size:.65rem;font-weight:600;text-transform:uppercase;color:var(--dp-other);padding:.3rem 0;letter-spacing:.03em}.fnon-dp-day{text-align:center;padding:.4rem 0;font-size:.8rem;border-radius:6px;cursor:pointer;transition:all .12s;color:var(--dp-text);position:relative}.fnon-dp-day:hover:not(.fnon-dp-disabled):not(.fnon-dp-other){background:var(--dp-hover)}.fnon-dp-day:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-day.fnon-dp-other{color:var(--dp-other);cursor:default}.fnon-dp-day.fnon-dp-disabled{color:var(--dp-disabled);cursor:not-allowed}.fnon-dp-day.fnon-dp-today{font-weight:700;box-shadow:inset 0 0 0 1.5px var(--dp-today-ring)}.fnon-dp-day.fnon-dp-selected{background:var(--dp-selected);color:var(--dp-selected-text);font-weight:600;box-shadow:none}.fnon-dp-day.fnon-dp-range{background:var(--dp-range);border-radius:0}.fnon-dp-day.fnon-dp-range-start{background:var(--dp-selected);color:var(--dp-selected-text);border-radius:6px 0 0 6px;font-weight:600}.fnon-dp-day.fnon-dp-range-end{background:var(--dp-selected);color:var(--dp-selected-text);border-radius:0 6px 6px 0;font-weight:600}.fnon-dp-day.fnon-dp-range-preview{background:var(--dp-range);border-radius:0;opacity:.55}.fnon-dp-time{display:flex;align-items:center;gap:8px;padding:.25rem .75rem .5rem}.fnon-dp-time label{font-size:.75rem;font-weight:600;color:var(--dp-text)}.fnon-dp-time-input{font-family:inherit;font-size:.8rem;padding:.25rem .5rem;border:1px solid var(--dp-border);border-radius:5px;background:transparent;color:var(--dp-text);outline:none}.fnon-dp-time-input:focus{border-color:var(--dp-accent)}.fnon-dp-actions{display:flex;gap:6px;padding:.25rem .75rem .75rem}.fnon-dp-btn{font-family:inherit;font-size:.75rem;padding:.35rem .75rem;border:1px solid var(--dp-border);border-radius:6px;background:transparent;color:var(--dp-text);cursor:pointer;transition:all .15s}.fnon-dp-btn:hover{border-color:var(--dp-accent);color:var(--dp-accent);background:var(--dp-hover)}.fnon-dp-btn:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-btn.fnon-dp-btn-primary{background:var(--dp-selected);color:var(--dp-selected-text);border-color:var(--dp-selected)}.fnon-dp-btn.fnon-dp-btn-primary:hover{opacity:.88}.fnon-dp-popup{--dp-popup-bg: #fff;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.12);--dp-border: #e2e8f0;--dp-hover: #ebf8ff;--dp-accent: #029eff;--dp-text: #2d3748;--dp-selected: #029eff;--dp-selected-text: #fff;--dp-today-ring: #029eff;position:fixed;z-index:7000;background:var(--dp-popup-bg);border:1px solid var(--dp-border);border-radius:10px;box-shadow:var(--dp-popup-shadow);padding:.5rem;overflow:hidden;animation:fnon-dp-popup-in .15s ease-out}.fnon-dp-popup.fnon-dp-dark{--dp-popup-bg: #1e293b;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.4);--dp-border: #334155;--dp-hover: #1e293b;--dp-accent: #0284c7;--dp-text: #e2e8f0;--dp-selected: #0284c7;--dp-selected-text: #fff;--dp-today-ring: #38bdf8}@keyframes fnon-dp-popup-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}[dir=rtl] .fnon-hint-container.right-top,[dir=rtl] .fnon-hint-container.right-center,[dir=rtl] .fnon-hint-container.right-bottom{right:auto;left:16px}[dir=rtl] .fnon-hint-container.left-top,[dir=rtl] .fnon-hint-container.left-center,[dir=rtl] .fnon-hint-container.left-bottom{left:auto;right:16px}[dir=rtl] .fnon-hint{transform:translate(-40px)}[dir=rtl] .fnon-hint.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-left-top,[dir=rtl] .fnon-hint-left-center,[dir=rtl] .fnon-hint-left-bottom{transform:translate(40px)}[dir=rtl] .fnon-hint-left-top.fnon-hint-active,[dir=rtl] .fnon-hint-left-center.fnon-hint-active,[dir=rtl] .fnon-hint-left-bottom.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-right-top,[dir=rtl] .fnon-hint-right-center,[dir=rtl] .fnon-hint-right-bottom{transform:translate(-40px)}[dir=rtl] .fnon-hint-right-top.fnon-hint-active,[dir=rtl] .fnon-hint-right-center.fnon-hint-active,[dir=rtl] .fnon-hint-right-bottom.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-progress{left:auto;right:0;border-radius:0 0 8px}[dir=rtl] .fnon-modal-controls{margin-left:0;margin-right:12px}[dir=rtl] .fnon-dp-range-start{border-radius:0 6px 6px 0}[dir=rtl] .fnon-dp-range-end{border-radius:6px 0 0 6px}[dir=rtl] .fnon-cm-arrow{transform:scaleX(-1)}.fnon-dp-popup-row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:4px}.fnon-dp-popup-row:last-child{margin-bottom:0}.fnon-dp-popup-cell{text-align:center;padding:.4rem .2rem;font-size:.78rem;border-radius:6px;cursor:pointer;color:var(--dp-text);transition:all .1s}.fnon-dp-popup-cell:hover{background:var(--dp-hover);color:var(--dp-accent)}.fnon-dp-popup-cell.fnon-dp-popup-active{background:var(--dp-selected);color:var(--dp-selected-text);font-weight:600}.fnon-dp-popup-cell:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-popup-nav{display:flex;align-items:center;gap:4px;margin-bottom:6px}.fnon-dp-popup-nav-btn{background:none;border:1px solid var(--dp-border);border-radius:5px;width:28px;height:28px;font-size:1rem;line-height:1;padding:0;font-family:inherit;cursor:pointer;color:var(--dp-text);display:flex;align-items:center;justify-content:center;flex-shrink:0}.fnon-dp-popup-nav-btn:hover{background:var(--dp-hover);border-color:var(--dp-accent);color:var(--dp-accent)}.fnon-dp-popup-nav-btn:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-popup-nav-label{flex:1;text-align:center;font-size:.8rem;font-weight:600;color:var(--dp-text)}.fnon-cm{position:fixed;z-index:999999;min-width:180px;max-width:300px;max-height:min(100vh - 16px,420px);overflow-y:auto;background:#fff;border:1px solid #d1d5db;border-radius:6px;box-shadow:0 4px 16px #0000001f,0 1px 3px #00000014;padding:4px 0;font-family:inherit;font-size:13px;line-height:1.4;color:#1f2937;user-select:none;-webkit-user-select:none}.fnon-cm::-webkit-scrollbar{width:6px}.fnon-cm::-webkit-scrollbar-track{background:transparent}.fnon-cm::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.fnon-cm-dark{background:#1e293b;border-color:#334155;color:#e2e8f0}.fnon-cm-dark::-webkit-scrollbar-thumb{background:#475569}.fnon-cm-item{display:flex;align-items:center;padding:6px 16px;cursor:pointer;white-space:nowrap;gap:12px;outline:none}.fnon-cm-item:hover,.fnon-cm-item:focus-visible{background:#f3f4f6}.fnon-cm-item:focus-visible{outline:2px solid #029eff;outline-offset:-2px}.fnon-cm-dark .fnon-cm-item:hover,.fnon-cm-dark .fnon-cm-item:focus-visible{background:#334155}.fnon-cm-item-disabled{opacity:.4;cursor:default;pointer-events:none}.fnon-cm-item-text{flex:1;overflow:hidden;text-overflow:ellipsis}.fnon-cm-arrow{font-size:10px;color:#9ca3af;flex-shrink:0}.fnon-cm-dark .fnon-cm-arrow{color:#64748b}.fnon-cm-submenu{position:fixed;z-index:999999;max-width:320px;max-height:min(100vh - 16px,420px);min-width:180px}
|
package/fnon.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var Fnon=(function(){"use strict";function x(e){typeof console<"u"&&console.error("[Fnon]",e)}function ee(e){return typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}function ge(e){return typeof e=="string"?e:e instanceof HTMLElement?e.outerHTML:String(e)}function ne(e){const t=document.createElement("div");t.style.color=e,document.body.appendChild(t);const n=getComputedStyle(t).color;document.body.removeChild(t);const o=n.match(/rgb(a)?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return o?{r:+o[2],g:+o[3],b:+o[4]}:null}function Ae(e,t){const n=ne(e);if(!n)return e;const o=1-t;return`rgb(${n.r*o|0},${n.g*o|0},${n.b*o|0})`}function fn(e,t){const n=ne(e);if(!n)return e;const o=1-t;return`rgb(${255-(255-n.r)*o|0},${255-(255-n.g)*o|0},${255-(255-n.b)*o|0})`}function be(e,t=4){if(t===4)return ne(e)?[e,fn(e,.3),Ae(e,.15),Ae(e,.3)]:[e,e,e,e];const n=ne(e);if(!n)return Array(t).fill(e);const o=[e];let r=n.r,a=n.g,l=n.b;for(let i=0;i<t-1;i++)r=Math.max(0,r-33),a=Math.max(0,a-33),l=Math.max(0,l-33),o.push(`rgb(${r},${a},${l})`);return o}function Ie(){return"×"}function un(e){const t=e.replace("#","");let n,o,r;if(t.length===3)n=parseInt(t[0]+t[0],16),o=parseInt(t[1]+t[1],16),r=parseInt(t[2]+t[2],16);else if(t.length===6)n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),r=parseInt(t.substring(4,6),16);else return"#2d3748";return(.299*n+.587*o+.114*r)/255>.55?"#2d3748":"#fff"}const te={Primary:{titleBackground:"#029eff",titleColor:"#fff",btnOkBackground:"#029eff",btnOkColor:"#fff",btnOkBorderColor:"#029eff",backgroundColor:"#fff"},Success:{titleBackground:"#39DA8A",titleColor:"#fff",btnOkBackground:"#39DA8A",btnOkColor:"#fff",btnOkBorderColor:"#39DA8A",backgroundColor:"#fff"},Warning:{titleBackground:"#fdd347",titleColor:"#2d3748",btnOkBackground:"#fdd347",btnOkColor:"#2d3748",btnOkBorderColor:"#fdd347",backgroundColor:"#fff"},Danger:{titleBackground:"#ff6b6b",titleColor:"#fff",btnOkBackground:"#ff6b6b",btnOkColor:"#fff",btnOkBorderColor:"#ff6b6b",backgroundColor:"#fff"},Info:{titleBackground:"#48dbfb",titleColor:"#2d3748",btnOkBackground:"#48dbfb",btnOkColor:"#2d3748",btnOkBorderColor:"#48dbfb",backgroundColor:"#fff"},Light:{titleBackground:"#f8f9fa",titleColor:"#2d3748",btnOkBackground:"#f8f9fa",btnOkColor:"#2d3748",btnOkBorderColor:"#ced4da",backgroundColor:"#fff"},Dark:{titleBackground:"#222f3e",titleColor:"#fff",btnOkBackground:"#222f3e",btnOkColor:"#fff",btnOkBorderColor:"#222f3e",backgroundColor:"#fff"}};let oe={};function mn(e,t){oe[e]={...oe[e],...t}}function Re(e){return oe[e]?{...te[e],...oe[e]}:te[e]?te[e]:null}function Fe(e){const t=Re(e)||te.Primary,n=[];for(const[a,l]of Object.entries(t)){const i=a.replace(/([A-Z])/g,"-$1").toLowerCase();n.push(`--fnon-${i}: ${l};`)}const o=t.titleBackground||"#029eff",r=be(o);return n.push(`--fnon-title-shade-light: ${r[1]};`),n.push(`--fnon-title-shade-dark: ${r[2]};`),n.push(`--fnon-title-shade-border: ${r[3]};`),n.join(" ")}let he=null;const K=[],ve=new Map;function pn(e){he=e}function Pe(e,t,n){if(!he)return!1;try{return he(e,t,n)===!0}catch(o){return x(`Renderer failed: ${o}`),!1}}function gn(e,t){K.push({modalId:e,fn:t})}function bn(e,t){ve.set(e,t)}function hn(e){const t=ve.get(e);return ve.delete(e),t}function _e(e){for(let n=K.length-1;n>=0;n--)if(K[n].modalId===e){try{K[n].fn()}catch(o){x(`Cleanup failed: ${o}`)}K.splice(n,1)}const t=hn(e);if(t&&typeof t.unmount=="function")try{t.unmount()}catch{}}function vn(e){if(!e)return"";if(e instanceof HTMLElement)return e.textContent||"";if(typeof e=="string")return e.replace(/<[^>]*>/g,"");const t=e;return typeof t.innerHTML=="string"?t.innerHTML.replace(/<[^>]*>/g,""):String(e)}let yn=0;const $=[],ie=new Map,re=new Map,O=new Map,G=new Map,kn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Cn(e,t,n){const o=document.activeElement,r=a=>{if(a.key!=="Tab")return;const l=t.querySelectorAll(kn);if(l.length===0)return;const i=l[0],u=l[l.length-1];a.shiftKey?document.activeElement===i&&(a.preventDefault(),u.focus()):document.activeElement===u&&(a.preventDefault(),i.focus())};n.addEventListener("keydown",r),G.set(e,{previousFocus:o,handler:r})}function wn(e){const t=G.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler),t.previousFocus&&typeof t.previousFocus.focus=="function"&&t.previousFocus.focus(),G.delete(e)}function Ln(e){const t=G.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler)}function $e(e){const t=G.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.addEventListener("keydown",t.handler)}const ae="fnon-task-bar";function xn(){let e=document.getElementById(ae);return e||(e=document.createElement("div"),e.id=ae,e.className="fnon-task-bar",document.body.appendChild(e)),e}function En(e,t,n,o){const r=xn(),a=document.createElement("button");a.className="fnon-task-bar-btn",a.textContent=t||"Minimized",a.dataset.modalId=e,a.addEventListener("click",()=>{if(n.classList.remove("fnon-minimized"),o.classList.remove("fnon-overlay-hidden"),$e(e),a.remove(),O.delete(e),O.size===0){const l=document.getElementById(ae);l&&l.remove()}}),r.appendChild(a)}function Sn(){const e=document.getElementById(ae);e&&O.size===0&&e.remove()}function Oe(){return`fnon-modal-${++yn}`}const Mn={closeButton:!0,autoFocus:!1,autoFocusTag:"input:not([disabled])",autoFocusDelay:0,focusTrap:!0,appendTarget:"body",layout:"hbf",fontFamily:"'Quicksand', sans-serif",animation:"slide-top",color:"#2b2b2b",background:"rgba(0, 0, 0, 0.4)",zIndex:4e3,showIcon:!1,delButtons:!1};function Dn(e,t){let n=!1,o=0,r=0,a=0,l=0,i=0;function u(){return e.closest('[dir="rtl"]')!==null||document.documentElement.dir==="rtl"}t.addEventListener("mousedown",s=>{if(e.classList.contains("fnon-modal-fl"))return;n=!0,o=s.clientX,r=s.clientY;const c=e.getBoundingClientRect();a=c.left,i=c.right,l=c.top,e.style.position="fixed",e.style.margin="0",e.style.bottom="auto",u()?(e.style.right=window.innerWidth-i+"px",e.style.left="auto"):(e.style.left=a+"px",e.style.right="auto"),e.style.top=l+"px",e.classList.add("fnon-dragging"),s.preventDefault()}),document.addEventListener("mousemove",s=>{if(!n)return;const c=s.clientX-o,d=s.clientY-r;u()?e.style.right=window.innerWidth-i-c+"px":e.style.left=a+c+"px",e.style.top=l+d+"px"}),document.addEventListener("mouseup",()=>{n&&(n=!1,e.classList.remove("fnon-dragging"))})}function H(e,t){var h;const n={...Mn,...t},o=Oe();n.showClose!==void 0&&(n.closeButton=n.showClose),ie.set(o,n);const r=n.data||{};re.set(o,r);let a;n.appendTarget?(a=ee(n.appendTarget),a||(x(`appendTarget "${n.appendTarget}" not found; falling back to body`),a=document.body)):a=document.body;const l=document.createElement("div");l.className="fnon-overlay",l.dataset.modalId=o,n.zIndex&&(l.style.zIndex=String(n.zIndex)),n.background&&(l.style.background=n.background),n.dir&&(l.dir=n.dir);const i=document.createElement("div");i.className=`fnon-modal fnon-theme-${e.toLowerCase()}`,i.dataset.modalId=o,i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true"),n.fontFamily&&(i.style.fontFamily=n.fontFamily),n.width&&i.classList.add(`fnon-modal-${n.width.toLowerCase()}`);let u=Fe(e);n.titleColor&&(u+=` --fnon-title-color: ${n.titleColor};`),n.titleBackground&&(u+=` --fnon-title-background: ${n.titleBackground};`),n.color&&(u+=` --fnon-body-color: ${n.color};`),i.setAttribute("style",u);const s=document.createElement("div");s.className="fnon-modal-title",n.titleBackground&&(s.style.background=n.titleBackground),n.titleColor&&(s.style.color=n.titleColor);const c=document.createElement("span");c.className="fnon-modal-title-text",n.title instanceof HTMLElement?c.appendChild(n.title):n.title!==void 0&&n.title!==null&&(c.innerHTML=ge(n.title)),s.appendChild(c);const d=document.createElement("div");d.className="fnon-modal-controls";const f=[];if(n.showMin){const p=document.createElement("button");p.className="fnon-btn-min",p.innerHTML="_",p.title="Minimize",p.addEventListener("click",()=>{const v=i.classList.contains("fnon-minimized");if(i.classList.toggle("fnon-minimized"),l.classList.toggle("fnon-overlay-hidden"),!v)Ln(o),O.set(o,{modalEl:i,title:n.title||""}),En(o,vn(n.title)||"",i,l);else if($e(o),O.get(o)){const D=document.querySelector(`.fnon-task-bar-btn[data-modal-id="${o}"]`);D&&D.remove(),O.delete(o),Sn()}}),f.push(p)}if(n.showMaxMin){const p=document.createElement("button");p.className="fnon-btn-max",p.innerHTML="⛶",p.title="Maximize",p.addEventListener("click",()=>{n.width==="fl"?(i.classList.toggle("fnon-modal-fl"),i.classList.toggle("fnon-modal-xl")):i.classList.toggle("fnon-modal-fl"),i.classList.remove("fnon-minimized"),l.classList.remove("fnon-overlay-hidden")}),f.push(p)}if(n.closeButton!==!1){const p=document.createElement("button");p.className="fnon-btn-close",p.innerHTML=Ie(),p.title="Close",p.addEventListener("click",()=>z(o)),f.push(p)}n.dir==="rtl"&&f.reverse(),f.forEach(p=>d.appendChild(p)),s.appendChild(d);const m=document.createElement("div");if(m.className="fnon-modal-body",n.color&&(m.style.color=n.color),n.showIcon&&n.icon){const p=document.createElement("div");p.className="fnon-modal-icon",p.innerHTML=n.icon,n.iconColor&&(p.style.color=n.iconColor),m.appendChild(p)}const g={id:o,theme:e};n.message!==void 0&&n.message!==null&&(Pe(n.message,m,g)||(m.innerHTML=ge(n.message)));const b=document.createElement("div");if(n.buttons&&n.buttons.length>0&&!n.delButtons){b.className="fnon-modal-footer";for(const p of n.buttons){const v=document.createElement("button");v.className=`fnon-btn fnon-btn-${((h=p.style)==null?void 0:h.toLowerCase())||"primary"}`,p.css&&(v.className+=" "+p.css),v.textContent=p.text,p.color&&(v.style.color=p.color),p.background&&(v.style.background=p.background);const E=p.boxShadow||p.shadow;E&&(v.style.boxShadow=E),p.borderColor&&(v.style.borderColor=p.borderColor),p.callback?v.addEventListener("click",()=>{let D=!1;p.callback(()=>{D=!0,z(o)},m,r)!==!1&&(D||z(o))}):v.addEventListener("click",()=>z(o)),b.appendChild(v)}}if(typeof n.isDark=="function"?n.isDark():n.isDark){const p=n.darkBgColor||"#1a202c";i.style.setProperty("--fnon-bg",p),m.style.background=p,b.style.background=p,b.style.borderTopColor="#2d3748",t.color||(m.style.color="#e2e8f0")}const w={h:s,b:m,f:b},k=(n.layout||"hbf").toLowerCase().replace(/[^hbf]/g,"");if(k&&k!=="hbf"){const p=new Set;for(const v of k)!p.has(v)&&w[v]&&(i.appendChild(w[v]),p.add(v));for(const v of"hbf")!p.has(v)&&w[v]&&i.appendChild(w[v])}else i.appendChild(s),i.appendChild(m),i.appendChild(b);if(l.appendChild(i),Dn(i,s),n.onInit&&n.onInit(i,r),n.defaultBefore&&n.defaultBefore(i,r),n.beforeShow&&n.beforeShow(i,r),a.appendChild(l),n.defaultAfter&&n.defaultAfter(i,r),n.afterShow&&n.afterShow(i,r),requestAnimationFrame(()=>{l.classList.add("fnon-active"),i.classList.add("fnon-active")}),n.autoFocus){const p=n.autoFocusTag||"button",v=n.autoFocusDelay||0;requestAnimationFrame(()=>{const E=i.querySelector(p);E&&(v>0?setTimeout(()=>E.focus(),v):E.focus())})}return n.focusTrap!==!1&&Cn(o,i,l),n.onOpen&&n.onOpen(i,r),$.push(l),{close:()=>z(o),modalEl:i,id:o}}function z(e){const t=ie.get(e),n=re.get(e)||{},o=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);if(!o){ie.delete(e),re.delete(e),x(`Modal ${e} not found in DOM`);return}const r=o.querySelector(".fnon-modal");t!=null&&t.onClosing&&r&&t.onClosing(r,n),wn(e),_e(e),o.classList.remove("fnon-active"),r&&r.classList.remove("fnon-active"),t!=null&&t.onClose&&t.onClose(n),setTimeout(()=>{o.parentNode&&o.parentNode.removeChild(o),t!=null&&t.onClosed&&t.onClosed(n),ie.delete(e),re.delete(e)},300);const a=$.indexOf(o);a!==-1&&$.splice(a,1)}function Tn(){if($.length===0)return;const t=$[$.length-1].dataset.modalId;t&&z(t)}document.addEventListener("keydown",e=>{e.key==="Escape"&&Tn()});const ye={};function T(e){const t=function(n,o,r,a,l){let i;if(typeof n=="object"?(i={...ye,...n},o!==void 0&&(i.title=o)):(i={...ye,message:n,title:o||""},r!==void 0&&(i.btnOkText=r),l!==void 0&&(i.onClose=l)),!i.buttons||i.buttons.length===0){const u=a||i.callback,s=i.btnOkText||"OK",c=i.btnOkShadow;i.buttons=[{text:s,style:e,color:i.btnOkColor,background:i.btnOkBackground,boxShadow:c,shadow:c,borderColor:i.btnOkBorderColor,callback:d=>{u&&u(),d()}}]}H(e,i)};return t.Async=function(n,o,r){return new Promise(a=>{const l=()=>a();typeof n=="object"?(n.callback=l,n.onClose=l,t(n,o,r)):t(n,o,r,l,l)})},t}const se={Primary:T("Primary"),Success:T("Success"),Warning:T("Warning"),Danger:T("Danger"),Info:T("Info"),Light:T("Light"),Dark:T("Dark"),Init(e){Object.assign(ye,e)}},ke={};function N(e){const t=function(n,o,r,a,l,i,u){let s,c;if(typeof n=="object"?(s={...ke,...n},o!==void 0&&(s.title=o),c=i||s.cancelCallback):(s={...ke,message:n,title:o||""},r!==void 0&&(s.btnOkText=r),a!==void 0&&(s.btnCancelText=a),c=i,u!==void 0&&(s.onClose=u)),!s.buttons||s.buttons.length===0){const d=l||s.callback;c=c||s.cancelCallback;const f=s.btnOkText||"OK",m=s.btnCancelText||"Cancel",g=s.btnOkShadow,b=s.btnCancelShadow;s.buttons=[{text:m,style:"Light",color:s.btnCancelColor,background:s.btnCancelBackground,boxShadow:b,shadow:b,borderColor:s.btnCancelBorderColor,callback:y=>{c&&c(!1),y()}},{text:f,style:e,color:s.btnOkColor,background:s.btnOkBackground,boxShadow:g,shadow:g,borderColor:s.btnOkBorderColor,callback:y=>{d&&d(!0),y()}}]}H(e,s)};return t.Async=function(n,o,r,a){return new Promise(l=>{const i=()=>l(!0),u=()=>l(!1),s=()=>l(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=s,t(n,o,r,a)):t(n,o,r,a,i,u,s)})},t}const Ce={Primary:N("Primary"),Success:N("Success"),Warning:N("Warning"),Danger:N("Danger"),Info:N("Info"),Light:N("Light"),Dark:N("Dark"),Init(e){Object.assign(ke,e)}},ce={};function U(e){return H("Primary",{...ce,...e})}U.Init=function(e){Object.assign(ce,e)};function B(e){const t=function(n,o,r,a,l,i,u){let s,c,d;if(typeof n=="object"?(s={...ce,...n},o!==void 0&&(s.title=o),c=l||s.callback,d=i||s.cancelCallback):(s={...ce,message:n,title:o||""},r!==void 0&&(s.btnOkText=r),a!==void 0&&(s.btnCancelText=a),c=l,d=i,u!==void 0&&(s.onClose=u)),!s.buttons||s.buttons.length===0){let f=null;const m=s.btnOkText||"OK",g=s.btnCancelText||"Cancel",b=s.btnOkShadow,y=s.btnCancelShadow;s.buttons=[{text:g,style:"Light",color:s.btnCancelColor,background:s.btnCancelBackground,boxShadow:y,shadow:y,borderColor:s.btnCancelBorderColor,callback:(k,h,p)=>{d&&d(k,f,p)===!1||k()}},{text:m,style:e,color:s.btnOkColor,background:s.btnOkBackground,boxShadow:b,shadow:b,borderColor:s.btnOkBorderColor,callback:(k,h,p)=>{c&&c(k,f,p)===!1||k()}}],f=H(e,s).modalEl.querySelector(".fnon-modal-body")}else H(e,s)};return t.Async=function(n,o,r,a){return new Promise(l=>{const i=(c,d,f)=>{l(!0)},u=(c,d,f)=>{l(!1)},s=()=>l(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=s,t(n,o,r,a)):t(n,o,r,a,i,u,s)})},t}Object.assign(U,{Primary:B("Primary"),Success:B("Success"),Warning:B("Warning"),Danger:B("Danger"),Info:B("Info"),Light:B("Light"),Dark:B("Dark")});const He={headline:"BREAKING",theme:"Danger",anchor:"top",timeout:5e3,closable:!0,appendTarget:"body",fontFamily:"'Quicksand', sans-serif"};function Y(e){var d;const t={...He,...e},n=Oe();let o;t.appendTarget?(o=ee(t.appendTarget),o||(x(`appendTarget "${t.appendTarget}" not found; falling back to body`),o=document.body)):o=document.body;const r=t.theme||"Danger",a=document.createElement("div");a.className=`fnon-breaking fnon-breaking-${t.anchor}`,a.dataset.modalId=n,a.setAttribute("role","alert");let l=Fe(r);t.fontFamily&&(l+=`; font-family: ${t.fontFamily}`),a.setAttribute("style",l);const i=document.createElement("div");if(i.className="fnon-breaking-inner",t.headline){const f=document.createElement("span");f.className="fnon-breaking-headline",f.textContent=t.headline,i.appendChild(f)}const u=document.createElement("div");u.className="fnon-breaking-body";const s={id:n,type:"breaking"};if(t.message!==void 0&&t.message!==null&&(Pe(t.message,u,s)||(u.innerHTML=typeof t.message=="string"?t.message:t.message instanceof HTMLElement?t.message.outerHTML:String(t.message))),i.appendChild(u),t.buttons&&t.buttons.length>0){const f=document.createElement("div");f.className="fnon-breaking-buttons";for(const m of t.buttons){const g=document.createElement("button");g.className=`fnon-btn fnon-btn-${((d=m.style)==null?void 0:d.toLowerCase())||r.toLowerCase()}`,m.css&&(g.className+=" "+m.css),g.textContent=m.text,m.color&&(g.style.color=m.color),m.background&&(g.style.background=m.background);const b=m.boxShadow||m.shadow;b&&(g.style.boxShadow=b),m.borderColor&&(g.style.borderColor=m.borderColor),m.callback&&g.addEventListener("click",()=>m.callback(()=>c(n))),f.appendChild(g)}i.appendChild(f)}if(t.closable!==!1){const f=document.createElement("button");f.className="fnon-breaking-close",f.innerHTML=Ie(),f.title="Dismiss",f.addEventListener("click",()=>c(n)),i.appendChild(f)}a.appendChild(i),o.appendChild(a),requestAnimationFrame(()=>a.classList.add("fnon-breaking-active")),t.timeout&&t.timeout>0&&setTimeout(()=>c(n),t.timeout);function c(f){_e(f);const m=document.querySelector(`.fnon-breaking[data-modal-id="${f}"]`);m&&(m.classList.remove("fnon-breaking-active"),t.onClose&&t.onClose(),setTimeout(()=>{m.parentNode&&m.parentNode.removeChild(m)},400))}return{close:()=>c(n),el:a,id:n}}function A(e){const t=function(n,o){return Y(typeof o=="object"&&o!==null?{...o,theme:e,message:n}:{headline:o,message:n,theme:e})};return t.Async=function(n,o){return new Promise(r=>{const a=typeof o=="object"&&o!==null?{...o,theme:e,message:n,onClose:r}:{headline:o,message:n,theme:e,onClose:r};Y(a)})},t}Y.Init=function(e){Object.assign(He,e)};const we=Object.assign(Y,{Primary:A("Primary"),Success:A("Success"),Warning:A("Warning"),Danger:A("Danger"),Info:A("Info"),Light:A("Light"),Dark:A("Dark"),Init:Y.Init}),ze="fnon-hint-container-",le='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>',Nn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4M12 17h.01"/><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/></svg>',Bn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18M6 6l12 12"/></svg>',An='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></svg>';function In(e,t){return t&&{"right-top":"left-top","right-center":"left-center","right-bottom":"left-bottom","left-top":"right-top","left-center":"right-center","left-bottom":"right-bottom"}[e]||e}const Ye={type:"Primary",position:"right-top",animation:"slide-left",timeOut:4e3,closable:!0,spacing:"8px",svgSize:{w:20,h:20},fontSize:"0.88rem",width:"360px",animationDuration:"0.3s",progressColor:void 0,title:void 0,fontFamily:"'Quicksand', sans-serif"};let de={Primary:{titleColor:"#029eff",backgroundColor:"#ebf8ff",borderColor:"#029eff",svg:le},Success:{titleColor:"#39DA8A",backgroundColor:"#f0fff4",borderColor:"#39DA8A",svg:le},Warning:{titleColor:"#fdd347",backgroundColor:"#fffbe5",borderColor:"#fdd347",svg:Nn},Danger:{titleColor:"#ff6b6b",backgroundColor:"#fff5f5",borderColor:"#ff6b6b",svg:Bn},Info:{titleColor:"#48dbfb",backgroundColor:"#e5faff",borderColor:"#48dbfb",svg:An},Light:{titleColor:"#2d3748",backgroundColor:"#f8f9fa",borderColor:"#ced4da",svg:le},Dark:{titleColor:"#fff",backgroundColor:"#222f3e",borderColor:"#222f3e",svg:le}};function Rn(e,t){de[e]={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff",svg:void 0}}function Fn(e){if(de[e])return de[e];const t=Re(e);if(t){const n={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff"};return de[e]=n,n}return null}function Pn(e){const t=document.querySelector(`#${ze}${e}`);if(t)return t;const n=document.createElement("div");return n.id=`${ze}${e}`,n.className=`fnon-hint-container ${e}`,document.body.appendChild(n),n}function _n(e){e.children.length===0&&e.parentNode&&e.parentNode.removeChild(e)}function V(e,t){const n={...Ye};let o="";typeof t=="string"?o=t:t&&typeof t=="object"&&(Object.assign(n,t),o=n.title||"");const r=n.type||"Primary",a=Fn(r);if(!a)return x(`Unknown hint type: ${r}`),{close:()=>{}};const l=n.position||"right-top",i=n.dir==="rtl",u=In(l,i),s=n.animation||"slide-left",c=Pn(u);i&&(c.dir="rtl");const d=document.createElement("div");if(d.className=`fnon-hint fnon-hint-${u} fnon-hint-anim-${s} fnon-hint-${r.toLowerCase()}`,d.setAttribute("data-hint-id",Date.now().toString()),n.width&&(d.style.maxWidth=n.width),n.fontSize&&(d.style.fontSize=n.fontSize),n.fontFamily&&(d.style.fontFamily=n.fontFamily),n.spacing&&(d.style.marginBottom=n.spacing),n.animationDuration&&(d.style.transitionDuration=n.animationDuration),a.svg){const h=document.createElement("div");h.className="fnon-hint-icon";const p=n.svgSize||{w:20,h:20};h.style.setProperty("--fnon-icon-w",p.w+"px"),h.style.setProperty("--fnon-icon-h",p.h+"px"),h.innerHTML=a.svg,d.appendChild(h)}const f=document.createElement("div");if(f.className="fnon-hint-content",o){const h=document.createElement("div");h.className="fnon-hint-title",h.textContent=o,f.appendChild(h)}const m=document.createElement("div");if(m.className="fnon-hint-message",m.innerHTML=e,f.appendChild(m),d.appendChild(f),n.closable!==!1){const h=document.createElement("button");h.className="fnon-hint-close",h.innerHTML="×",h.addEventListener("click",()=>k(d)),d.appendChild(h)}if(n.timeOut&&n.timeOut>0){const h=n.progressColor||a.borderColor,p=document.createElement("div");p.className="fnon-hint-progress",p.style.setProperty("--display-dur",n.timeOut+"ms"),p.style.background=h,d.style.position="relative",d.style.overflow="hidden",d.appendChild(p)}be(a.borderColor);const g=i?"borderRight":"borderLeft";d.style[g]=`4px solid ${a.borderColor}`,d.style.backgroundColor=a.backgroundColor;const b=typeof n.isDark=="function"?n.isDark():n.isDark;if(b){const h=n.darkBgColor||"#1a202c";d.style.backgroundColor=h}const y=b?n.darkBgColor||"#1a202c":a.backgroundColor;d.style.color=un(y),c.appendChild(d),requestAnimationFrame(()=>{d.classList.add("fnon-hint-active")});let w=null;n.timeOut&&n.timeOut>0&&(w=setTimeout(()=>k(d),n.timeOut));function k(h){w&&clearTimeout(w),h.classList.remove("fnon-hint-active"),n.onClose&&n.onClose(),n.onclosed&&n.onclosed(),setTimeout(()=>{h.parentNode&&h.parentNode.removeChild(h),_n(c)},300)}return{close:()=>k(d)}}V.Init=function(e){Object.assign(Ye,e)};function I(e){const t=function(n,o){return V(n,typeof o=="string"?{type:e,title:o}:{...o,type:e})};return t.Async=function(n,o){return new Promise(r=>{const a=typeof o=="string"?{type:e,title:o,onClose:r}:{...o,type:e,onClose:r};V(n,a)})},t}const Le={Primary:I("Primary"),Success:I("Success"),Warning:I("Warning"),Danger:I("Danger"),Info:I("Info"),Light:I("Light"),Dark:I("Dark"),show:V,Init:V.Init},xe={...{Orbit:{html:e=>`<div class="fnon-sp-orbit" style="--fnon-sp-color: ${e||"#029eff"}"><div class="fnon-sp-orbit-dot"></div></div>`,css:!0},Spin:{html:e=>`<div class="fnon-sp-spin" style="--fnon-sp-color: ${e||"#029eff"}"><div class="fnon-sp-spin-ring"></div></div>`,css:!0}},...{Infinity:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><path fill="none" stroke="${e[0]}" stroke-width="4" stroke-dasharray="133.42624267578125 123.162685546875" d="M24.3 30C11.4 30 5 43.3 5 50s6.4 20 19.3 20c19.3 0 32.1-40 51.4-40 C88.6 30 95 43.3 95 50s-6.4 20-19.3 20C56.4 70 43.6 30 24.3 30z" stroke-linecap="round" style="transform:scale(0.8);transform-origin:50px 50px"><animate attributeName="stroke-dashoffset" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="0;256"></animate></path></svg>`},Ripple:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="50" cy="50" r="0" fill="none" stroke="${e[0]}" stroke-width="6"><animate attributeName="r" repeatCount="indefinite" dur="1s" values="0;40" keyTimes="0;1" keySplines="0 0.2 0.8 1" calcMode="spline" begin="-0.5s"></animate><animate attributeName="opacity" repeatCount="indefinite" dur="1s" values="1;0" keyTimes="0;1" keySplines="0.2 0 0.8 1" calcMode="spline" begin="-0.5s"></animate></circle><circle cx="50" cy="50" r="0" fill="none" stroke="${e[1]}" stroke-width="6"><animate attributeName="r" repeatCount="indefinite" dur="1s" values="0;40" keyTimes="0;1" keySplines="0 0.2 0.8 1" calcMode="spline"></animate><animate attributeName="opacity" repeatCount="indefinite" dur="1s" values="1;0" keyTimes="0;1" keySplines="0.2 0 0.8 1" calcMode="spline"></animate></circle></svg>`},Typing:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="27.5" cy="57.5" r="5" fill="${e[0]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.6s"></animate></circle> <circle cx="42.5" cy="57.5" r="5" fill="${e[1]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.44999999999999996s"></animate></circle> <circle cx="57.5" cy="57.5" r="5" fill="${e[2]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.3s"></animate></circle> <circle cx="72.5" cy="57.5" r="5" fill="${e[3]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.15s"></animate></circle></svg>`}}};function qe(e,t){const n=xe[e];if("css"in n&&n.css)return n.html(t);const o=be(t,9);return n.html(o)}const je={text:"",clickToClose:!1,svgColor:"#029eff",containerSize:void 0,fontFamily:"'Quicksand', sans-serif"},We={text:"",svgColor:"#029eff",containerSize:void 0,svgSize:void 0,fontFamily:"'Quicksand', sans-serif"};let Ee=!1,fe=null;function Ke(e,t,n){if(Ee){x("A wait overlay is already active. Remove it first.");return}const o={...je,...n};t!==void 0&&(o.text=t);const r=o.svgColor||"#029eff",a=qe(e,r),l=document.createElement("div");l.className="fnon-wait-overlay",l.id="fnon-wait-overlay",o.fontFamily&&(l.style.fontFamily=o.fontFamily);const i=document.createElement("div");if(i.className="fnon-wait-box",o.containerSize&&(i.style.width=o.containerSize),i.innerHTML=a,o.text){const s=document.createElement("div");s.className="fnon-wait-text",s.textContent=o.text,i.appendChild(s)}if(typeof o.isDark=="function"?o.isDark():o.isDark){const s=o.darkBgColor||"#1a202c";l.style.background="rgba(0, 0, 0, 0.85)",i.style.background=s,i.style.padding="1.5rem",i.style.borderRadius="8px"}l.appendChild(i),document.body.appendChild(l),requestAnimationFrame(()=>l.classList.add("fnon-wait-active")),o.clickToClose&&l.addEventListener("click",()=>Ge()),Ee=!0}function Ge(e){const t=document.getElementById("fnon-wait-overlay");if(!t)return;const n=typeof e=="number"?e:0,o=()=>{t.classList.remove("fnon-wait-active"),fe&&(fe(!0),fe=null),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),Ee=!1},300)};n>0?setTimeout(o,n):o()}function $n(e){const t=document.querySelector("#fnon-wait-overlay .fnon-wait-text");t&&(t.textContent=e)}function On(e){const t=function(n,o){Ke(e,n,o)};return t.Async=function(n,o){return new Promise(r=>{fe=r,Ke(e,n,o)})},t}const q={Remove:Ge,Change:$n,Init:function(e){Object.assign(je,e)}};for(const e of Object.keys(xe))q[e]=On(e);let ue=null;function Ue(e,t,n,o){var f;const r=ee(t);if(!r){x(`Box target not found: ${t}`);return}const a={...We,...o},l=a.svgColor||"#029eff",i=qe(e,l),u=r.querySelector(".fnon-box-overlay");u&&((f=u.parentNode)==null||f.removeChild(u));const s=document.createElement("div");s.className="fnon-box-overlay",a.fontFamily&&(s.style.fontFamily=a.fontFamily);const c=document.createElement("div");if(c.className="fnon-box-inner",a.containerSize&&(c.style.width=a.containerSize),a.svgSize&&(c.style.setProperty("--fnon-box-svg-w",a.svgSize.w+"px"),c.style.setProperty("--fnon-box-svg-h",a.svgSize.h+"px")),c.innerHTML=i,a.text){const m=document.createElement("div");m.className="fnon-box-label",m.textContent=a.text,c.appendChild(m)}if(typeof a.isDark=="function"?a.isDark():a.isDark){const m=a.darkBgColor||"#1a202c";s.style.background="rgba(0, 0, 0, 0.7)",c.style.background=m,c.style.padding="1.5rem",c.style.borderRadius="8px"}s.appendChild(c),r.style.position="relative",r.appendChild(s)}function Hn(e){const t=ee(e);if(!t)return;const n=t.querySelector(".fnon-box-overlay");n&&n.parentNode&&n.parentNode.removeChild(n),ue&&(ue(!0),ue=null)}function zn(e){const t=function(n,o,r){Ue(e,n,o,r)};return t.Async=function(n,o,r){return new Promise(a=>{ue=a,Ue(e,n,o,r)})},t}const me={Remove:Hn,Init:function(e){Object.assign(We,e)}};for(const e of Object.keys(xe))me[e]=zn(e);function Ve(){return document.documentElement.dir==="rtl"}const Yn=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Xe=["January","February","March","April","May","June","July","August","September","October","November","December"];function Qe(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function Se(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Je(e,t){return new Date(e,t+1,0).getDate()}function qn(e,t){return new Date(e,t,1).getDay()}function S(e){return e.getFullYear()*1e4+e.getMonth()*100+e.getDate()}function Ze(e){if(e.minDate===null)return!0;const t=e.viewMonth-1,n=t<0?e.viewYear-1:e.viewYear,o=t<0?11:t,r=new Date(n,o+1,0);return S(r)>=e.minDate}function en(e){if(e.maxDate===null)return!0;const t=e.viewMonth+1,n=t>11?e.viewYear+1:e.viewYear,o=t>11?0:t,r=new Date(n,o,1);return S(r)<=e.maxDate}function pe(e){if(!e.bodyEl)return;const t=e.bodyEl.querySelectorAll(".fnon-dp-day");for(const n of t)n.classList.remove("fnon-dp-range-preview")}function jn(e,t){if(!e.bodyEl)return;const n=e.bodyEl.querySelectorAll(".fnon-dp-day"),o=S(t);for(const r of n){const a=parseInt(r.dataset.ts||"0",10);r.classList.toggle("fnon-dp-selected",a===o),r.classList.remove("fnon-dp-range","fnon-dp-range-start","fnon-dp-range-end")}}function nn(e={}){const t=new Date,n=e.initDate||t,o=!!e.dateRange,r=o?!1:!!e.withTime,a=e.minDate?S(Qe(e.minDate)):null,l=e.maxDate?S(Qe(e.maxDate)):null,i=typeof e.isDark=="function"?e.isDark():e.isDark,u={viewYear:n.getFullYear(),viewMonth:n.getMonth(),start:null,end:null,rangeMode:o,withTime:r,minDate:a,maxDate:l,initDate:n,hour:t.getHours(),minute:t.getMinutes(),resolve:null,reject:null,bodyEl:null,closeModal:null,dark:!!i,darkBg:e.darkBgColor||"#1a202c"};return new Promise((s,c)=>{u.resolve=s,u.reject=c;const d={title:e.title||(o?"Select Date Range":"Select Date"),closeButton:!0,delButtons:!0,layout:"hb",isDark:u.dark,darkBgColor:u.darkBg,width:"sm",autoFocus:!1,color:u.dark?"#e2e8f0":void 0},f=H("Primary",d);u.closeModal=f.close,u.bodyEl=f.modalEl.querySelector(".fnon-modal-body"),u.bodyEl&&(u.bodyEl.style.padding="0",F(u))})}const Wn=nn;function F(e){const t=e.bodyEl;if(!t)return;t.innerHTML="";const n=document.createElement("div");n.className="fnon-dp"+(e.dark?" fnon-dp-dark":"");const o=Ve();o&&(n.dir="rtl");const r=document.createElement("div");r.className="fnon-dp-header";const a=o?"›":"‹",l=o?"‹":"›",i=document.createElement("button");i.className="fnon-dp-nav",i.innerHTML=a,i.title=o?"Next month":"Previous month",Ze(e)||i.classList.add("fnon-dp-nav-disabled"),i.addEventListener("click",()=>{Ze(e)&&(e.viewMonth--,e.viewMonth<0&&(e.viewMonth=11,e.viewYear--),F(e))});const u=document.createElement("button");u.className="fnon-dp-label",u.textContent=Xe[e.viewMonth]+" "+e.viewYear,u.addEventListener("click",L=>{L.stopPropagation(),Un(e,u)});const s=document.createElement("button");s.className="fnon-dp-nav",s.innerHTML=l,s.title=o?"Previous month":"Next month",en(e)||s.classList.add("fnon-dp-nav-disabled"),s.addEventListener("click",()=>{en(e)&&(e.viewMonth++,e.viewMonth>11&&(e.viewMonth=0,e.viewYear++),F(e))}),r.appendChild(i),r.appendChild(u),r.appendChild(s),n.appendChild(r);const c=document.createElement("div");c.className="fnon-dp-time",e.withTime||(c.style.display="none"),c.innerHTML="<label>Time</label>";const d=document.createElement("input");d.type="time",d.className="fnon-dp-time-input";const f=String(e.hour).padStart(2,"0"),m=String(e.minute).padStart(2,"0");d.value=f+":"+m,d.addEventListener("change",()=>{const L=d.value.split(":");e.hour=parseInt(L[0],10)||0,e.minute=parseInt(L[1],10)||0}),c.appendChild(d),n.appendChild(c);const g=document.createElement("div");g.className="fnon-dp-grid";for(const L of Yn){const C=document.createElement("div");C.className="fnon-dp-dow",C.textContent=L,g.appendChild(C)}const b=e.viewYear,y=e.viewMonth,w=Je(b,y),k=qn(b,y),h=Je(b,y-1<0&&y===0?b-1:b),p=42,v=new Date;for(let L=0;L<p;L++){const C=document.createElement("div");C.className="fnon-dp-day";let j,Q,J,Z;L<k?(j=h-k+L+1,Q=y-1<0?11:y-1,J=y-1<0?b-1:b,Z=!0):L>=k+w?(j=L-k-w+1,Q=y+1>11?0:y+1,J=y+1>11?b+1:b,Z=!0):(j=L-k+1,Q=y,J=b,Z=!1);const W=new Date(J,Q,j),_=S(W);if(C.textContent=String(j),C.dataset.year=String(J),C.dataset.month=String(Q),C.dataset.day=String(j),C.dataset.ts=String(_),Z&&C.classList.add("fnon-dp-other"),Se(W,v)&&C.classList.add("fnon-dp-today"),e.minDate!==null&&_<e.minDate&&C.classList.add("fnon-dp-disabled"),e.maxDate!==null&&_>e.maxDate&&C.classList.add("fnon-dp-disabled"),e.start&&Se(W,e.start)&&C.classList.add("fnon-dp-selected"),e.end&&Se(W,e.end)&&C.classList.add("fnon-dp-selected"),e.rangeMode&&e.start&&e.end){const ln=S(e.start),dn=S(e.end);_>ln&&_<dn&&C.classList.add("fnon-dp-range"),_===ln&&C.classList.add("fnon-dp-range-start"),_===dn&&C.classList.add("fnon-dp-range-end")}!C.classList.contains("fnon-dp-disabled")&&!Z&&(C.addEventListener("click",()=>Gn(e,W)),C.addEventListener("mouseenter",()=>Kn(e,W)),C.addEventListener("mouseleave",()=>pe(e))),g.appendChild(C)}n.appendChild(g);const E=document.createElement("div");E.className="fnon-dp-actions";const D=document.createElement("button");if(D.className="fnon-dp-btn",D.textContent="Today",D.addEventListener("click",()=>{const L=new Date;e.viewYear=L.getFullYear(),e.viewMonth=L.getMonth(),F(e)}),E.appendChild(D),!e.rangeMode&&e.withTime){const L=document.createElement("button");L.className="fnon-dp-btn fnon-dp-btn-primary",L.textContent="OK",L.addEventListener("click",()=>{if(e.start&&e.resolve){const C=new Date(e.start);e.withTime&&C.setHours(e.hour,e.minute,0,0),e.resolve(C),e.closeModal&&e.closeModal()}}),E.appendChild(L)}n.appendChild(E),t.appendChild(n)}function Kn(e,t){if(!e.rangeMode||!e.start||e.end||!e.bodyEl)return;const n=S(e.start),o=S(t),r=Math.min(n,o),a=Math.max(n,o);pe(e);const l=e.bodyEl.querySelectorAll(".fnon-dp-day");for(const i of l){const u=parseInt(i.dataset.ts||"0",10);u>r&&u<a&&i.classList.add("fnon-dp-range-preview")}}function Gn(e,t,n){if(e.rangeMode){if(!e.start||e.start&&e.end){e.start=t,e.end=null,pe(e),F(e);return}if(e.start&&!e.end){pe(e),S(t)<S(e.start)?(e.end=e.start,e.start=t):e.end=t,F(e),e.resolve&&(e.resolve({start:new Date(e.start),end:new Date(e.end)}),e.closeModal&&e.closeModal());return}}if(e.start=t,e.withTime){jn(e,t);return}e.resolve&&(e.resolve(t),e.closeModal&&e.closeModal())}function Un(e,t){const n=document.querySelector(".fnon-dp-popup");if(n){n.remove();return}const o=t.closest(".fnon-dp"),r=o?o.getBoundingClientRect():t.getBoundingClientRect(),a=t.getBoundingClientRect(),l=Math.min(Math.max(240,r.width*.85),320),i=document.createElement("div");i.className="fnon-dp-popup"+(e.dark?" fnon-dp-dark":""),i.style.top=a.bottom+4+"px",i.style.left=r.left+(r.width-l)/2+"px",i.style.width=l+"px";const u=Ve();let s="year",c=e.viewYear;const d=()=>{if(i.innerHTML="",s==="year"){const f=document.createElement("div");f.className="fnon-dp-popup-nav";const m=document.createElement("button");m.className="fnon-dp-popup-nav-btn",m.textContent=u?"›":"‹",m.addEventListener("click",w=>{w.stopPropagation(),c-=12,d()});const g=document.createElement("span");g.className="fnon-dp-popup-nav-label",g.textContent=c-5+"–"+(c+6);const b=document.createElement("button");b.className="fnon-dp-popup-nav-btn",b.textContent=u?"‹":"›",b.addEventListener("click",w=>{w.stopPropagation(),c+=12,d()}),f.appendChild(m),f.appendChild(g),f.appendChild(b),i.appendChild(f);const y=c-5;for(let w=0;w<3;w++){const k=document.createElement("div");k.className="fnon-dp-popup-row";for(let h=0;h<4;h++){const p=y+w*4+h,v=document.createElement("div");v.className="fnon-dp-popup-cell"+(p===e.viewYear?" fnon-dp-popup-active":""),v.textContent=String(p),v.addEventListener("click",E=>{E.stopPropagation(),c=p,s="month",d()}),k.appendChild(v)}i.appendChild(k)}}else{const f=document.createElement("div");f.className="fnon-dp-popup-nav";const m=document.createElement("button");m.className="fnon-dp-popup-nav-btn",m.textContent=u?"›":"‹",m.addEventListener("click",b=>{b.stopPropagation(),s="year",d()});const g=document.createElement("span");g.className="fnon-dp-popup-nav-label",g.textContent=String(c),f.appendChild(m),f.appendChild(g),i.appendChild(f);for(let b=0;b<3;b++){const y=document.createElement("div");y.className="fnon-dp-popup-row";for(let w=0;w<4;w++){const k=b*4+w,h=document.createElement("div");h.className="fnon-dp-popup-cell"+(k===e.viewMonth&&c===e.viewYear?" fnon-dp-popup-active":""),h.textContent=Xe[k].substring(0,3),h.addEventListener("click",p=>{p.stopPropagation(),e.viewYear=c,e.viewMonth=k,i.remove(),F(e)}),y.appendChild(h)}i.appendChild(y)}}};d(),setTimeout(()=>{document.addEventListener("click",f=>{i.parentNode&&!i.contains(f.target)&&i.remove()},{once:!0})},0),i.addEventListener("click",f=>f.stopPropagation()),document.body.appendChild(i)}let tn=!1;function X(){return document.documentElement.dir==="rtl"}const M=new Set;let Me=[];function Vn(e){return"clientX"in e?{x:e.clientX,y:e.clientY}:{x:e.x,y:e.y}}function Xn(){return tn}function Qn(e){tn=e}function R(){M.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),M.clear(),Me.forEach(e=>e()),Me=[]}function on(e){M.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)>e&&(t.parentNode&&t.parentNode.removeChild(t),M.delete(t))})}function De(e){M.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)===e&&(t.parentNode&&t.parentNode.removeChild(t),M.delete(t))})}function Te(e){const t=e.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)");t.length>0&&t[0].focus()}function P(e){return parseInt(e.getAttribute("data-parent-level")||"0",10)}function rn(e){for(;e;){if(e.classList.contains("fnon-cm"))return e;e=e.parentElement}return null}function an(e){const t=rn(e);return t?Array.from(t.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)")):[]}function Jn(e){for(const t of M)if(P(t)===e)return t;return null}function Ne(e){const t=P(e)-1,n=Jn(t);if(!n)return null;const o=n.querySelectorAll(".fnon-cm-item"),r=e.getBoundingClientRect();for(const a of o){const l=a.getBoundingClientRect();if((Math.abs(l.right-r.left)<20||Math.abs(l.left-r.right)<20)&&Math.abs(l.top-r.top)<50)return a}return null}function Zn(e,t,n){document.body.appendChild(e),M.add(e);const o=e.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let l=t,i=n;l+o.width>r-4&&(l=r-o.width-4),i+o.height>a-4&&(i=a-o.height-4),l<4&&(l=4),i<4&&(i=4),e.style.left=l+"px",e.style.top=i+"px"}function sn(e,t){document.body.appendChild(t),M.add(t);const n=e.getBoundingClientRect(),o=t.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let l,i=n.top;X()?(l=n.left-o.width,l<4&&(l=n.right)):(l=n.right,l+o.width>r-4&&(l=n.left-o.width)),i+o.height>a-4&&(i=a-o.height-4),i<4&&(i=4),t.style.left=l+"px",t.style.top=i+"px"}function Be(e,t,n){const o=document.createElement("div");o.className="fnon-cm"+(Xn()?" fnon-cm-dark":""),o.setAttribute("data-parent-level",String(t)),X()&&(o.dir="rtl");for(const r of e){const a=document.createElement("div");a.className="fnon-cm-item",r.disabled&&a.classList.add("fnon-cm-item-disabled"),r.className&&a.classList.add(r.className),r.items&&r.items.length>0&&a.classList.add("fnon-cm-item-parent");const l=document.createElement("span");if(l.className="fnon-cm-item-text",l.innerHTML=ge(r.text),a.appendChild(l),r.items&&r.items.length>0){let i=function(){f||(d&&(clearTimeout(d),d=null),f=window.setTimeout(()=>{f=null,!c&&(c=Be(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),sn(a,c),c.addEventListener("mouseenter",()=>{d&&(clearTimeout(d),d=null)}),c.addEventListener("mouseleave",()=>{u()}))},200))},u=function(){if(!d){if(f){clearTimeout(f),f=null;return}d=window.setTimeout(()=>{d=null,c&&(on(P(c)),c.parentNode&&c.parentNode.removeChild(c),M.delete(c),c=null)},300)}};const s=document.createElement("span");s.className="fnon-cm-arrow",s.innerHTML=X()?"◀":"▶",a.appendChild(s);let c=null,d=null,f=null;a.addEventListener("mouseenter",()=>{d&&(clearTimeout(d),d=null),i()}),a.addEventListener("mouseleave",m=>{if(c){const g=m.relatedTarget;if(c.contains(g))return;u()}else f&&(clearTimeout(f),f=null)}),a.__cmOpenSubmenu=()=>{c||(c=Be(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),sn(a,c)),Te(c)},a.__cmCloseSubmenu=()=>{c&&(on(P(c)),c.parentNode&&c.parentNode.removeChild(c),M.delete(c),c=null)}}r.disabled||a.addEventListener("click",i=>{i.stopPropagation(),!(r.items&&r.items.length>0)&&(r.onClick?r.onClick(r,i):n&&n(r,i),R())}),o.appendChild(a)}return o}function cn(e,t,n){if(!t||t.length===0)return x("ContextMenu requires at least one item."),{close:()=>{}};e instanceof MouseEvent&&(e.preventDefault(),e.stopPropagation()),R();const o=Vn(e),r=Be(t,0,n);Zn(r,o.x,o.y),Te(r);function a(c){const d=c.target;r.contains(d)||R()}function l(c){r.contains(c.target)||R()}function i(c){const d=document.activeElement,f=rn(d);switch(c.key){case"Escape":{if(c.preventDefault(),f&&f.classList.contains("fnon-cm-submenu")){const m=P(f);De(m);const g=Ne(f);g&&g.focus()}else R();break}case"ArrowDown":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=an(d),g=m.indexOf(d);g<m.length-1&&m[g+1].focus()}else f&&Te(f);break}case"ArrowUp":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=an(d),g=m.indexOf(d);g>0&&m[g-1].focus()}break}case"ArrowRight":{if(c.preventDefault(),X()){if(f&&f.classList.contains("fnon-cm-submenu")){const m=P(f);De(m);const g=Ne(f);g&&g.focus()}}else d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();break}case"ArrowLeft":{if(c.preventDefault(),X())d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();else if(f&&f.classList.contains("fnon-cm-submenu")){const m=P(f);De(m);const g=Ne(f);g&&g.focus()}break}case"Enter":case" ":{c.preventDefault(),d&&d.classList.contains("fnon-cm-item")&&!d.classList.contains("fnon-cm-item-disabled")&&(d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu?d.__cmOpenSubmenu():d.click());break}}}function u(){R()}function s(){R()}return setTimeout(()=>{document.addEventListener("click",a,!0),document.addEventListener("contextmenu",l),document.addEventListener("keydown",i),window.addEventListener("scroll",u,!0),window.addEventListener("resize",s)},0),Me=[()=>document.removeEventListener("click",a,!0),()=>document.removeEventListener("contextmenu",l),()=>document.removeEventListener("keydown",i),()=>window.removeEventListener("scroll",u,!0),()=>window.removeEventListener("resize",s)],{close:R}}return{setRenderer:pn,registerCleanup:gn,registerReactRoot:bn,Alert:se,Ask:Ce,Dialogue:U,Breaking:we,Hint:Le,Wait:q,Box:me,DatePicker:nn,DP:Wn,ContextMenu:cn,CM:cn,Init(e){se.Init(e),Ce.Init(e),U.Init(e),we.Init(e),Le.Init(e),q.Init(e),me.Init(e),"isDark"in e&&Qn(!!e.isDark),"dir"in e&&e.dir&&(document.documentElement.dir=e.dir)},AddLogo(e,t){if(!e||!t){x("Name and HtmlContent are required to add a new logo.");return}if(q[e]){x("A logo with the same name already exists.");return}const o=q;o[e]=function(a,l){const i=document.createElement("div");i.className="fnon-wait-overlay",i.id="fnon-wait-overlay";const u=document.createElement("div");if(u.className="fnon-wait-box",u.innerHTML=t,a){const s=document.createElement("div");s.className="fnon-wait-text",s.textContent=a,u.appendChild(s)}i.appendChild(u),document.body.appendChild(i),requestAnimationFrame(()=>i.classList.add("fnon-wait-active")),l!=null&&l.clickToClose&&i.addEventListener("click",()=>q.Remove())};const r=me;r[e]=function(a,l,i){var f;const u=typeof a=="string"?document.querySelector(a):a;if(!u){x("Invalid selector");return}const s=u.querySelector(".fnon-box-overlay");s&&((f=s.parentNode)==null||f.removeChild(s));const c=document.createElement("div");c.className="fnon-box-overlay";const d=document.createElement("div");if(d.className="fnon-box-inner",d.innerHTML=t,l){const m=document.createElement("div");m.className="fnon-box-label",m.textContent=l,d.appendChild(m)}c.appendChild(d),u.style.position="relative",u.appendChild(c)}},AddTheme(e,t){if(!e){x("Name is required to generate a new theme.");return}if(se[e]){x("A theme with the same name already exists.");return}mn(e,t),Rn(e,t),se[e]=T(e),Ce[e]=N(e),U[e]=B(e),Le[e]=I(e),we[e]=A(e)}}})();
|