@adelalawdi/fnon2 2.0.2 β 2.0.4
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 +1 -1
- package/fnon.min.css +1 -1
- package/fnon.min.js +1 -1
- package/index.html +59 -76
- package/package.json +1 -1
package/README.md
CHANGED
package/fnon.min.css
CHANGED
|
@@ -1 +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;flex-wrap:wrap;justify-content:center;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}.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}
|
|
1
|
+
:root{--fnon-font: "Quicksand", sans-serif;--fnon-z-overlay: 4080;--fnon-z-modal: 4050;--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-overlay-nobg{background:transparent!important;pointer-events:none!important}.fnon-overlay-nobg>.fnon-modal{pointer-events:auto!important}.fnon-task-bar{position:fixed;bottom:0;left:0;right:0;z-index:calc(var(--fnon-z-modal) + 10);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) + 20);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:var(--fnon-fl-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;flex-wrap:wrap;justify-content:center;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}.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
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Fnon=(function(){"use strict";function E(e){typeof console<"u"&&console.error("[Fnon]",e)}function se(e){return typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}function we(e){return typeof e=="string"?e:e instanceof HTMLElement?e.outerHTML:String(e)}function le(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 Oe(e,t){const n=le(e);if(!n)return e;const o=1-t;return`rgb(${n.r*o|0},${n.g*o|0},${n.b*o|0})`}function vn(e,t){const n=le(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 xe(e,t=4){if(t===4)return le(e)?[e,vn(e,.3),Oe(e,.15),Oe(e,.3)]:[e,e,e,e];const n=le(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 He(){return"×"}function yn(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 ce={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 de={};function kn(e,t){de[e]={...de[e],...t}}function Ye(e){return de[e]?{...ce[e],...de[e]}:ce[e]?ce[e]:null}function ze(e){const t=Ye(e)||ce.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=xe(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 Le=null;const U=[],Ee=new Map;function Cn(e){Le=e}function qe(e,t,n){if(!Le)return!1;try{return Le(e,t,n)===!0}catch(o){return E(`Renderer failed: ${o}`),!1}}function wn(e,t){U.push({modalId:e,fn:t})}function xn(e,t){Ee.set(e,t)}function Ln(e){const t=Ee.get(e);return Ee.delete(e),t}function je(e){for(let n=U.length-1;n>=0;n--)if(U[n].modalId===e){try{U[n].fn()}catch(o){E(`Cleanup failed: ${o}`)}U.splice(n,1)}const t=Ln(e);if(t&&typeof t.unmount=="function")try{t.unmount()}catch{}}function En(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 Dn=0;const H=[],fe=new Map,ue=new Map,Y=new Map,V=new Map,Mn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Sn(e,t,n){const o=document.activeElement,r=a=>{if(a.key!=="Tab")return;const l=t.querySelectorAll(Mn);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),V.set(e,{previousFocus:o,handler:r})}function Tn(e){const t=V.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(),V.delete(e)}function Nn(e){const t=V.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler)}function We(e){const t=V.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.addEventListener("keydown",t.handler)}const me="fnon-task-bar";function Bn(){let e=document.getElementById(me);return e||(e=document.createElement("div"),e.id=me,e.className="fnon-task-bar",document.body.appendChild(e)),e}function An(e,t,n,o){const r=Bn(),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"),We(e),o.parentNode.appendChild(o),a.remove(),Y.delete(e),Y.size===0){const l=document.getElementById(me);l&&l.remove()}}),r.appendChild(a)}function In(){const e=document.getElementById(me);e&&Y.size===0&&e.remove()}function Ke(){return`fnon-modal-${++Dn}`}const Fn={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 Rn(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 z(e,t){var h;const n={...Fn,...t},o=Ke();n.showClose!==void 0&&(n.closeButton=n.showClose),fe.set(o,n);const r=n.data||{};ue.set(o,r);let a;n.appendTarget?(a=se(n.appendTarget),a||(E(`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),n.width==="fl"&&(l.style.zIndex="4012");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=ze(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=we(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)Nn(o),Y.set(o,{modalEl:i,title:n.title||""}),An(o,En(n.title)||"",i,l);else if(We(o),l.parentNode.appendChild(l),Y.get(o)){const $=document.querySelector(`.fnon-task-bar-btn[data-modal-id="${o}"]`);$&&$.remove(),Y.delete(o),In()}}),f.push(p)}if(n.showMaxMin){const p=document.createElement("button");p.className="fnon-btn-max",p.innerHTML="βΆ",p.title="Maximize",p.addEventListener("click",()=>{const v=i.classList.contains("fnon-modal-fl");n.width==="fl"?(i.classList.toggle("fnon-modal-fl"),i.classList.toggle("fnon-modal-xl")):i.classList.toggle("fnon-modal-fl"),v?l.style.zIndex="":l.style.zIndex="4012",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=He(),p.title="Close",p.addEventListener("click",()=>q(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&&(qe(n.message,m,g)||(m.innerHTML=we(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 S=p.boxShadow||p.shadow;S&&(v.style.boxShadow=S),p.borderColor&&(v.style.borderColor=p.borderColor),p.callback?v.addEventListener("click",()=>{let $=!1;p.callback(()=>{$=!0,q(o)},m,r)!==!1&&($||q(o))}):v.addEventListener("click",()=>q(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 x={h:s,b:m,f:b},C=(n.layout||"hbf").toLowerCase().replace(/[^hbf]/g,"");if(C&&C!=="hbf"){const p=new Set;for(const v of C)!p.has(v)&&x[v]&&(i.appendChild(x[v]),p.add(v));for(const v of"hbf")!p.has(v)&&x[v]&&i.appendChild(x[v])}else i.appendChild(s),i.appendChild(m),i.appendChild(b);if(l.appendChild(i),Rn(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 S=i.querySelector(p);S&&(v>0?setTimeout(()=>S.focus(),v):S.focus())})}return n.focusTrap!==!1&&Sn(o,i,l),n.onOpen&&n.onOpen(i,r),H.push(l),{close:()=>q(o),modalEl:i,id:o}}function q(e){const t=fe.get(e),n=ue.get(e)||{},o=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);if(!o){fe.delete(e),ue.delete(e),E(`Modal ${e} not found in DOM`);return}const r=o.querySelector(".fnon-modal");t!=null&&t.onClosing&&r&&t.onClosing(r,n),Tn(e),je(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),fe.delete(e),ue.delete(e)},300);const a=H.indexOf(o);a!==-1&&H.splice(a,1)}function Pn(){if(H.length===0)return;const t=H[H.length-1].dataset.modalId;t&&q(t)}document.addEventListener("keydown",e=>{e.key==="Escape"&&Pn()});const De={};function N(e){const t=function(n,o,r,a,l){let i;if(typeof n=="object"?(i={...De,...n},o!==void 0&&(i.title=o)):(i={...De,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()}}]}z(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 pe={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(De,e)}},Me={};function B(e){const t=function(n,o,r,a,l,i,u){let s,c;if(typeof n=="object"?(s={...Me,...n},o!==void 0&&(s.title=o),c=i||s.cancelCallback):(s={...Me,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:k=>{c&&c(!1),k()}},{text:f,style:e,color:s.btnOkColor,background:s.btnOkBackground,boxShadow:g,shadow:g,borderColor:s.btnOkBorderColor,callback:k=>{d&&d(!0),k()}}]}z(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 Se={Primary:B("Primary"),Success:B("Success"),Warning:B("Warning"),Danger:B("Danger"),Info:B("Info"),Light:B("Light"),Dark:B("Dark"),Init(e){Object.assign(Me,e)}},ge={};function X(e){return z("Primary",{...ge,...e})}X.Init=function(e){Object.assign(ge,e)};function A(e){const t=function(n,o,r,a,l,i,u){let s,c,d;if(typeof n=="object"?(s={...ge,...n},o!==void 0&&(s.title=o),c=l||s.callback,d=i||s.cancelCallback):(s={...ge,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,k=s.btnCancelShadow;s.buttons=[{text:g,style:"Light",color:s.btnCancelColor,background:s.btnCancelBackground,boxShadow:k,shadow:k,borderColor:s.btnCancelBorderColor,callback:(C,h,p)=>{d&&d(C,f,p)===!1||C()}},{text:m,style:e,color:s.btnOkColor,background:s.btnOkBackground,boxShadow:b,shadow:b,borderColor:s.btnOkBorderColor,callback:(C,h,p)=>{c&&c(C,f,p)===!1||C()}}],f=z(e,s).modalEl.querySelector(".fnon-modal-body")}else z(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(X,{Primary:A("Primary"),Success:A("Success"),Warning:A("Warning"),Danger:A("Danger"),Info:A("Info"),Light:A("Light"),Dark:A("Dark")});const Ge={headline:"BREAKING",theme:"Danger",anchor:"top",timeout:5e3,closable:!0,appendTarget:"body",fontFamily:"'Quicksand', sans-serif"};function j(e){var d;const t={...Ge,...e},n=Ke();let o;t.appendTarget?(o=se(t.appendTarget),o||(E(`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=ze(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&&(qe(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=He(),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){je(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 I(e){const t=function(n,o){return j(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};j(a)})},t}j.Init=function(e){Object.assign(Ge,e)};const Te=Object.assign(j,{Primary:I("Primary"),Success:I("Success"),Warning:I("Warning"),Danger:I("Danger"),Info:I("Info"),Light:I("Light"),Dark:I("Dark"),Init:j.Init}),Ue="fnon-hint-container-",be='<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>',_n='<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>',$n='<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>',On='<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 Hn(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 Ve={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 he={Primary:{titleColor:"#029eff",backgroundColor:"#ebf8ff",borderColor:"#029eff",svg:be},Success:{titleColor:"#39DA8A",backgroundColor:"#f0fff4",borderColor:"#39DA8A",svg:be},Warning:{titleColor:"#fdd347",backgroundColor:"#fffbe5",borderColor:"#fdd347",svg:_n},Danger:{titleColor:"#ff6b6b",backgroundColor:"#fff5f5",borderColor:"#ff6b6b",svg:$n},Info:{titleColor:"#48dbfb",backgroundColor:"#e5faff",borderColor:"#48dbfb",svg:On},Light:{titleColor:"#2d3748",backgroundColor:"#f8f9fa",borderColor:"#ced4da",svg:be},Dark:{titleColor:"#fff",backgroundColor:"#222f3e",borderColor:"#222f3e",svg:be}};function Yn(e,t){he[e]={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff",svg:void 0}}function zn(e){if(he[e])return he[e];const t=Ye(e);if(t){const n={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff"};return he[e]=n,n}return null}function qn(e){const t=document.querySelector(`#${Ue}${e}`);if(t)return t;const n=document.createElement("div");return n.id=`${Ue}${e}`,n.className=`fnon-hint-container ${e}`,document.body.appendChild(n),n}function jn(e){e.children.length===0&&e.parentNode&&e.parentNode.removeChild(e)}function Q(e,t){const n={...Ve};let o="";typeof t=="string"?o=t:t&&typeof t=="object"&&(Object.assign(n,t),o=n.title||"");const r=n.type||"Primary",a=zn(r);if(!a)return E(`Unknown hint type: ${r}`),{close:()=>{}};const l=n.position||"right-top",i=n.dir==="rtl",u=Hn(l,i),s=n.animation||"slide-left",c=qn(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",()=>C(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)}xe(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 k=b?n.darkBgColor||"#1a202c":a.backgroundColor;d.style.color=yn(k),c.appendChild(d),requestAnimationFrame(()=>{d.classList.add("fnon-hint-active")});let x=null;n.timeOut&&n.timeOut>0&&(x=setTimeout(()=>C(d),n.timeOut));function C(h){x&&clearTimeout(x),h.classList.remove("fnon-hint-active"),n.onClose&&n.onClose(),n.onclosed&&n.onclosed(),setTimeout(()=>{h.parentNode&&h.parentNode.removeChild(h),jn(c)},300)}return{close:()=>C(d)}}Q.Init=function(e){Object.assign(Ve,e)};function F(e){const t=function(n,o){return Q(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};Q(n,a)})},t}const Ne={Primary:F("Primary"),Success:F("Success"),Warning:F("Warning"),Danger:F("Danger"),Info:F("Info"),Light:F("Light"),Dark:F("Dark"),show:Q,Init:Q.Init},Be={...{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 Xe(e,t){const n=Be[e];if("css"in n&&n.css)return n.html(t);const o=xe(t,9);return n.html(o)}const Qe={text:"",clickToClose:!1,svgColor:"#029eff",containerSize:void 0,fontFamily:"'Quicksand', sans-serif"},Je={text:"",svgColor:"#029eff",containerSize:void 0,svgSize:void 0,fontFamily:"'Quicksand', sans-serif"};let Ae=!1,ve=null;function Ze(e,t,n){if(Ae){E("A wait overlay is already active. Remove it first.");return}const o={...Qe,...n};t!==void 0&&(o.text=t);const r=o.svgColor||"#029eff",a=Xe(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",()=>en()),Ae=!0}function en(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"),ve&&(ve(!0),ve=null),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),Ae=!1},300)};n>0?setTimeout(o,n):o()}function Wn(e){const t=document.querySelector("#fnon-wait-overlay .fnon-wait-text");t&&(t.textContent=e)}function Kn(e){const t=function(n,o){Ze(e,n,o)};return t.Async=function(n,o){return new Promise(r=>{ve=r,Ze(e,n,o)})},t}const W={Remove:en,Change:Wn,Init:function(e){Object.assign(Qe,e)}};for(const e of Object.keys(Be))W[e]=Kn(e);let ye=null;function nn(e,t,n,o){var f;const r=se(t);if(!r){E(`Box target not found: ${t}`);return}const a={...Je,...o},l=a.svgColor||"#029eff",i=Xe(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 Gn(e){const t=se(e);if(!t)return;const n=t.querySelector(".fnon-box-overlay");n&&n.parentNode&&n.parentNode.removeChild(n),ye&&(ye(!0),ye=null)}function Un(e){const t=function(n,o,r){nn(e,n,o,r)};return t.Async=function(n,o,r){return new Promise(a=>{ye=a,nn(e,n,o,r)})},t}const ke={Remove:Gn,Init:function(e){Object.assign(Je,e)}};for(const e of Object.keys(Be))ke[e]=Un(e);function tn(){return document.documentElement.dir==="rtl"}const Vn=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],on=["January","February","March","April","May","June","July","August","September","October","November","December"];function rn(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function Ie(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function an(e,t){return new Date(e,t+1,0).getDate()}function Xn(e,t){return new Date(e,t,1).getDay()}function L(e){return e.getFullYear()*1e4+e.getMonth()*100+e.getDate()}function R(e,t){let n=e.viewMonth+t,o=e.viewYear;for(;n<0;)n+=12,o--;for(;n>11;)n-=12,o++;if(e.minDate!==null){const r=new Date(o,n+1,0);if(L(r)<e.minDate)return!1}if(e.maxDate!==null){const r=new Date(o,n,1);if(L(r)>e.maxDate)return!1}return!0}function sn(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 L(r)>=e.minDate}function ln(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 L(r)<=e.maxDate}function Ce(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 Qn(e,t){if(!e.bodyEl)return;const n=e.bodyEl.querySelectorAll(".fnon-dp-day"),o=L(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 cn(e={}){const t=new Date,n=e.initDate||t,o=!!e.dateRange,r=o?!1:!!e.withTime,a=e.minDate?L(rn(e.minDate)):null,l=e.maxDate?L(rn(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=z("Primary",d);u.closeModal=f.close,u.bodyEl=f.modalEl.querySelector(".fnon-modal-body"),u.bodyEl&&(u.bodyEl.style.padding="0",D(u))})}const Jn=cn;function D(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=tn();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",sn(e)||i.classList.add("fnon-dp-nav-disabled"),i.addEventListener("click",()=>{sn(e)&&(e.viewMonth--,e.viewMonth<0&&(e.viewMonth=11,e.viewYear--),D(e))});const u=document.createElement("button");u.className="fnon-dp-label",u.textContent=on[e.viewMonth]+" "+e.viewYear,u.addEventListener("click",w=>{w.stopPropagation(),nt(e,u)});const s=document.createElement("button");s.className="fnon-dp-nav",s.innerHTML=l,s.title=o?"Previous month":"Next month",ln(e)||s.classList.add("fnon-dp-nav-disabled"),s.addEventListener("click",()=>{ln(e)&&(e.viewMonth++,e.viewMonth>11&&(e.viewMonth=0,e.viewYear++),D(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 w=d.value.split(":");e.hour=parseInt(w[0],10)||0,e.minute=parseInt(w[1],10)||0}),c.appendChild(d),n.appendChild(c);const g=document.createElement("div");g.className="fnon-dp-grid";for(const w of Vn){const y=document.createElement("div");y.className="fnon-dp-dow",y.textContent=w,g.appendChild(y)}const b=e.viewYear,k=e.viewMonth,x=an(b,k),C=Xn(b,k),h=k===0?11:k-1,p=k===0?b-1:b,v=an(p,h),S=42,$=new Date;for(let w=0;w<S;w++){const y=document.createElement("div");y.className="fnon-dp-day";let K,ie,re,ae;w<C?(K=v-C+w+1,ie=k-1<0?11:k-1,re=k-1<0?b-1:b,ae=!0):w>=C+x?(K=w-C-x+1,ie=k+1>11?0:k+1,re=k+1>11?b+1:b,ae=!0):(K=w-C+1,ie=k,re=b,ae=!1);const G=new Date(re,ie,K),O=L(G);if(y.textContent=String(K),y.dataset.year=String(re),y.dataset.month=String(ie),y.dataset.day=String(K),y.dataset.ts=String(O),ae&&y.classList.add("fnon-dp-other"),Ie(G,$)&&y.classList.add("fnon-dp-today"),e.minDate!==null&&O<e.minDate&&y.classList.add("fnon-dp-disabled"),e.maxDate!==null&&O>e.maxDate&&y.classList.add("fnon-dp-disabled"),e.start&&Ie(G,e.start)&&y.classList.add("fnon-dp-selected"),e.end&&Ie(G,e.end)&&y.classList.add("fnon-dp-selected"),e.rangeMode&&e.start&&e.end){const bn=L(e.start),hn=L(e.end);O>bn&&O<hn&&y.classList.add("fnon-dp-range"),O===bn&&y.classList.add("fnon-dp-range-start"),O===hn&&y.classList.add("fnon-dp-range-end")}!y.classList.contains("fnon-dp-disabled")&&!ae&&(y.addEventListener("click",()=>et(e,G)),y.addEventListener("mouseenter",()=>Zn(e,G)),y.addEventListener("mouseleave",()=>Ce(e))),g.appendChild(y)}n.appendChild(g);const T=document.createElement("div");T.className="fnon-dp-actions";function st(){Z.classList.toggle("fnon-dp-nav-disabled",!R(e,-12)),ee.classList.toggle("fnon-dp-nav-disabled",!R(e,-6)),te.classList.toggle("fnon-dp-nav-disabled",!R(e,6)),oe.classList.toggle("fnon-dp-nav-disabled",!R(e,12));const w=L(new Date);ne.classList.toggle("fnon-dp-nav-disabled",e.minDate!==null&&w<e.minDate||e.maxDate!==null&&w>e.maxDate)}const Z=document.createElement("button");Z.className="fnon-dp-btn",Z.textContent="-1 Year",Z.addEventListener("click",()=>{R(e,-12)&&(e.viewYear-=1,D(e))}),T.appendChild(Z);const ee=document.createElement("button");ee.className="fnon-dp-btn",ee.textContent="-6 Months",ee.addEventListener("click",()=>{R(e,-6)&&(e.viewMonth-=6,e.viewMonth<0&&(e.viewMonth+=12,e.viewYear-=1),D(e))}),T.appendChild(ee);const ne=document.createElement("button");ne.className="fnon-dp-btn",ne.textContent="Today",ne.addEventListener("click",()=>{const w=new Date,y=L(w);e.minDate!==null&&y<e.minDate||e.maxDate!==null&&y>e.maxDate||(e.viewYear=w.getFullYear(),e.viewMonth=w.getMonth(),D(e))}),T.appendChild(ne);const te=document.createElement("button");te.className="fnon-dp-btn",te.textContent="+6 Months",te.addEventListener("click",()=>{R(e,6)&&(e.viewMonth+=6,e.viewMonth>11&&(e.viewMonth-=12,e.viewYear+=1),D(e))}),T.appendChild(te);const oe=document.createElement("button");if(oe.className="fnon-dp-btn",oe.textContent="+1 Year",oe.addEventListener("click",()=>{R(e,12)&&(e.viewYear+=1,D(e))}),T.appendChild(oe),st(),!e.rangeMode&&e.withTime){const w=document.createElement("button");w.className="fnon-dp-btn fnon-dp-btn-primary",w.textContent="OK",w.addEventListener("click",()=>{if(e.start&&e.resolve){const y=new Date(e.start);e.withTime&&y.setHours(e.hour,e.minute,0,0),e.resolve(y),e.closeModal&&e.closeModal()}}),T.appendChild(w)}n.appendChild(T),t.appendChild(n)}function Zn(e,t){if(!e.rangeMode||!e.start||e.end||!e.bodyEl)return;const n=L(e.start),o=L(t),r=Math.min(n,o),a=Math.max(n,o);Ce(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 et(e,t,n){if(e.rangeMode){if(!e.start||e.start&&e.end){e.start=t,e.end=null,Ce(e),D(e);return}if(e.start&&!e.end){Ce(e),L(t)<L(e.start)?(e.end=e.start,e.start=t):e.end=t,D(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){Qn(e,t);return}e.resolve&&(e.resolve(t),e.closeModal&&e.closeModal())}function nt(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=tn();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",x=>{x.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",x=>{x.stopPropagation(),c+=12,d()}),f.appendChild(m),f.appendChild(g),f.appendChild(b),i.appendChild(f);const k=c-5;for(let x=0;x<3;x++){const C=document.createElement("div");C.className="fnon-dp-popup-row";for(let h=0;h<4;h++){const p=k+x*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",S=>{S.stopPropagation(),c=p,s="month",d()}),C.appendChild(v)}i.appendChild(C)}}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 k=document.createElement("div");k.className="fnon-dp-popup-row";for(let x=0;x<4;x++){const C=b*4+x,h=document.createElement("div");h.className="fnon-dp-popup-cell"+(C===e.viewMonth&&c===e.viewYear?" fnon-dp-popup-active":""),h.textContent=on[C].substring(0,3),h.addEventListener("click",p=>{p.stopPropagation(),e.viewYear=c,e.viewMonth=C,i.remove(),D(e)}),k.appendChild(h)}i.appendChild(k)}}};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 dn=!1;function J(){return document.documentElement.dir==="rtl"}const M=new Set;let Fe=[];function tt(e){return"clientX"in e?{x:e.clientX,y:e.clientY}:{x:e.x,y:e.y}}function ot(){return dn}function it(e){dn=e}function P(){M.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),M.clear(),Fe.forEach(e=>e()),Fe=[]}function fn(e){M.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)>e&&(t.parentNode&&t.parentNode.removeChild(t),M.delete(t))})}function Re(e){M.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)===e&&(t.parentNode&&t.parentNode.removeChild(t),M.delete(t))})}function Pe(e){const t=e.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)");t.length>0&&t[0].focus()}function _(e){return parseInt(e.getAttribute("data-parent-level")||"0",10)}function un(e){for(;e;){if(e.classList.contains("fnon-cm"))return e;e=e.parentElement}return null}function mn(e){const t=un(e);return t?Array.from(t.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)")):[]}function rt(e){for(const t of M)if(_(t)===e)return t;return null}function _e(e){const t=_(e)-1,n=rt(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 at(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 pn(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;J()?(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 $e(e,t,n){const o=document.createElement("div");o.className="fnon-cm"+(ot()?" fnon-cm-dark":""),o.setAttribute("data-parent-level",String(t)),J()&&(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=we(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=$e(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),pn(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&&(fn(_(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=J()?"◀":"▶",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=$e(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),pn(a,c)),Pe(c)},a.__cmCloseSubmenu=()=>{c&&(fn(_(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),P())}),o.appendChild(a)}return o}function gn(e,t,n){if(!t||t.length===0)return E("ContextMenu requires at least one item."),{close:()=>{}};e instanceof MouseEvent&&(e.preventDefault(),e.stopPropagation()),P();const o=tt(e),r=$e(t,0,n);at(r,o.x,o.y),Pe(r);function a(c){const d=c.target;r.contains(d)||P()}function l(c){r.contains(c.target)||P()}function i(c){const d=document.activeElement,f=un(d);switch(c.key){case"Escape":{if(c.preventDefault(),f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=_e(f);g&&g.focus()}else P();break}case"ArrowDown":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=mn(d),g=m.indexOf(d);g<m.length-1&&m[g+1].focus()}else f&&Pe(f);break}case"ArrowUp":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=mn(d),g=m.indexOf(d);g>0&&m[g-1].focus()}break}case"ArrowRight":{if(c.preventDefault(),J()){if(f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=_e(f);g&&g.focus()}}else d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();break}case"ArrowLeft":{if(c.preventDefault(),J())d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();else if(f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=_e(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(){P()}function s(){P()}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),Fe=[()=>document.removeEventListener("click",a,!0),()=>document.removeEventListener("contextmenu",l),()=>document.removeEventListener("keydown",i),()=>window.removeEventListener("scroll",u,!0),()=>window.removeEventListener("resize",s)],{close:P}}return{setRenderer:Cn,registerCleanup:wn,registerReactRoot:xn,Alert:pe,Ask:Se,Dialogue:X,Breaking:Te,Hint:Ne,Wait:W,Box:ke,DatePicker:cn,DP:Jn,ContextMenu:gn,CM:gn,Init(e){pe.Init(e),Se.Init(e),X.Init(e),Te.Init(e),Ne.Init(e),W.Init(e),ke.Init(e),"isDark"in e&&it(!!e.isDark),"dir"in e&&e.dir&&(document.documentElement.dir=e.dir)},AddLogo(e,t){if(!e||!t){E("Name and HtmlContent are required to add a new logo.");return}if(W[e]){E("A logo with the same name already exists.");return}const o=W;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",()=>W.Remove())};const r=ke;r[e]=function(a,l,i){var f;const u=typeof a=="string"?document.querySelector(a):a;if(!u){E("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){E("Name is required to generate a new theme.");return}if(pe[e]){E("A theme with the same name already exists.");return}kn(e,t),Yn(e,t),pe[e]=N(e),Se[e]=B(e),X[e]=A(e),Ne[e]=F(e),Te[e]=I(e)}}})();
|
|
1
|
+
var Fnon=(function(){"use strict";function x(e){typeof console<"u"&&console.error("[Fnon]",e)}function ce(e){return typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}function we(e){return typeof e=="string"?e:e instanceof HTMLElement?e.outerHTML:String(e)}function de(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 He(e,t){const n=de(e);if(!n)return e;const o=1-t;return`rgb(${n.r*o|0},${n.g*o|0},${n.b*o|0})`}function yn(e,t){const n=de(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 xe(e,t=4){if(t===4)return de(e)?[e,yn(e,.3),He(e,.15),He(e,.3)]:[e,e,e,e];const n=de(e);if(!n)return Array(t).fill(e);const o=[e];let r=n.r,a=n.g,s=n.b;for(let i=0;i<t-1;i++)r=Math.max(0,r-33),a=Math.max(0,a-33),s=Math.max(0,s-33),o.push(`rgb(${r},${a},${s})`);return o}function Oe(){return"×"}function kn(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 fe={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 ue={};function Cn(e,t){ue[e]={...ue[e],...t}}function Ye(e){return ue[e]?{...fe[e],...ue[e]}:fe[e]?fe[e]:null}function qe(e){const t=Ye(e)||fe.Primary,n=[];for(const[a,s]of Object.entries(t)){const i=a.replace(/([A-Z])/g,"-$1").toLowerCase();n.push(`--fnon-${i}: ${s};`)}const o=t.titleBackground||"#029eff",r=xe(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 Le=null;const U=[],Me=new Map;function wn(e){Le=e}function ze(e,t,n){if(!Le)return!1;try{return Le(e,t,n)===!0}catch(o){return x(`Renderer failed: ${o}`),!1}}function xn(e,t){U.push({modalId:e,fn:t})}function Ln(e,t){Me.set(e,t)}function Mn(e){const t=Me.get(e);return Me.delete(e),t}function je(e){for(let n=U.length-1;n>=0;n--)if(U[n].modalId===e){try{U[n].fn()}catch(o){x(`Cleanup failed: ${o}`)}U.splice(n,1)}const t=Mn(e);if(t&&typeof t.unmount=="function")try{t.unmount()}catch{}}function En(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 Sn=0;const $=[],H=new Map,V=new Map,O=new Map,X=new Map,Dn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Tn(e,t,n){const o=document.activeElement,r=a=>{if(a.key!=="Tab")return;const s=t.querySelectorAll(Dn);if(s.length===0)return;const i=s[0],u=s[s.length-1];a.shiftKey?document.activeElement===i&&(a.preventDefault(),u.focus()):document.activeElement===u&&(a.preventDefault(),i.focus())};n.addEventListener("keydown",r),X.set(e,{previousFocus:o,handler:r})}function Nn(e){const t=X.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(),X.delete(e)}function Bn(e){const t=X.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler)}function We(e){const t=X.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.addEventListener("keydown",t.handler)}const Q="fnon-task-bar";function An(){let e=document.getElementById(Q);return e||(e=document.createElement("div"),e.id=Q,e.className="fnon-task-bar",document.body.appendChild(e)),e}function In(e,t,n,o){const r=An(),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"),We(e),o.parentNode.appendChild(o),a.remove(),O.delete(e),O.size===0){const i=document.getElementById(Q);i&&i.remove()}const s=H.get(e);me(n,o,s==null?void 0:s.showMaxMin)}),r.appendChild(a)}function Fn(){const e=document.getElementById(Q);e&&O.size===0&&e.remove()}function Pn(){const e=document.getElementById(Q);return!e||e.children.length===0?0:e.getBoundingClientRect().height}function me(e,t,n){if(!e.classList.contains("fnon-modal-fl")){e.style.removeProperty("--fnon-fl-max-height");return}if(n){const r=Pn();r>0?e.style.setProperty("--fnon-fl-max-height",`calc(100vh - ${r}px)`):e.style.removeProperty("--fnon-fl-max-height")}else e.style.removeProperty("--fnon-fl-max-height")}function Ke(){return`fnon-modal-${++Sn}`}const Rn={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 _n(e,t){let n=!1,o=0,r=0,a=0,s=0,i=0;function u(){return e.closest('[dir="rtl"]')!==null||document.documentElement.dir==="rtl"}t.addEventListener("mousedown",l=>{if(e.classList.contains("fnon-modal-fl"))return;n=!0,o=l.clientX,r=l.clientY;const c=e.getBoundingClientRect();a=c.left,i=c.right,s=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=s+"px",e.classList.add("fnon-dragging"),l.preventDefault()}),document.addEventListener("mousemove",l=>{if(!n)return;const c=l.clientX-o,d=l.clientY-r;u()?e.style.right=window.innerWidth-i-c+"px":e.style.left=a+c+"px",e.style.top=s+d+"px"}),document.addEventListener("mouseup",()=>{n&&(n=!1,e.classList.remove("fnon-dragging"))})}function Y(e,t){const n={...Rn,...t},o=Ke();n.showClose!==void 0&&(n.closeButton=n.showClose),H.set(o,n);const r=n.data||{};r.__modalId=o,V.set(o,r);let a;n.appendTarget?(a=ce(n.appendTarget),a||(x(`appendTarget "${n.appendTarget}" not found; falling back to body`),a=document.body)):a=document.body;const s=document.createElement("div");s.className="fnon-overlay",s.dataset.modalId=o,n.zIndex&&(s.style.zIndex=String(n.zIndex)),n.background&&(s.style.background=n.background),n.dir&&(s.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=qe(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 l=document.createElement("div");l.className="fnon-modal-title",n.titleBackground&&(l.style.background=n.titleBackground),n.titleColor&&(l.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=we(n.title)),l.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 h=i.classList.contains("fnon-minimized");if(i.classList.toggle("fnon-minimized"),s.classList.toggle("fnon-overlay-hidden"),!h)Bn(o),O.set(o,{modalEl:i,title:n.title||""}),In(o,En(n.title)||"",i,s);else{if(We(o),s.parentNode.appendChild(s),O.get(o)){const W=document.querySelector(`.fnon-task-bar-btn[data-modal-id="${o}"]`);W&&W.remove(),O.delete(o),Fn()}me(i,s,n.showMaxMin)}}),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"),me(i,s,n.showMaxMin),i.classList.remove("fnon-minimized"),s.classList.remove("fnon-overlay-hidden")}),f.push(p)}if(n.closeButton!==!1){const p=document.createElement("button");p.className="fnon-btn-close",p.innerHTML=Oe(),p.title="Close",p.addEventListener("click",()=>q(o)),f.push(p)}n.dir==="rtl"&&f.reverse(),f.forEach(p=>d.appendChild(p)),l.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&&(ze(n.message,m,g)||(m.innerHTML=we(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 h=Ge(p,o,m,r);b.appendChild(h)}}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:l,b:m,f:b},k=(n.layout||"hbf").toLowerCase().replace(/[^hbf]/g,"");if(k&&k!=="hbf"){const p=new Set;for(const h of k)!p.has(h)&&w[h]&&(i.appendChild(w[h]),p.add(h));for(const h of"hbf")!p.has(h)&&w[h]&&i.appendChild(w[h])}else i.appendChild(l),i.appendChild(m),i.appendChild(b);if(s.appendChild(i),me(i,s,n.showMaxMin),n.overlay===!1&&(s.classList.add("fnon-overlay-nobg"),i.addEventListener("mousedown",p=>{p.target.closest("button, input, textarea, select, a, [tabindex]")||s.parentNode.appendChild(s)})),_n(i,l),n.onInit&&n.onInit(i,r),n.defaultBefore&&n.defaultBefore(i,r),n.beforeShow&&n.beforeShow(i,r),a.appendChild(s),n.defaultAfter&&n.defaultAfter(i,r),n.afterShow&&n.afterShow(i,r),requestAnimationFrame(()=>{s.classList.add("fnon-active"),i.classList.add("fnon-active")}),n.autoFocus){const p=n.autoFocusTag||"button",h=n.autoFocusDelay||0;requestAnimationFrame(()=>{const S=i.querySelector(p);S&&(h>0?setTimeout(()=>S.focus(),h):S.focus())})}return n.focusTrap!==!1&&Tn(o,i,s),n.onOpen&&n.onOpen(i,r),$.push(s),{close:()=>q(o),modalEl:i,id:o}}function q(e){const t=H.get(e),n=V.get(e)||{},o=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);if(!o){H.delete(e),V.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),Nn(e),je(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),H.delete(e),V.delete(e)},300);const a=$.indexOf(o);a!==-1&&$.splice(a,1)}function $n(){if($.length===0)return;const t=$[$.length-1].dataset.modalId;t&&q(t)}function Ge(e,t,n,o){var s;const r=document.createElement("button");r.className=`fnon-btn fnon-btn-${((s=e.style)==null?void 0:s.toLowerCase())||"light"}`,e.css&&(r.className+=" "+e.css),r.textContent=e.text,e.color&&(r.style.color=e.color),e.background&&(r.style.background=e.background);const a=e.boxShadow||e.shadow;return a&&(r.style.boxShadow=a),e.borderColor&&(r.style.borderColor=e.borderColor),e.callback?r.addEventListener("click",()=>{let i=!1;e.callback(()=>{i=!0,q(t)},n,o)!==!1&&(i||q(t))}):r.addEventListener("click",()=>q(t)),r}function Hn(e,t){let n,o;if(typeof e=="string"){n=e;const l=document.querySelector(`.fnon-overlay[data-modal-id="${n}"]`);if(!l)return x(`addModalButton: modal "${n}" not found`),null;if(o=l.querySelector(".fnon-modal"),!o)return x(`addModalButton: modal element for "${n}" not found`),null}else if(o=e,n=o.dataset.modalId||"",!n)return x("addModalButton: HTMLElement has no data-modal-id"),null;const r=H.get(n);if(!r)return x(`addModalButton: options for modal "${n}" not found`),null;let a=o.querySelector(".fnon-modal-footer");if(!a){if(a=document.createElement("div"),a.className="fnon-modal-footer",typeof r.isDark=="function"?r.isDark():r.isDark){const c=r.darkBgColor||"#1a202c";a.style.background=c,a.style.borderTopColor="#2d3748"}o.appendChild(a)}const s=o.querySelector(".fnon-modal-body"),i=V.get(n)||{},u=Ge(t,n,s,i);return a.appendChild(u),u}document.addEventListener("keydown",e=>{e.key==="Escape"&&$n()});const Ee={};function D(e){const t=function(n,o,r,a,s){let i;if(typeof n=="object"?(i={...Ee,...n},o!==void 0&&(i.title=o)):(i={...Ee,message:n,title:o||""},r!==void 0&&(i.btnOkText=r),s!==void 0&&(i.onClose=s)),!i.buttons||i.buttons.length===0){const u=a||i.callback,l=i.btnOkText||"OK",c=i.btnOkShadow;i.buttons=[{text:l,style:e,color:i.btnOkColor,background:i.btnOkBackground,boxShadow:c,shadow:c,borderColor:i.btnOkBorderColor,callback:d=>{u&&u(),d()}}]}Y(e,i)};return t.Async=function(n,o,r){return new Promise(a=>{const s=()=>a();typeof n=="object"?(n.callback=s,n.onClose=s,t(n,o,r)):t(n,o,r,s,s)})},t}const pe={Primary:D("Primary"),Success:D("Success"),Warning:D("Warning"),Danger:D("Danger"),Info:D("Info"),Light:D("Light"),Dark:D("Dark"),Init(e){Object.assign(Ee,e)}},Se={};function T(e){const t=function(n,o,r,a,s,i,u){let l,c;if(typeof n=="object"?(l={...Se,...n},o!==void 0&&(l.title=o),c=i||l.cancelCallback):(l={...Se,message:n,title:o||""},r!==void 0&&(l.btnOkText=r),a!==void 0&&(l.btnCancelText=a),c=i,u!==void 0&&(l.onClose=u)),!l.buttons||l.buttons.length===0){const d=s||l.callback;c=c||l.cancelCallback;const f=l.btnOkText||"OK",m=l.btnCancelText||"Cancel",g=l.btnOkShadow,b=l.btnCancelShadow;l.buttons=[{text:m,style:"Light",color:l.btnCancelColor,background:l.btnCancelBackground,boxShadow:b,shadow:b,borderColor:l.btnCancelBorderColor,callback:y=>{c&&c(!1),y()}},{text:f,style:e,color:l.btnOkColor,background:l.btnOkBackground,boxShadow:g,shadow:g,borderColor:l.btnOkBorderColor,callback:y=>{d&&d(!0),y()}}]}Y(e,l)};return t.Async=function(n,o,r,a){return new Promise(s=>{const i=()=>s(!0),u=()=>s(!1),l=()=>s(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=l,t(n,o,r,a)):t(n,o,r,a,i,u,l)})},t}const De={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(Se,e)}},ge={};function J(e){return Y("Primary",{...ge,...e})}J.Init=function(e){Object.assign(ge,e)};function N(e){const t=function(n,o,r,a,s,i,u){let l,c,d;if(typeof n=="object"?(l={...ge,...n},o!==void 0&&(l.title=o),c=s||l.callback,d=i||l.cancelCallback):(l={...ge,message:n,title:o||""},r!==void 0&&(l.btnOkText=r),a!==void 0&&(l.btnCancelText=a),c=s,d=i,u!==void 0&&(l.onClose=u)),!l.buttons||l.buttons.length===0){let f=null;const m=l.btnOkText||"OK",g=l.btnCancelText||"Cancel",b=l.btnOkShadow,y=l.btnCancelShadow;l.buttons=[{text:g,style:"Light",color:l.btnCancelColor,background:l.btnCancelBackground,boxShadow:y,shadow:y,borderColor:l.btnCancelBorderColor,callback:(k,p,h)=>{d&&d(k,f,h)===!1||k()}},{text:m,style:e,color:l.btnOkColor,background:l.btnOkBackground,boxShadow:b,shadow:b,borderColor:l.btnOkBorderColor,callback:(k,p,h)=>{c&&c(k,f,h)===!1||k()}}],f=Y(e,l).modalEl.querySelector(".fnon-modal-body")}else Y(e,l)};return t.Async=function(n,o,r,a){return new Promise(s=>{const i=(c,d,f)=>{s(!0)},u=(c,d,f)=>{s(!1)},l=()=>s(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=l,t(n,o,r,a)):t(n,o,r,a,i,u,l)})},t}Object.assign(J,{Primary:N("Primary"),Success:N("Success"),Warning:N("Warning"),Danger:N("Danger"),Info:N("Info"),Light:N("Light"),Dark:N("Dark")});const Ue={headline:"BREAKING",theme:"Danger",anchor:"top",timeout:5e3,closable:!0,appendTarget:"body",fontFamily:"'Quicksand', sans-serif"};function z(e){var d;const t={...Ue,...e},n=Ke();let o;t.appendTarget?(o=ce(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 s=qe(r);t.fontFamily&&(s+=`; font-family: ${t.fontFamily}`),a.setAttribute("style",s);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 l={id:n,type:"breaking"};if(t.message!==void 0&&t.message!==null&&(ze(t.message,u,l)||(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=Oe(),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){je(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 B(e){const t=function(n,o){return z(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};z(a)})},t}z.Init=function(e){Object.assign(Ue,e)};const Te=Object.assign(z,{Primary:B("Primary"),Success:B("Success"),Warning:B("Warning"),Danger:B("Danger"),Info:B("Info"),Light:B("Light"),Dark:B("Dark"),Init:z.Init}),Ve="fnon-hint-container-",be='<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>',On='<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>',Yn='<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>',qn='<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 zn(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 Xe={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 he={Primary:{titleColor:"#029eff",backgroundColor:"#ebf8ff",borderColor:"#029eff",svg:be},Success:{titleColor:"#39DA8A",backgroundColor:"#f0fff4",borderColor:"#39DA8A",svg:be},Warning:{titleColor:"#fdd347",backgroundColor:"#fffbe5",borderColor:"#fdd347",svg:On},Danger:{titleColor:"#ff6b6b",backgroundColor:"#fff5f5",borderColor:"#ff6b6b",svg:Yn},Info:{titleColor:"#48dbfb",backgroundColor:"#e5faff",borderColor:"#48dbfb",svg:qn},Light:{titleColor:"#2d3748",backgroundColor:"#f8f9fa",borderColor:"#ced4da",svg:be},Dark:{titleColor:"#fff",backgroundColor:"#222f3e",borderColor:"#222f3e",svg:be}};function jn(e,t){he[e]={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff",svg:void 0}}function Wn(e){if(he[e])return he[e];const t=Ye(e);if(t){const n={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff"};return he[e]=n,n}return null}function Kn(e){const t=document.querySelector(`#${Ve}${e}`);if(t)return t;const n=document.createElement("div");return n.id=`${Ve}${e}`,n.className=`fnon-hint-container ${e}`,document.body.appendChild(n),n}function Gn(e){e.children.length===0&&e.parentNode&&e.parentNode.removeChild(e)}function Z(e,t){const n={...Xe};let o="";typeof t=="string"?o=t:t&&typeof t=="object"&&(Object.assign(n,t),o=n.title||"");const r=n.type||"Primary",a=Wn(r);if(!a)return x(`Unknown hint type: ${r}`),{close:()=>{}};const s=n.position||"right-top",i=n.dir==="rtl",u=zn(s,i),l=n.animation||"slide-left",c=Kn(u);i&&(c.dir="rtl");const d=document.createElement("div");if(d.className=`fnon-hint fnon-hint-${u} fnon-hint-anim-${l} 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 p=document.createElement("div");p.className="fnon-hint-icon";const h=n.svgSize||{w:20,h:20};p.style.setProperty("--fnon-icon-w",h.w+"px"),p.style.setProperty("--fnon-icon-h",h.h+"px"),p.innerHTML=a.svg,d.appendChild(p)}const f=document.createElement("div");if(f.className="fnon-hint-content",o){const p=document.createElement("div");p.className="fnon-hint-title",p.textContent=o,f.appendChild(p)}const m=document.createElement("div");if(m.className="fnon-hint-message",m.innerHTML=e,f.appendChild(m),d.appendChild(f),n.closable!==!1){const p=document.createElement("button");p.className="fnon-hint-close",p.innerHTML="×",p.addEventListener("click",()=>k(d)),d.appendChild(p)}if(n.timeOut&&n.timeOut>0){const p=n.progressColor||a.borderColor,h=document.createElement("div");h.className="fnon-hint-progress",h.style.setProperty("--display-dur",n.timeOut+"ms"),h.style.background=p,d.style.position="relative",d.style.overflow="hidden",d.appendChild(h)}xe(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 p=n.darkBgColor||"#1a202c";d.style.backgroundColor=p}const y=b?n.darkBgColor||"#1a202c":a.backgroundColor;d.style.color=kn(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(p){w&&clearTimeout(w),p.classList.remove("fnon-hint-active"),n.onClose&&n.onClose(),n.onclosed&&n.onclosed(),setTimeout(()=>{p.parentNode&&p.parentNode.removeChild(p),Gn(c)},300)}return{close:()=>k(d)}}Z.Init=function(e){Object.assign(Xe,e)};function A(e){const t=function(n,o){return Z(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};Z(n,a)})},t}const Ne={Primary:A("Primary"),Success:A("Success"),Warning:A("Warning"),Danger:A("Danger"),Info:A("Info"),Light:A("Light"),Dark:A("Dark"),show:Z,Init:Z.Init},Be={...{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=Be[e];if("css"in n&&n.css)return n.html(t);const o=xe(t,9);return n.html(o)}const Je={text:"",clickToClose:!1,svgColor:"#029eff",containerSize:void 0,fontFamily:"'Quicksand', sans-serif"},Ze={text:"",svgColor:"#029eff",containerSize:void 0,svgSize:void 0,fontFamily:"'Quicksand', sans-serif"};let Ae=!1,ve=null;function en(e,t,n){if(Ae){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),s=document.createElement("div");s.className="fnon-wait-overlay",s.id="fnon-wait-overlay",o.fontFamily&&(s.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 l=document.createElement("div");l.className="fnon-wait-text",l.textContent=o.text,i.appendChild(l)}if(typeof o.isDark=="function"?o.isDark():o.isDark){const l=o.darkBgColor||"#1a202c";s.style.background="rgba(0, 0, 0, 0.85)",i.style.background=l,i.style.padding="1.5rem",i.style.borderRadius="8px"}s.appendChild(i),document.body.appendChild(s),requestAnimationFrame(()=>s.classList.add("fnon-wait-active")),o.clickToClose&&s.addEventListener("click",()=>nn()),Ae=!0}function nn(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"),ve&&(ve(!0),ve=null),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),Ae=!1},300)};n>0?setTimeout(o,n):o()}function Un(e){const t=document.querySelector("#fnon-wait-overlay .fnon-wait-text");t&&(t.textContent=e)}function Vn(e){const t=function(n,o){en(e,n,o)};return t.Async=function(n,o){return new Promise(r=>{ve=r,en(e,n,o)})},t}const j={Remove:nn,Change:Un,Init:function(e){Object.assign(Je,e)}};for(const e of Object.keys(Be))j[e]=Vn(e);let ye=null;function tn(e,t,n,o){var f;const r=ce(t);if(!r){x(`Box target not found: ${t}`);return}const a={...Ze,...o},s=a.svgColor||"#029eff",i=Qe(e,s),u=r.querySelector(".fnon-box-overlay");u&&((f=u.parentNode)==null||f.removeChild(u));const l=document.createElement("div");l.className="fnon-box-overlay",a.fontFamily&&(l.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";l.style.background="rgba(0, 0, 0, 0.7)",c.style.background=m,c.style.padding="1.5rem",c.style.borderRadius="8px"}l.appendChild(c),r.style.position="relative",r.appendChild(l)}function Xn(e){const t=ce(e);if(!t)return;const n=t.querySelector(".fnon-box-overlay");n&&n.parentNode&&n.parentNode.removeChild(n),ye&&(ye(!0),ye=null)}function Qn(e){const t=function(n,o,r){tn(e,n,o,r)};return t.Async=function(n,o,r){return new Promise(a=>{ye=a,tn(e,n,o,r)})},t}const ke={Remove:Xn,Init:function(e){Object.assign(Ze,e)}};for(const e of Object.keys(Be))ke[e]=Qn(e);function on(){return document.documentElement.dir==="rtl"}const Jn=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],rn=["January","February","March","April","May","June","July","August","September","October","November","December"];function an(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function Ie(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function sn(e,t){return new Date(e,t+1,0).getDate()}function Zn(e,t){return new Date(e,t,1).getDay()}function L(e){return e.getFullYear()*1e4+e.getMonth()*100+e.getDate()}function I(e,t){let n=e.viewMonth+t,o=e.viewYear;for(;n<0;)n+=12,o--;for(;n>11;)n-=12,o++;if(e.minDate!==null){const r=new Date(o,n+1,0);if(L(r)<e.minDate)return!1}if(e.maxDate!==null){const r=new Date(o,n,1);if(L(r)>e.maxDate)return!1}return!0}function ln(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 L(r)>=e.minDate}function cn(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 L(r)<=e.maxDate}function Ce(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 et(e,t){if(!e.bodyEl)return;const n=e.bodyEl.querySelectorAll(".fnon-dp-day"),o=L(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 dn(e={}){const t=new Date,n=e.initDate||t,o=!!e.dateRange,r=o?!1:!!e.withTime,a=e.minDate?L(an(e.minDate)):null,s=e.maxDate?L(an(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:s,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((l,c)=>{u.resolve=l,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=Y("Primary",d);u.closeModal=f.close,u.bodyEl=f.modalEl.querySelector(".fnon-modal-body"),u.bodyEl&&(u.bodyEl.style.padding="0",M(u))})}const nt=dn;function M(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=on();o&&(n.dir="rtl");const r=document.createElement("div");r.className="fnon-dp-header";const a=o?"βΊ":"βΉ",s=o?"βΉ":"βΊ",i=document.createElement("button");i.className="fnon-dp-nav",i.innerHTML=a,i.title=o?"Next month":"Previous month",ln(e)||i.classList.add("fnon-dp-nav-disabled"),i.addEventListener("click",()=>{ln(e)&&(e.viewMonth--,e.viewMonth<0&&(e.viewMonth=11,e.viewYear--),M(e))});const u=document.createElement("button");u.className="fnon-dp-label",u.textContent=rn[e.viewMonth]+" "+e.viewYear,u.addEventListener("click",C=>{C.stopPropagation(),it(e,u)});const l=document.createElement("button");l.className="fnon-dp-nav",l.innerHTML=s,l.title=o?"Previous month":"Next month",cn(e)||l.classList.add("fnon-dp-nav-disabled"),l.addEventListener("click",()=>{cn(e)&&(e.viewMonth++,e.viewMonth>11&&(e.viewMonth=0,e.viewYear++),M(e))}),r.appendChild(i),r.appendChild(u),r.appendChild(l),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 C=d.value.split(":");e.hour=parseInt(C[0],10)||0,e.minute=parseInt(C[1],10)||0}),c.appendChild(d),n.appendChild(c);const g=document.createElement("div");g.className="fnon-dp-grid";for(const C of Jn){const v=document.createElement("div");v.className="fnon-dp-dow",v.textContent=C,g.appendChild(v)}const b=e.viewYear,y=e.viewMonth,w=sn(b,y),k=Zn(b,y),p=y===0?11:y-1,h=y===0?b-1:b,S=sn(h,p),W=42,dt=new Date;for(let C=0;C<W;C++){const v=document.createElement("div");v.className="fnon-dp-day";let K,ae,se,le;C<k?(K=S-k+C+1,ae=y-1<0?11:y-1,se=y-1<0?b-1:b,le=!0):C>=k+w?(K=C-k-w+1,ae=y+1>11?0:y+1,se=y+1>11?b+1:b,le=!0):(K=C-k+1,ae=y,se=b,le=!1);const G=new Date(se,ae,K),_=L(G);if(v.textContent=String(K),v.dataset.year=String(se),v.dataset.month=String(ae),v.dataset.day=String(K),v.dataset.ts=String(_),le&&v.classList.add("fnon-dp-other"),Ie(G,dt)&&v.classList.add("fnon-dp-today"),e.minDate!==null&&_<e.minDate&&v.classList.add("fnon-dp-disabled"),e.maxDate!==null&&_>e.maxDate&&v.classList.add("fnon-dp-disabled"),e.start&&Ie(G,e.start)&&v.classList.add("fnon-dp-selected"),e.end&&Ie(G,e.end)&&v.classList.add("fnon-dp-selected"),e.rangeMode&&e.start&&e.end){const hn=L(e.start),vn=L(e.end);_>hn&&_<vn&&v.classList.add("fnon-dp-range"),_===hn&&v.classList.add("fnon-dp-range-start"),_===vn&&v.classList.add("fnon-dp-range-end")}!v.classList.contains("fnon-dp-disabled")&&!le&&(v.addEventListener("click",()=>ot(e,G)),v.addEventListener("mouseenter",()=>tt(e,G)),v.addEventListener("mouseleave",()=>Ce(e))),g.appendChild(v)}n.appendChild(g);const P=document.createElement("div");P.className="fnon-dp-actions";function ft(){ne.classList.toggle("fnon-dp-nav-disabled",!I(e,-12)),te.classList.toggle("fnon-dp-nav-disabled",!I(e,-6)),ie.classList.toggle("fnon-dp-nav-disabled",!I(e,6)),re.classList.toggle("fnon-dp-nav-disabled",!I(e,12));const C=L(new Date);oe.classList.toggle("fnon-dp-nav-disabled",e.minDate!==null&&C<e.minDate||e.maxDate!==null&&C>e.maxDate)}const ne=document.createElement("button");ne.className="fnon-dp-btn",ne.textContent="-1 Year",ne.addEventListener("click",()=>{I(e,-12)&&(e.viewYear-=1,M(e))}),P.appendChild(ne);const te=document.createElement("button");te.className="fnon-dp-btn",te.textContent="-6 Months",te.addEventListener("click",()=>{I(e,-6)&&(e.viewMonth-=6,e.viewMonth<0&&(e.viewMonth+=12,e.viewYear-=1),M(e))}),P.appendChild(te);const oe=document.createElement("button");oe.className="fnon-dp-btn",oe.textContent="Today",oe.addEventListener("click",()=>{const C=new Date,v=L(C);e.minDate!==null&&v<e.minDate||e.maxDate!==null&&v>e.maxDate||(e.viewYear=C.getFullYear(),e.viewMonth=C.getMonth(),M(e))}),P.appendChild(oe);const ie=document.createElement("button");ie.className="fnon-dp-btn",ie.textContent="+6 Months",ie.addEventListener("click",()=>{I(e,6)&&(e.viewMonth+=6,e.viewMonth>11&&(e.viewMonth-=12,e.viewYear+=1),M(e))}),P.appendChild(ie);const re=document.createElement("button");if(re.className="fnon-dp-btn",re.textContent="+1 Year",re.addEventListener("click",()=>{I(e,12)&&(e.viewYear+=1,M(e))}),P.appendChild(re),ft(),!e.rangeMode&&e.withTime){const C=document.createElement("button");C.className="fnon-dp-btn fnon-dp-btn-primary",C.textContent="OK",C.addEventListener("click",()=>{if(e.start&&e.resolve){const v=new Date(e.start);e.withTime&&v.setHours(e.hour,e.minute,0,0),e.resolve(v),e.closeModal&&e.closeModal()}}),P.appendChild(C)}n.appendChild(P),t.appendChild(n)}function tt(e,t){if(!e.rangeMode||!e.start||e.end||!e.bodyEl)return;const n=L(e.start),o=L(t),r=Math.min(n,o),a=Math.max(n,o);Ce(e);const s=e.bodyEl.querySelectorAll(".fnon-dp-day");for(const i of s){const u=parseInt(i.dataset.ts||"0",10);u>r&&u<a&&i.classList.add("fnon-dp-range-preview")}}function ot(e,t,n){if(e.rangeMode){if(!e.start||e.start&&e.end){e.start=t,e.end=null,Ce(e),M(e);return}if(e.start&&!e.end){Ce(e),L(t)<L(e.start)?(e.end=e.start,e.start=t):e.end=t,M(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){et(e,t);return}e.resolve&&(e.resolve(t),e.closeModal&&e.closeModal())}function it(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(),s=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-s)/2+"px",i.style.width=s+"px";const u=on();let l="year",c=e.viewYear;const d=()=>{if(i.innerHTML="",l==="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 p=0;p<4;p++){const h=y+w*4+p,S=document.createElement("div");S.className="fnon-dp-popup-cell"+(h===e.viewYear?" fnon-dp-popup-active":""),S.textContent=String(h),S.addEventListener("click",W=>{W.stopPropagation(),c=h,l="month",d()}),k.appendChild(S)}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(),l="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,p=document.createElement("div");p.className="fnon-dp-popup-cell"+(k===e.viewMonth&&c===e.viewYear?" fnon-dp-popup-active":""),p.textContent=rn[k].substring(0,3),p.addEventListener("click",h=>{h.stopPropagation(),e.viewYear=c,e.viewMonth=k,i.remove(),M(e)}),y.appendChild(p)}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 fn=!1;function ee(){return document.documentElement.dir==="rtl"}const E=new Set;let Fe=[];function rt(e){return"clientX"in e?{x:e.clientX,y:e.clientY}:{x:e.x,y:e.y}}function at(){return fn}function st(e){fn=e}function F(){E.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),E.clear(),Fe.forEach(e=>e()),Fe=[]}function un(e){E.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)>e&&(t.parentNode&&t.parentNode.removeChild(t),E.delete(t))})}function Pe(e){E.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)===e&&(t.parentNode&&t.parentNode.removeChild(t),E.delete(t))})}function Re(e){const t=e.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)");t.length>0&&t[0].focus()}function R(e){return parseInt(e.getAttribute("data-parent-level")||"0",10)}function mn(e){for(;e;){if(e.classList.contains("fnon-cm"))return e;e=e.parentElement}return null}function pn(e){const t=mn(e);return t?Array.from(t.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)")):[]}function lt(e){for(const t of E)if(R(t)===e)return t;return null}function _e(e){const t=R(e)-1,n=lt(t);if(!n)return null;const o=n.querySelectorAll(".fnon-cm-item"),r=e.getBoundingClientRect();for(const a of o){const s=a.getBoundingClientRect();if((Math.abs(s.right-r.left)<20||Math.abs(s.left-r.right)<20)&&Math.abs(s.top-r.top)<50)return a}return null}function ct(e,t,n){document.body.appendChild(e),E.add(e);const o=e.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let s=t,i=n;s+o.width>r-4&&(s=r-o.width-4),i+o.height>a-4&&(i=a-o.height-4),s<4&&(s=4),i<4&&(i=4),e.style.left=s+"px",e.style.top=i+"px"}function gn(e,t){document.body.appendChild(t),E.add(t);const n=e.getBoundingClientRect(),o=t.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let s,i=n.top;ee()?(s=n.left-o.width,s<4&&(s=n.right)):(s=n.right,s+o.width>r-4&&(s=n.left-o.width)),i+o.height>a-4&&(i=a-o.height-4),i<4&&(i=4),t.style.left=s+"px",t.style.top=i+"px"}function $e(e,t,n){const o=document.createElement("div");o.className="fnon-cm"+(at()?" fnon-cm-dark":""),o.setAttribute("data-parent-level",String(t)),ee()&&(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 s=document.createElement("span");if(s.className="fnon-cm-item-text",s.innerHTML=we(r.text),a.appendChild(s),r.items&&r.items.length>0){let i=function(){f||(d&&(clearTimeout(d),d=null),f=window.setTimeout(()=>{f=null,!c&&(c=$e(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),gn(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&&(un(R(c)),c.parentNode&&c.parentNode.removeChild(c),E.delete(c),c=null)},300)}};const l=document.createElement("span");l.className="fnon-cm-arrow",l.innerHTML=ee()?"◀":"▶",a.appendChild(l);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=$e(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),gn(a,c)),Re(c)},a.__cmCloseSubmenu=()=>{c&&(un(R(c)),c.parentNode&&c.parentNode.removeChild(c),E.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),F())}),o.appendChild(a)}return o}function bn(e,t,n){if(!t||t.length===0)return x("ContextMenu requires at least one item."),{close:()=>{}};e instanceof MouseEvent&&(e.preventDefault(),e.stopPropagation()),F();const o=rt(e),r=$e(t,0,n);ct(r,o.x,o.y),Re(r);function a(c){const d=c.target;r.contains(d)||F()}function s(c){r.contains(c.target)||F()}function i(c){const d=document.activeElement,f=mn(d);switch(c.key){case"Escape":{if(c.preventDefault(),f&&f.classList.contains("fnon-cm-submenu")){const m=R(f);Pe(m);const g=_e(f);g&&g.focus()}else F();break}case"ArrowDown":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=pn(d),g=m.indexOf(d);g<m.length-1&&m[g+1].focus()}else f&&Re(f);break}case"ArrowUp":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=pn(d),g=m.indexOf(d);g>0&&m[g-1].focus()}break}case"ArrowRight":{if(c.preventDefault(),ee()){if(f&&f.classList.contains("fnon-cm-submenu")){const m=R(f);Pe(m);const g=_e(f);g&&g.focus()}}else d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();break}case"ArrowLeft":{if(c.preventDefault(),ee())d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();else if(f&&f.classList.contains("fnon-cm-submenu")){const m=R(f);Pe(m);const g=_e(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(){F()}function l(){F()}return setTimeout(()=>{document.addEventListener("click",a,!0),document.addEventListener("contextmenu",s),document.addEventListener("keydown",i),window.addEventListener("scroll",u,!0),window.addEventListener("resize",l)},0),Fe=[()=>document.removeEventListener("click",a,!0),()=>document.removeEventListener("contextmenu",s),()=>document.removeEventListener("keydown",i),()=>window.removeEventListener("scroll",u,!0),()=>window.removeEventListener("resize",l)],{close:F}}return{setRenderer:wn,registerCleanup:xn,registerReactRoot:Ln,Alert:pe,Ask:De,Dialogue:J,Breaking:Te,Hint:Ne,Wait:j,Box:ke,DatePicker:dn,DP:nt,ContextMenu:bn,CM:bn,addButton:Hn,Init(e){pe.Init(e),De.Init(e),J.Init(e),Te.Init(e),Ne.Init(e),j.Init(e),ke.Init(e),"isDark"in e&&st(!!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(j[e]){x("A logo with the same name already exists.");return}const o=j;o[e]=function(a,s){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 l=document.createElement("div");l.className="fnon-wait-text",l.textContent=a,u.appendChild(l)}i.appendChild(u),document.body.appendChild(i),requestAnimationFrame(()=>i.classList.add("fnon-wait-active")),s!=null&&s.clickToClose&&i.addEventListener("click",()=>j.Remove())};const r=ke;r[e]=function(a,s,i){var f;const u=typeof a=="string"?document.querySelector(a):a;if(!u){x("Invalid selector");return}const l=u.querySelector(".fnon-box-overlay");l&&((f=l.parentNode)==null||f.removeChild(l));const c=document.createElement("div");c.className="fnon-box-overlay";const d=document.createElement("div");if(d.className="fnon-box-inner",d.innerHTML=t,s){const m=document.createElement("div");m.className="fnon-box-label",m.textContent=s,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(pe[e]){x("A theme with the same name already exists.");return}Cn(e,t),jn(e,t),pe[e]=D(e),De[e]=T(e),J[e]=N(e),Ne[e]=A(e),Te[e]=B(e)}}})();
|
package/index.html
CHANGED
|
@@ -629,7 +629,7 @@
|
|
|
629
629
|
<div class="container">
|
|
630
630
|
<div class="header">
|
|
631
631
|
<h1>
|
|
632
|
-
Fnon.js v2.0.
|
|
632
|
+
Fnon.js v2.0.4
|
|
633
633
|
<small
|
|
634
634
|
>Interactive Playground — all APIs, live sandbox, Init
|
|
635
635
|
reference</small
|
|
@@ -652,7 +652,7 @@
|
|
|
652
652
|
</button>
|
|
653
653
|
</h1>
|
|
654
654
|
<p class="sub">
|
|
655
|
-
|
|
655
|
+
Twelve feature sections. Each has code examples (try instantly), an
|
|
656
656
|
Init() config reference table, an Async explanation, and a live
|
|
657
657
|
sandbox form. Open browser console for lifecycle logs.
|
|
658
658
|
</p>
|
|
@@ -668,6 +668,7 @@
|
|
|
668
668
|
<a href="#contextmenu">9 ContextMenu</a>
|
|
669
669
|
<a href="#addtheme">10 AddTheme</a>
|
|
670
670
|
<a href="#addlogo">11 AddLogo</a>
|
|
671
|
+
<a href="#overlay-false">12 NoβBackdrop Dialog</a>
|
|
671
672
|
</div>
|
|
672
673
|
</div>
|
|
673
674
|
|
|
@@ -2638,7 +2639,7 @@
|
|
|
2638
2639
|
onclick="
|
|
2639
2640
|
Fnon.Dialogue({
|
|
2640
2641
|
message: 'Click _ to minimize, βΆ to maximize',
|
|
2641
|
-
title: 'Min/Max',
|
|
2642
|
+
title: 'Min/Max '+new Date().getTime(),
|
|
2642
2643
|
showMin: true,
|
|
2643
2644
|
showMaxMin: true,
|
|
2644
2645
|
buttons: [
|
|
@@ -3628,35 +3629,7 @@
|
|
|
3628
3629
|
</p>
|
|
3629
3630
|
|
|
3630
3631
|
<div class="demo-grid">
|
|
3631
|
-
|
|
3632
|
-
<div class="card-body">
|
|
3633
|
-
<h3>Custom "Coral" theme</h3>
|
|
3634
|
-
<p class="desc">
|
|
3635
|
-
Registers a coral-themed palette for Alert, Ask, Dialogue,
|
|
3636
|
-
Breaking, and Hint.
|
|
3637
|
-
</p>
|
|
3638
|
-
<div class="card-actions">
|
|
3639
|
-
<button
|
|
3640
|
-
class="pri"
|
|
3641
|
-
onclick='Fnon.AddTheme("Coral", { titleBackground: "#ff6b6b", titleColor: "#fff", btnOkBackground: "#ff6b6b", btnOkColor: "#fff", btnOkBorderColor: "#ff6b6b", backgroundColor: "#fff5f5" }); Fnon.Hint.Success("Theme *Coral* added!");'
|
|
3642
|
-
>
|
|
3643
|
-
Add Coral Theme
|
|
3644
|
-
</button>
|
|
3645
|
-
<button
|
|
3646
|
-
class="suc"
|
|
3647
|
-
onclick='Fnon.Alert.Coral("This uses the Coral theme!", "Coral Alert")'
|
|
3648
|
-
>
|
|
3649
|
-
Alert.Coral
|
|
3650
|
-
</button>
|
|
3651
|
-
<button
|
|
3652
|
-
class="suc"
|
|
3653
|
-
onclick='Fnon.Hint.Coral("Coral hint!")'
|
|
3654
|
-
>
|
|
3655
|
-
Hint.Coral
|
|
3656
|
-
</button>
|
|
3657
|
-
</div>
|
|
3658
|
-
</div>
|
|
3659
|
-
</div>
|
|
3632
|
+
|
|
3660
3633
|
|
|
3661
3634
|
<div class="demo-card">
|
|
3662
3635
|
<div class="card-body">
|
|
@@ -3683,6 +3656,9 @@
|
|
|
3683
3656
|
>
|
|
3684
3657
|
Dialogue.Purple
|
|
3685
3658
|
</button>
|
|
3659
|
+
<button class="suc" onclick='Fnon.Hint.Purple("This is a purple hint!")'>
|
|
3660
|
+
Hint.Purple
|
|
3661
|
+
</button>
|
|
3686
3662
|
</div>
|
|
3687
3663
|
</div>
|
|
3688
3664
|
<div class="code">
|
|
@@ -3712,38 +3688,7 @@
|
|
|
3712
3688
|
</p>
|
|
3713
3689
|
|
|
3714
3690
|
<div class="demo-grid">
|
|
3715
|
-
|
|
3716
|
-
<div class="card-body">
|
|
3717
|
-
<h3>Custom "Heart" spinner</h3>
|
|
3718
|
-
<p class="desc">
|
|
3719
|
-
Registers a pulsing heart SVG as a custom spinner. Try
|
|
3720
|
-
Wait.Heart() or Box.Heart().
|
|
3721
|
-
</p>
|
|
3722
|
-
<div class="card-actions">
|
|
3723
|
-
<button
|
|
3724
|
-
class="pri"
|
|
3725
|
-
onclick='Fnon.AddLogo("Heart", '<svg viewBox="0 0 32 32" width="48" height="48" fill="#ff6b6b"><path d="M16 28c0 0-12-7.5-12-15.5S8 4 16 9c8-5 12 4.5 12 12.5S16 28 16 28z"><animate attributeName="transform" type="scale" values="1;1.15;1" dur="0.6s" repeatCount="indefinite"/></path></svg>'); Fnon.Hint.Success("Logo *Heart* added!");'
|
|
3726
|
-
>
|
|
3727
|
-
Add Heart Logo
|
|
3728
|
-
</button>
|
|
3729
|
-
<button
|
|
3730
|
-
onclick="Fnon.Wait.Heart()"
|
|
3731
|
-
>
|
|
3732
|
-
Wait.Heart()
|
|
3733
|
-
</button>
|
|
3734
|
-
<button
|
|
3735
|
-
onclick="Fnon.Wait.Remove()"
|
|
3736
|
-
>
|
|
3737
|
-
Close Wait
|
|
3738
|
-
</button>
|
|
3739
|
-
<button
|
|
3740
|
-
onclick="Fnon.Box.Heart('#box-target')"
|
|
3741
|
-
>
|
|
3742
|
-
Box.Heart('#box-target')
|
|
3743
|
-
</button>
|
|
3744
|
-
</div>
|
|
3745
|
-
</div>
|
|
3746
|
-
</div>
|
|
3691
|
+
|
|
3747
3692
|
|
|
3748
3693
|
<div class="demo-card">
|
|
3749
3694
|
<div class="card-body">
|
|
@@ -3754,25 +3699,16 @@
|
|
|
3754
3699
|
<div class="card-actions">
|
|
3755
3700
|
<button
|
|
3756
3701
|
class="pri"
|
|
3757
|
-
onclick='Fnon.AddLogo("Star",
|
|
3702
|
+
onclick='Fnon.AddLogo("Star", `<svg viewBox="0 0 32 32" width="48" height="48" fill="#fbbf24"><path d="M16 2l4.5 9.1 10 1.5-7.2 7 1.7 10L16 24.5 7 29.6l1.7-10-7.2-7 10-1.5L16 2z"><animateTransform attributeName="transform" type="rotate" from="0 16 16" to="360 16 16" dur="1.5s" repeatCount="indefinite"/></path></svg>`); Fnon.Hint.Success("Logo *Star* added!");'
|
|
3758
3703
|
>
|
|
3759
3704
|
Add Star Logo
|
|
3760
3705
|
</button>
|
|
3761
3706
|
<button
|
|
3762
|
-
onclick="Fnon.Wait.Star()"
|
|
3707
|
+
onclick="Fnon.Wait.Star('Loading...',{clickToClose: true })"
|
|
3763
3708
|
>
|
|
3764
3709
|
Wait.Star()
|
|
3765
3710
|
</button>
|
|
3766
|
-
|
|
3767
|
-
onclick="Fnon.Wait.Remove()"
|
|
3768
|
-
>
|
|
3769
|
-
Close Wait
|
|
3770
|
-
</button>
|
|
3771
|
-
<button
|
|
3772
|
-
onclick="Fnon.Box.Star('#box-target')"
|
|
3773
|
-
>
|
|
3774
|
-
Box.Star('#box-target')
|
|
3775
|
-
</button>
|
|
3711
|
+
|
|
3776
3712
|
</div>
|
|
3777
3713
|
</div>
|
|
3778
3714
|
<div class="code">
|
|
@@ -3784,6 +3720,53 @@
|
|
|
3784
3720
|
</div>
|
|
3785
3721
|
</section>
|
|
3786
3722
|
|
|
3723
|
+
<!-- ββββββββββββββββββββββββββ Overlay: false ββββββββββββββββββββββββββ -->
|
|
3724
|
+
<section id="overlay-false">
|
|
3725
|
+
<div class="section-body">
|
|
3726
|
+
<h2>
|
|
3727
|
+
<a href="#overlay-false">#</a>
|
|
3728
|
+
12. NoβBackdrop Dialog
|
|
3729
|
+
<span class="badge">overlay: false</span>
|
|
3730
|
+
</h2>
|
|
3731
|
+
<p>
|
|
3732
|
+
Set <code>overlay: false</code> on a Dialogue to hide the dark backdrop
|
|
3733
|
+
and let users interact with the page behind the modal.
|
|
3734
|
+
Clicking the modal body brings it to the front.
|
|
3735
|
+
</p>
|
|
3736
|
+
<div class="sandbox">
|
|
3737
|
+
<div class="sandbox-row">
|
|
3738
|
+
<button class="fnon-btn fnon-btn-primary"
|
|
3739
|
+
onclick="Fnon.Dialogue({
|
|
3740
|
+
title: 'Floating Dialog',
|
|
3741
|
+
message: 'I have no backdrop β click outside me to interact with the page.',
|
|
3742
|
+
overlay: false,
|
|
3743
|
+
showMaxMin: true
|
|
3744
|
+
})">
|
|
3745
|
+
Dialogue with overlay: false
|
|
3746
|
+
</button>
|
|
3747
|
+
<button class="fnon-btn fnon-btn-success"
|
|
3748
|
+
onclick="Fnon.Dialogue.Success({
|
|
3749
|
+
title: 'Stack Test',
|
|
3750
|
+
message: 'Open multiple to see stacking. Click a dialog to bring it to top.',
|
|
3751
|
+
overlay: false,
|
|
3752
|
+
showMaxMin: true,
|
|
3753
|
+
width: 'sm'
|
|
3754
|
+
})">
|
|
3755
|
+
Stackable (open 2-3x)
|
|
3756
|
+
</button>
|
|
3757
|
+
</div>
|
|
3758
|
+
<div class="code">
|
|
3759
|
+
<span class="kw">Fnon</span>.<span class="fn">Dialogue</span>({<br />
|
|
3760
|
+
title: <span class="str">"Floating Dialog"</span>,<br />
|
|
3761
|
+
message: <span class="str">"No backdrop."</span>,<br />
|
|
3762
|
+
<span class="kw">overlay</span>: <span class="bool">false</span>,<br />
|
|
3763
|
+
showMaxMin: <span class="bool">true</span><br />
|
|
3764
|
+
});
|
|
3765
|
+
</div>
|
|
3766
|
+
</div>
|
|
3767
|
+
</div>
|
|
3768
|
+
</section>
|
|
3769
|
+
|
|
3787
3770
|
<hr />
|
|
3788
3771
|
<footer>
|
|
3789
3772
|
Fnon.js v2.0.0 — Interactive Playground · MIT License
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adelalawdi/fnon2",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "Lightweight modal, toast, spinner, date picker, and context menu library. No dependencies. 42 KB minified (12 KB gzip). Works in all modern browsers.",
|
|
5
5
|
"main": "fnon.min.js",
|
|
6
6
|
"scripts": {
|