pinokiod 3.91.0 → 3.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/public/common.js +38 -0
package/package.json
CHANGED
package/server/public/common.js
CHANGED
|
@@ -29,6 +29,43 @@ async function uploadCapture(blob, filename) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
class ScreenCaptureModal {
|
|
32
|
+
static ensureSavedModalStyles() {
|
|
33
|
+
if (document.querySelector('link[href="/urldropdown.css"]')) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (document.querySelector('style[data-capture-modal-styles="true"]')) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const style = document.createElement('style');
|
|
40
|
+
style.type = 'text/css';
|
|
41
|
+
style.dataset.captureModalStyles = 'true';
|
|
42
|
+
style.textContent = `
|
|
43
|
+
.modal-overlay{position:fixed;inset:0;padding:24px;display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;visibility:hidden;pointer-events:none;transition:opacity 160ms ease,visibility 0s linear 160ms;}
|
|
44
|
+
.modal-overlay.is-visible{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s;}
|
|
45
|
+
@media (prefers-reduced-motion: reduce){.modal-overlay{transition:none;}.capture-modal{animation:none;}}
|
|
46
|
+
.capture-modal-overlay{background:rgba(15,23,42,0.45);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);}
|
|
47
|
+
.capture-modal{width:min(360px,calc(100% - 32px));padding:28px 26px;border-radius:18px;background:rgba(255,255,255,0.92);border:1px solid rgba(15,23,42,0.08);box-shadow:0 30px 80px rgba(15,23,42,0.35);display:flex;flex-direction:column;gap:18px;text-align:center;}
|
|
48
|
+
body.dark .capture-modal{background:rgba(15,23,42,0.9);border-color:rgba(148,163,184,0.24);color:rgba(226,232,240,0.96);box-shadow:0 34px 88px rgba(2,6,20,0.82);}
|
|
49
|
+
.capture-modal-title{font-size:20px;font-weight:600;letter-spacing:-0.01em;color:rgba(15,23,42,0.92);}
|
|
50
|
+
body.dark .capture-modal-title{color:inherit;}
|
|
51
|
+
.capture-modal-description{font-size:14px;line-height:1.5;color:rgba(71,85,105,0.82);}
|
|
52
|
+
body.dark .capture-modal-description{color:rgba(203,213,225,0.88);}
|
|
53
|
+
.capture-modal-actions{display:flex;justify-content:center;gap:12px;}
|
|
54
|
+
.capture-modal-button{padding:10px 20px;border-radius:999px;border:1px solid transparent;font-size:14px;font-weight:600;cursor:pointer;transition:background 0.18s ease,color 0.18s ease,box-shadow 0.18s ease,transform 0.12s ease;}
|
|
55
|
+
.capture-modal-button.primary{background:linear-gradient(135deg,rgba(127,91,243,0.95),rgba(84,63,196,0.95));color:#fff;box-shadow:0 16px 36px rgba(111,76,242,0.3);}
|
|
56
|
+
.capture-modal-button.primary:hover{box-shadow:0 20px 42px rgba(111,76,242,0.38);transform:translateY(-1px);}
|
|
57
|
+
.capture-modal-button.secondary{background:rgba(148,163,184,0.18);color:rgba(15,23,42,0.78);}
|
|
58
|
+
.capture-modal-button.secondary:hover{background:rgba(148,163,184,0.28);box-shadow:0 12px 28px rgba(15,23,42,0.12);}
|
|
59
|
+
body.dark .capture-modal-button.secondary{background:rgba(148,163,184,0.2);color:rgba(226,232,240,0.92);}
|
|
60
|
+
.capture-modal-button:active{transform:translateY(1px);}
|
|
61
|
+
.capture-modal-button:focus-visible{outline:2px solid rgba(127,91,243,0.8);outline-offset:2px;}
|
|
62
|
+
.modal-overlay.is-visible .capture-modal{animation:captureModalPop 160ms ease-out;}
|
|
63
|
+
@media (max-width: 640px){.modal-overlay{padding:16px;}.capture-modal{width:calc(100% - 24px);padding:24px 20px;}.capture-modal-actions{flex-direction:column;}.capture-modal-button{width:100%;}}
|
|
64
|
+
@keyframes captureModalPop{from{opacity:0;transform:scale(0.97) translateY(12px);}to{opacity:1;transform:scale(1) translateY(0);}}
|
|
65
|
+
`;
|
|
66
|
+
document.head.appendChild(style);
|
|
67
|
+
}
|
|
68
|
+
|
|
32
69
|
constructor(stream = null, opts = {}) {
|
|
33
70
|
this.stream = stream;
|
|
34
71
|
this.opts = opts;
|
|
@@ -1128,6 +1165,7 @@ class ScreenCaptureModal {
|
|
|
1128
1165
|
}
|
|
1129
1166
|
|
|
1130
1167
|
showCaptureSavedModal(kind) {
|
|
1168
|
+
this.constructor.ensureSavedModalStyles();
|
|
1131
1169
|
const overlay = document.createElement('div');
|
|
1132
1170
|
overlay.className = 'modal-overlay capture-modal-overlay';
|
|
1133
1171
|
|