geekin-devtoys 0.3.5 → 0.3.6

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.
@@ -0,0 +1 @@
1
+ @charset "UTF-8";.g-dialog-pro-minimized-icon[data-v-e312df81]{width:78px;height:34px;padding:0 6px;border-radius:10px 18px;background:linear-gradient(90deg,rgba(106,210,255,.18) 1px,transparent 1px) 0 0/8px 8px,linear-gradient(180deg,rgba(255,255,255,.16),transparent 42%),linear-gradient(135deg,#10294c,#409eff 58%,#00d1ff);color:#f4fbff;display:flex;align-items:center;justify-content:flex-start;gap:6px;cursor:pointer;z-index:999;overflow:hidden;isolation:isolate;clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px);transition:right .3s ease,bottom .3s ease,box-shadow .18s ease,filter .18s ease}.g-dialog-pro-minimized-icon[data-v-e312df81]:before{content:"";position:absolute;inset:3px;border:1px solid rgba(163,232,255,.24);clip-path:inherit;pointer-events:none}.g-dialog-pro-minimized-icon[data-v-e312df81]:after{content:"";position:absolute;top:-32%;left:-38%;width:32px;height:62px;background:linear-gradient(90deg,transparent,rgba(180,244,255,.64),transparent);transform:rotate(18deg) translate(-16px);opacity:0;pointer-events:none}.g-dialog-pro-minimized-icon[data-v-e312df81]:hover{filter:saturate(1.2) brightness(1.08)}.g-dialog-pro-minimized-icon[data-v-e312df81]:hover:after{opacity:1;animation:g-dialog-pro-minimized-shine-e312df81 .62s ease}.g-dialog-pro-minimized-icon:hover .g-dialog-pro-minimized-icon__wave[data-v-e312df81]{opacity:1;animation:g-dialog-pro-minimized-wave-e312df81 1.45s ease-in-out infinite}.g-dialog-pro-minimized-icon:hover .g-dialog-pro-minimized-icon__icon[data-v-e312df81]{transform:scale(1.08)}.g-dialog-pro-minimized-icon[data-v-e312df81]:active{box-shadow:0 0 0 1px #ffffff14 inset,0 5px 14px #0092ff3d,0 2px 6px #0003}.g-dialog-pro-minimized-icon[data-v-e312df81]:focus-visible{outline:2px solid rgba(0,209,255,.72);outline-offset:3px}.g-dialog-pro-minimized-icon.is-attention[data-v-e312df81]{animation:g-dialog-pro-minimized-attention-e312df81 .58s ease both;filter:saturate(1.22) brightness(1.08)}.g-dialog-pro-minimized-icon.is-attention[data-v-e312df81]:after{opacity:1;animation:g-dialog-pro-minimized-shine-e312df81 .58s ease}.g-dialog-pro-minimized-icon.is-attention .g-dialog-pro-minimized-icon__wave[data-v-e312df81]{opacity:1;animation:g-dialog-pro-minimized-wave-e312df81 .58s ease-in-out}.g-dialog-pro-minimized-icon.is-attention .g-dialog-pro-minimized-icon__icon[data-v-e312df81]{animation:g-dialog-pro-minimized-icon-pop-e312df81 .58s ease both}.g-dialog-pro-minimized-icon__glow[data-v-e312df81]{position:absolute;inset:auto 8px -14px auto;width:38px;height:28px;border-radius:50%;background:#00d1ff7a;filter:blur(13px);pointer-events:none;z-index:-1}.g-dialog-pro-minimized-icon__wave[data-v-e312df81]{position:absolute;inset:-18px -24px;background:radial-gradient(ellipse at 22% 62%,rgba(173,243,255,.62) 0 9%,transparent 26%),radial-gradient(ellipse at 52% 78%,rgba(0,209,255,.58) 0 12%,transparent 30%),radial-gradient(ellipse at 82% 58%,rgba(67,170,255,.5) 0 10%,transparent 28%),linear-gradient(90deg,#147bff14,#00d1ff5c,#147bff14);background-size:72px 46px,86px 42px,70px 48px,100% 100%;background-position:-10px 16px,18px 20px,58px 14px,0 0;filter:blur(1px) saturate(1.25);opacity:0;pointer-events:none;transform:translate(-18px) translateY(6px) rotate(-2deg);transition:opacity .18s ease;z-index:-1}.g-dialog-pro-minimized-icon__icon[data-v-e312df81]{width:20px;height:20px;border:1px solid rgba(203,246,255,.32);border-radius:7px;background:linear-gradient(135deg,rgba(255,255,255,.2),transparent),#00132b2e;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:inset 0 0 10px #00d1ff3d;transition:transform .18s ease}.g-dialog-pro-minimized-icon__icon svg[data-v-e312df81]{width:13px;height:13px}.g-dialog-pro-minimized-icon__title[data-v-e312df81]{min-width:0;max-width:50px;font-size:10px;font-weight:600;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes g-dialog-pro-minimized-shine-e312df81{0%{transform:rotate(18deg) translate(-16px)}to{transform:rotate(18deg) translate(116px)}}@keyframes g-dialog-pro-minimized-wave-e312df81{0%{background-position:-18px 18px,8px 22px,54px 14px,0 0;transform:translate(-14px) translateY(7px) rotate(-3deg) scaleY(.82)}45%{background-position:18px 8px,42px 18px,88px 10px,0 0;transform:translate(0) translateY(0) rotate(1deg) scaleY(1.05)}to{background-position:58px 17px,82px 22px,126px 15px,0 0;transform:translate(14px) translateY(5px) rotate(3deg) scaleY(.9)}}@keyframes g-dialog-pro-minimized-attention-e312df81{0%,to{transform:translateY(0) scale(1)}18%{transform:translateY(-5px) scale(1.04)}36%{transform:translateY(0) scale(.98)}54%{transform:translateY(-3px) scale(1.02)}72%{transform:translateY(0) scale(1)}}@keyframes g-dialog-pro-minimized-icon-pop-e312df81{0%,to{transform:scale(1)}30%{transform:scale(1.18) rotate(-8deg)}60%{transform:scale(1.08) rotate(6deg)}}@media(prefers-reduced-motion:reduce){.g-dialog-pro-minimized-icon[data-v-e312df81]{animation:none;transition:right .3s ease,bottom .3s ease}.g-dialog-pro-minimized-icon[data-v-e312df81]:after{display:none}.g-dialog-pro-minimized-icon[data-v-e312df81]:hover,.g-dialog-pro-minimized-icon[data-v-e312df81]:active,.g-dialog-pro-minimized-icon.is-attention[data-v-e312df81]{transform:none;filter:none}.g-dialog-pro-minimized-icon__wave[data-v-e312df81]{animation:none!important;opacity:0}.g-dialog-pro-minimized-icon__icon[data-v-e312df81]{animation:none!important;transition:none}}.g-btn[data-v-25d59287]{display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1;border:1px solid var(--g-border, #dcdfe6);background-color:var(--g-bg-color, #ffffff);color:var(--g-text-regular, #606266);border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;font-family:inherit;transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease}.g-btn.is-disabled[data-v-25d59287],.g-btn.is-loading[data-v-25d59287]{cursor:not-allowed;opacity:.5}.g-btn.g-btn--size-small[data-v-25d59287]{height:24px;padding:0 11px;font-size:12px;border-radius:4px}.g-btn.g-btn--size-default[data-v-25d59287]{height:32px;padding:0 15px;font-size:14px}.g-btn.g-btn--size-large[data-v-25d59287]{height:40px;padding:0 19px;font-size:14px}.g-btn__icon[data-v-25d59287]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .28s cubic-bezier(.34,1.56,.64,1),color .2s ease;will-change:transform}.g-btn__icon svg[data-v-25d59287]{width:1em;height:1em;display:block}.g-btn__loading svg[data-v-25d59287]{animation:g-btn-rotating-25d59287 .6s linear infinite}.g-btn:hover:not(.is-disabled):not(.is-loading) .g-btn__icon[data-v-25d59287]{transform:scale(1.18) rotate(-8deg)}.g-btn:active:not(.is-disabled):not(.is-loading) .g-btn__icon[data-v-25d59287]{transform:scale(1.06) rotate(-4deg);transition-duration:.12s}.g-btn[data-v-25d59287]:focus-visible{box-shadow:0 0 0 2px var(--g-bg-color, #ffffff),0 0 0 4px var(--g-primary-light-5, #a0cfff)}.g-btn.g-btn--default[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){color:var(--g-primary, #409eff);border-color:var(--g-primary-light-5, #a0cfff);background-color:var(--g-primary-light-9, #ecf5ff)}.g-btn.g-btn--default[data-v-25d59287]:active:not(.is-disabled):not(.is-loading){color:var(--g-primary-dark-2, #337ecc);border-color:var(--g-primary, #409eff)}.g-btn.g-btn--default.is-plain[data-v-25d59287]{background-color:var(--g-primary-light-9, #ecf5ff);color:var(--g-primary, #409eff);border-color:var(--g-primary-light-5, #a0cfff)}.g-btn.g-btn--default.is-plain[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-primary, #409eff);color:#fff;border-color:var(--g-primary, #409eff)}.g-btn.g-btn--primary[data-v-25d59287]{background-color:var(--g-primary, #409eff);border-color:var(--g-primary, #409eff);color:#fff}.g-btn.g-btn--primary:hover:not(.is-disabled):not(.is-loading) .g-btn__icon[data-v-25d59287]{transform:scale(1.18) rotate(8deg)}.g-btn.g-btn--primary:active:not(.is-disabled):not(.is-loading) .g-btn__icon[data-v-25d59287]{transform:scale(1.06) rotate(4deg);transition-duration:.12s}.g-btn.g-btn--primary[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-primary-light-3, #79bbff);border-color:var(--g-primary-light-3, #79bbff)}.g-btn.g-btn--primary[data-v-25d59287]:active:not(.is-disabled):not(.is-loading){background-color:var(--g-primary-dark-2, #337ecc);border-color:var(--g-primary-dark-2, #337ecc)}.g-btn.g-btn--primary.is-plain[data-v-25d59287]{background-color:var(--g-primary-light-9, #ecf5ff);color:var(--g-primary, #409eff);border-color:var(--g-primary-light-5, #a0cfff)}.g-btn.g-btn--primary.is-plain[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-primary, #409eff);color:#fff;border-color:var(--g-primary, #409eff)}.g-btn.g-btn--success[data-v-25d59287]{background-color:var(--g-success, #67c23a);border-color:var(--g-success, #67c23a);color:#fff}.g-btn.g-btn--success[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-success-light-3, #95d475);border-color:var(--g-success-light-3, #95d475)}.g-btn.g-btn--success.is-plain[data-v-25d59287]{background-color:var(--g-success-light-9, #f0f9eb);color:var(--g-success, #67c23a);border-color:var(--g-success-light-3, #95d475)}.g-btn.g-btn--success.is-plain[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-success, #67c23a);color:#fff;border-color:var(--g-success, #67c23a)}.g-btn.g-btn--warning[data-v-25d59287]{background-color:var(--g-warning, #e6a23c);border-color:var(--g-warning, #e6a23c);color:#fff}.g-btn.g-btn--warning[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-warning-light-3, #ebb563);border-color:var(--g-warning-light-3, #ebb563)}.g-btn.g-btn--warning.is-plain[data-v-25d59287]{background-color:var(--g-warning-light-9, #fdf6ec);color:var(--g-warning, #e6a23c);border-color:var(--g-warning-light-3, #ebb563)}.g-btn.g-btn--warning.is-plain[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-warning, #e6a23c);color:#fff;border-color:var(--g-warning, #e6a23c)}.g-btn.g-btn--danger[data-v-25d59287]{background-color:var(--g-danger, #f56c6c);border-color:var(--g-danger, #f56c6c);color:#fff}.g-btn.g-btn--danger[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-danger-light-3, #f89898);border-color:var(--g-danger-light-3, #f89898)}.g-btn.g-btn--danger.is-plain[data-v-25d59287]{background-color:var(--g-danger-light-9, #fef0f0);color:var(--g-danger, #f56c6c);border-color:var(--g-danger-light-3, #f89898)}.g-btn.g-btn--danger.is-plain[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-danger, #f56c6c);color:#fff;border-color:var(--g-danger, #f56c6c)}.g-btn.g-btn--info[data-v-25d59287]{background-color:var(--g-info, #909399);border-color:var(--g-info, #909399);color:#fff}.g-btn.g-btn--info[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-info-light-3, #b1b3b8);border-color:var(--g-info-light-3, #b1b3b8)}.g-btn.g-btn--info.is-plain[data-v-25d59287]{background-color:var(--g-info-light-9, #f4f4f5);color:var(--g-info, #909399);border-color:var(--g-info-light-3, #b1b3b8)}.g-btn.g-btn--info.is-plain[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-info, #909399);color:#fff;border-color:var(--g-info, #909399)}.g-btn.g-btn--text[data-v-25d59287]{background-color:transparent;border-color:transparent;color:var(--g-primary, #409eff);padding:0 8px}.g-btn.g-btn--text[data-v-25d59287]:hover:not(.is-disabled):not(.is-loading){background-color:var(--g-primary-light-9, #ecf5ff);border-color:transparent}@keyframes g-btn-rotating-25d59287{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.g-btn__icon[data-v-25d59287],.g-btn__loading svg[data-v-25d59287]{transition:none!important;animation:none!important}.g-btn:hover:not(.is-disabled):not(.is-loading) .g-btn__icon[data-v-25d59287],.g-btn:active:not(.is-disabled):not(.is-loading) .g-btn__icon[data-v-25d59287]{transform:none}}.g-dialog-pro-header[data-v-cac8c7e5]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;background:linear-gradient(180deg,var(--g-dialog-header-bg, rgba(248, 250, 252, .85)),transparent);position:relative}.g-dialog-pro-header .g-dialog-pro-title[data-v-cac8c7e5]{position:relative;max-width:calc(100% - 88px);margin:0;overflow:hidden;color:var(--g-text-primary, #303133);font-size:15px;font-weight:600;line-height:1.4;letter-spacing:.01em;text-overflow:ellipsis;white-space:nowrap}.g-dialog-pro-header .g-dialog-pro-operation-container[data-v-cac8c7e5]{display:flex;flex-direction:row;align-items:center;gap:8px;padding:0}.g-dialog-pro-control[data-v-cac8c7e5]{width:12px;height:12px;padding:0;border:0;border-radius:50%;cursor:pointer;flex-shrink:0;position:relative;box-shadow:inset 0 1px 1px #ffffffb3,inset 0 -1px 1px #0000001f,0 0 0 1px #00000014,0 1px 2px #0000000f;transition:transform .18s cubic-bezier(.34,1.56,.64,1),filter .18s ease,box-shadow .18s ease}.g-dialog-pro-control[data-v-cac8c7e5]:after{content:"";position:absolute;top:2px;left:2.5px;width:4px;height:4px;border-radius:50%;background:#ffffff8c;filter:blur(.5px);pointer-events:none}.g-dialog-pro-control[data-v-cac8c7e5]:hover{filter:brightness(1.06) saturate(1.1);transform:scale(1.12);box-shadow:inset 0 1px 1px #ffffffbf,inset 0 -1px 1px #0000001f,0 0 0 1px #0000001a,0 2px 4px #0000001f}.g-dialog-pro-control[data-v-cac8c7e5]:active{transform:scale(.92);filter:brightness(.96)}.g-dialog-pro-control[data-v-cac8c7e5]:focus-visible{outline:2px solid rgba(68,68,68,.32);outline-offset:3px}.g-dialog-pro-control--close[data-v-cac8c7e5]{background:linear-gradient(180deg,#ff8077,#ff5f57)}.g-dialog-pro-control--fullscreen[data-v-cac8c7e5]{background:linear-gradient(180deg,#ffd066,#ffbd2e)}.g-dialog-pro-control--minimize[data-v-cac8c7e5]{background:linear-gradient(180deg,#4be068,#28c840)}.g-dialog-pro-body[data-v-cac8c7e5]{padding:0 20px;color:var(--g-text-regular, #606266);font-size:13px;line-height:1.6;max-height:calc(85vh - 132px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--g-dialog-scrollbar, rgba(15, 23, 42, .18)) transparent}.g-dialog-pro-body[data-v-cac8c7e5]::-webkit-scrollbar{width:6px;height:6px}.g-dialog-pro-body[data-v-cac8c7e5]::-webkit-scrollbar-thumb{background-color:var(--g-dialog-scrollbar, rgba(15, 23, 42, .18));border-radius:3px}.g-dialog-pro-body[data-v-cac8c7e5]::-webkit-scrollbar-thumb:hover{background-color:var(--g-dialog-scrollbar-hover, rgba(15, 23, 42, .28))}.g-dialog-pro-body[data-v-cac8c7e5]::-webkit-scrollbar-track{background:transparent}.g-dialog-pro-footer[data-v-cac8c7e5]{padding:12px 20px;background:linear-gradient(0deg,var(--g-dialog-footer-bg, rgba(248, 250, 252, .7)),transparent);position:relative}.g-dialog-pro-actions[data-v-cac8c7e5]{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;gap:8px;padding:2px 0}@media(prefers-reduced-motion:reduce){.g-dialog-pro-control[data-v-cac8c7e5]{transition:none}}.g-dialog-pro-overlay{--g-primary: #409eff;--g-primary-light-3: #79bbff;--g-primary-light-5: #a0cfff;--g-primary-light-7: #c6e2ff;--g-primary-light-8: #d9ecff;--g-primary-light-9: #ecf5ff;--g-primary-dark-2: #337ecc;--g-success: #67c23a;--g-success-light-3: #95d475;--g-success-light-9: #f0f9eb;--g-warning: #e6a23c;--g-warning-light-3: #ebb563;--g-warning-light-9: #fdf6ec;--g-danger: #f56c6c;--g-danger-light-3: #f89898;--g-danger-light-9: #fef0f0;--g-info: #909399;--g-info-light-3: #b1b3b8;--g-info-light-9: #f4f4f5;--g-text-primary: #303133;--g-text-regular: #606266;--g-text-secondary: #909399;--g-border: #dcdfe6;--g-border-light: #e4e7ed;--g-border-lighter: #ebeef5;--g-bg-color: #ffffff;position:fixed;inset:0;z-index:2000;overflow:auto;background:var(--g-dialog-overlay-bg, rgba(15, 23, 42, .32));backdrop-filter:blur(4px) saturate(1.05);-webkit-backdrop-filter:blur(4px) saturate(1.05)}.g-dialog-pro{position:relative;margin:15vh auto 50px;width:50%;border-radius:14px;overflow:hidden;background:linear-gradient(180deg,var(--g-dialog-sheen, rgba(255, 255, 255, .6)),transparent) top/100% 64px no-repeat,var(--g-bg-color);box-shadow:0 1px 0 var(--g-dialog-inner-highlight, rgba(255, 255, 255, .6)) inset,0 0 0 1px var(--g-border-lighter, #ebeef5),0 24px 60px -12px var(--g-dialog-shadow-strong, rgba(15, 23, 42, .22)),0 8px 20px -8px var(--g-dialog-shadow-soft, rgba(15, 23, 42, .14))}.g-dialog-pro.is-fullscreen{margin:0;width:100%!important;height:100vh;border-radius:0;box-shadow:none;display:flex;flex-direction:column}.g-dialog-pro.is-fullscreen .g-dialog-pro-body{flex:1 1 auto;max-height:none;min-height:0;display:flex;flex-direction:column}.g-dialog-pro.is-fullscreen .g-dialog-pro-body>*{flex:1 1 auto;min-height:0}.g-dialog-pro-fade-enter-active{animation:g-dialog-pro-overlay-in .22s ease both}.g-dialog-pro-fade-leave-active{animation:g-dialog-pro-overlay-out .22s ease both}@keyframes g-dialog-pro-overlay-in{0%{background:#0f172a00;backdrop-filter:blur(0) saturate(1);-webkit-backdrop-filter:blur(0) saturate(1)}to{background:var(--g-dialog-overlay-bg, rgba(15, 23, 42, .32));backdrop-filter:blur(4px) saturate(1.05);-webkit-backdrop-filter:blur(4px) saturate(1.05)}}@keyframes g-dialog-pro-overlay-out{0%{background:var(--g-dialog-overlay-bg, rgba(15, 23, 42, .32));backdrop-filter:blur(4px) saturate(1.05);-webkit-backdrop-filter:blur(4px) saturate(1.05)}to{background:#0f172a00;backdrop-filter:blur(0) saturate(1);-webkit-backdrop-filter:blur(0) saturate(1)}}.g-dialog-pro-fade-enter-active .g-dialog-pro,.g-dialog-pro-fade-leave-active .g-dialog-pro{transition:transform .26s cubic-bezier(.34,1.2,.64,1),opacity .22s ease}.g-dialog-pro-fade-enter-from .g-dialog-pro,.g-dialog-pro-fade-leave-to .g-dialog-pro{transform:translateY(-12px) scale(.96);opacity:0}.g-dialog-pro-fade-leave-to .g-dialog-pro.is-leave-to-minimize,.g-dialog-pro-fade-enter-from .g-dialog-pro.is-enter-from-minimize{transform:translateY(40px) scale(.85);opacity:0}html.dark .g-dialog-pro-overlay{--g-primary: #409eff;--g-primary-light-3: #3375b9;--g-primary-light-5: #2a598a;--g-primary-light-7: #213d5b;--g-primary-light-8: #1d3043;--g-primary-light-9: #18222c;--g-primary-dark-2: #66b1ff;--g-success: #67c23a;--g-success-light-3: #4e8e2f;--g-success-light-9: #1a331a;--g-warning: #e6a23c;--g-warning-light-3: #b88230;--g-warning-light-9: #332e1a;--g-danger: #f56c6c;--g-danger-light-3: #b25252;--g-danger-light-9: #332020;--g-info: #909399;--g-info-light-3: #6b6d71;--g-info-light-9: #232324;--g-text-primary: #e5eaf3;--g-text-regular: #cfd3dc;--g-text-secondary: #a3a6ad;--g-border: #4c4d4f;--g-border-light: #414243;--g-border-lighter: #363637;--g-bg-color: #141414;--g-dialog-overlay-bg: rgba(0, 0, 0, .55)}html.dark .g-dialog-pro{--g-dialog-sheen: rgba(255, 255, 255, .04);--g-dialog-inner-highlight: rgba(255, 255, 255, .06);--g-dialog-shadow-strong: rgba(0, 0, 0, .55);--g-dialog-shadow-soft: rgba(0, 0, 0, .4);--g-dialog-header-bg: rgba(255, 255, 255, .04);--g-dialog-footer-bg: rgba(255, 255, 255, .04);--g-dialog-scrollbar: rgba(255, 255, 255, .18);--g-dialog-scrollbar-hover: rgba(255, 255, 255, .28)}html.dark .g-dialog-pro .g-dialog-pro-control{box-shadow:inset 0 1px 1px #ffffff59,inset 0 -1px 1px #00000047,0 0 0 1px #ffffff14,0 1px 2px #00000073}html.dark .g-dialog-pro .g-dialog-pro-control:hover{box-shadow:inset 0 1px 1px #fff6,inset 0 -1px 1px #00000047,0 0 0 1px #ffffff1f,0 2px 6px #00000080}html.dark .g-dialog-pro .g-dialog-pro-control:focus-visible{outline-color:#ffffff73}@media(prefers-reduced-motion:reduce){.g-dialog-pro-fade-enter-active,.g-dialog-pro-fade-leave-active{animation:none}.g-dialog-pro-fade-enter-active .g-dialog-pro,.g-dialog-pro-fade-leave-active .g-dialog-pro{transition:opacity .18s ease;transform:none}.g-dialog-pro-fade-leave-to .g-dialog-pro.is-leave-to-minimize,.g-dialog-pro-fade-enter-from .g-dialog-pro.is-enter-from-minimize{transform:none}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),Q=require("../AnimatePresence-26Wy0TGN.js"),ee=require("../index-B8Ap0044.js"),D=require("../_plugin-vue_export-helper-BHFhmbuH.js"),R=Symbol("GDialogProManager"),I={small:"380px",medium:"480px",large:"580px"},M={ICON_WIDTH:92,ICON_HEIGHT:34,GAP:8,BOTTOM_OFFSET:18,RIGHT_OFFSET:18,MAX_PER_ROW:8};function te(r){const d=new Map,{ICON_WIDTH:a,ICON_HEIGHT:s,GAP:u,BOTTOM_OFFSET:t,RIGHT_OFFSET:n,MAX_PER_ROW:c}=M;return r.forEach((m,f)=>{const i=Math.floor(f/c),l=f%c;d.set(m,{right:n+l*(a+u),bottom:t+i*(s+u)})}),d}function oe(){const r=e.reactive(new Map),d=e.computed(()=>{const i=[];return r.forEach(l=>{l.isMinimized&&i.push(l.id)}),i}),a=e.computed(()=>te(d.value));function s(i){r.set(i.id,{attentionTick:0,...i})}function u(i){r.delete(i)}function t(i){const l=r.get(i);if(l){if(l.isMinimized){l.attentionTick=(l.attentionTick??0)+1;return}l.isMinimized=!0}}function n(i){const l=r.get(i);l?.isMinimized&&(l.attentionTick=(l.attentionTick??0)+1)}function c(i){const l=r.get(i);l&&(l.isMinimized=!1)}function m(i){return e.computed(()=>a.value.get(i)??{right:M.RIGHT_OFFSET,bottom:M.BOTTOM_OFFSET})}const f=e.computed(()=>d.value.map(i=>r.get(i)).filter(Boolean));return{dialogs:r,register:s,unregister:u,minimize:t,remindMinimized:n,restore:c,getPosition:m,minimizedList:f}}function F(){return e.inject(R,null)}const V={viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},L=()=>e.h("svg",V,[e.h("path",{d:"M3.5 8h9",stroke:"currentColor","stroke-width":1.6,"stroke-linecap":"round"})]),x=()=>e.h("svg",V,[e.h("path",{d:"M13.5 8a5.5 5.5 0 1 1-1.6-3.9",stroke:"currentColor","stroke-width":1.6,"stroke-linecap":"round"}),e.h("path",{d:"M13.5 2v3.5H10",stroke:"currentColor","stroke-width":1.6,"stroke-linecap":"round","stroke-linejoin":"round"})]),H=()=>e.h("svg",V,[e.h("circle",{cx:8,cy:8,r:6,stroke:"currentColor","stroke-width":1.6}),e.h("path",{d:"M5.3 8.2l1.9 1.9 3.5-4",stroke:"currentColor","stroke-width":1.6,"stroke-linecap":"round","stroke-linejoin":"round"})]),j=()=>e.h("svg",V,[e.h("path",{d:"M2.5 4.5a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v4.5a2 2 0 0 1-2 2H7.2L4.8 13.6V11a2 2 0 0 1-2-2V4.5z",stroke:"currentColor","stroke-width":1.4,"stroke-linejoin":"round"}),e.h("circle",{cx:5.8,cy:6.7,r:.7,fill:"currentColor"}),e.h("circle",{cx:8,cy:6.7,r:.7,fill:"currentColor"}),e.h("circle",{cx:10.2,cy:6.7,r:.7,fill:"currentColor"})]),ne={class:"g-dialog-pro-minimized-icon__icon","aria-hidden":"true"},ie={class:"g-dialog-pro-minimized-icon__title"},le=e.defineComponent({name:"GDialogMinimizedIcon",__name:"GDialogMinimizedIcon",props:{title:{},position:{},attentionTick:{default:0}},emits:["restore"],setup(r,{emit:d}){const a=r,s=d,u=e.computed(()=>a.title||"弹窗"),t=e.computed(()=>`恢复 ${u.value}`),n={opacity:0,scale:.8,x:-24,y:12},c={opacity:1,scale:1,x:0,y:0},m={opacity:0,scale:.8,x:-24,y:12},f={duration:.28,ease:[.2,.8,.2,1]},i={scale:1.04,y:-2},l={scale:.98},y=e.computed(()=>({position:"fixed",right:`${a.position.right}px`,bottom:`${a.position.bottom}px`})),v=e.ref(!1);let _;e.watch(()=>a.attentionTick,(B,p)=>{p===void 0||B===p||(v.value=!1,window.clearTimeout(_),window.requestAnimationFrame(()=>{v.value=!0,_=window.setTimeout(()=>{v.value=!1},580)}))}),e.onUnmounted(()=>{window.clearTimeout(_)});function z(){s("restore")}return(B,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.unref(ee.motion).div,{class:e.normalizeClass(["g-dialog-pro-minimized-icon",{"is-attention":v.value}]),type:"button",style:e.normalizeStyle(y.value),title:t.value,"aria-label":t.value,initial:n,animate:c,exit:m,transition:f,"while-hover":i,"while-press":l,onClick:z},{default:e.withCtx(()=>[p[0]||(p[0]=e.createElementVNode("span",{class:"g-dialog-pro-minimized-icon__glow","aria-hidden":"true"},null,-1)),p[1]||(p[1]=e.createElementVNode("span",{class:"g-dialog-pro-minimized-icon__wave","aria-hidden":"true"},null,-1)),e.createElementVNode("span",ne,[e.createVNode(e.unref(j))]),e.createElementVNode("span",ie,e.toDisplayString(u.value),1)]),_:1,__:[0,1]},8,["class","style","title","aria-label"])]))}}),E=D._export_sfc(le,[["__scopeId","data-v-e312df81"]]),ae=["disabled"],re={key:0,class:"g-btn__icon g-btn__loading","aria-hidden":"true"},se={key:1,class:"g-btn__icon","aria-hidden":"true"},ce={key:2,class:"g-btn__text"},de=e.defineComponent({name:"GButton",__name:"GButton",props:{type:{default:"default"},icon:{},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},plain:{type:Boolean,default:!1},size:{default:"default"}},emits:["click"],setup(r,{emit:d}){const a=r,s=d;function u(t){a.disabled||a.loading||s("click",t)}return(t,n)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:e.normalizeClass(["g-btn",[`g-btn--${t.type}`,`g-btn--size-${t.size}`,{"is-plain":t.plain,"is-disabled":t.disabled,"is-loading":t.loading}]]),disabled:t.disabled||t.loading,onClick:u},[t.loading?(e.openBlock(),e.createElementBlock("span",re,n[0]||(n[0]=[e.createElementVNode("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor","stroke-width":"1.6","stroke-opacity":"0.25"}),e.createElementVNode("path",{d:"M14 8a6 6 0 0 0-6-6",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)]))):t.icon?(e.openBlock(),e.createElementBlock("span",se,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))])):e.createCommentVNode("",!0),t.$slots.default?(e.openBlock(),e.createElementBlock("span",ce,[e.renderSlot(t.$slots,"default",{},void 0,!0)])):e.createCommentVNode("",!0)],10,ae))}}),h=D._export_sfc(de,[["__scopeId","data-v-25d59287"]]),ue={class:"g-dialog-pro-header"},me={class:"g-dialog-pro-title"},fe={class:"g-dialog-pro-operation-container","aria-label":"弹窗操作"},pe=["aria-label","title"],ge={class:"g-dialog-pro-body"},ve={key:0,class:"g-dialog-pro-footer"},ke={class:"g-dialog-pro-actions"},P="关闭",he=e.defineComponent({name:"GDialogPro",inheritAttrs:!1,__name:"index",props:{title:{default:""},size:{default:"medium"},modelValue:{type:Boolean},hideFooter:{type:Boolean,default:!1},actions:{},showCancel:{type:Boolean,default:!0},showReset:{type:Boolean,default:!0},showSave:{type:Boolean,default:!0},cancelText:{default:"取消"},resetText:{default:"重置"},saveText:{default:"保存"},saveLoading:{type:Boolean,default:!1},saveDisabled:{type:Boolean,default:!1},beforeClose:{}},emits:["cancel","reset","save","minimize","action","update:modelValue"],setup(r,{emit:d}){const a=r,s=d,u=e.computed(()=>a.modelValue),t=e.useId?e.useId():`g-dialog-pro-${Date.now()}-${Math.random().toString(36).slice(2)}`,n=F(),c=e.ref(!1),m=e.ref(!0),f=e.ref(0),i=e.ref(!1),l=e.ref(!1),y=e.ref(!1),v=e.computed(()=>n?n.dialogs.get(t)?.isMinimized??!1:c.value),_=e.computed(()=>n?n.dialogs.get(t)?.attentionTick??0:f.value),z=e.computed(()=>n?!l.value:m.value),B=e.computed(()=>n?n.getPosition(t).value:{right:20,bottom:20});e.onMounted(()=>{n?.register({id:t,title:a.title,isMinimized:!1}),document.addEventListener("keydown",S)}),e.onUnmounted(()=>{n?.unregister(t),document.removeEventListener("keydown",S)}),e.watch(()=>a.title,o=>{if(n){const k=n.dialogs.get(t);k&&(k.title=o)}}),e.watch(()=>a.modelValue,o=>{if(o===!1){if(i.value)return;n?(n.restore(t),l.value=!1):(m.value=!0,c.value=!1)}o===!0&&(n?.dialogs.get(t)?.isMinimized?n.remindMinimized(t):c.value&&(f.value+=1))});const p=e.computed(()=>Object.prototype.hasOwnProperty.call(I,a.size)?I[a.size]:a.size),W=e.computed(()=>w.value?{}:{width:p.value});async function C(o){if(!a.beforeClose)return!0;try{return await a.beforeClose(o)!==!1}catch{return!1}}async function T(){await C("close")&&s("update:modelValue",!1)}function q(){T()}function S(o){o.key==="Escape"&&(!a.modelValue||!z.value||v.value||(o.stopPropagation(),T()))}async function O(){await C("cancel")&&s("cancel")}function G(){s("reset")}async function A(){await C("save")&&s("save")}const N=e.reactive({});async function U(o){if(await C("action")&&(s("action",o.key),!!o.onClick))try{const k=o.onClick();k instanceof Promise&&(N[o.key]=!0,await k)}finally{N[o.key]=!1}}const w=e.ref(!1),Y=()=>{w.value=!w.value},$=e.computed(()=>w.value?"退出全屏":"全屏"),Z=async()=>{if(!await C("minimize"))return;if(n?n.dialogs.get(t)?.isMinimized??!1:c.value){n?n.minimize(t):f.value+=1,s("minimize",{id:t});return}i.value=!0,n?n.minimize(t):c.value=!0,s("update:modelValue",!1),s("minimize",{id:t})},K=()=>{y.value=!0,i.value=!1,n?(l.value=!1,n.restore(t)):(m.value=!0,c.value=!1),s("update:modelValue",!0)},X=()=>{i.value&&(n?l.value=!0:m.value=!1,i.value=!1)},J=()=>{y.value=!1};return(o,k)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"g-dialog-pro-fade",onAfterEnter:J,onAfterLeave:X},{default:e.withCtx(()=>[z.value&&u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"g-dialog-pro-overlay",onClick:e.withModifiers(q,["self"])},[e.createElementVNode("div",e.mergeProps(o.$attrs,{class:["g-dialog-pro",{"is-fullscreen":w.value,"is-leave-to-minimize":i.value,"is-enter-from-minimize":y.value}],style:W.value,role:"dialog","aria-modal":"true"}),[e.createElementVNode("header",ue,[e.createElementVNode("p",me,e.toDisplayString(o.title),1),e.createElementVNode("div",fe,[e.createElementVNode("button",{type:"button",class:"g-dialog-pro-control g-dialog-pro-control--minimize","aria-label":"最小化",title:"最小化",onClick:Z}),e.createElementVNode("button",{type:"button",class:"g-dialog-pro-control g-dialog-pro-control--fullscreen","aria-label":$.value,title:$.value,onClick:Y},null,8,pe),e.createElementVNode("button",{type:"button",class:"g-dialog-pro-control g-dialog-pro-control--close","aria-label":P,title:P,onClick:T})])]),e.createElementVNode("div",ge,[e.renderSlot(o.$slots,"default",{},void 0,!0)]),o.hideFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("footer",ve,[e.renderSlot(o.$slots,"footer",{cancel:O,reset:G,save:A,close:T,loading:o.saveLoading},()=>[e.createElementVNode("div",ke,[o.actions&&o.actions.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(o.actions,g=>(e.openBlock(),e.createBlock(h,{key:g.key,type:g.type,icon:g.icon,loading:g.loading||N[g.key],disabled:g.disabled,plain:g.plain,size:"small",onClick:ye=>U(g)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(g.label),1)]),_:2},1032,["type","icon","loading","disabled","plain","onClick"]))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[o.showCancel?(e.openBlock(),e.createBlock(h,{key:0,icon:e.unref(L),size:"small",onClick:O},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.cancelText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),o.showReset?(e.openBlock(),e.createBlock(h,{key:1,icon:e.unref(x),size:"small",onClick:G},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.resetText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),o.showSave?(e.openBlock(),e.createBlock(h,{key:2,type:"primary",icon:e.unref(H),loading:o.saveLoading,disabled:o.saveDisabled,size:"small",onClick:A},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.saveText),1)]),_:1},8,["icon","loading","disabled"])):e.createCommentVNode("",!0)],64)),e.renderSlot(o.$slots,"moreOperations",{},void 0,!0)])],!0)]))],16)])):e.createCommentVNode("",!0)]),_:3}),e.createVNode(e.unref(Q.AnimatePresence_default),null,{default:e.withCtx(()=>[v.value?(e.openBlock(),e.createBlock(E,{key:0,title:o.title,position:B.value,"attention-tick":_.value,onRestore:K},null,8,["title","position","attention-tick"])):e.createCommentVNode("",!0)]),_:1})]))}}),b=D._export_sfc(he,[["__scopeId","data-v-cac8c7e5"]]);b.install=r=>{r.component(b.name,b),r.component(E.name,E),r.component(h.name,h)};exports.ChatDotRound=j;exports.CircleCheck=H;exports.DIALOG_MANAGER_KEY=R;exports.DIALOG_SIZES=I;exports.GButton=h;exports.GDialogMinimizedIcon=E;exports.GDialogPro=b;exports.MINIMIZED_LAYOUT=M;exports.Refresh=x;exports.Remove=L;exports.createDialogManager=oe;exports.default=b;exports.useDialogManager=F;
@@ -0,0 +1,529 @@
1
+ import { inject as pe, reactive as ie, computed as d, h as f, defineComponent as x, ref as k, watch as N, onUnmounted as oe, createBlock as _, openBlock as r, Teleport as ne, createVNode as R, unref as I, normalizeStyle as ge, normalizeClass as ae, withCtx as T, createElementVNode as c, toDisplayString as M, createElementBlock as b, createCommentVNode as w, resolveDynamicComponent as ve, renderSlot as P, useId as J, onMounted as ye, Transition as he, withModifiers as ke, mergeProps as _e, Fragment as Q, renderList as we, createTextVNode as F } from "vue";
2
+ import { A as be } from "../AnimatePresence-nl0c23TZ.mjs";
3
+ import { m as ze } from "../index-Bbr5fWvI.mjs";
4
+ import { _ as K } from "../_plugin-vue_export-helper-CHgC5LLL.mjs";
5
+ const Ce = /* @__PURE__ */ Symbol("GDialogProManager"), ee = {
6
+ small: "380px",
7
+ medium: "480px",
8
+ large: "580px"
9
+ }, W = {
10
+ ICON_WIDTH: 92,
11
+ ICON_HEIGHT: 34,
12
+ GAP: 8,
13
+ BOTTOM_OFFSET: 18,
14
+ RIGHT_OFFSET: 18,
15
+ MAX_PER_ROW: 8
16
+ };
17
+ function Te(l) {
18
+ const m = /* @__PURE__ */ new Map(), { ICON_WIDTH: a, ICON_HEIGHT: s, GAP: p, BOTTOM_OFFSET: e, RIGHT_OFFSET: i, MAX_PER_ROW: u } = W;
19
+ return l.forEach((g, v) => {
20
+ const o = Math.floor(v / u), n = v % u;
21
+ m.set(g, {
22
+ right: i + n * (a + p),
23
+ bottom: e + o * (s + p)
24
+ });
25
+ }), m;
26
+ }
27
+ function Je() {
28
+ const l = ie(/* @__PURE__ */ new Map()), m = d(() => {
29
+ const o = [];
30
+ return l.forEach((n) => {
31
+ n.isMinimized && o.push(n.id);
32
+ }), o;
33
+ }), a = d(() => Te(m.value));
34
+ function s(o) {
35
+ l.set(o.id, { attentionTick: 0, ...o });
36
+ }
37
+ function p(o) {
38
+ l.delete(o);
39
+ }
40
+ function e(o) {
41
+ const n = l.get(o);
42
+ if (n) {
43
+ if (n.isMinimized) {
44
+ n.attentionTick = (n.attentionTick ?? 0) + 1;
45
+ return;
46
+ }
47
+ n.isMinimized = !0;
48
+ }
49
+ }
50
+ function i(o) {
51
+ const n = l.get(o);
52
+ n?.isMinimized && (n.attentionTick = (n.attentionTick ?? 0) + 1);
53
+ }
54
+ function u(o) {
55
+ const n = l.get(o);
56
+ n && (n.isMinimized = !1);
57
+ }
58
+ function g(o) {
59
+ return d(
60
+ () => a.value.get(o) ?? {
61
+ right: W.RIGHT_OFFSET,
62
+ bottom: W.BOTTOM_OFFSET
63
+ }
64
+ );
65
+ }
66
+ const v = d(() => m.value.map((o) => l.get(o)).filter(Boolean));
67
+ return {
68
+ dialogs: l,
69
+ register: s,
70
+ unregister: p,
71
+ minimize: e,
72
+ remindMinimized: i,
73
+ restore: u,
74
+ getPosition: g,
75
+ minimizedList: v
76
+ };
77
+ }
78
+ function Me() {
79
+ return pe(Ce, null);
80
+ }
81
+ const L = {
82
+ viewBox: "0 0 16 16",
83
+ fill: "none",
84
+ xmlns: "http://www.w3.org/2000/svg",
85
+ "aria-hidden": "true"
86
+ }, Ie = () => f("svg", L, [
87
+ f("path", {
88
+ d: "M3.5 8h9",
89
+ stroke: "currentColor",
90
+ "stroke-width": 1.6,
91
+ "stroke-linecap": "round"
92
+ })
93
+ ]), Oe = () => f("svg", L, [
94
+ f("path", {
95
+ d: "M13.5 8a5.5 5.5 0 1 1-1.6-3.9",
96
+ stroke: "currentColor",
97
+ "stroke-width": 1.6,
98
+ "stroke-linecap": "round"
99
+ }),
100
+ f("path", {
101
+ d: "M13.5 2v3.5H10",
102
+ stroke: "currentColor",
103
+ "stroke-width": 1.6,
104
+ "stroke-linecap": "round",
105
+ "stroke-linejoin": "round"
106
+ })
107
+ ]), Be = () => f("svg", L, [
108
+ f("circle", {
109
+ cx: 8,
110
+ cy: 8,
111
+ r: 6,
112
+ stroke: "currentColor",
113
+ "stroke-width": 1.6
114
+ }),
115
+ f("path", {
116
+ d: "M5.3 8.2l1.9 1.9 3.5-4",
117
+ stroke: "currentColor",
118
+ "stroke-width": 1.6,
119
+ "stroke-linecap": "round",
120
+ "stroke-linejoin": "round"
121
+ })
122
+ ]), Ee = () => f("svg", L, [
123
+ f("path", {
124
+ d: "M2.5 4.5a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v4.5a2 2 0 0 1-2 2H7.2L4.8 13.6V11a2 2 0 0 1-2-2V4.5z",
125
+ stroke: "currentColor",
126
+ "stroke-width": 1.4,
127
+ "stroke-linejoin": "round"
128
+ }),
129
+ f("circle", { cx: 5.8, cy: 6.7, r: 0.7, fill: "currentColor" }),
130
+ f("circle", { cx: 8, cy: 6.7, r: 0.7, fill: "currentColor" }),
131
+ f("circle", { cx: 10.2, cy: 6.7, r: 0.7, fill: "currentColor" })
132
+ ]), $e = {
133
+ class: "g-dialog-pro-minimized-icon__icon",
134
+ "aria-hidden": "true"
135
+ }, De = { class: "g-dialog-pro-minimized-icon__title" }, Se = /* @__PURE__ */ x({
136
+ name: "GDialogMinimizedIcon",
137
+ __name: "GDialogMinimizedIcon",
138
+ props: {
139
+ title: {},
140
+ position: {},
141
+ attentionTick: { default: 0 }
142
+ },
143
+ emits: ["restore"],
144
+ setup(l, { emit: m }) {
145
+ const a = l, s = m, p = d(() => a.title || "弹窗"), e = d(() => `恢复 ${p.value}`), i = { opacity: 0, scale: 0.8, x: -24, y: 12 }, u = { opacity: 1, scale: 1, x: 0, y: 0 }, g = { opacity: 0, scale: 0.8, x: -24, y: 12 }, v = { duration: 0.28, ease: [0.2, 0.8, 0.2, 1] }, o = { scale: 1.04, y: -2 }, n = { scale: 0.98 }, B = d(() => ({
146
+ position: "fixed",
147
+ right: `${a.position.right}px`,
148
+ bottom: `${a.position.bottom}px`
149
+ })), z = k(!1);
150
+ let E;
151
+ N(() => a.attentionTick, (A, y) => {
152
+ y === void 0 || A === y || (z.value = !1, window.clearTimeout(E), window.requestAnimationFrame(() => {
153
+ z.value = !0, E = window.setTimeout(() => {
154
+ z.value = !1;
155
+ }, 580);
156
+ }));
157
+ }), oe(() => {
158
+ window.clearTimeout(E);
159
+ });
160
+ function S() {
161
+ s("restore");
162
+ }
163
+ return (A, y) => (r(), _(ne, { to: "body" }, [
164
+ R(I(ze).div, {
165
+ class: ae(["g-dialog-pro-minimized-icon", { "is-attention": z.value }]),
166
+ type: "button",
167
+ style: ge(B.value),
168
+ title: e.value,
169
+ "aria-label": e.value,
170
+ initial: i,
171
+ animate: u,
172
+ exit: g,
173
+ transition: v,
174
+ "while-hover": o,
175
+ "while-press": n,
176
+ onClick: S
177
+ }, {
178
+ default: T(() => [
179
+ y[0] || (y[0] = c("span", {
180
+ class: "g-dialog-pro-minimized-icon__glow",
181
+ "aria-hidden": "true"
182
+ }, null, -1)),
183
+ y[1] || (y[1] = c("span", {
184
+ class: "g-dialog-pro-minimized-icon__wave",
185
+ "aria-hidden": "true"
186
+ }, null, -1)),
187
+ c("span", $e, [
188
+ R(I(Ee))
189
+ ]),
190
+ c("span", De, M(p.value), 1)
191
+ ]),
192
+ _: 1,
193
+ __: [0, 1]
194
+ }, 8, ["class", "style", "title", "aria-label"])
195
+ ]));
196
+ }
197
+ }), j = /* @__PURE__ */ K(Se, [["__scopeId", "data-v-e312df81"]]), Ae = ["disabled"], Ge = {
198
+ key: 0,
199
+ class: "g-btn__icon g-btn__loading",
200
+ "aria-hidden": "true"
201
+ }, Fe = {
202
+ key: 1,
203
+ class: "g-btn__icon",
204
+ "aria-hidden": "true"
205
+ }, Pe = {
206
+ key: 2,
207
+ class: "g-btn__text"
208
+ }, Re = /* @__PURE__ */ x({
209
+ name: "GButton",
210
+ __name: "GButton",
211
+ props: {
212
+ type: { default: "default" },
213
+ icon: {},
214
+ loading: { type: Boolean, default: !1 },
215
+ disabled: { type: Boolean, default: !1 },
216
+ plain: { type: Boolean, default: !1 },
217
+ size: { default: "default" }
218
+ },
219
+ emits: ["click"],
220
+ setup(l, { emit: m }) {
221
+ const a = l, s = m;
222
+ function p(e) {
223
+ a.disabled || a.loading || s("click", e);
224
+ }
225
+ return (e, i) => (r(), b("button", {
226
+ type: "button",
227
+ class: ae(["g-btn", [
228
+ `g-btn--${e.type}`,
229
+ `g-btn--size-${e.size}`,
230
+ {
231
+ "is-plain": e.plain,
232
+ "is-disabled": e.disabled,
233
+ "is-loading": e.loading
234
+ }
235
+ ]]),
236
+ disabled: e.disabled || e.loading,
237
+ onClick: p
238
+ }, [
239
+ e.loading ? (r(), b("span", Ge, i[0] || (i[0] = [
240
+ c("svg", {
241
+ viewBox: "0 0 16 16",
242
+ fill: "none",
243
+ xmlns: "http://www.w3.org/2000/svg"
244
+ }, [
245
+ c("circle", {
246
+ cx: "8",
247
+ cy: "8",
248
+ r: "6",
249
+ stroke: "currentColor",
250
+ "stroke-width": "1.6",
251
+ "stroke-opacity": "0.25"
252
+ }),
253
+ c("path", {
254
+ d: "M14 8a6 6 0 0 0-6-6",
255
+ stroke: "currentColor",
256
+ "stroke-width": "1.6",
257
+ "stroke-linecap": "round"
258
+ })
259
+ ], -1)
260
+ ]))) : e.icon ? (r(), b("span", Fe, [
261
+ (r(), _(ve(e.icon)))
262
+ ])) : w("", !0),
263
+ e.$slots.default ? (r(), b("span", Pe, [
264
+ P(e.$slots, "default", {}, void 0, !0)
265
+ ])) : w("", !0)
266
+ ], 10, Ae));
267
+ }
268
+ }), O = /* @__PURE__ */ K(Re, [["__scopeId", "data-v-25d59287"]]), Le = { class: "g-dialog-pro-header" }, Ve = { class: "g-dialog-pro-title" }, He = {
269
+ class: "g-dialog-pro-operation-container",
270
+ "aria-label": "弹窗操作"
271
+ }, Ne = ["aria-label", "title"], We = { class: "g-dialog-pro-body" }, je = {
272
+ key: 0,
273
+ class: "g-dialog-pro-footer"
274
+ }, xe = { class: "g-dialog-pro-actions" }, te = "关闭", Ke = /* @__PURE__ */ x({
275
+ name: "GDialogPro",
276
+ inheritAttrs: !1,
277
+ __name: "index",
278
+ props: {
279
+ title: { default: "" },
280
+ size: { default: "medium" },
281
+ modelValue: { type: Boolean },
282
+ hideFooter: { type: Boolean, default: !1 },
283
+ actions: {},
284
+ showCancel: { type: Boolean, default: !0 },
285
+ showReset: { type: Boolean, default: !0 },
286
+ showSave: { type: Boolean, default: !0 },
287
+ cancelText: { default: "取消" },
288
+ resetText: { default: "重置" },
289
+ saveText: { default: "保存" },
290
+ saveLoading: { type: Boolean, default: !1 },
291
+ saveDisabled: { type: Boolean, default: !1 },
292
+ beforeClose: {}
293
+ },
294
+ emits: ["cancel", "reset", "save", "minimize", "action", "update:modelValue"],
295
+ setup(l, { emit: m }) {
296
+ const a = l, s = m, p = d(() => a.modelValue), e = J ? J() : `g-dialog-pro-${Date.now()}-${Math.random().toString(36).slice(2)}`, i = Me(), u = k(!1), g = k(!0), v = k(0), o = k(!1), n = k(!1), B = k(!1), z = d(() => i ? i.dialogs.get(e)?.isMinimized ?? !1 : u.value), E = d(() => i ? i.dialogs.get(e)?.attentionTick ?? 0 : v.value), S = d(() => i ? !n.value : g.value), A = d(() => i ? i.getPosition(e).value : { right: 20, bottom: 20 });
297
+ ye(() => {
298
+ i?.register({
299
+ id: e,
300
+ title: a.title,
301
+ isMinimized: !1
302
+ }), document.addEventListener("keydown", U);
303
+ }), oe(() => {
304
+ i?.unregister(e), document.removeEventListener("keydown", U);
305
+ }), N(
306
+ () => a.title,
307
+ (t) => {
308
+ if (i) {
309
+ const C = i.dialogs.get(e);
310
+ C && (C.title = t);
311
+ }
312
+ }
313
+ ), N(
314
+ () => a.modelValue,
315
+ (t) => {
316
+ if (t === !1) {
317
+ if (o.value) return;
318
+ i ? (i.restore(e), n.value = !1) : (g.value = !0, u.value = !1);
319
+ }
320
+ t === !0 && (i?.dialogs.get(e)?.isMinimized ? i.remindMinimized(e) : u.value && (v.value += 1));
321
+ }
322
+ );
323
+ const y = d(() => Object.prototype.hasOwnProperty.call(ee, a.size) ? ee[a.size] : a.size), le = d(() => D.value ? {} : { width: y.value });
324
+ async function $(t) {
325
+ if (!a.beforeClose) return !0;
326
+ try {
327
+ return await a.beforeClose(t) !== !1;
328
+ } catch {
329
+ return !1;
330
+ }
331
+ }
332
+ async function G() {
333
+ await $("close") && s("update:modelValue", !1);
334
+ }
335
+ function se() {
336
+ G();
337
+ }
338
+ function U(t) {
339
+ t.key === "Escape" && (!a.modelValue || !S.value || z.value || (t.stopPropagation(), G()));
340
+ }
341
+ async function X() {
342
+ await $("cancel") && s("cancel");
343
+ }
344
+ function Y() {
345
+ s("reset");
346
+ }
347
+ async function Z() {
348
+ await $("save") && s("save");
349
+ }
350
+ const V = ie({});
351
+ async function re(t) {
352
+ if (await $("action") && (s("action", t.key), !!t.onClick))
353
+ try {
354
+ const C = t.onClick();
355
+ C instanceof Promise && (V[t.key] = !0, await C);
356
+ } finally {
357
+ V[t.key] = !1;
358
+ }
359
+ }
360
+ const D = k(!1), ce = () => {
361
+ D.value = !D.value;
362
+ }, q = d(() => D.value ? "退出全屏" : "全屏"), de = async () => {
363
+ if (!await $("minimize")) return;
364
+ if (i ? i.dialogs.get(e)?.isMinimized ?? !1 : u.value) {
365
+ i ? i.minimize(e) : v.value += 1, s("minimize", { id: e });
366
+ return;
367
+ }
368
+ o.value = !0, i ? i.minimize(e) : u.value = !0, s("update:modelValue", !1), s("minimize", { id: e });
369
+ }, ue = () => {
370
+ B.value = !0, o.value = !1, i ? (n.value = !1, i.restore(e)) : (g.value = !0, u.value = !1), s("update:modelValue", !0);
371
+ }, fe = () => {
372
+ o.value && (i ? n.value = !0 : g.value = !1, o.value = !1);
373
+ }, me = () => {
374
+ B.value = !1;
375
+ };
376
+ return (t, C) => (r(), _(ne, { to: "body" }, [
377
+ R(he, {
378
+ name: "g-dialog-pro-fade",
379
+ onAfterEnter: me,
380
+ onAfterLeave: fe
381
+ }, {
382
+ default: T(() => [
383
+ S.value && p.value ? (r(), b("div", {
384
+ key: 0,
385
+ class: "g-dialog-pro-overlay",
386
+ onClick: ke(se, ["self"])
387
+ }, [
388
+ c("div", _e(t.$attrs, {
389
+ class: ["g-dialog-pro", {
390
+ "is-fullscreen": D.value,
391
+ "is-leave-to-minimize": o.value,
392
+ "is-enter-from-minimize": B.value
393
+ }],
394
+ style: le.value,
395
+ role: "dialog",
396
+ "aria-modal": "true"
397
+ }), [
398
+ c("header", Le, [
399
+ c("p", Ve, M(t.title), 1),
400
+ c("div", He, [
401
+ c("button", {
402
+ type: "button",
403
+ class: "g-dialog-pro-control g-dialog-pro-control--minimize",
404
+ "aria-label": "最小化",
405
+ title: "最小化",
406
+ onClick: de
407
+ }),
408
+ c("button", {
409
+ type: "button",
410
+ class: "g-dialog-pro-control g-dialog-pro-control--fullscreen",
411
+ "aria-label": q.value,
412
+ title: q.value,
413
+ onClick: ce
414
+ }, null, 8, Ne),
415
+ c("button", {
416
+ type: "button",
417
+ class: "g-dialog-pro-control g-dialog-pro-control--close",
418
+ "aria-label": te,
419
+ title: te,
420
+ onClick: G
421
+ })
422
+ ])
423
+ ]),
424
+ c("div", We, [
425
+ P(t.$slots, "default", {}, void 0, !0)
426
+ ]),
427
+ t.hideFooter ? w("", !0) : (r(), b("footer", je, [
428
+ P(t.$slots, "footer", {
429
+ cancel: X,
430
+ reset: Y,
431
+ save: Z,
432
+ close: G,
433
+ loading: t.saveLoading
434
+ }, () => [
435
+ c("div", xe, [
436
+ t.actions && t.actions.length ? (r(!0), b(Q, { key: 0 }, we(t.actions, (h) => (r(), _(O, {
437
+ key: h.key,
438
+ type: h.type,
439
+ icon: h.icon,
440
+ loading: h.loading || V[h.key],
441
+ disabled: h.disabled,
442
+ plain: h.plain,
443
+ size: "small",
444
+ onClick: (Ue) => re(h)
445
+ }, {
446
+ default: T(() => [
447
+ F(M(h.label), 1)
448
+ ]),
449
+ _: 2
450
+ }, 1032, ["type", "icon", "loading", "disabled", "plain", "onClick"]))), 128)) : (r(), b(Q, { key: 1 }, [
451
+ t.showCancel ? (r(), _(O, {
452
+ key: 0,
453
+ icon: I(Ie),
454
+ size: "small",
455
+ onClick: X
456
+ }, {
457
+ default: T(() => [
458
+ F(M(t.cancelText), 1)
459
+ ]),
460
+ _: 1
461
+ }, 8, ["icon"])) : w("", !0),
462
+ t.showReset ? (r(), _(O, {
463
+ key: 1,
464
+ icon: I(Oe),
465
+ size: "small",
466
+ onClick: Y
467
+ }, {
468
+ default: T(() => [
469
+ F(M(t.resetText), 1)
470
+ ]),
471
+ _: 1
472
+ }, 8, ["icon"])) : w("", !0),
473
+ t.showSave ? (r(), _(O, {
474
+ key: 2,
475
+ type: "primary",
476
+ icon: I(Be),
477
+ loading: t.saveLoading,
478
+ disabled: t.saveDisabled,
479
+ size: "small",
480
+ onClick: Z
481
+ }, {
482
+ default: T(() => [
483
+ F(M(t.saveText), 1)
484
+ ]),
485
+ _: 1
486
+ }, 8, ["icon", "loading", "disabled"])) : w("", !0)
487
+ ], 64)),
488
+ P(t.$slots, "moreOperations", {}, void 0, !0)
489
+ ])
490
+ ], !0)
491
+ ]))
492
+ ], 16)
493
+ ])) : w("", !0)
494
+ ]),
495
+ _: 3
496
+ }),
497
+ R(I(be), null, {
498
+ default: T(() => [
499
+ z.value ? (r(), _(j, {
500
+ key: 0,
501
+ title: t.title,
502
+ position: A.value,
503
+ "attention-tick": E.value,
504
+ onRestore: ue
505
+ }, null, 8, ["title", "position", "attention-tick"])) : w("", !0)
506
+ ]),
507
+ _: 1
508
+ })
509
+ ]));
510
+ }
511
+ }), H = /* @__PURE__ */ K(Ke, [["__scopeId", "data-v-cac8c7e5"]]);
512
+ H.install = (l) => {
513
+ l.component(H.name, H), l.component(j.name, j), l.component(O.name, O);
514
+ };
515
+ export {
516
+ Ee as ChatDotRound,
517
+ Be as CircleCheck,
518
+ Ce as DIALOG_MANAGER_KEY,
519
+ ee as DIALOG_SIZES,
520
+ O as GButton,
521
+ j as GDialogMinimizedIcon,
522
+ H as GDialogPro,
523
+ W as MINIMIZED_LAYOUT,
524
+ Oe as Refresh,
525
+ Ie as Remove,
526
+ Je as createDialogManager,
527
+ H as default,
528
+ Me as useDialogManager
529
+ };
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,42 @@
1
+ import { Component } from 'vue';
2
+ interface Props {
3
+ /** 按钮类型 */
4
+ type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default' | 'text';
5
+ /** 按钮图标组件 */
6
+ icon?: Component;
7
+ /** loading 态 */
8
+ loading?: boolean;
9
+ /** 禁用态 */
10
+ disabled?: boolean;
11
+ /** 是否朴素按钮 */
12
+ plain?: boolean;
13
+ /** 按钮尺寸 */
14
+ size?: 'small' | 'default' | 'large';
15
+ }
16
+ declare function __VLS_template(): {
17
+ attrs: Partial<{}>;
18
+ slots: {
19
+ default?(_: {}): any;
20
+ };
21
+ refs: {};
22
+ rootEl: HTMLButtonElement;
23
+ };
24
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
25
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
26
+ click: (evt: MouseEvent) => any;
27
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
28
+ onClick?: ((evt: MouseEvent) => any) | undefined;
29
+ }>, {
30
+ type: "primary" | "success" | "warning" | "danger" | "info" | "default" | "text";
31
+ size: "small" | "default" | "large";
32
+ disabled: boolean;
33
+ loading: boolean;
34
+ plain: boolean;
35
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
36
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
37
+ export default _default;
38
+ type __VLS_WithTemplateSlots<T, S> = T & {
39
+ new (): {
40
+ $slots: S;
41
+ };
42
+ };
@@ -0,0 +1,17 @@
1
+ import { DialogPosition } from './useDialogManager';
2
+ interface Props {
3
+ /** 弹窗标题 */
4
+ title: string;
5
+ /** 图标位置 */
6
+ position: DialogPosition;
7
+ /** 提醒动画触发次数 */
8
+ attentionTick?: number;
9
+ }
10
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
+ restore: () => any;
12
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
13
+ onRestore?: (() => any) | undefined;
14
+ }>, {
15
+ attentionTick: number;
16
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
17
+ export default _default;
@@ -0,0 +1,55 @@
1
+ import { Component, InjectionKey } from 'vue';
2
+ import { DialogManager } from './useDialogManager';
3
+ /**
4
+ * 弹窗管理器注入键(GDialogPro 独立,不与 GDialog 共享)
5
+ */
6
+ export declare const DIALOG_MANAGER_KEY: InjectionKey<DialogManager>;
7
+ /**
8
+ * 预设对话框尺寸
9
+ */
10
+ export declare const DIALOG_SIZES: {
11
+ readonly small: "380px";
12
+ readonly medium: "480px";
13
+ readonly large: "580px";
14
+ };
15
+ /**
16
+ * 关闭来源(用于 beforeClose 钩子)
17
+ * - cancel:底部取消按钮
18
+ * - close:标题栏关闭按钮 / ESC / 蒙层
19
+ * - minimize:标题栏最小化按钮
20
+ * - save:底部保存按钮
21
+ * - action:自定义底部操作(actions 配置项)
22
+ */
23
+ export type DialogCloseAction = 'cancel' | 'close' | 'minimize' | 'save' | 'action';
24
+ /**
25
+ * 自定义底部操作按钮
26
+ */
27
+ export interface FooterAction {
28
+ /** 唯一标识,作为 emit('action', key) 的载荷 */
29
+ key: string;
30
+ /** 按钮文案 */
31
+ label: string;
32
+ /** 按钮类型(语义与常见 UI 库一致) */
33
+ type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default' | 'text';
34
+ /** 按钮图标组件 */
35
+ icon?: Component;
36
+ /** loading 态 */
37
+ loading?: boolean;
38
+ /** 禁用态 */
39
+ disabled?: boolean;
40
+ /** 是否朴素按钮 */
41
+ plain?: boolean;
42
+ /** 点击回调(与 emit('action', key) 同时触发,回调返回 Promise 时按钮自动 loading) */
43
+ onClick?: () => void | Promise<void>;
44
+ }
45
+ /**
46
+ * 最小化图标布局常量
47
+ */
48
+ export declare const MINIMIZED_LAYOUT: {
49
+ readonly ICON_WIDTH: 92;
50
+ readonly ICON_HEIGHT: 34;
51
+ readonly GAP: 8;
52
+ readonly BOTTOM_OFFSET: 18;
53
+ readonly RIGHT_OFFSET: 18;
54
+ readonly MAX_PER_ROW: 8;
55
+ };
@@ -0,0 +1,9 @@
1
+ import { FunctionalComponent } from 'vue';
2
+ /** 减号(取消按钮默认图标) */
3
+ export declare const Remove: FunctionalComponent;
4
+ /** 刷新(重置按钮默认图标) */
5
+ export declare const Refresh: FunctionalComponent;
6
+ /** 圆圈打勾(保存按钮默认图标) */
7
+ export declare const CircleCheck: FunctionalComponent;
8
+ /** 聊天气泡圆点(最小化图标默认图标) */
9
+ export declare const ChatDotRound: FunctionalComponent;
@@ -0,0 +1,147 @@
1
+ import { DialogCloseAction, FooterAction } from './const';
2
+ interface Props {
3
+ /**
4
+ * @description 标题名
5
+ * @version 0.1.6
6
+ * @default ''
7
+ */
8
+ title: string;
9
+ /**
10
+ * @description 对话框尺寸
11
+ * @version 0.1.6
12
+ * @default 'medium'
13
+ */
14
+ size?: 'small' | 'medium' | 'large' | string;
15
+ /**
16
+ * @description 是否显示对话框
17
+ * @version 0.1.6
18
+ * @default false
19
+ */
20
+ modelValue?: boolean;
21
+ /**
22
+ * @description 是否隐藏底部操作区(包含取消/重置/保存与自定义 actions)
23
+ * @version 0.2.18
24
+ * @default false
25
+ */
26
+ hideFooter?: boolean;
27
+ /**
28
+ * @description 自定义底部操作按钮组。配置后会替换默认的 取消/重置/保存
29
+ * @version 0.2.18
30
+ * @default undefined
31
+ */
32
+ actions?: FooterAction[];
33
+ /**
34
+ * @description 是否显示默认「取消」按钮(actions 模式下无效)
35
+ * @version 0.2.18
36
+ * @default true
37
+ */
38
+ showCancel?: boolean;
39
+ /**
40
+ * @description 是否显示默认「重置」按钮(actions 模式下无效)
41
+ * @version 0.2.18
42
+ * @default true
43
+ */
44
+ showReset?: boolean;
45
+ /**
46
+ * @description 是否显示默认「保存」按钮(actions 模式下无效)
47
+ * @version 0.2.18
48
+ * @default true
49
+ */
50
+ showSave?: boolean;
51
+ /**
52
+ * @description 默认「取消」按钮文案
53
+ * @version 0.2.18
54
+ * @default '取消'
55
+ */
56
+ cancelText?: string;
57
+ /**
58
+ * @description 默认「重置」按钮文案
59
+ * @version 0.2.18
60
+ * @default '重置'
61
+ */
62
+ resetText?: string;
63
+ /**
64
+ * @description 默认「保存」按钮文案
65
+ * @version 0.2.18
66
+ * @default '保存'
67
+ */
68
+ saveText?: string;
69
+ /**
70
+ * @description 保存按钮 loading 态(异步保存时使用)
71
+ * @version 0.2.18
72
+ * @default false
73
+ */
74
+ saveLoading?: boolean;
75
+ /**
76
+ * @description 保存按钮禁用态
77
+ * @version 0.2.18
78
+ * @default false
79
+ */
80
+ saveDisabled?: boolean;
81
+ /**
82
+ * @description 关闭前钩子。返回 false 或 Promise<false> 时取消关闭。
83
+ * 触发时机:点击关闭/最小化/ESC/蒙层/取消/保存
84
+ * @version 0.2.18
85
+ * @default undefined
86
+ */
87
+ beforeClose?: (action: DialogCloseAction) => boolean | Promise<boolean>;
88
+ }
89
+ /** 标题栏关闭按钮 / ESC / 蒙层 / 作用域插槽 close 调用入口 */
90
+ declare function handleClose(): Promise<void>;
91
+ /** 取消按钮 */
92
+ declare function handleCancel(): Promise<void>;
93
+ /** 重置按钮(不触发关闭,无需 beforeClose) */
94
+ declare function handleReset(): void;
95
+ /** 保存按钮 */
96
+ declare function handleSave(): Promise<void>;
97
+ declare function __VLS_template(): {
98
+ attrs: Partial<{}>;
99
+ slots: {
100
+ default?(_: {}): any;
101
+ footer?(_: {
102
+ cancel: typeof handleCancel;
103
+ reset: typeof handleReset;
104
+ save: typeof handleSave;
105
+ close: typeof handleClose;
106
+ loading: boolean;
107
+ }): any;
108
+ moreOperations?(_: {}): any;
109
+ };
110
+ refs: {};
111
+ rootEl: any;
112
+ };
113
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
114
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
115
+ reset: () => any;
116
+ cancel: () => any;
117
+ minimize: (data: any) => any;
118
+ save: () => any;
119
+ action: (key: string) => any;
120
+ "update:modelValue": (value: boolean) => any;
121
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
122
+ onReset?: (() => any) | undefined;
123
+ onCancel?: (() => any) | undefined;
124
+ onMinimize?: ((data: any) => any) | undefined;
125
+ onSave?: (() => any) | undefined;
126
+ onAction?: ((key: string) => any) | undefined;
127
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
128
+ }>, {
129
+ title: string;
130
+ size: "small" | "medium" | "large" | string;
131
+ hideFooter: boolean;
132
+ showCancel: boolean;
133
+ showReset: boolean;
134
+ showSave: boolean;
135
+ cancelText: string;
136
+ resetText: string;
137
+ saveText: string;
138
+ saveLoading: boolean;
139
+ saveDisabled: boolean;
140
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
141
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
142
+ export default _default;
143
+ type __VLS_WithTemplateSlots<T, S> = T & {
144
+ new (): {
145
+ $slots: S;
146
+ };
147
+ };
@@ -0,0 +1,58 @@
1
+ import { ComputedRef } from 'vue';
2
+ /**
3
+ * 弹窗描述符
4
+ */
5
+ export interface DialogDescriptor {
6
+ /** 弹窗唯一标识 */
7
+ id: string;
8
+ /** 弹窗标题,显示在最小化图标上 */
9
+ title: string;
10
+ /** 是否处于最小化状态 */
11
+ isMinimized: boolean;
12
+ /** 最小化状态下的提醒次数 */
13
+ attentionTick?: number;
14
+ }
15
+ /**
16
+ * 最小化图标位置
17
+ */
18
+ export interface DialogPosition {
19
+ /** 距右侧距离 (px) */
20
+ right: number;
21
+ /** 距底部距离 (px) */
22
+ bottom: number;
23
+ }
24
+ /**
25
+ * 弹窗管理器接口
26
+ */
27
+ export interface DialogManager {
28
+ /** 响应式弹窗注册表 */
29
+ dialogs: Map<string, DialogDescriptor>;
30
+ /** 注册弹窗 */
31
+ register: (descriptor: DialogDescriptor) => void;
32
+ /** 注销弹窗 */
33
+ unregister: (id: string) => void;
34
+ /** 最小化弹窗 */
35
+ minimize: (id: string) => void;
36
+ /** 提醒已最小化的弹窗 */
37
+ remindMinimized: (id: string) => void;
38
+ /** 恢复弹窗 */
39
+ restore: (id: string) => void;
40
+ /** 获取图标位置(响应式) */
41
+ getPosition: (id: string) => ComputedRef<DialogPosition>;
42
+ /** 当前最小化的弹窗列表 */
43
+ minimizedList: ComputedRef<DialogDescriptor[]>;
44
+ }
45
+ /**
46
+ * 创建弹窗管理器实例(应用层调用一次)
47
+ * @example
48
+ * ```ts
49
+ * const dialogManager = createDialogManager()
50
+ * app.provide(DIALOG_MANAGER_KEY, dialogManager)
51
+ * ```
52
+ */
53
+ export declare function createDialogManager(): DialogManager;
54
+ /**
55
+ * 弹窗管理器消费者 composable(GDialogPro 内部使用)
56
+ * 通过 inject 获取管理器实例,未提供时返回 null(向后兼容)
57
+ */
58
+ export declare function useDialogManager(): DialogManager | null;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../GCount/index.js"),l=require("../GDialog/index.js"),a=require("../GTable/index.js"),o=require("../GVideo/index.js"),n=require("../GBubble/index.js"),d=require("../GProgress/index.js"),G=require("../GScreen/index.js"),i=require("../GPluginVideo/index.js"),s=require("../GPie3D/index.js"),c=require("../GRing/index.js"),f=require("../GInputTreeTag/index.js"),g=require("../GFuzzyText/index.js"),e=require("../GCard/index.js"),T=require("../GScroller/index.js"),q=require("../GShinyText/index.js"),u={GCount:r.default,GDialog:l.default,GTable:a.default,GVideo:o.default,GBubble:n.default,GProgress:d.default,GScreen:G.default,GPluginVideo:i.default,GPie3D:s.default,GRing:c.default,GInputTreeTag:f.default,GFuzzyText:g.default,GCard:e.default,GScroller:T.default,GShinyText:q.default},S=b=>{Object.keys(u).forEach(P=>{const t=u[P];b.component(t.name,t)})},y={install:S};exports.GCount=r.default;exports.GDialog=l.default;exports.GTable=a.default;exports.GVideo=o.default;exports.GBubble=n.default;exports.GProgress=d.default;exports.GScreen=G.default;exports.GPluginVideo=i.default;exports.GPie3D=s.default;exports.GRing=c.default;exports.GInputTreeTag=f.default;exports.GFuzzyText=g.default;exports.GCard=e.default;exports.cardPresets=e.cardPresets;exports.GScroller=T.default;exports.GShinyText=q.default;exports.default=y;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../GCount/index.js"),l=require("../GDialog/index.js"),a=require("../GDialogPro/index.js"),o=require("../GTable/index.js"),n=require("../GVideo/index.js"),d=require("../GBubble/index.js"),G=require("../GProgress/index.js"),i=require("../GScreen/index.js"),s=require("../GPluginVideo/index.js"),c=require("../GPie3D/index.js"),f=require("../GRing/index.js"),g=require("../GInputTreeTag/index.js"),q=require("../GFuzzyText/index.js"),e=require("../GCard/index.js"),T=require("../GScroller/index.js"),P=require("../GShinyText/index.js"),u={GCount:r.default,GDialog:l.default,GDialogPro:a.default,GTable:o.default,GVideo:n.default,GBubble:d.default,GProgress:G.default,GScreen:i.default,GPluginVideo:s.default,GPie3D:c.default,GRing:f.default,GInputTreeTag:g.default,GFuzzyText:q.default,GCard:e.default,GScroller:T.default,GShinyText:P.default},D=b=>{Object.keys(u).forEach(S=>{const t=u[S];b.component(t.name,t)})},y={install:D};exports.GCount=r.default;exports.GDialog=l.default;exports.GDialogPro=a.default;exports.GTable=o.default;exports.GVideo=n.default;exports.GBubble=d.default;exports.GProgress=G.default;exports.GScreen=i.default;exports.GPluginVideo=s.default;exports.GPie3D=c.default;exports.GRing=f.default;exports.GInputTreeTag=g.default;exports.GFuzzyText=q.default;exports.GCard=e.default;exports.cardPresets=e.cardPresets;exports.GScroller=T.default;exports.GShinyText=P.default;exports.default=y;
@@ -1,57 +1,60 @@
1
1
  import i from "../GCount/index.mjs";
2
2
  import e from "../GDialog/index.mjs";
3
- import n from "../GTable/index.mjs";
4
- import f from "../GVideo/index.mjs";
3
+ import n from "../GDialogPro/index.mjs";
4
+ import f from "../GTable/index.mjs";
5
+ import p from "../GVideo/index.mjs";
5
6
  import s from "../GBubble/index.mjs";
6
- import p from "../GProgress/index.mjs";
7
- import a from "../GScreen/index.mjs";
8
- import G from "../GPluginVideo/index.mjs";
9
- import c from "../GPie3D/index.mjs";
10
- import l from "../GRing/index.mjs";
11
- import _ from "../GInputTreeTag/index.mjs";
12
- import u from "../GFuzzyText/index.mjs";
13
- import d from "../GCard/index.mjs";
14
- import { cardPresets as q } from "../GCard/index.mjs";
7
+ import a from "../GProgress/index.mjs";
8
+ import G from "../GScreen/index.mjs";
9
+ import c from "../GPluginVideo/index.mjs";
10
+ import l from "../GPie3D/index.mjs";
11
+ import _ from "../GRing/index.mjs";
12
+ import u from "../GInputTreeTag/index.mjs";
13
+ import d from "../GFuzzyText/index.mjs";
14
+ import g from "../GCard/index.mjs";
15
+ import { cardPresets as w } from "../GCard/index.mjs";
15
16
  import x from "../GScroller/index.mjs";
16
17
  import T from "../GShinyText/index.mjs";
17
18
  const r = {
18
19
  GCount: i,
19
20
  GDialog: e,
20
- GTable: n,
21
- GVideo: f,
21
+ GDialogPro: n,
22
+ GTable: f,
23
+ GVideo: p,
22
24
  GBubble: s,
23
- GProgress: p,
24
- GScreen: a,
25
- GPluginVideo: G,
26
- GPie3D: c,
27
- GRing: l,
28
- GInputTreeTag: _,
29
- GFuzzyText: u,
30
- GCard: d,
25
+ GProgress: a,
26
+ GScreen: G,
27
+ GPluginVideo: c,
28
+ GPie3D: l,
29
+ GRing: _,
30
+ GInputTreeTag: u,
31
+ GFuzzyText: d,
32
+ GCard: g,
31
33
  GScroller: x,
32
34
  GShinyText: T
33
- }, g = (m) => {
35
+ }, P = (m) => {
34
36
  Object.keys(r).forEach((t) => {
35
37
  const o = r[t];
36
38
  m.component(o.name, o);
37
39
  });
38
- }, I = { install: g };
40
+ }, R = { install: P };
39
41
  export {
40
42
  s as GBubble,
41
- d as GCard,
43
+ g as GCard,
42
44
  i as GCount,
43
45
  e as GDialog,
44
- u as GFuzzyText,
45
- _ as GInputTreeTag,
46
- c as GPie3D,
47
- G as GPluginVideo,
48
- p as GProgress,
49
- l as GRing,
50
- a as GScreen,
46
+ n as GDialogPro,
47
+ d as GFuzzyText,
48
+ u as GInputTreeTag,
49
+ l as GPie3D,
50
+ c as GPluginVideo,
51
+ a as GProgress,
52
+ _ as GRing,
53
+ G as GScreen,
51
54
  x as GScroller,
52
55
  T as GShinyText,
53
- n as GTable,
54
- f as GVideo,
55
- q as cardPresets,
56
- I as default
56
+ f as GTable,
57
+ p as GVideo,
58
+ w as cardPresets,
59
+ R as default
57
60
  };
package/lib/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { GCount } from './components/GCount';
2
2
  import { GDialog } from './components/GDialog';
3
+ import { GDialogPro } from './components/GDialogPro';
3
4
  import { GTable } from './components/GTable';
4
5
  import { GVideo } from './components/GVideo';
5
6
  import { GBubble } from './components/GBubble';
@@ -17,5 +18,5 @@ declare const _default: {
17
18
  install: (app: any) => void;
18
19
  };
19
20
  export default _default;
20
- export { GCount, GDialog, GTable, GVideo, GBubble, GProgress, GScreen, GPluginVideo, GPie3D, GRing, GInputTreeTag, GFuzzyText, GCard, cardPresets, GScroller, GShinyText };
21
+ export { GCount, GDialog, GDialogPro, GTable, GVideo, GBubble, GProgress, GScreen, GPluginVideo, GPie3D, GRing, GInputTreeTag, GFuzzyText, GCard, cardPresets, GScroller, GShinyText };
21
22
  export type { CardPreset };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geekin-devtoys",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "author": "leon",
5
5
  "license": "MIT",
6
6
  "description": "geekin-devtoys组件库",
@@ -98,6 +98,14 @@
98
98
  "import": "./lib/GDialog/style.css",
99
99
  "require": "./lib/GDialog/style.css"
100
100
  },
101
+ "./GDialogPro": {
102
+ "import": "./lib/GDialogPro/index.mjs",
103
+ "require": "./lib/GDialogPro/index.js"
104
+ },
105
+ "./GDialogPro/style": {
106
+ "import": "./lib/GDialogPro/style.css",
107
+ "require": "./lib/GDialogPro/style.css"
108
+ },
101
109
  "./GFuzzyText": {
102
110
  "import": "./lib/GFuzzyText/index.mjs",
103
111
  "require": "./lib/GFuzzyText/index.js"