@aiquants/spreadsheet 0.15.0 → 0.16.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/CHANGELOG.md +75 -0
- package/README.md +206 -21
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +107 -5
- package/dist/index.d.ts +107 -5
- package/dist/index.js +4314 -4166
- package/dist/styles/spreadsheet.css +1 -1
- package/dist/styles/spreadsheet.standalone.css +1 -1
- package/dist/tsv.cjs +8 -1
- package/dist/tsv.d.cts +63 -4
- package/dist/tsv.d.ts +63 -4
- package/dist/tsv.js +78 -3
- package/dist/view-BkwCUzTl.cjs +1 -0
- package/dist/view-DycJZi_t.js +41 -0
- package/dist/view.cjs +1 -1
- package/dist/view.d.cts +31 -7
- package/dist/view.d.ts +31 -7
- package/dist/view.js +12 -12
- package/package.json +1 -1
- package/src/Spreadsheet.tsx +110 -14
- package/src/clipboard/tsv.ts +167 -72
- package/src/clipboard/useClipboard.ts +3 -2
- package/src/commands/useCommands.ts +43 -1
- package/src/grid/GridBody.tsx +51 -6
- package/src/header/resizeGates.ts +34 -0
- package/src/header/useHeaderResize.ts +83 -16
- package/src/index.ts +1 -1
- package/src/keyboard/shortcuts.ts +67 -0
- package/src/model/dataAdapter.ts +74 -0
- package/src/overlay/SelectionOverlay.tsx +22 -2
- package/src/styles/spreadsheet.css +193 -123
- package/src/tsv.ts +15 -10
- package/src/view.ts +67 -14
- package/dist/tsv-B6TDExlk.js +0 -91
- package/dist/tsv-BHXbWK5W.cjs +0 -8
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer components{.aqsp-root,.aqsp-root *,.aqsp-root :before,.aqsp-root :after{box-sizing:border-box}.aqsp-root{--aqsp-row-header-width:64px;--aqsp-col-header-height:24px;--aqsp-band-row:#0084ff;--aqsp-band-column:#42ff4f;--aqsp-band-intersection:#e1ff00;--aqsp-band-opacity:.2;color:#1f2937;background:#fff;width:100%;height:100%;font-size:13px;line-height:1;position:relative;overflow:hidden}.aqsp-zoom{grid-template-columns:var(--aqsp-row-header-width) minmax(0, 1fr);grid-template-rows:var(--aqsp-col-header-height) minmax(0, 1fr);transform-origin:0 0;width:100%;height:100%;display:grid}.aqsp-corner{background:#f3f4f6;border-bottom:1px solid #d1d5db;border-right:1px solid #d1d5db;grid-area:1/1}.aqsp-col-header{-webkit-user-select:none;user-select:none;background:#f3f4f6;border-bottom:1px solid #d1d5db;grid-area:1/2;position:relative;overflow:hidden}.aqsp-col-header-scroll{height:100%;position:absolute;top:0;right:0;overflow:hidden}.aqsp-row-header-scroll{width:100%;position:absolute;bottom:0;left:0;overflow:hidden}.aqsp-col-header-track{will-change:transform;position:absolute;inset:0}.aqsp-col-header-cell{white-space:nowrap;color:#4b5563;border-right:1px solid #e5e7eb;justify-content:center;align-items:center;height:100%;display:flex;position:absolute;top:0;overflow:hidden}.aqsp-row-header{-webkit-user-select:none;user-select:none;background:#f3f4f6;border-right:1px solid #d1d5db;grid-area:2/1;position:relative;overflow:hidden}.aqsp-row-header-track{will-change:transform;position:absolute;top:0;left:0;right:0}.aqsp-row-header-cell{white-space:nowrap;color:#4b5563;font-variant-numeric:tabular-nums;border-bottom:1px solid #e5e7eb;justify-content:flex-end;align-items:center;padding-right:6px;display:flex;position:absolute;left:0;right:0;overflow:hidden}.aqsp-body{position:absolute;inset:0}.aqsp-row{cursor:default}.aqsp-cell{white-space:nowrap;background:#fff;border-bottom:1px solid #e5e7eb;border-right:1px solid #e5e7eb;align-items:center;padding:0 4px;display:flex}.aqsp-cell[data-aqsp-valign=top]{align-items:flex-start}.aqsp-cell[data-aqsp-valign=bottom]{align-items:flex-end}.aqsp-cell[data-aqsp-wrap]{white-space:pre-wrap;overflow-wrap:anywhere}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after{content:"";pointer-events:none;border:5px solid #4b5563;border-color:#4b5563 #4b5563 #0000 #0000;width:0;height:0;position:absolute;top:0;right:0}.aqsp-cell[data-aqsp-comment]:after{border-top-color:#f97316;border-right-color:#f97316}.aqsp-cell[data-aqsp-invalid]:before{content:"";pointer-events:none;border:5px solid #0000;border-color:#0000 #0000 #dc2626 #dc2626;width:0;height:0;position:absolute;bottom:0;left:0}.aqsp-cell[data-aqsp-link]{color:#1d4ed8;text-decoration:underline}.aqsp-body-stack{grid-area:2/2;position:relative}.aqsp-overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.aqsp-overlay-quad{pointer-events:none;position:absolute;overflow:hidden}.aqsp-selection-fill{mix-blend-mode:multiply;background:#3b82f62e;border:1px solid #2563ebd9;position:absolute;top:0;left:0}.aqsp-active-frame{box-sizing:border-box;border:2px solid #2563eb;position:absolute;top:0;left:0}.aqsp-drag-rect{background:#3b82f61a;border:1px solid #2563eb;position:absolute;top:0;left:0}.aqsp-drag-rect[data-aqsp-drag-mode=subtract]{background:#dc262614;border:1px dashed #dc2626}.aqsp-drag-rect[data-aqsp-drag-mode=point]{background:#16a34a14;border:1px dashed #16a34a}.aqsp-band{opacity:var(--aqsp-band-opacity);pointer-events:none;position:absolute;top:0;left:0}.aqsp-band[data-aqsp-band=row]{background:var(--aqsp-band-row)}.aqsp-band[data-aqsp-band=column]{background:var(--aqsp-band-column)}.aqsp-band[data-aqsp-band=intersection]{background:var(--aqsp-band-intersection)}.aqsp-clip-marquee{position:absolute;top:0;left:0}.aqsp-clip-marquee:after{content:"";top:var(--aqsp-clip-outset-top,-3px);right:var(--aqsp-clip-outset-right,-3px);bottom:var(--aqsp-clip-outset-bottom,-3px);left:var(--aqsp-clip-outset-left,-3px);background-image:linear-gradient(90deg,#2563eb 50%,#fff 50%),linear-gradient(90deg,#2563eb 50%,#fff 50%),linear-gradient(#fff 50%,#2563eb 50%),linear-gradient(#fff 50%,#2563eb 50%);background-position:0 0,8px 100%,0 8px,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:8px 2px,8px 2px,2px 8px,2px 8px;animation:.4s linear infinite aqsp-marching-ants;position:absolute}@keyframes aqsp-marching-ants{to{background-position:8px 0,0 100%,0 0,100% 8px}}@media (prefers-reduced-motion:reduce){.aqsp-clip-marquee:after{animation:none}}.aqsp-col-resize-strip{cursor:col-resize;height:100%;position:absolute;top:0}.aqsp-row-resize-strip{cursor:row-resize;position:absolute;left:0;right:0}.aqsp-col-header .aqsp-unhide-marker{cursor:col-resize;opacity:.7;background:repeating-linear-gradient(90deg,#2563eb 0 1px,#0000 1px 3px);height:100%;position:absolute;top:0}.aqsp-row-header .aqsp-unhide-marker{cursor:row-resize;opacity:.7;background:repeating-linear-gradient(#2563eb 0 1px,#0000 1px 3px);position:absolute;left:0;right:0}.aqsp-resize-guide{pointer-events:none;background:#2563eb;position:absolute;top:0;left:0}.aqsp-autofill-handle{box-sizing:content-box;pointer-events:auto;cursor:crosshair;background:#2563eb;border:1px solid #fff;width:6px;height:6px;position:absolute;top:0;left:0}.aqsp-autofill-preview{border:1px dashed #16a34a;position:absolute;top:0;left:0}@media (forced-colors:active){.aqsp-band{outline-offset:-2px;background:0 0;outline:2px solid highlight}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after,.aqsp-cell[data-aqsp-invalid]:before{border:1px solid canvastext;width:6px;height:6px}.aqsp-drag-rect[data-aqsp-drag-mode=point]{background:0 0;border-color:highlight}.aqsp-selection-fill{outline-offset:-2px;background:0 0;border:none;outline:2px solid highlight}.aqsp-clip-marquee:after{background-image:none;border:2px dashed highlight;animation:none}}.aqsp-col-header-cell[data-aqsp-in-selection],.aqsp-row-header-cell[data-aqsp-in-selection]{color:#1d4ed8;background:#dbeafe;font-weight:600}.aqsp-live-region{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqsp-sink{opacity:0;resize:none;pointer-events:auto;cursor:default;border:0;width:1px;height:1px;padding:0;position:absolute}.aqsp-sink[data-aqsp-editing]{opacity:1;z-index:1;box-sizing:border-box;color:#1f2937;caret-color:#1f2937;white-space:pre;outline-offset:-2px;cursor:text;background:#fff;outline:2px solid #2563eb;padding:0 4px;font-family:inherit;font-size:13px;line-height:1;overflow:hidden}.aqsp-sink[data-aqsp-pointing]{caret-color:#16a34a}.aqsp-popover-layer{pointer-events:none;position:absolute;inset:0;overflow:visible}.aqsp-popover-anchor{pointer-events:none;position:absolute;top:0;left:0}.aqsp-popover-anchor[inert]{visibility:hidden}.aqsp-popover{color:#1f2937;text-align:start;white-space:normal;cursor:default;pointer-events:auto;background:#fff;border:1px solid #d1d5db;border-radius:8px;flex-direction:column;width:320px;max-width:320px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans JP,sans-serif;font-size:13px;line-height:1.4;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 2px #00000014,0 8px 24px #00000024}.aqsp-popover:focus-visible{outline-offset:-2px;outline:2px solid #2563eb}.aqsp-popover[data-aqsp-popover-frame=note-tip]{background:#fffbeb;border-color:#f59e0b;box-shadow:0 2px 8px #0000001f}.aqsp-popover-note,.aqsp-popover-comment,.aqsp-popover-link,.aqsp-popover-message{flex-direction:column;min-height:0;padding:10px 12px;display:flex}.aqsp-popover-list{flex-direction:column;min-height:0;padding:6px;display:flex}.aqsp-popover-note-tip{overscroll-behavior:contain;white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;padding:8px 10px;overflow-y:auto}[data-aqsp-popover][data-aqsp-popover-rejected]{border-inline-start:3px solid #dc2626;padding-inline-start:9px}.aqsp-popover-title{color:#374151;align-items:baseline;gap:6px;margin:0 0 6px;font-size:12px;font-weight:600;display:flex}.aqsp-popover-count{color:#6b7280;font-weight:400}.aqsp-popover-textarea,.aqsp-popover-input{width:100%;color:inherit;font:inherit;background:#fff;border:1px solid #d1d5db;border-radius:6px;margin:0;padding:5px 8px;line-height:1.4;display:block}.aqsp-popover-textarea{resize:none;white-space:pre-wrap;flex:auto;height:104px;min-height:56px;overflow:auto}.aqsp-popover-comment .aqsp-popover-textarea{flex:none;height:64px}.aqsp-popover-input{flex:none;height:28px}.aqsp-popover-textarea:focus-visible,.aqsp-popover-input:focus-visible{outline-offset:-1px;border-color:#2563eb;outline:2px solid #2563eb}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-color:#dc2626}.aqsp-popover-textarea[aria-invalid=true]:focus-visible,.aqsp-popover-input[aria-invalid=true]:focus-visible{border-color:#dc2626;outline-color:#dc2626}.aqsp-popover-hint{color:#6b7280;margin:4px 0 0;font-size:12px}[data-aqsp-popover-rejected] .aqsp-popover-hint{color:#b91c1c}.aqsp-popover-field{flex-direction:column;flex:none;gap:3px;margin:0 0 8px;display:flex}.aqsp-popover-field-label{color:#6b7280;font-size:12px}.aqsp-popover-actions{flex:none;align-items:center;gap:6px;margin-top:8px;display:flex}.aqsp-popover-button{color:#1f2937;min-width:56px;height:26px;font:inherit;cursor:pointer;background:#f9fafb;border:1px solid #d1d5db;border-radius:6px;justify-content:center;align-items:center;margin:0;padding:0 10px;font-size:12px;font-weight:500;line-height:1;display:inline-flex}.aqsp-popover-button:not(:disabled):hover{background:#f3f4f6;border-color:#9ca3af}.aqsp-popover-button:focus-visible{outline-offset:1px;outline:2px solid #2563eb}.aqsp-popover-button:disabled{opacity:.5;cursor:not-allowed}.aqsp-popover-button[data-aqsp-popover-save],.aqsp-popover-button[data-aqsp-popover-post]{color:#fff;background:#2563eb;border-color:#2563eb}.aqsp-popover-button[data-aqsp-popover-save]:not(:disabled):hover,.aqsp-popover-button[data-aqsp-popover-post]:not(:disabled):hover{background:#1d4ed8;border-color:#1d4ed8}.aqsp-popover-button[data-aqsp-popover-close]{color:#6b7280;background:0 0;border-color:#0000;width:26px;min-width:0;margin-inline-start:auto;padding:0;font-size:16px;font-weight:400}.aqsp-popover-button[data-aqsp-popover-close]:not(:disabled):hover{color:#1f2937;background:#f3f4f6;border-color:#0000}.aqsp-popover-thread{overscroll-behavior:contain;flex:auto;min-height:48px;max-height:220px;margin:0 0 8px;padding:0;list-style:none;overflow-y:auto}.aqsp-popover-comment-item{border-top:1px solid #f3f4f6;padding:6px 0}.aqsp-popover-comment-item:first-child{border-top:0;padding-top:0}.aqsp-popover-comment-author{color:#111827;font-size:12px;font-weight:600}.aqsp-popover-comment-time{color:#6b7280;font-variant-numeric:tabular-nums;margin-inline-start:6px;font-size:11px}.aqsp-popover-comment-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}.aqsp-popover-list .aqsp-popover-input{margin-bottom:4px}.aqsp-popover-options{overscroll-behavior:contain;flex:auto;min-height:0;max-height:240px;overflow-y:auto}.aqsp-popover-option{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:4px;padding:5px 8px;overflow:hidden}.aqsp-popover-option:hover{background:#f3f4f6}.aqsp-popover-option[aria-selected=true]{color:#1e3a8a;background:#dbeafe}.aqsp-popover-option:focus-visible{outline-offset:-2px;outline:2px solid #2563eb}.aqsp-popover-empty{color:#6b7280;padding:6px 8px;font-size:12px}.aqsp-popover-message{padding-inline-end:40px;position:relative}.aqsp-popover-message .aqsp-popover-title{margin-bottom:2px}.aqsp-popover-message-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.aqsp-popover-message .aqsp-popover-button[data-aqsp-popover-close]{position:absolute;inset-block-start:6px;inset-inline-end:6px}.aqsp-popover-message[data-aqsp-popover-rejected]{background:#fef2f2}.aqsp-popover-message[data-aqsp-popover-rejected] .aqsp-popover-title{color:#b91c1c}@media (forced-colors:active){.aqsp-popover-option:hover,.aqsp-popover-option[aria-selected=true]{outline-offset:-2px;outline:2px solid highlight}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-style:dashed}.aqsp-popover-button[data-aqsp-popover-close]{border-color:buttontext}}[data-aqsp-empty]{width:100%;height:100%;display:block}.aqsp-freeze-divider{background:var(--aqsp-divider-color,#9ca3af);pointer-events:none;position:absolute}.aqsp-freeze-divider-v{width:var(--aqsp-divider-width,2px)}.aqsp-freeze-divider-h{height:var(--aqsp-divider-width,2px)}@media (forced-colors:active){.aqsp-freeze-divider{background:canvastext}}}
|
|
2
|
+
@layer components{.aqsp-root,.aqsp-root *,.aqsp-root :before,.aqsp-root :after{box-sizing:border-box}.aqsp-root{--_aqsp-row-header-width:var(--aqsp-row-header-width,64px);--_aqsp-col-header-height:var(--aqsp-col-header-height,24px);--_aqsp-font-size:var(--aqsp-font-size,.8125rem);--_aqsp-font-size-small:calc(var(--_aqsp-font-size) * 12 / 13);--_aqsp-font-size-x-small:calc(var(--_aqsp-font-size) * 11 / 13);--_aqsp-font-size-glyph:calc(var(--_aqsp-font-size) * 16 / 13);--_aqsp-editor-font-size:var(--_aqsp-font-size);--_aqsp-surface:var(--aqsp-surface,#fff);--_aqsp-text:var(--aqsp-text,#1f2937);--_aqsp-grid-line:var(--aqsp-grid-line,#e5e7eb);--_aqsp-border:var(--aqsp-border,#d1d5db);--_aqsp-input-border:var(--aqsp-input-border,#8b95a4);--_aqsp-accent:var(--aqsp-accent,#2563eb);--_aqsp-header-surface:var(--aqsp-header-surface,#f3f4f6);--_aqsp-header-text:var(--aqsp-header-text,#4a5361);--_aqsp-header-selected-surface:var(--aqsp-header-selected-surface,#dbeafe);--_aqsp-header-selected-text:var(--aqsp-header-selected-text,#1841b4);--_aqsp-header-row-surface:var(--aqsp-header-row-surface,#f3f4f6);--_aqsp-header-row-text:var(--aqsp-header-row-text,#1f2937);--_aqsp-header-row-font-weight:var(--aqsp-header-row-font-weight,700);--_aqsp-link:var(--aqsp-link,#163ba5);--_aqsp-note-marker:var(--aqsp-note-marker,#4b5563);--_aqsp-comment-marker:var(--aqsp-comment-marker,#eb6406);--_aqsp-danger:var(--aqsp-danger,#dc2626);--_aqsp-danger-fill:var(--aqsp-danger-fill,#dc262614);--_aqsp-danger-text:var(--aqsp-danger-text,#a41919);--_aqsp-danger-surface:var(--aqsp-danger-surface,#fef2f2);--_aqsp-selection-fill:var(--aqsp-selection-fill,#3b82f62e);--_aqsp-selection-border:var(--aqsp-selection-border,#2563ebd9);--_aqsp-drag-fill:var(--aqsp-drag-fill,#3b82f61a);--_aqsp-reference:var(--aqsp-reference,#16a24a);--_aqsp-reference-fill:var(--aqsp-reference-fill,#16a34a14);--_aqsp-fill-preview:var(--aqsp-fill-preview,#16a24a);--_aqsp-divider-color:var(--aqsp-divider-color,#858e9d);--_aqsp-popover-shadow:var(--aqsp-popover-shadow,0 1px 2px #00000014, 0 8px 24px #00000024);--_aqsp-note-tip-surface:var(--aqsp-note-tip-surface,#fffbeb);--_aqsp-note-tip-border:var(--aqsp-note-tip-border,#f59e0b);--_aqsp-note-tip-shadow:var(--aqsp-note-tip-shadow,0 2px 8px #0000001f);--_aqsp-title-text:var(--aqsp-title-text,#374151);--_aqsp-muted-text:var(--aqsp-muted-text,#4e535e);--_aqsp-strong-text:var(--aqsp-strong-text,#111827);--_aqsp-separator:var(--aqsp-separator,#f3f4f6);--_aqsp-button-surface:var(--aqsp-button-surface,#f9fafb);--_aqsp-hover-surface:var(--aqsp-hover-surface,#f3f4f6);--_aqsp-hover-border:var(--aqsp-hover-border,#9ca3af);--_aqsp-primary-surface:var(--aqsp-primary-surface,#134dce);--_aqsp-primary-hover-surface:var(--aqsp-primary-hover-surface,#173faf);--_aqsp-primary-text:var(--aqsp-primary-text,#fff);--_aqsp-option-selected-surface:var(--aqsp-option-selected-surface,#dbeafe);--_aqsp-option-selected-text:var(--aqsp-option-selected-text,#1e3a8a);background:var(--_aqsp-surface);width:100%;height:100%;color:var(--_aqsp-text);font-size:var(--_aqsp-font-size);line-height:1;position:relative;overflow:hidden}@media (pointer:coarse){.aqsp-root{--_aqsp-editor-font-size:max(1rem, 16px)}}.aqsp-zoom{grid-template-columns:var(--_aqsp-row-header-width) minmax(0, 1fr);grid-template-rows:var(--_aqsp-col-header-height) minmax(0, 1fr);transform-origin:0 0;width:100%;height:100%;display:grid}.aqsp-corner{border-right:1px solid var(--_aqsp-border);border-bottom:1px solid var(--_aqsp-border);background:var(--_aqsp-header-surface);grid-area:1/1}.aqsp-col-header{border-bottom:1px solid var(--_aqsp-border);background:var(--_aqsp-header-surface);-webkit-user-select:none;user-select:none;grid-area:1/2;position:relative;overflow:hidden}.aqsp-col-header-scroll{height:100%;position:absolute;top:0;right:0;overflow:hidden}.aqsp-row-header-scroll{width:100%;position:absolute;bottom:0;left:0;overflow:hidden}.aqsp-col-header-track{will-change:transform;position:absolute;inset:0}.aqsp-col-header-cell{border-right:1px solid var(--_aqsp-grid-line);white-space:nowrap;height:100%;color:var(--_aqsp-header-text);justify-content:center;align-items:center;display:flex;position:absolute;top:0;overflow:hidden}.aqsp-row-header{border-right:1px solid var(--_aqsp-border);background:var(--_aqsp-header-surface);-webkit-user-select:none;user-select:none;grid-area:2/1;position:relative;overflow:hidden}.aqsp-row-header-track{will-change:transform;position:absolute;top:0;left:0;right:0}.aqsp-row-header-cell{border-bottom:1px solid var(--_aqsp-grid-line);white-space:nowrap;color:var(--_aqsp-header-text);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;padding-right:6px;display:flex;position:absolute;left:0;right:0;overflow:hidden}.aqsp-body{position:absolute;inset:0}.aqsp-row{cursor:default}.aqsp-cell{border-right:1px solid var(--_aqsp-grid-line);border-bottom:1px solid var(--_aqsp-grid-line);white-space:nowrap;background:var(--_aqsp-surface);align-items:center;padding:0 4px;display:flex}.aqsp-cell[data-aqsp-header-row]{background:var(--_aqsp-header-row-surface);color:var(--_aqsp-header-row-text);font-weight:var(--_aqsp-header-row-font-weight)}.aqsp-cell[data-aqsp-valign=top]{align-items:flex-start}.aqsp-cell[data-aqsp-valign=bottom]{align-items:flex-end}.aqsp-cell[data-aqsp-wrap]{white-space:pre-wrap;overflow-wrap:anywhere}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after{content:"";border:5px solid #0000;border-top-color:var(--_aqsp-note-marker);border-right-color:var(--_aqsp-note-marker);pointer-events:none;width:0;height:0;position:absolute;top:0;right:0}.aqsp-cell[data-aqsp-comment]:after{border-top-color:var(--_aqsp-comment-marker);border-right-color:var(--_aqsp-comment-marker)}.aqsp-cell[data-aqsp-invalid]:before{content:"";border:5px solid #0000;border-bottom-color:var(--_aqsp-danger);border-left-color:var(--_aqsp-danger);pointer-events:none;width:0;height:0;position:absolute;bottom:0;left:0}.aqsp-cell[data-aqsp-link]{color:var(--_aqsp-link);text-decoration:underline}.aqsp-body-stack{grid-area:2/2;position:relative}.aqsp-overlay{--_aqsp-band-row:var(--aqsp-band-row,#0084ff);--_aqsp-band-column:var(--aqsp-band-column,#42ff4f);--_aqsp-band-intersection:var(--aqsp-band-intersection,#e1ff00);--_aqsp-band-opacity:var(--aqsp-band-opacity,.2);pointer-events:none;position:absolute;inset:0;overflow:hidden}.aqsp-overlay-quad{pointer-events:none;position:absolute;overflow:hidden}.aqsp-selection-fill{background:var(--_aqsp-selection-fill);border:1px solid var(--_aqsp-selection-border);mix-blend-mode:multiply;position:absolute;top:0;left:0}.aqsp-active-frame{border:2px solid var(--_aqsp-accent);box-sizing:border-box;position:absolute;top:0;left:0}.aqsp-drag-rect{border:1px solid var(--_aqsp-accent);background:var(--_aqsp-drag-fill);position:absolute;top:0;left:0}.aqsp-drag-rect[data-aqsp-drag-mode=subtract]{border:1px dashed var(--_aqsp-danger);background:var(--_aqsp-danger-fill)}.aqsp-drag-rect[data-aqsp-drag-mode=point]{border:1px dashed var(--_aqsp-reference);background:var(--_aqsp-reference-fill)}.aqsp-band{opacity:var(--_aqsp-band-opacity);pointer-events:none;position:absolute;top:0;left:0}.aqsp-band[data-aqsp-band=row]{background:var(--_aqsp-band-row)}.aqsp-band[data-aqsp-band=column]{background:var(--_aqsp-band-column)}.aqsp-band[data-aqsp-band=intersection]{background:var(--_aqsp-band-intersection)}.aqsp-clip-marquee{position:absolute;top:0;left:0}.aqsp-clip-marquee:after{content:"";top:var(--aqsp-clip-outset-top,-3px);right:var(--aqsp-clip-outset-right,-3px);bottom:var(--aqsp-clip-outset-bottom,-3px);left:var(--aqsp-clip-outset-left,-3px);background-image:linear-gradient(90deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%), linear-gradient(90deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%), linear-gradient(0deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%), linear-gradient(0deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%);background-position:0 0,8px 100%,0 8px,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:8px 2px,8px 2px,2px 8px,2px 8px;animation:.4s linear infinite aqsp-marching-ants;position:absolute}@keyframes aqsp-marching-ants{to{background-position:8px 0,0 100%,0 0,100% 8px}}@media (prefers-reduced-motion:reduce){.aqsp-clip-marquee:after{animation:none}}.aqsp-col-resize-strip{cursor:col-resize;height:100%;position:absolute;top:0}.aqsp-row-resize-strip{cursor:row-resize;position:absolute;left:0;right:0}.aqsp-col-header .aqsp-unhide-marker{cursor:col-resize;background:repeating-linear-gradient(90deg, var(--_aqsp-accent) 0 1px, transparent 1px 3px);height:100%;position:absolute;top:0}.aqsp-row-header .aqsp-unhide-marker{cursor:row-resize;background:repeating-linear-gradient(180deg, var(--_aqsp-accent) 0 1px, transparent 1px 3px);position:absolute;left:0;right:0}.aqsp-resize-guide{background:var(--_aqsp-accent);pointer-events:none;position:absolute;top:0;left:0}.aqsp-autofill-handle{background:var(--_aqsp-accent);border:1px solid var(--_aqsp-surface);box-sizing:content-box;pointer-events:auto;cursor:crosshair;width:6px;height:6px;position:absolute;top:0;left:0}.aqsp-autofill-preview{border:1px dashed var(--_aqsp-fill-preview);position:absolute;top:0;left:0}@media (forced-colors:active){.aqsp-band{outline-offset:-2px;background:0 0;outline:2px solid highlight}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after,.aqsp-cell[data-aqsp-invalid]:before{border:1px solid canvastext;width:6px;height:6px}.aqsp-drag-rect[data-aqsp-drag-mode=point]{background:0 0;border-color:highlight}.aqsp-selection-fill{outline-offset:-2px;background:0 0;border:none;outline:2px solid highlight}.aqsp-clip-marquee:after{background-image:none;border:2px dashed highlight;animation:none}}.aqsp-col-header-cell[data-aqsp-in-selection],.aqsp-row-header-cell[data-aqsp-in-selection]{background:var(--_aqsp-header-selected-surface);color:var(--_aqsp-header-selected-text);font-weight:600}.aqsp-live-region{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqsp-sink{opacity:0;resize:none;pointer-events:auto;cursor:default;border:0;width:1px;height:1px;padding:0;position:absolute}.aqsp-sink[data-aqsp-editing]{opacity:1;z-index:1;box-sizing:border-box;background:var(--_aqsp-surface);color:var(--_aqsp-text);caret-color:var(--_aqsp-text);font-family:inherit;font-size:var(--_aqsp-editor-font-size);white-space:pre;outline:2px solid var(--_aqsp-accent);outline-offset:-2px;cursor:text;padding:0 4px;line-height:1;overflow:hidden}.aqsp-sink[data-aqsp-pointing]{caret-color:var(--_aqsp-reference)}.aqsp-popover-layer{pointer-events:none;position:absolute;inset:0;overflow:visible}.aqsp-popover-anchor{pointer-events:none;position:absolute;top:0;left:0}.aqsp-popover-anchor[inert]{visibility:hidden}.aqsp-popover{border:1px solid var(--_aqsp-border);background:var(--_aqsp-surface);width:320px;max-width:320px;color:var(--_aqsp-text);box-shadow:var(--_aqsp-popover-shadow);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans JP,sans-serif;font-size:var(--_aqsp-font-size);text-align:start;white-space:normal;cursor:default;pointer-events:auto;border-radius:8px;flex-direction:column;line-height:1.4;display:flex;position:absolute;overflow:hidden}.aqsp-popover:focus-visible{outline:2px solid var(--_aqsp-accent);outline-offset:-2px}.aqsp-popover[data-aqsp-popover-frame=note-tip]{border-color:var(--_aqsp-note-tip-border);background:var(--_aqsp-note-tip-surface);box-shadow:var(--_aqsp-note-tip-shadow)}.aqsp-popover-note,.aqsp-popover-comment,.aqsp-popover-link,.aqsp-popover-message{flex-direction:column;min-height:0;padding:10px 12px;display:flex}.aqsp-popover-list{flex-direction:column;min-height:0;padding:6px;display:flex}.aqsp-popover-note-tip{overscroll-behavior:contain;white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;padding:8px 10px;overflow-y:auto}[data-aqsp-popover][data-aqsp-popover-rejected]{border-inline-start:3px solid var(--_aqsp-danger);padding-inline-start:9px}.aqsp-popover-title{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-title-text);align-items:baseline;gap:6px;margin:0 0 6px;font-weight:600;display:flex}.aqsp-popover-count{color:var(--_aqsp-muted-text);font-weight:400}.aqsp-popover-textarea,.aqsp-popover-input{border:1px solid var(--_aqsp-input-border);background:var(--_aqsp-surface);width:100%;color:inherit;font:inherit;border-radius:6px;margin:0;padding:5px 8px;line-height:1.4;display:block}.aqsp-popover-textarea{resize:none;white-space:pre-wrap;flex:auto;height:104px;min-height:56px;overflow:auto}.aqsp-popover-comment .aqsp-popover-textarea{flex:none;height:64px}.aqsp-popover-input{flex:none;height:28px}.aqsp-popover-textarea:focus-visible,.aqsp-popover-input:focus-visible{border-color:var(--_aqsp-accent);outline:2px solid var(--_aqsp-accent);outline-offset:-1px}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-color:var(--_aqsp-danger)}.aqsp-popover-textarea[aria-invalid=true]:focus-visible,.aqsp-popover-input[aria-invalid=true]:focus-visible{border-color:var(--_aqsp-danger);outline-color:var(--_aqsp-danger)}.aqsp-popover-hint{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-muted-text);margin:4px 0 0}[data-aqsp-popover-rejected] .aqsp-popover-hint{color:var(--_aqsp-danger-text)}.aqsp-popover-field{flex-direction:column;flex:none;gap:3px;margin:0 0 8px;display:flex}.aqsp-popover-field-label{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-muted-text)}.aqsp-popover-actions{flex:none;align-items:center;gap:6px;margin-top:8px;display:flex}.aqsp-popover-button{border:1px solid var(--_aqsp-border);background:var(--_aqsp-button-surface);min-width:56px;height:26px;color:var(--_aqsp-text);font:inherit;font-size:var(--_aqsp-font-size-small);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;margin:0;padding:0 10px;font-weight:500;line-height:1;display:inline-flex}.aqsp-popover-button:not(:disabled):hover{border-color:var(--_aqsp-hover-border);background:var(--_aqsp-hover-surface)}.aqsp-popover-button:focus-visible{outline:2px solid var(--_aqsp-accent);outline-offset:1px}.aqsp-popover-button:disabled{opacity:.5;cursor:not-allowed}.aqsp-popover-button[data-aqsp-popover-save],.aqsp-popover-button[data-aqsp-popover-post]{border-color:var(--_aqsp-primary-surface);background:var(--_aqsp-primary-surface);color:var(--_aqsp-primary-text)}.aqsp-popover-button[data-aqsp-popover-save]:not(:disabled):hover,.aqsp-popover-button[data-aqsp-popover-post]:not(:disabled):hover{border-color:var(--_aqsp-primary-hover-surface);background:var(--_aqsp-primary-hover-surface)}.aqsp-popover-button[data-aqsp-popover-close]{width:26px;min-width:0;color:var(--_aqsp-muted-text);font-size:var(--_aqsp-font-size-glyph);background:0 0;border-color:#0000;margin-inline-start:auto;padding:0;font-weight:400}.aqsp-popover-button[data-aqsp-popover-close]:not(:disabled):hover{background:var(--_aqsp-hover-surface);color:var(--_aqsp-text);border-color:#0000}.aqsp-popover-thread{overscroll-behavior:contain;flex:auto;min-height:48px;max-height:220px;margin:0 0 8px;padding:0;list-style:none;overflow-y:auto}.aqsp-popover-comment-item{border-top:1px solid var(--_aqsp-separator);padding:6px 0}.aqsp-popover-comment-item:first-child{border-top:0;padding-top:0}.aqsp-popover-comment-author{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-strong-text);font-weight:600}.aqsp-popover-comment-time{font-size:var(--_aqsp-font-size-x-small);color:var(--_aqsp-muted-text);font-variant-numeric:tabular-nums;margin-inline-start:6px}.aqsp-popover-comment-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}.aqsp-popover-list .aqsp-popover-input{margin-bottom:4px}.aqsp-popover-options{overscroll-behavior:contain;flex:auto;min-height:0;max-height:240px;overflow-y:auto}.aqsp-popover-option{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:4px;padding:5px 8px;overflow:hidden}.aqsp-popover-option:hover{background:var(--_aqsp-hover-surface)}.aqsp-popover-option[aria-selected=true]{background:var(--_aqsp-option-selected-surface);color:var(--_aqsp-option-selected-text)}.aqsp-popover-option:focus-visible{outline:2px solid var(--_aqsp-accent);outline-offset:-2px}.aqsp-popover-empty{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-muted-text);padding:6px 8px}.aqsp-popover-message{padding-inline-end:40px;position:relative}.aqsp-popover-message .aqsp-popover-title{margin-bottom:2px}.aqsp-popover-message-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.aqsp-popover-message .aqsp-popover-button[data-aqsp-popover-close]{position:absolute;inset-block-start:6px;inset-inline-end:6px}.aqsp-popover-message[data-aqsp-popover-rejected]{background:var(--_aqsp-danger-surface)}.aqsp-popover-message[data-aqsp-popover-rejected] .aqsp-popover-title{color:var(--_aqsp-danger-text)}@media (forced-colors:active){.aqsp-popover-option:hover,.aqsp-popover-option[aria-selected=true]{outline-offset:-2px;outline:2px solid highlight}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-style:dashed}.aqsp-popover-button[data-aqsp-popover-close]{border-color:buttontext}}[data-aqsp-empty]{width:100%;height:100%;display:block}.aqsp-freeze-divider{background:var(--_aqsp-divider-color);pointer-events:none;position:absolute}.aqsp-freeze-divider-v{width:var(--aqsp-divider-width,2px)}.aqsp-freeze-divider-h{height:var(--aqsp-divider-width,2px)}@media (forced-colors:active){.aqsp-freeze-divider{background:canvastext}}}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
2
|
/*! @aiquants/spreadsheet standalone CSS — 非 Tailwind ホスト専用。ホストの Tailwind ビルドと混在させないこと */
|
|
3
|
-
@layer theme,base;@layer components{@layer components{.aqvs-scroll-pane{display:flex;position:relative}.aqvs-scroll-pane[data-self-measured=true],.aqvs-scroll-pane[data-aqvs-stretched-viewport=true]{height:100%}.aqvs-scroll-pane-content{box-sizing:border-box;flex:1;height:100%;position:relative;overflow:hidden}.aqvs-scroll-pane-content-overlay{box-sizing:border-box;padding:inherit;pointer-events:none;position:absolute;inset:0}.aqvs-scroll-pane-content-overlay-box{height:100%;position:relative;overflow:hidden}.aqvs-tap-scroll-circle{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;transition-property:transform;transition-duration:.1s;transition-timing-function:cubic-bezier(0,0,.2,1);display:flex;position:relative}.aqvs-tap-scroll-circle-visual-outer{border-radius:9999px;position:absolute;inset:0}.aqvs-tap-scroll-circle-gradient{background:linear-gradient(to bottom right,#1d4ed899,#60a5fa8c,#bfdbfe66);border:1px solid #fff6;border-radius:9999px;position:absolute;inset:0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-tap-scroll-circle-inner{border-radius:9999px;position:absolute;inset:18%}.aqvs-sample-visual-pupil{box-sizing:border-box;background-color:#ffffffd9;border:1px solid #ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-highlight{background-color:#fffc;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-rod{background-color:#ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-scrollbar{z-index:50;cursor:default;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;background-color:#fff;position:relative}.aqvs-scrollbar-horizontal{flex-direction:row;align-items:stretch;display:flex}.aqvs-scrollbar-vertical{flex-direction:column;align-items:stretch;display:flex}.aqvs-scrollbar[data-visible=false],.aqvs-scrollbar-thumb-wrapper[data-visible=false]{opacity:0;pointer-events:none}.aqvs-scrollbar-track:focus-visible,.aqvs-scroll-pane-content:focus-visible{outline:none}.aqvs-scrollbar-track:focus-visible:after,.aqvs-scroll-pane-content:focus-visible:not([data-aqvs-active-item=visible]):after{content:"";outline:2px solid var(--aqvs-focus-ring-color,#2563eb);outline-offset:-2px;pointer-events:none;position:absolute;inset:0}.aqvs-scrollbar-tap-circle-wrapper{pointer-events:auto;transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);position:absolute}.aqvs-scrollbar-arrow-button{color:#313131;background-color:#e0e0e0;border:0 solid;justify-content:center;align-items:center;padding:0;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:flex}.aqvs-scrollbar-arrow-button:focus{outline-offset:2px;outline:2px solid #0000}.aqvs-scrollbar-arrow-button:disabled{cursor:not-allowed;opacity:.5}.aqvs-scrollbar-arrow-button:enabled:hover{background-color:#d4d4d4}.aqvs-scrollbar-arrow-button:enabled:focus-visible{color:#fff;background-color:#2563eb;outline:none}.aqvs-scrollbar-track{background-color:#f5f5f5;flex:1;position:relative}.aqvs-scrollbar-overlay{pointer-events:none;position:absolute;inset:0}.aqvs-scrollbar-thumb-wrapper{touch-action:none;position:absolute}.aqvs-scrollbar-thumb{transform-origin:50%;background-color:#7f7f7f;transition:transform 80ms ease-out;position:absolute}.aqvs-scrollbar-thumb[data-thumb-state=disabled]{transition:none;transform:none}.aqvs-scrollbar-thumb[data-thumb-state=hover]{background-color:#5f5f5f}.aqvs-scrollbar-thumb[data-thumb-state=dragging]{background-color:#4f4f4f;transition:transform 60ms ease-out}.aqvs-scrollbar-thumb-horizontal{inset:1.5px 0}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=hover]{top:-.5px;bottom:-.5px;transform:scaleY(1.06)}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=dragging]{top:-.5px;bottom:-.5px;transform:scaleY(1.12)}.aqvs-scrollbar-thumb-vertical{inset:0 1.5px}.aqvs-scrollbar-thumb-vertical[data-thumb-state=hover]{left:-.5px;right:-.5px;transform:scaleX(1.06)}.aqvs-scrollbar-thumb-vertical[data-thumb-state=dragging]{left:-.5px;right:-.5px;transform:scaleX(1.12)}.aqvs-scroll-to-edge-button{isolation:isolate;pointer-events:auto;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;box-sizing:border-box;min-width:44px;min-height:44px;font-family:inherit;font-weight:500;font-size:var(--aqvs-font-size-body,.8125rem);line-height:var(--aqvs-line-height-body,1.25rem);color:#fff;text-transform:uppercase;letter-spacing:.05em;background-color:#0000;border:0 solid;justify-content:center;align-items:center;padding:12px 3rem;display:inline-flex;position:relative;transform:none}.aqvs-scroll-to-edge-button:before{content:"";z-index:-1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1f2937cc;border-radius:9999px;transition-property:transform,background-color;transition-duration:.15s;position:absolute;inset:8px 0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-scroll-to-edge-button:focus{outline-offset:2px;outline:2px solid #0000}.aqvs-scroll-to-edge-button:focus-visible{outline:none}.aqvs-scroll-to-edge-button:focus-visible:before{outline:2px solid var(--aqvs-focus-ring-color,#2563eb);outline-offset:1px}.aqvs-scroll-to-edge-button:hover:before{background-color:#374151}.aqvs-scroll-to-edge-button:active:before{transform:scale(.95)}.aqvs-scroll-to-edge-overlay{pointer-events:none;z-index:10;transition-property:opacity;transition-duration:.5s;position:absolute;inset:0}.aqvs-scroll-to-edge-overlay[data-visible=true]{opacity:1}.aqvs-scroll-to-edge-overlay[data-visible=false]{opacity:0}.aqvs-scroll-to-edge-overlay[data-visible=false] .aqvs-scroll-to-edge-button{pointer-events:none}.aqvs-scroll-to-edge-button-container{justify-content:center;display:flex;position:absolute;left:0;right:0}.aqvs-scroll-to-edge-button-container-top{top:0}.aqvs-scroll-to-edge-button-container-bottom{bottom:0}.aqvs-no-items-container{width:100%;position:absolute;top:0}.aqvs-no-items-text{text-align:center;color:#6b7280}.aqvs-item-container,.aqvs-bottom-inset{width:100%;position:absolute}.aqvs-items-boundary{contain:size layout style;height:0;position:absolute;top:0;left:0;right:0}.aqvs-items-wrapper{width:100%;position:absolute}.aqvs-live-region{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqvs-grid{grid-template-rows:minmax(0,1fr) auto;width:100%;height:100%;display:grid;position:relative;overflow:hidden}.aqvs-grid-has-frozen-rows{grid-template-rows:auto minmax(0,1fr) auto}.aqvs-grid-has-trailing-rows{grid-template-rows:minmax(0,1fr) auto auto}.aqvs-grid-has-frozen-rows.aqvs-grid-has-trailing-rows{grid-template-rows:auto minmax(0,1fr) auto auto}.aqvs-grid-frozen-rows{min-width:0;position:relative;overflow:hidden}.aqvs-grid-frozen-band-row{position:absolute;left:0;overflow:hidden}.aqvs-grid-trailing-rows{min-width:0;position:relative;overflow:hidden}.aqvs-grid-trailing-rows-inner{position:absolute;bottom:0;left:0;right:0}.aqvs-grid-trailing-band-row{position:absolute;left:0;overflow:hidden}.aqvs-grid-main{min-width:0;min-height:0;position:relative}.aqvs-grid-row{width:100%;height:100%;transform:translateX(var(--aqvs-grid-hx-residual,0px));position:relative;overflow:visible}.aqvs-grid-cell{height:100%;position:absolute;top:0;overflow:hidden}.aqvs-grid-row.aqvs-grid-row-frozen-host{transform:none}.aqvs-grid-row-scroll{height:100%;top:0;left:var(--aqvs-grid-frozen-width,0px);right:var(--aqvs-grid-trailing-width,0px);position:absolute;overflow:hidden}.aqvs-grid-row-scroll-inner{width:100%;height:100%;transform:translateX(calc(var(--aqvs-grid-hx-residual,0px) - var(--aqvs-grid-frozen-width,0px)));position:absolute;top:0;left:0}.aqvs-grid-row-trailing{height:100%;top:0;left:max(var(--aqvs-grid-frozen-width,0px), calc(100% - var(--aqvs-grid-trailing-width,0px)));position:absolute;right:0;overflow:hidden}.aqvs-grid-row-trailing-inner{height:100%;width:var(--aqvs-grid-trailing-width,0px);position:absolute;top:0;right:0}.aqvs-grid-hbar-strip{min-width:0;padding-left:var(--aqvs-grid-frozen-width,0px);position:relative}.aqvs-grid-live-region{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqvs-grid-tap-circle-wrapper{z-index:50;pointer-events:auto;position:absolute}.aqvs-grid-tap-circle{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (forced-colors:active){.aqvs-tap-scroll-circle{outline-offset:-1px;border-radius:50%;outline:1px solid canvastext}.aqvs-scrollbar,.aqvs-scrollbar-track{outline-offset:-1px;outline:1px solid graytext}.aqvs-scrollbar-thumb{forced-color-adjust:none;background-color:canvastext}.aqvs-scrollbar-thumb[data-thumb-state=hover],.aqvs-scrollbar-thumb[data-thumb-state=dragging]{background-color:highlight}.aqvs-scrollbar-thumb[data-thumb-state=disabled]{background-color:graytext}.aqvs-scrollbar-arrow-button:enabled:focus-visible{forced-color-adjust:none;color:highlighttext;background-color:highlight}.aqvs-sample-visual-highlight,.aqvs-sample-visual-rod{forced-color-adjust:none;background-color:canvastext}.aqvs-scroll-to-edge-button:before{border:1px solid buttontext}}@media (prefers-reduced-motion:reduce){.aqvs-tap-scroll-circle,.aqvs-tap-scroll-circle *,.aqvs-grid-tap-circle,.aqvs-scrollbar-tap-circle-wrapper,.aqvs-scrollbar-arrow-button,.aqvs-scrollbar-thumb,.aqvs-scroll-to-edge-button:before,.aqvs-scroll-to-edge-overlay{transition:none!important;animation:none!important}}}.aqsp-root,.aqsp-root *,.aqsp-root :before,.aqsp-root :after{box-sizing:border-box}.aqsp-root{--aqsp-row-header-width:64px;--aqsp-col-header-height:24px;--aqsp-band-row:#0084ff;--aqsp-band-column:#42ff4f;--aqsp-band-intersection:#e1ff00;--aqsp-band-opacity:.2;color:#1f2937;background:#fff;width:100%;height:100%;font-size:13px;line-height:1;position:relative;overflow:hidden}.aqsp-zoom{grid-template-columns:var(--aqsp-row-header-width) minmax(0, 1fr);grid-template-rows:var(--aqsp-col-header-height) minmax(0, 1fr);transform-origin:0 0;width:100%;height:100%;display:grid}.aqsp-corner{background:#f3f4f6;border-bottom:1px solid #d1d5db;border-right:1px solid #d1d5db;grid-area:1/1}.aqsp-col-header{-webkit-user-select:none;user-select:none;background:#f3f4f6;border-bottom:1px solid #d1d5db;grid-area:1/2;position:relative;overflow:hidden}.aqsp-col-header-scroll{height:100%;position:absolute;top:0;right:0;overflow:hidden}.aqsp-row-header-scroll{width:100%;position:absolute;bottom:0;left:0;overflow:hidden}.aqsp-col-header-track{will-change:transform;position:absolute;inset:0}.aqsp-col-header-cell{white-space:nowrap;color:#4b5563;border-right:1px solid #e5e7eb;justify-content:center;align-items:center;height:100%;display:flex;position:absolute;top:0;overflow:hidden}.aqsp-row-header{-webkit-user-select:none;user-select:none;background:#f3f4f6;border-right:1px solid #d1d5db;grid-area:2/1;position:relative;overflow:hidden}.aqsp-row-header-track{will-change:transform;position:absolute;top:0;left:0;right:0}.aqsp-row-header-cell{white-space:nowrap;color:#4b5563;font-variant-numeric:tabular-nums;border-bottom:1px solid #e5e7eb;justify-content:flex-end;align-items:center;padding-right:6px;display:flex;position:absolute;left:0;right:0;overflow:hidden}.aqsp-body{position:absolute;inset:0}.aqsp-row{cursor:default}.aqsp-cell{white-space:nowrap;background:#fff;border-bottom:1px solid #e5e7eb;border-right:1px solid #e5e7eb;align-items:center;padding:0 4px;display:flex}.aqsp-cell[data-aqsp-valign=top]{align-items:flex-start}.aqsp-cell[data-aqsp-valign=bottom]{align-items:flex-end}.aqsp-cell[data-aqsp-wrap]{white-space:pre-wrap;overflow-wrap:anywhere}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after{content:"";pointer-events:none;border:5px solid #4b5563;border-color:#4b5563 #4b5563 #0000 #0000;width:0;height:0;position:absolute;top:0;right:0}.aqsp-cell[data-aqsp-comment]:after{border-top-color:#f97316;border-right-color:#f97316}.aqsp-cell[data-aqsp-invalid]:before{content:"";pointer-events:none;border:5px solid #0000;border-color:#0000 #0000 #dc2626 #dc2626;width:0;height:0;position:absolute;bottom:0;left:0}.aqsp-cell[data-aqsp-link]{color:#1d4ed8;text-decoration:underline}.aqsp-body-stack{grid-area:2/2;position:relative}.aqsp-overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.aqsp-overlay-quad{pointer-events:none;position:absolute;overflow:hidden}.aqsp-selection-fill{mix-blend-mode:multiply;background:#3b82f62e;border:1px solid #2563ebd9;position:absolute;top:0;left:0}.aqsp-active-frame{box-sizing:border-box;border:2px solid #2563eb;position:absolute;top:0;left:0}.aqsp-drag-rect{background:#3b82f61a;border:1px solid #2563eb;position:absolute;top:0;left:0}.aqsp-drag-rect[data-aqsp-drag-mode=subtract]{background:#dc262614;border:1px dashed #dc2626}.aqsp-drag-rect[data-aqsp-drag-mode=point]{background:#16a34a14;border:1px dashed #16a34a}.aqsp-band{opacity:var(--aqsp-band-opacity);pointer-events:none;position:absolute;top:0;left:0}.aqsp-band[data-aqsp-band=row]{background:var(--aqsp-band-row)}.aqsp-band[data-aqsp-band=column]{background:var(--aqsp-band-column)}.aqsp-band[data-aqsp-band=intersection]{background:var(--aqsp-band-intersection)}.aqsp-clip-marquee{position:absolute;top:0;left:0}.aqsp-clip-marquee:after{content:"";top:var(--aqsp-clip-outset-top,-3px);right:var(--aqsp-clip-outset-right,-3px);bottom:var(--aqsp-clip-outset-bottom,-3px);left:var(--aqsp-clip-outset-left,-3px);background-image:linear-gradient(90deg,#2563eb 50%,#fff 50%),linear-gradient(90deg,#2563eb 50%,#fff 50%),linear-gradient(#fff 50%,#2563eb 50%),linear-gradient(#fff 50%,#2563eb 50%);background-position:0 0,8px 100%,0 8px,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:8px 2px,8px 2px,2px 8px,2px 8px;animation:.4s linear infinite aqsp-marching-ants;position:absolute}@keyframes aqsp-marching-ants{to{background-position:8px 0,0 100%,0 0,100% 8px}}@media (prefers-reduced-motion:reduce){.aqsp-clip-marquee:after{animation:none}}.aqsp-col-resize-strip{cursor:col-resize;height:100%;position:absolute;top:0}.aqsp-row-resize-strip{cursor:row-resize;position:absolute;left:0;right:0}.aqsp-col-header .aqsp-unhide-marker{cursor:col-resize;opacity:.7;background:repeating-linear-gradient(90deg,#2563eb 0 1px,#0000 1px 3px);height:100%;position:absolute;top:0}.aqsp-row-header .aqsp-unhide-marker{cursor:row-resize;opacity:.7;background:repeating-linear-gradient(#2563eb 0 1px,#0000 1px 3px);position:absolute;left:0;right:0}.aqsp-resize-guide{pointer-events:none;background:#2563eb;position:absolute;top:0;left:0}.aqsp-autofill-handle{box-sizing:content-box;pointer-events:auto;cursor:crosshair;background:#2563eb;border:1px solid #fff;width:6px;height:6px;position:absolute;top:0;left:0}.aqsp-autofill-preview{border:1px dashed #16a34a;position:absolute;top:0;left:0}@media (forced-colors:active){.aqsp-band{outline-offset:-2px;background:0 0;outline:2px solid highlight}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after,.aqsp-cell[data-aqsp-invalid]:before{border:1px solid canvastext;width:6px;height:6px}.aqsp-drag-rect[data-aqsp-drag-mode=point]{background:0 0;border-color:highlight}.aqsp-selection-fill{outline-offset:-2px;background:0 0;border:none;outline:2px solid highlight}.aqsp-clip-marquee:after{background-image:none;border:2px dashed highlight;animation:none}}.aqsp-col-header-cell[data-aqsp-in-selection],.aqsp-row-header-cell[data-aqsp-in-selection]{color:#1d4ed8;background:#dbeafe;font-weight:600}.aqsp-live-region{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqsp-sink{opacity:0;resize:none;pointer-events:auto;cursor:default;border:0;width:1px;height:1px;padding:0;position:absolute}.aqsp-sink[data-aqsp-editing]{opacity:1;z-index:1;box-sizing:border-box;color:#1f2937;caret-color:#1f2937;white-space:pre;outline-offset:-2px;cursor:text;background:#fff;outline:2px solid #2563eb;padding:0 4px;font-family:inherit;font-size:13px;line-height:1;overflow:hidden}.aqsp-sink[data-aqsp-pointing]{caret-color:#16a34a}.aqsp-popover-layer{pointer-events:none;position:absolute;inset:0;overflow:visible}.aqsp-popover-anchor{pointer-events:none;position:absolute;top:0;left:0}.aqsp-popover-anchor[inert]{visibility:hidden}.aqsp-popover{color:#1f2937;text-align:start;white-space:normal;cursor:default;pointer-events:auto;background:#fff;border:1px solid #d1d5db;border-radius:8px;flex-direction:column;width:320px;max-width:320px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans JP,sans-serif;font-size:13px;line-height:1.4;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 2px #00000014,0 8px 24px #00000024}.aqsp-popover:focus-visible{outline-offset:-2px;outline:2px solid #2563eb}.aqsp-popover[data-aqsp-popover-frame=note-tip]{background:#fffbeb;border-color:#f59e0b;box-shadow:0 2px 8px #0000001f}.aqsp-popover-note,.aqsp-popover-comment,.aqsp-popover-link,.aqsp-popover-message{flex-direction:column;min-height:0;padding:10px 12px;display:flex}.aqsp-popover-list{flex-direction:column;min-height:0;padding:6px;display:flex}.aqsp-popover-note-tip{overscroll-behavior:contain;white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;padding:8px 10px;overflow-y:auto}[data-aqsp-popover][data-aqsp-popover-rejected]{border-inline-start:3px solid #dc2626;padding-inline-start:9px}.aqsp-popover-title{color:#374151;align-items:baseline;gap:6px;margin:0 0 6px;font-size:12px;font-weight:600;display:flex}.aqsp-popover-count{color:#6b7280;font-weight:400}.aqsp-popover-textarea,.aqsp-popover-input{width:100%;color:inherit;font:inherit;background:#fff;border:1px solid #d1d5db;border-radius:6px;margin:0;padding:5px 8px;line-height:1.4;display:block}.aqsp-popover-textarea{resize:none;white-space:pre-wrap;flex:auto;height:104px;min-height:56px;overflow:auto}.aqsp-popover-comment .aqsp-popover-textarea{flex:none;height:64px}.aqsp-popover-input{flex:none;height:28px}.aqsp-popover-textarea:focus-visible,.aqsp-popover-input:focus-visible{outline-offset:-1px;border-color:#2563eb;outline:2px solid #2563eb}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-color:#dc2626}.aqsp-popover-textarea[aria-invalid=true]:focus-visible,.aqsp-popover-input[aria-invalid=true]:focus-visible{border-color:#dc2626;outline-color:#dc2626}.aqsp-popover-hint{color:#6b7280;margin:4px 0 0;font-size:12px}[data-aqsp-popover-rejected] .aqsp-popover-hint{color:#b91c1c}.aqsp-popover-field{flex-direction:column;flex:none;gap:3px;margin:0 0 8px;display:flex}.aqsp-popover-field-label{color:#6b7280;font-size:12px}.aqsp-popover-actions{flex:none;align-items:center;gap:6px;margin-top:8px;display:flex}.aqsp-popover-button{color:#1f2937;min-width:56px;height:26px;font:inherit;cursor:pointer;background:#f9fafb;border:1px solid #d1d5db;border-radius:6px;justify-content:center;align-items:center;margin:0;padding:0 10px;font-size:12px;font-weight:500;line-height:1;display:inline-flex}.aqsp-popover-button:not(:disabled):hover{background:#f3f4f6;border-color:#9ca3af}.aqsp-popover-button:focus-visible{outline-offset:1px;outline:2px solid #2563eb}.aqsp-popover-button:disabled{opacity:.5;cursor:not-allowed}.aqsp-popover-button[data-aqsp-popover-save],.aqsp-popover-button[data-aqsp-popover-post]{color:#fff;background:#2563eb;border-color:#2563eb}.aqsp-popover-button[data-aqsp-popover-save]:not(:disabled):hover,.aqsp-popover-button[data-aqsp-popover-post]:not(:disabled):hover{background:#1d4ed8;border-color:#1d4ed8}.aqsp-popover-button[data-aqsp-popover-close]{color:#6b7280;background:0 0;border-color:#0000;width:26px;min-width:0;margin-inline-start:auto;padding:0;font-size:16px;font-weight:400}.aqsp-popover-button[data-aqsp-popover-close]:not(:disabled):hover{color:#1f2937;background:#f3f4f6;border-color:#0000}.aqsp-popover-thread{overscroll-behavior:contain;flex:auto;min-height:48px;max-height:220px;margin:0 0 8px;padding:0;list-style:none;overflow-y:auto}.aqsp-popover-comment-item{border-top:1px solid #f3f4f6;padding:6px 0}.aqsp-popover-comment-item:first-child{border-top:0;padding-top:0}.aqsp-popover-comment-author{color:#111827;font-size:12px;font-weight:600}.aqsp-popover-comment-time{color:#6b7280;font-variant-numeric:tabular-nums;margin-inline-start:6px;font-size:11px}.aqsp-popover-comment-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}.aqsp-popover-list .aqsp-popover-input{margin-bottom:4px}.aqsp-popover-options{overscroll-behavior:contain;flex:auto;min-height:0;max-height:240px;overflow-y:auto}.aqsp-popover-option{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:4px;padding:5px 8px;overflow:hidden}.aqsp-popover-option:hover{background:#f3f4f6}.aqsp-popover-option[aria-selected=true]{color:#1e3a8a;background:#dbeafe}.aqsp-popover-option:focus-visible{outline-offset:-2px;outline:2px solid #2563eb}.aqsp-popover-empty{color:#6b7280;padding:6px 8px;font-size:12px}.aqsp-popover-message{padding-inline-end:40px;position:relative}.aqsp-popover-message .aqsp-popover-title{margin-bottom:2px}.aqsp-popover-message-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.aqsp-popover-message .aqsp-popover-button[data-aqsp-popover-close]{position:absolute;inset-block-start:6px;inset-inline-end:6px}.aqsp-popover-message[data-aqsp-popover-rejected]{background:#fef2f2}.aqsp-popover-message[data-aqsp-popover-rejected] .aqsp-popover-title{color:#b91c1c}@media (forced-colors:active){.aqsp-popover-option:hover,.aqsp-popover-option[aria-selected=true]{outline-offset:-2px;outline:2px solid highlight}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-style:dashed}.aqsp-popover-button[data-aqsp-popover-close]{border-color:buttontext}}[data-aqsp-empty]{width:100%;height:100%;display:block}.aqsp-freeze-divider{background:var(--aqsp-divider-color,#9ca3af);pointer-events:none;position:absolute}.aqsp-freeze-divider-v{width:var(--aqsp-divider-width,2px)}.aqsp-freeze-divider-h{height:var(--aqsp-divider-width,2px)}@media (forced-colors:active){.aqsp-freeze-divider{background:canvastext}}}@layer utilities;
|
|
3
|
+
@layer theme,base;@layer components{@layer components{.aqvs-scroll-pane{display:flex;position:relative}.aqvs-scroll-pane[data-self-measured=true],.aqvs-scroll-pane[data-aqvs-stretched-viewport=true]{height:100%}.aqvs-scroll-pane-content{box-sizing:border-box;flex:1;height:100%;position:relative;overflow:hidden}.aqvs-scroll-pane-content-overlay{box-sizing:border-box;padding:inherit;pointer-events:none;position:absolute;inset:0}.aqvs-scroll-pane-content-overlay-box{height:100%;position:relative;overflow:hidden}.aqvs-tap-scroll-circle{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;transition-property:transform;transition-duration:.1s;transition-timing-function:cubic-bezier(0,0,.2,1);display:flex;position:relative}.aqvs-tap-scroll-circle-visual-outer{border-radius:9999px;position:absolute;inset:0}.aqvs-tap-scroll-circle-gradient{background:linear-gradient(to bottom right,#1d4ed899,#60a5fa8c,#bfdbfe66);border:1px solid #fff6;border-radius:9999px;position:absolute;inset:0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-tap-scroll-circle-inner{border-radius:9999px;position:absolute;inset:18%}.aqvs-sample-visual-pupil{box-sizing:border-box;background-color:#ffffffd9;border:1px solid #ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-highlight{background-color:#fffc;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-rod{background-color:#ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-scrollbar{z-index:50;cursor:default;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;background-color:#fff;position:relative}.aqvs-scrollbar-horizontal{flex-direction:row;align-items:stretch;display:flex}.aqvs-scrollbar-vertical{flex-direction:column;align-items:stretch;display:flex}.aqvs-scrollbar[data-visible=false],.aqvs-scrollbar-thumb-wrapper[data-visible=false]{opacity:0;pointer-events:none}.aqvs-scrollbar-track:focus-visible,.aqvs-scroll-pane-content:focus-visible{outline:none}.aqvs-scrollbar-track:focus-visible:after,.aqvs-scroll-pane-content:focus-visible:not([data-aqvs-active-item=visible]):after{content:"";outline:2px solid var(--aqvs-focus-ring-color,#2563eb);outline-offset:-2px;pointer-events:none;position:absolute;inset:0}.aqvs-scrollbar-tap-circle-wrapper{pointer-events:auto;transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);position:absolute}.aqvs-scrollbar-arrow-button{color:#313131;background-color:#e0e0e0;border:0 solid;justify-content:center;align-items:center;padding:0;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:flex}.aqvs-scrollbar-arrow-button:focus{outline-offset:2px;outline:2px solid #0000}.aqvs-scrollbar-arrow-button:disabled{cursor:not-allowed;opacity:.5}.aqvs-scrollbar-arrow-button:enabled:hover{background-color:#d4d4d4}.aqvs-scrollbar-arrow-button:enabled:focus-visible{color:#fff;background-color:#2563eb;outline:none}.aqvs-scrollbar-track{background-color:#f5f5f5;flex:1;position:relative}.aqvs-scrollbar-overlay{pointer-events:none;position:absolute;inset:0}.aqvs-scrollbar-thumb-wrapper{touch-action:none;position:absolute}.aqvs-scrollbar-thumb{transform-origin:50%;background-color:#7f7f7f;transition:transform 80ms ease-out;position:absolute}.aqvs-scrollbar-thumb[data-thumb-state=disabled]{transition:none;transform:none}.aqvs-scrollbar-thumb[data-thumb-state=hover]{background-color:#5f5f5f}.aqvs-scrollbar-thumb[data-thumb-state=dragging]{background-color:#4f4f4f;transition:transform 60ms ease-out}.aqvs-scrollbar-thumb-horizontal{inset:1.5px 0}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=hover]{top:-.5px;bottom:-.5px;transform:scaleY(1.06)}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=dragging]{top:-.5px;bottom:-.5px;transform:scaleY(1.12)}.aqvs-scrollbar-thumb-vertical{inset:0 1.5px}.aqvs-scrollbar-thumb-vertical[data-thumb-state=hover]{left:-.5px;right:-.5px;transform:scaleX(1.06)}.aqvs-scrollbar-thumb-vertical[data-thumb-state=dragging]{left:-.5px;right:-.5px;transform:scaleX(1.12)}.aqvs-scroll-to-edge-button{isolation:isolate;pointer-events:auto;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;box-sizing:border-box;min-width:44px;min-height:44px;font-family:inherit;font-weight:500;font-size:var(--aqvs-font-size-body,.8125rem);line-height:var(--aqvs-line-height-body,1.25rem);color:#fff;text-transform:uppercase;letter-spacing:.05em;background-color:#0000;border:0 solid;justify-content:center;align-items:center;padding:12px 3rem;display:inline-flex;position:relative;transform:none}.aqvs-scroll-to-edge-button:before{content:"";z-index:-1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1f2937cc;border-radius:9999px;transition-property:transform,background-color;transition-duration:.15s;position:absolute;inset:8px 0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-scroll-to-edge-button:focus{outline-offset:2px;outline:2px solid #0000}.aqvs-scroll-to-edge-button:focus-visible{outline:none}.aqvs-scroll-to-edge-button:focus-visible:before{outline:2px solid var(--aqvs-focus-ring-color,#2563eb);outline-offset:1px}.aqvs-scroll-to-edge-button:hover:before{background-color:#374151}.aqvs-scroll-to-edge-button:active:before{transform:scale(.95)}.aqvs-scroll-to-edge-overlay{pointer-events:none;z-index:10;transition-property:opacity;transition-duration:.5s;position:absolute;inset:0}.aqvs-scroll-to-edge-overlay[data-visible=true]{opacity:1}.aqvs-scroll-to-edge-overlay[data-visible=false]{opacity:0}.aqvs-scroll-to-edge-overlay[data-visible=false] .aqvs-scroll-to-edge-button{pointer-events:none}.aqvs-scroll-to-edge-button-container{justify-content:center;display:flex;position:absolute;left:0;right:0}.aqvs-scroll-to-edge-button-container-top{top:0}.aqvs-scroll-to-edge-button-container-bottom{bottom:0}.aqvs-no-items-container{width:100%;position:absolute;top:0}.aqvs-no-items-text{text-align:center;color:#6b7280}.aqvs-item-container,.aqvs-bottom-inset{width:100%;position:absolute}.aqvs-items-boundary{contain:size layout style;height:0;position:absolute;top:0;left:0;right:0}.aqvs-items-wrapper{width:100%;position:absolute}.aqvs-live-region{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqvs-grid{grid-template-rows:minmax(0,1fr) auto;width:100%;height:100%;display:grid;position:relative;overflow:hidden}.aqvs-grid-has-frozen-rows{grid-template-rows:auto minmax(0,1fr) auto}.aqvs-grid-has-trailing-rows{grid-template-rows:minmax(0,1fr) auto auto}.aqvs-grid-has-frozen-rows.aqvs-grid-has-trailing-rows{grid-template-rows:auto minmax(0,1fr) auto auto}.aqvs-grid-frozen-rows{min-width:0;position:relative;overflow:hidden}.aqvs-grid-frozen-band-row{position:absolute;left:0;overflow:hidden}.aqvs-grid-trailing-rows{min-width:0;position:relative;overflow:hidden}.aqvs-grid-trailing-rows-inner{position:absolute;bottom:0;left:0;right:0}.aqvs-grid-trailing-band-row{position:absolute;left:0;overflow:hidden}.aqvs-grid-main{min-width:0;min-height:0;position:relative}.aqvs-grid-row{width:100%;height:100%;transform:translateX(var(--aqvs-grid-hx-residual,0px));position:relative;overflow:visible}.aqvs-grid-cell{height:100%;position:absolute;top:0;overflow:hidden}.aqvs-grid-row.aqvs-grid-row-frozen-host{transform:none}.aqvs-grid-row-scroll{height:100%;top:0;left:var(--aqvs-grid-frozen-width,0px);right:var(--aqvs-grid-trailing-width,0px);position:absolute;overflow:hidden}.aqvs-grid-row-scroll-inner{width:100%;height:100%;transform:translateX(calc(var(--aqvs-grid-hx-residual,0px) - var(--aqvs-grid-frozen-width,0px)));position:absolute;top:0;left:0}.aqvs-grid-row-trailing{height:100%;top:0;left:max(var(--aqvs-grid-frozen-width,0px), calc(100% - var(--aqvs-grid-trailing-width,0px)));position:absolute;right:0;overflow:hidden}.aqvs-grid-row-trailing-inner{height:100%;width:var(--aqvs-grid-trailing-width,0px);position:absolute;top:0;right:0}.aqvs-grid-hbar-strip{min-width:0;padding-left:var(--aqvs-grid-frozen-width,0px);position:relative}.aqvs-grid-live-region{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqvs-grid-tap-circle-wrapper{z-index:50;pointer-events:auto;position:absolute}.aqvs-grid-tap-circle{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (forced-colors:active){.aqvs-tap-scroll-circle{outline-offset:-1px;border-radius:50%;outline:1px solid canvastext}.aqvs-scrollbar,.aqvs-scrollbar-track{outline-offset:-1px;outline:1px solid graytext}.aqvs-scrollbar-thumb{forced-color-adjust:none;background-color:canvastext}.aqvs-scrollbar-thumb[data-thumb-state=hover],.aqvs-scrollbar-thumb[data-thumb-state=dragging]{background-color:highlight}.aqvs-scrollbar-thumb[data-thumb-state=disabled]{background-color:graytext}.aqvs-scrollbar-arrow-button:enabled:focus-visible{forced-color-adjust:none;color:highlighttext;background-color:highlight}.aqvs-sample-visual-highlight,.aqvs-sample-visual-rod{forced-color-adjust:none;background-color:canvastext}.aqvs-scroll-to-edge-button:before{border:1px solid buttontext}}@media (prefers-reduced-motion:reduce){.aqvs-tap-scroll-circle,.aqvs-tap-scroll-circle *,.aqvs-grid-tap-circle,.aqvs-scrollbar-tap-circle-wrapper,.aqvs-scrollbar-arrow-button,.aqvs-scrollbar-thumb,.aqvs-scroll-to-edge-button:before,.aqvs-scroll-to-edge-overlay{transition:none!important;animation:none!important}}}.aqsp-root,.aqsp-root *,.aqsp-root :before,.aqsp-root :after{box-sizing:border-box}.aqsp-root{--_aqsp-row-header-width:var(--aqsp-row-header-width,64px);--_aqsp-col-header-height:var(--aqsp-col-header-height,24px);--_aqsp-font-size:var(--aqsp-font-size,.8125rem);--_aqsp-font-size-small:calc(var(--_aqsp-font-size) * 12 / 13);--_aqsp-font-size-x-small:calc(var(--_aqsp-font-size) * 11 / 13);--_aqsp-font-size-glyph:calc(var(--_aqsp-font-size) * 16 / 13);--_aqsp-editor-font-size:var(--_aqsp-font-size);--_aqsp-surface:var(--aqsp-surface,#fff);--_aqsp-text:var(--aqsp-text,#1f2937);--_aqsp-grid-line:var(--aqsp-grid-line,#e5e7eb);--_aqsp-border:var(--aqsp-border,#d1d5db);--_aqsp-input-border:var(--aqsp-input-border,#8b95a4);--_aqsp-accent:var(--aqsp-accent,#2563eb);--_aqsp-header-surface:var(--aqsp-header-surface,#f3f4f6);--_aqsp-header-text:var(--aqsp-header-text,#4a5361);--_aqsp-header-selected-surface:var(--aqsp-header-selected-surface,#dbeafe);--_aqsp-header-selected-text:var(--aqsp-header-selected-text,#1841b4);--_aqsp-header-row-surface:var(--aqsp-header-row-surface,#f3f4f6);--_aqsp-header-row-text:var(--aqsp-header-row-text,#1f2937);--_aqsp-header-row-font-weight:var(--aqsp-header-row-font-weight,700);--_aqsp-link:var(--aqsp-link,#163ba5);--_aqsp-note-marker:var(--aqsp-note-marker,#4b5563);--_aqsp-comment-marker:var(--aqsp-comment-marker,#eb6406);--_aqsp-danger:var(--aqsp-danger,#dc2626);--_aqsp-danger-fill:var(--aqsp-danger-fill,#dc262614);--_aqsp-danger-text:var(--aqsp-danger-text,#a41919);--_aqsp-danger-surface:var(--aqsp-danger-surface,#fef2f2);--_aqsp-selection-fill:var(--aqsp-selection-fill,#3b82f62e);--_aqsp-selection-border:var(--aqsp-selection-border,#2563ebd9);--_aqsp-drag-fill:var(--aqsp-drag-fill,#3b82f61a);--_aqsp-reference:var(--aqsp-reference,#16a24a);--_aqsp-reference-fill:var(--aqsp-reference-fill,#16a34a14);--_aqsp-fill-preview:var(--aqsp-fill-preview,#16a24a);--_aqsp-divider-color:var(--aqsp-divider-color,#858e9d);--_aqsp-popover-shadow:var(--aqsp-popover-shadow,0 1px 2px #00000014, 0 8px 24px #00000024);--_aqsp-note-tip-surface:var(--aqsp-note-tip-surface,#fffbeb);--_aqsp-note-tip-border:var(--aqsp-note-tip-border,#f59e0b);--_aqsp-note-tip-shadow:var(--aqsp-note-tip-shadow,0 2px 8px #0000001f);--_aqsp-title-text:var(--aqsp-title-text,#374151);--_aqsp-muted-text:var(--aqsp-muted-text,#4e535e);--_aqsp-strong-text:var(--aqsp-strong-text,#111827);--_aqsp-separator:var(--aqsp-separator,#f3f4f6);--_aqsp-button-surface:var(--aqsp-button-surface,#f9fafb);--_aqsp-hover-surface:var(--aqsp-hover-surface,#f3f4f6);--_aqsp-hover-border:var(--aqsp-hover-border,#9ca3af);--_aqsp-primary-surface:var(--aqsp-primary-surface,#134dce);--_aqsp-primary-hover-surface:var(--aqsp-primary-hover-surface,#173faf);--_aqsp-primary-text:var(--aqsp-primary-text,#fff);--_aqsp-option-selected-surface:var(--aqsp-option-selected-surface,#dbeafe);--_aqsp-option-selected-text:var(--aqsp-option-selected-text,#1e3a8a);background:var(--_aqsp-surface);width:100%;height:100%;color:var(--_aqsp-text);font-size:var(--_aqsp-font-size);line-height:1;position:relative;overflow:hidden}@media (pointer:coarse){.aqsp-root{--_aqsp-editor-font-size:max(1rem, 16px)}}.aqsp-zoom{grid-template-columns:var(--_aqsp-row-header-width) minmax(0, 1fr);grid-template-rows:var(--_aqsp-col-header-height) minmax(0, 1fr);transform-origin:0 0;width:100%;height:100%;display:grid}.aqsp-corner{border-right:1px solid var(--_aqsp-border);border-bottom:1px solid var(--_aqsp-border);background:var(--_aqsp-header-surface);grid-area:1/1}.aqsp-col-header{border-bottom:1px solid var(--_aqsp-border);background:var(--_aqsp-header-surface);-webkit-user-select:none;user-select:none;grid-area:1/2;position:relative;overflow:hidden}.aqsp-col-header-scroll{height:100%;position:absolute;top:0;right:0;overflow:hidden}.aqsp-row-header-scroll{width:100%;position:absolute;bottom:0;left:0;overflow:hidden}.aqsp-col-header-track{will-change:transform;position:absolute;inset:0}.aqsp-col-header-cell{border-right:1px solid var(--_aqsp-grid-line);white-space:nowrap;height:100%;color:var(--_aqsp-header-text);justify-content:center;align-items:center;display:flex;position:absolute;top:0;overflow:hidden}.aqsp-row-header{border-right:1px solid var(--_aqsp-border);background:var(--_aqsp-header-surface);-webkit-user-select:none;user-select:none;grid-area:2/1;position:relative;overflow:hidden}.aqsp-row-header-track{will-change:transform;position:absolute;top:0;left:0;right:0}.aqsp-row-header-cell{border-bottom:1px solid var(--_aqsp-grid-line);white-space:nowrap;color:var(--_aqsp-header-text);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;padding-right:6px;display:flex;position:absolute;left:0;right:0;overflow:hidden}.aqsp-body{position:absolute;inset:0}.aqsp-row{cursor:default}.aqsp-cell{border-right:1px solid var(--_aqsp-grid-line);border-bottom:1px solid var(--_aqsp-grid-line);white-space:nowrap;background:var(--_aqsp-surface);align-items:center;padding:0 4px;display:flex}.aqsp-cell[data-aqsp-header-row]{background:var(--_aqsp-header-row-surface);color:var(--_aqsp-header-row-text);font-weight:var(--_aqsp-header-row-font-weight)}.aqsp-cell[data-aqsp-valign=top]{align-items:flex-start}.aqsp-cell[data-aqsp-valign=bottom]{align-items:flex-end}.aqsp-cell[data-aqsp-wrap]{white-space:pre-wrap;overflow-wrap:anywhere}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after{content:"";border:5px solid #0000;border-top-color:var(--_aqsp-note-marker);border-right-color:var(--_aqsp-note-marker);pointer-events:none;width:0;height:0;position:absolute;top:0;right:0}.aqsp-cell[data-aqsp-comment]:after{border-top-color:var(--_aqsp-comment-marker);border-right-color:var(--_aqsp-comment-marker)}.aqsp-cell[data-aqsp-invalid]:before{content:"";border:5px solid #0000;border-bottom-color:var(--_aqsp-danger);border-left-color:var(--_aqsp-danger);pointer-events:none;width:0;height:0;position:absolute;bottom:0;left:0}.aqsp-cell[data-aqsp-link]{color:var(--_aqsp-link);text-decoration:underline}.aqsp-body-stack{grid-area:2/2;position:relative}.aqsp-overlay{--_aqsp-band-row:var(--aqsp-band-row,#0084ff);--_aqsp-band-column:var(--aqsp-band-column,#42ff4f);--_aqsp-band-intersection:var(--aqsp-band-intersection,#e1ff00);--_aqsp-band-opacity:var(--aqsp-band-opacity,.2);pointer-events:none;position:absolute;inset:0;overflow:hidden}.aqsp-overlay-quad{pointer-events:none;position:absolute;overflow:hidden}.aqsp-selection-fill{background:var(--_aqsp-selection-fill);border:1px solid var(--_aqsp-selection-border);mix-blend-mode:multiply;position:absolute;top:0;left:0}.aqsp-active-frame{border:2px solid var(--_aqsp-accent);box-sizing:border-box;position:absolute;top:0;left:0}.aqsp-drag-rect{border:1px solid var(--_aqsp-accent);background:var(--_aqsp-drag-fill);position:absolute;top:0;left:0}.aqsp-drag-rect[data-aqsp-drag-mode=subtract]{border:1px dashed var(--_aqsp-danger);background:var(--_aqsp-danger-fill)}.aqsp-drag-rect[data-aqsp-drag-mode=point]{border:1px dashed var(--_aqsp-reference);background:var(--_aqsp-reference-fill)}.aqsp-band{opacity:var(--_aqsp-band-opacity);pointer-events:none;position:absolute;top:0;left:0}.aqsp-band[data-aqsp-band=row]{background:var(--_aqsp-band-row)}.aqsp-band[data-aqsp-band=column]{background:var(--_aqsp-band-column)}.aqsp-band[data-aqsp-band=intersection]{background:var(--_aqsp-band-intersection)}.aqsp-clip-marquee{position:absolute;top:0;left:0}.aqsp-clip-marquee:after{content:"";top:var(--aqsp-clip-outset-top,-3px);right:var(--aqsp-clip-outset-right,-3px);bottom:var(--aqsp-clip-outset-bottom,-3px);left:var(--aqsp-clip-outset-left,-3px);background-image:linear-gradient(90deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%), linear-gradient(90deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%), linear-gradient(0deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%), linear-gradient(0deg, var(--_aqsp-accent) 50%, var(--_aqsp-surface) 50%);background-position:0 0,8px 100%,0 8px,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:8px 2px,8px 2px,2px 8px,2px 8px;animation:.4s linear infinite aqsp-marching-ants;position:absolute}@keyframes aqsp-marching-ants{to{background-position:8px 0,0 100%,0 0,100% 8px}}@media (prefers-reduced-motion:reduce){.aqsp-clip-marquee:after{animation:none}}.aqsp-col-resize-strip{cursor:col-resize;height:100%;position:absolute;top:0}.aqsp-row-resize-strip{cursor:row-resize;position:absolute;left:0;right:0}.aqsp-col-header .aqsp-unhide-marker{cursor:col-resize;background:repeating-linear-gradient(90deg, var(--_aqsp-accent) 0 1px, transparent 1px 3px);height:100%;position:absolute;top:0}.aqsp-row-header .aqsp-unhide-marker{cursor:row-resize;background:repeating-linear-gradient(180deg, var(--_aqsp-accent) 0 1px, transparent 1px 3px);position:absolute;left:0;right:0}.aqsp-resize-guide{background:var(--_aqsp-accent);pointer-events:none;position:absolute;top:0;left:0}.aqsp-autofill-handle{background:var(--_aqsp-accent);border:1px solid var(--_aqsp-surface);box-sizing:content-box;pointer-events:auto;cursor:crosshair;width:6px;height:6px;position:absolute;top:0;left:0}.aqsp-autofill-preview{border:1px dashed var(--_aqsp-fill-preview);position:absolute;top:0;left:0}@media (forced-colors:active){.aqsp-band{outline-offset:-2px;background:0 0;outline:2px solid highlight}.aqsp-cell[data-aqsp-note]:after,.aqsp-cell[data-aqsp-comment]:after,.aqsp-cell[data-aqsp-invalid]:before{border:1px solid canvastext;width:6px;height:6px}.aqsp-drag-rect[data-aqsp-drag-mode=point]{background:0 0;border-color:highlight}.aqsp-selection-fill{outline-offset:-2px;background:0 0;border:none;outline:2px solid highlight}.aqsp-clip-marquee:after{background-image:none;border:2px dashed highlight;animation:none}}.aqsp-col-header-cell[data-aqsp-in-selection],.aqsp-row-header-cell[data-aqsp-in-selection]{background:var(--_aqsp-header-selected-surface);color:var(--_aqsp-header-selected-text);font-weight:600}.aqsp-live-region{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.aqsp-sink{opacity:0;resize:none;pointer-events:auto;cursor:default;border:0;width:1px;height:1px;padding:0;position:absolute}.aqsp-sink[data-aqsp-editing]{opacity:1;z-index:1;box-sizing:border-box;background:var(--_aqsp-surface);color:var(--_aqsp-text);caret-color:var(--_aqsp-text);font-family:inherit;font-size:var(--_aqsp-editor-font-size);white-space:pre;outline:2px solid var(--_aqsp-accent);outline-offset:-2px;cursor:text;padding:0 4px;line-height:1;overflow:hidden}.aqsp-sink[data-aqsp-pointing]{caret-color:var(--_aqsp-reference)}.aqsp-popover-layer{pointer-events:none;position:absolute;inset:0;overflow:visible}.aqsp-popover-anchor{pointer-events:none;position:absolute;top:0;left:0}.aqsp-popover-anchor[inert]{visibility:hidden}.aqsp-popover{border:1px solid var(--_aqsp-border);background:var(--_aqsp-surface);width:320px;max-width:320px;color:var(--_aqsp-text);box-shadow:var(--_aqsp-popover-shadow);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans JP,sans-serif;font-size:var(--_aqsp-font-size);text-align:start;white-space:normal;cursor:default;pointer-events:auto;border-radius:8px;flex-direction:column;line-height:1.4;display:flex;position:absolute;overflow:hidden}.aqsp-popover:focus-visible{outline:2px solid var(--_aqsp-accent);outline-offset:-2px}.aqsp-popover[data-aqsp-popover-frame=note-tip]{border-color:var(--_aqsp-note-tip-border);background:var(--_aqsp-note-tip-surface);box-shadow:var(--_aqsp-note-tip-shadow)}.aqsp-popover-note,.aqsp-popover-comment,.aqsp-popover-link,.aqsp-popover-message{flex-direction:column;min-height:0;padding:10px 12px;display:flex}.aqsp-popover-list{flex-direction:column;min-height:0;padding:6px;display:flex}.aqsp-popover-note-tip{overscroll-behavior:contain;white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;padding:8px 10px;overflow-y:auto}[data-aqsp-popover][data-aqsp-popover-rejected]{border-inline-start:3px solid var(--_aqsp-danger);padding-inline-start:9px}.aqsp-popover-title{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-title-text);align-items:baseline;gap:6px;margin:0 0 6px;font-weight:600;display:flex}.aqsp-popover-count{color:var(--_aqsp-muted-text);font-weight:400}.aqsp-popover-textarea,.aqsp-popover-input{border:1px solid var(--_aqsp-input-border);background:var(--_aqsp-surface);width:100%;color:inherit;font:inherit;border-radius:6px;margin:0;padding:5px 8px;line-height:1.4;display:block}.aqsp-popover-textarea{resize:none;white-space:pre-wrap;flex:auto;height:104px;min-height:56px;overflow:auto}.aqsp-popover-comment .aqsp-popover-textarea{flex:none;height:64px}.aqsp-popover-input{flex:none;height:28px}.aqsp-popover-textarea:focus-visible,.aqsp-popover-input:focus-visible{border-color:var(--_aqsp-accent);outline:2px solid var(--_aqsp-accent);outline-offset:-1px}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-color:var(--_aqsp-danger)}.aqsp-popover-textarea[aria-invalid=true]:focus-visible,.aqsp-popover-input[aria-invalid=true]:focus-visible{border-color:var(--_aqsp-danger);outline-color:var(--_aqsp-danger)}.aqsp-popover-hint{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-muted-text);margin:4px 0 0}[data-aqsp-popover-rejected] .aqsp-popover-hint{color:var(--_aqsp-danger-text)}.aqsp-popover-field{flex-direction:column;flex:none;gap:3px;margin:0 0 8px;display:flex}.aqsp-popover-field-label{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-muted-text)}.aqsp-popover-actions{flex:none;align-items:center;gap:6px;margin-top:8px;display:flex}.aqsp-popover-button{border:1px solid var(--_aqsp-border);background:var(--_aqsp-button-surface);min-width:56px;height:26px;color:var(--_aqsp-text);font:inherit;font-size:var(--_aqsp-font-size-small);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;margin:0;padding:0 10px;font-weight:500;line-height:1;display:inline-flex}.aqsp-popover-button:not(:disabled):hover{border-color:var(--_aqsp-hover-border);background:var(--_aqsp-hover-surface)}.aqsp-popover-button:focus-visible{outline:2px solid var(--_aqsp-accent);outline-offset:1px}.aqsp-popover-button:disabled{opacity:.5;cursor:not-allowed}.aqsp-popover-button[data-aqsp-popover-save],.aqsp-popover-button[data-aqsp-popover-post]{border-color:var(--_aqsp-primary-surface);background:var(--_aqsp-primary-surface);color:var(--_aqsp-primary-text)}.aqsp-popover-button[data-aqsp-popover-save]:not(:disabled):hover,.aqsp-popover-button[data-aqsp-popover-post]:not(:disabled):hover{border-color:var(--_aqsp-primary-hover-surface);background:var(--_aqsp-primary-hover-surface)}.aqsp-popover-button[data-aqsp-popover-close]{width:26px;min-width:0;color:var(--_aqsp-muted-text);font-size:var(--_aqsp-font-size-glyph);background:0 0;border-color:#0000;margin-inline-start:auto;padding:0;font-weight:400}.aqsp-popover-button[data-aqsp-popover-close]:not(:disabled):hover{background:var(--_aqsp-hover-surface);color:var(--_aqsp-text);border-color:#0000}.aqsp-popover-thread{overscroll-behavior:contain;flex:auto;min-height:48px;max-height:220px;margin:0 0 8px;padding:0;list-style:none;overflow-y:auto}.aqsp-popover-comment-item{border-top:1px solid var(--_aqsp-separator);padding:6px 0}.aqsp-popover-comment-item:first-child{border-top:0;padding-top:0}.aqsp-popover-comment-author{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-strong-text);font-weight:600}.aqsp-popover-comment-time{font-size:var(--_aqsp-font-size-x-small);color:var(--_aqsp-muted-text);font-variant-numeric:tabular-nums;margin-inline-start:6px}.aqsp-popover-comment-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}.aqsp-popover-list .aqsp-popover-input{margin-bottom:4px}.aqsp-popover-options{overscroll-behavior:contain;flex:auto;min-height:0;max-height:240px;overflow-y:auto}.aqsp-popover-option{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:4px;padding:5px 8px;overflow:hidden}.aqsp-popover-option:hover{background:var(--_aqsp-hover-surface)}.aqsp-popover-option[aria-selected=true]{background:var(--_aqsp-option-selected-surface);color:var(--_aqsp-option-selected-text)}.aqsp-popover-option:focus-visible{outline:2px solid var(--_aqsp-accent);outline-offset:-2px}.aqsp-popover-empty{font-size:var(--_aqsp-font-size-small);color:var(--_aqsp-muted-text);padding:6px 8px}.aqsp-popover-message{padding-inline-end:40px;position:relative}.aqsp-popover-message .aqsp-popover-title{margin-bottom:2px}.aqsp-popover-message-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.aqsp-popover-message .aqsp-popover-button[data-aqsp-popover-close]{position:absolute;inset-block-start:6px;inset-inline-end:6px}.aqsp-popover-message[data-aqsp-popover-rejected]{background:var(--_aqsp-danger-surface)}.aqsp-popover-message[data-aqsp-popover-rejected] .aqsp-popover-title{color:var(--_aqsp-danger-text)}@media (forced-colors:active){.aqsp-popover-option:hover,.aqsp-popover-option[aria-selected=true]{outline-offset:-2px;outline:2px solid highlight}.aqsp-popover-textarea[aria-invalid=true],.aqsp-popover-input[aria-invalid=true]{border-style:dashed}.aqsp-popover-button[data-aqsp-popover-close]{border-color:buttontext}}[data-aqsp-empty]{width:100%;height:100%;display:block}.aqsp-freeze-divider{background:var(--_aqsp-divider-color);pointer-events:none;position:absolute}.aqsp-freeze-divider-v{width:var(--aqsp-divider-width,2px)}.aqsp-freeze-divider-h{height:var(--aqsp-divider-width,2px)}@media (forced-colors:active){.aqsp-freeze-divider{background:canvastext}}}@layer utilities;
|
package/dist/tsv.cjs
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=(e,t)=>`${e.map(n=>n.map(t).join(" ")).join(`\r
|
|
2
|
+
`)}\r
|
|
3
|
+
`,f=e=>o(e,v),h=e=>o(e,T),v=e=>/[\t\r\n]/.test(e)||e.startsWith('"')?`"${e.replaceAll('"','""')}"`:e,T=e=>/[\t\r\n]/.test(e)?`"${e.replaceAll('"','""')}"`:e,c=e=>e.endsWith(`\r
|
|
4
|
+
`)?e.slice(0,-2):e.endsWith(`
|
|
5
|
+
`)||e.endsWith("\r")?e.slice(0,-1):e,l=Symbol("row end");function*a(e){let t=0;for(;;){const n=e[t]==='"'?m(e,t):null;if(n!==null)yield n.value,t=n.nextIndex;else{const s=w(e,t);yield e.slice(t,s),t=s}if(t>=e.length){yield l;return}e[t]===" "?t+=1:(t+=e[t]==="\r"&&e[t+1]===`
|
|
6
|
+
`?2:1,yield l)}}function*u(e){const t=c(e);if(t===""){yield[""];return}let n=[];for(const s of a(t))s===l?(yield n,n=[]):n.push(s)}const p=e=>{const t=Array.from(u(e));let n=0;for(const s of t)s.length>n&&(n=s.length);return t.map(s=>s.length===n?s:[...s,...Array(n-s.length).fill("")])},g=e=>{const t=c(e);if(t==="")return{rows:1,cols:1};let n=0,s=0,r=0;for(const i of a(t))i===l?(n+=1,r>s&&(s=r),r=0):r+=1;return{rows:n,cols:s}},m=(e,t)=>{let n="",s=t+1;for(;s<e.length;)if(e[s]==='"')if(e[s+1]==='"')n+='"',s+=2;else{const r=s+1;return(r>=e.length||e[r]===" "||e[r]===`
|
|
7
|
+
`||e[r]==="\r")&&/[\t\r\n"]/.test(n)?{value:n,nextIndex:r}:null}else n+=e[s],s+=1;return null},w=(e,t)=>{for(let n=t;n<e.length;n+=1)if(e[n]===" "||e[n]===`
|
|
8
|
+
`||e[n]==="\r")return n;return e.length};exports.iterateTsvRows=u;exports.measureTsv=g;exports.parseTsv=p;exports.serializeClipboardTsv=h;exports.serializeTsv=f;
|
package/dist/tsv.d.cts
CHANGED
|
@@ -1,12 +1,71 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Yields the rows of a TSV text one at a time, in exactly parseTsv's grammar (the same quoting rule, line terminators
|
|
3
|
+
* and final-terminator handling; empty text is one row with one empty cell), WITHOUT padding them to a common width. A
|
|
4
|
+
* consumer that stops early materialises nothing past the last row it took, so a large text can be previewed under a
|
|
5
|
+
* cell budget.
|
|
6
|
+
* TSV の文字列の行を 1 つずつ出す処理。parseTsv とちょうど同じ文法 (同じ引用の規則・改行・末尾の改行の扱い。空の文字は空のセル
|
|
7
|
+
* 1 つの 1 行) で、幅を揃える右の埋めはしない。途中で止めた受け手は、最後に取った行より先を何も実体化しないので、大きな文字を
|
|
8
|
+
* セルの予算の下で見られる。
|
|
9
|
+
*
|
|
10
|
+
* @param text - The TSV text. TSV の文字列。
|
|
11
|
+
* @returns The rows, unpadded. 埋めない行。
|
|
12
|
+
*/
|
|
13
|
+
export declare function iterateTsvRows(text: string): Generator<string[]>;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The dimensions `parseTsv(text)` would materialise — rows and the rectangularised (maximum)
|
|
17
|
+
* column count — from the SAME grammar walk, without building any row array: the ADR-12
|
|
18
|
+
* pre-materialisation estimate of the `tsv` paste source (a raw line-terminator count would
|
|
19
|
+
* over-count rows for quoted embedded newlines and falsely reject a legitimate paste).
|
|
20
|
+
* `parseTsv(text)` が実体化する寸法 — 行数と矩形化後 (最大) の列数 — を**同じ**文法走査から、
|
|
21
|
+
* 行配列を一切作らずに返す: `tsv` 貼り付けソースの ADR-12 実体化前見積もり (素の改行計数は
|
|
22
|
+
* quoted 内の埋め込み改行を行と数え、正当な貼り付けを誤って上限拒否する)。
|
|
23
|
+
*
|
|
24
|
+
* @param text - The TSV text. TSV の文字列。
|
|
25
|
+
* @returns The row count and the maximum column count. 行数と最大の列数。
|
|
26
|
+
*/
|
|
27
|
+
export declare const measureTsv: (text: string) => {
|
|
28
|
+
rows: number;
|
|
29
|
+
cols: number;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Parses TSV into a rectangular matrix (ragged rows are right-padded with ""; one trailing line
|
|
34
|
+
* terminator is dropped; empty text is one empty cell): the rows of iterateTsvRows, padded.
|
|
35
|
+
* TSV を矩形行列へ解析する処理 (不揃いの行は "" で右を埋め、末尾の改行 1 つを除き、空の文字は空のセル 1 つ)。iterateTsvRows の
|
|
36
|
+
* 行を埋めたもの。
|
|
37
|
+
*
|
|
38
|
+
* @param text - The TSV text. TSV の文字列。
|
|
39
|
+
* @returns The rectangular matrix, at least 1 × 1. 少なくとも 1 × 1 の矩形行列。
|
|
4
40
|
*/
|
|
5
41
|
export declare const parseTsv: (text: string) => string[][];
|
|
6
42
|
|
|
7
43
|
/**
|
|
8
|
-
* Serializes a matrix
|
|
9
|
-
*
|
|
44
|
+
* Serializes a matrix the way Excel writes its clipboard text, with a trailing CRLF: only a field
|
|
45
|
+
* holding a tab, CR or LF is quoted (inner quotes doubled), so a field that merely starts with `"`
|
|
46
|
+
* reaches a plain-text target as typed. Its round trip is not exact for such fields (a raw
|
|
47
|
+
* `"\t"\tBlue` reads back as two cells); the grid's copy writes text/plain with it (and so should a
|
|
48
|
+
* host's own copy control, to match), and the grid's own paste reads the JSON payload first. Files and
|
|
49
|
+
* stored bodies use `serializeTsv`.
|
|
50
|
+
* Excel がクリップボードの文字を書く形で行列を終端 CRLF つきに直列化する処理。囲むのはタブ・CR・LF を含む値だけ (中の
|
|
51
|
+
* `"` は二重化) なので、`"` で始まるだけの値は平文の貼り先へそのまま届く。そうした値の往復は厳密でない (素の
|
|
52
|
+
* `"\t"\tBlue` は 2 つのセルに読み戻る)。グリッドのコピーが text/plain をこれで書き (ホスト自身のコピーの部品も揃えて
|
|
53
|
+
* これで書く)、グリッド自身の貼り付けは JSON の payload を先に読む。ファイルと保存する本文は `serializeTsv` を使う。
|
|
54
|
+
*
|
|
55
|
+
* @param matrix - The rows of cell strings. セルの文字列の行。
|
|
56
|
+
* @returns The TSV text in Excel's form. Excel の形の TSV の文字列。
|
|
57
|
+
*/
|
|
58
|
+
export declare const serializeClipboardTsv: (matrix: readonly (readonly string[])[]) => string;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Serializes a matrix to TSV with a trailing CRLF; `parseTsv` reads the result back to the same
|
|
62
|
+
* matrix for every rectangular matrix of strings of at least 1 × 1 (the strict writer the package
|
|
63
|
+
* publishes; a host stores tables with it).
|
|
64
|
+
* 行列を終端 CRLF つきの TSV へ直列化する処理。文字列の少なくとも 1 × 1 のどの矩形行列でも `parseTsv` が同じ行列へ
|
|
65
|
+
* 読み戻す (パッケージが公開する厳密な書き手。ホストは表をこれで保存する)。
|
|
66
|
+
*
|
|
67
|
+
* @param matrix - The rows of cell strings. セルの文字列の行。
|
|
68
|
+
* @returns The TSV text. TSV の文字列。
|
|
10
69
|
*/
|
|
11
70
|
export declare const serializeTsv: (matrix: readonly (readonly string[])[]) => string;
|
|
12
71
|
|
package/dist/tsv.d.ts
CHANGED
|
@@ -1,12 +1,71 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Yields the rows of a TSV text one at a time, in exactly parseTsv's grammar (the same quoting rule, line terminators
|
|
3
|
+
* and final-terminator handling; empty text is one row with one empty cell), WITHOUT padding them to a common width. A
|
|
4
|
+
* consumer that stops early materialises nothing past the last row it took, so a large text can be previewed under a
|
|
5
|
+
* cell budget.
|
|
6
|
+
* TSV の文字列の行を 1 つずつ出す処理。parseTsv とちょうど同じ文法 (同じ引用の規則・改行・末尾の改行の扱い。空の文字は空のセル
|
|
7
|
+
* 1 つの 1 行) で、幅を揃える右の埋めはしない。途中で止めた受け手は、最後に取った行より先を何も実体化しないので、大きな文字を
|
|
8
|
+
* セルの予算の下で見られる。
|
|
9
|
+
*
|
|
10
|
+
* @param text - The TSV text. TSV の文字列。
|
|
11
|
+
* @returns The rows, unpadded. 埋めない行。
|
|
12
|
+
*/
|
|
13
|
+
export declare function iterateTsvRows(text: string): Generator<string[]>;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The dimensions `parseTsv(text)` would materialise — rows and the rectangularised (maximum)
|
|
17
|
+
* column count — from the SAME grammar walk, without building any row array: the ADR-12
|
|
18
|
+
* pre-materialisation estimate of the `tsv` paste source (a raw line-terminator count would
|
|
19
|
+
* over-count rows for quoted embedded newlines and falsely reject a legitimate paste).
|
|
20
|
+
* `parseTsv(text)` が実体化する寸法 — 行数と矩形化後 (最大) の列数 — を**同じ**文法走査から、
|
|
21
|
+
* 行配列を一切作らずに返す: `tsv` 貼り付けソースの ADR-12 実体化前見積もり (素の改行計数は
|
|
22
|
+
* quoted 内の埋め込み改行を行と数え、正当な貼り付けを誤って上限拒否する)。
|
|
23
|
+
*
|
|
24
|
+
* @param text - The TSV text. TSV の文字列。
|
|
25
|
+
* @returns The row count and the maximum column count. 行数と最大の列数。
|
|
26
|
+
*/
|
|
27
|
+
export declare const measureTsv: (text: string) => {
|
|
28
|
+
rows: number;
|
|
29
|
+
cols: number;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Parses TSV into a rectangular matrix (ragged rows are right-padded with ""; one trailing line
|
|
34
|
+
* terminator is dropped; empty text is one empty cell): the rows of iterateTsvRows, padded.
|
|
35
|
+
* TSV を矩形行列へ解析する処理 (不揃いの行は "" で右を埋め、末尾の改行 1 つを除き、空の文字は空のセル 1 つ)。iterateTsvRows の
|
|
36
|
+
* 行を埋めたもの。
|
|
37
|
+
*
|
|
38
|
+
* @param text - The TSV text. TSV の文字列。
|
|
39
|
+
* @returns The rectangular matrix, at least 1 × 1. 少なくとも 1 × 1 の矩形行列。
|
|
4
40
|
*/
|
|
5
41
|
export declare const parseTsv: (text: string) => string[][];
|
|
6
42
|
|
|
7
43
|
/**
|
|
8
|
-
* Serializes a matrix
|
|
9
|
-
*
|
|
44
|
+
* Serializes a matrix the way Excel writes its clipboard text, with a trailing CRLF: only a field
|
|
45
|
+
* holding a tab, CR or LF is quoted (inner quotes doubled), so a field that merely starts with `"`
|
|
46
|
+
* reaches a plain-text target as typed. Its round trip is not exact for such fields (a raw
|
|
47
|
+
* `"\t"\tBlue` reads back as two cells); the grid's copy writes text/plain with it (and so should a
|
|
48
|
+
* host's own copy control, to match), and the grid's own paste reads the JSON payload first. Files and
|
|
49
|
+
* stored bodies use `serializeTsv`.
|
|
50
|
+
* Excel がクリップボードの文字を書く形で行列を終端 CRLF つきに直列化する処理。囲むのはタブ・CR・LF を含む値だけ (中の
|
|
51
|
+
* `"` は二重化) なので、`"` で始まるだけの値は平文の貼り先へそのまま届く。そうした値の往復は厳密でない (素の
|
|
52
|
+
* `"\t"\tBlue` は 2 つのセルに読み戻る)。グリッドのコピーが text/plain をこれで書き (ホスト自身のコピーの部品も揃えて
|
|
53
|
+
* これで書く)、グリッド自身の貼り付けは JSON の payload を先に読む。ファイルと保存する本文は `serializeTsv` を使う。
|
|
54
|
+
*
|
|
55
|
+
* @param matrix - The rows of cell strings. セルの文字列の行。
|
|
56
|
+
* @returns The TSV text in Excel's form. Excel の形の TSV の文字列。
|
|
57
|
+
*/
|
|
58
|
+
export declare const serializeClipboardTsv: (matrix: readonly (readonly string[])[]) => string;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Serializes a matrix to TSV with a trailing CRLF; `parseTsv` reads the result back to the same
|
|
62
|
+
* matrix for every rectangular matrix of strings of at least 1 × 1 (the strict writer the package
|
|
63
|
+
* publishes; a host stores tables with it).
|
|
64
|
+
* 行列を終端 CRLF つきの TSV へ直列化する処理。文字列の少なくとも 1 × 1 のどの矩形行列でも `parseTsv` が同じ行列へ
|
|
65
|
+
* 読み戻す (パッケージが公開する厳密な書き手。ホストは表をこれで保存する)。
|
|
66
|
+
*
|
|
67
|
+
* @param matrix - The rows of cell strings. セルの文字列の行。
|
|
68
|
+
* @returns The TSV text. TSV の文字列。
|
|
10
69
|
*/
|
|
11
70
|
export declare const serializeTsv: (matrix: readonly (readonly string[])[]) => string;
|
|
12
71
|
|
package/dist/tsv.js
CHANGED
|
@@ -1,5 +1,80 @@
|
|
|
1
|
-
|
|
1
|
+
const o = (e, t) => (
|
|
2
|
+
// 終端 CRLF は必須 (Excel 実挙動)。parseTsv の「終端の改行 1 つを剥がす」規約と対 —
|
|
3
|
+
// 終端なしだと [["a"],[""]] が [["a"]] に潰れ (cut-move で clear されるべき先に旧値が残る)、
|
|
4
|
+
// [[""]] は "" になって §6.5.4-5 の空ガードに飲まれ「空セル貼り付けで clear」が不発になる
|
|
5
|
+
`${e.map((n) => n.map(t).join(" ")).join(`\r
|
|
6
|
+
`)}\r
|
|
7
|
+
`
|
|
8
|
+
), T = (e) => o(e, a), g = (e) => o(e, f), a = (e) => /[\t\r\n]/.test(e) || e.startsWith('"') ? `"${e.replaceAll('"', '""')}"` : e, f = (e) => /[\t\r\n]/.test(e) ? `"${e.replaceAll('"', '""')}"` : e, c = (e) => e.endsWith(`\r
|
|
9
|
+
`) ? e.slice(0, -2) : e.endsWith(`
|
|
10
|
+
`) || e.endsWith("\r") ? e.slice(0, -1) : e, l = /* @__PURE__ */ Symbol("row end");
|
|
11
|
+
function* u(e) {
|
|
12
|
+
let t = 0;
|
|
13
|
+
for (; ; ) {
|
|
14
|
+
const n = e[t] === '"' ? p(e, t) : null;
|
|
15
|
+
if (n !== null)
|
|
16
|
+
yield n.value, t = n.nextIndex;
|
|
17
|
+
else {
|
|
18
|
+
const r = v(e, t);
|
|
19
|
+
yield e.slice(t, r), t = r;
|
|
20
|
+
}
|
|
21
|
+
if (t >= e.length) {
|
|
22
|
+
yield l;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
e[t] === " " ? t += 1 : (t += e[t] === "\r" && e[t + 1] === `
|
|
26
|
+
` ? 2 : 1, yield l);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function* h(e) {
|
|
30
|
+
const t = c(e);
|
|
31
|
+
if (t === "") {
|
|
32
|
+
yield [""];
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
let n = [];
|
|
36
|
+
for (const r of u(t))
|
|
37
|
+
r === l ? (yield n, n = []) : n.push(r);
|
|
38
|
+
}
|
|
39
|
+
const w = (e) => {
|
|
40
|
+
const t = Array.from(h(e));
|
|
41
|
+
let n = 0;
|
|
42
|
+
for (const r of t)
|
|
43
|
+
r.length > n && (n = r.length);
|
|
44
|
+
return t.map((r) => r.length === n ? r : [...r, ...Array(n - r.length).fill("")]);
|
|
45
|
+
}, m = (e) => {
|
|
46
|
+
const t = c(e);
|
|
47
|
+
if (t === "")
|
|
48
|
+
return { rows: 1, cols: 1 };
|
|
49
|
+
let n = 0, r = 0, s = 0;
|
|
50
|
+
for (const i of u(t))
|
|
51
|
+
i === l ? (n += 1, s > r && (r = s), s = 0) : s += 1;
|
|
52
|
+
return { rows: n, cols: r };
|
|
53
|
+
}, p = (e, t) => {
|
|
54
|
+
let n = "", r = t + 1;
|
|
55
|
+
for (; r < e.length; )
|
|
56
|
+
if (e[r] === '"')
|
|
57
|
+
if (e[r + 1] === '"')
|
|
58
|
+
n += '"', r += 2;
|
|
59
|
+
else {
|
|
60
|
+
const s = r + 1;
|
|
61
|
+
return (s >= e.length || e[s] === " " || e[s] === `
|
|
62
|
+
` || e[s] === "\r") && /[\t\r\n"]/.test(n) ? { value: n, nextIndex: s } : null;
|
|
63
|
+
}
|
|
64
|
+
else
|
|
65
|
+
n += e[r], r += 1;
|
|
66
|
+
return null;
|
|
67
|
+
}, v = (e, t) => {
|
|
68
|
+
for (let n = t; n < e.length; n += 1)
|
|
69
|
+
if (e[n] === " " || e[n] === `
|
|
70
|
+
` || e[n] === "\r")
|
|
71
|
+
return n;
|
|
72
|
+
return e.length;
|
|
73
|
+
};
|
|
2
74
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
75
|
+
h as iterateTsvRows,
|
|
76
|
+
m as measureTsv,
|
|
77
|
+
w as parseTsv,
|
|
78
|
+
g as serializeClipboardTsv,
|
|
79
|
+
T as serializeTsv
|
|
5
80
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const T=E=>{if(!(Number.isInteger(E)&&E>=0))throw new RangeError(`[spreadsheet] columnIndexToName requires a non-negative integer, received ${E}`);let _="",e=E;for(;e>=0;)_=String.fromCharCode(65+e%26)+_,e=Math.trunc(e/26)-1;return _},O=E=>{if(!/^[A-Z]+$/.test(E))throw new RangeError(`[spreadsheet] columnNameToIndex requires /^[A-Z]+$/, received "${E}"`);let _=0;for(const e of E)_=_*26+(e.charCodeAt(0)-64);return _-1};const r=E=>{if(!Number.isFinite(E))throw new RangeError(`[spreadsheet] zoom must be a finite number (got ${E})`);return Math.min(4,Math.max(.25,E))},D=1.189207115002721,A=100,t=Object.freeze(Array.from({length:17},(E,_)=>Math.round(D**(_-8)*A)/A)),n=1e-9,H=(E,_)=>{const e=r(E);if(_>0){const S=t.find(R=>R>e+n);return S===void 0?4:S}const o=t.findLast(S=>S<e-n);return o===void 0?.25:o};exports.SPREADSHEET_COLUMN_HEADER_HEIGHT_PX=24;exports.SPREADSHEET_DEFAULT_COLUMN_WIDTH_PX=100;exports.SPREADSHEET_MAX_OPERATION_CELLS=1e5;exports.SPREADSHEET_ROW_HEADER_WIDTH_PX=64;exports.SPREADSHEET_SCROLLBAR_SIZE_PX=12;exports.SPREADSHEET_ZOOM_MAX=4;exports.SPREADSHEET_ZOOM_MIN=.25;exports.SPREADSHEET_ZOOM_STEPS=t;exports.clampSpreadsheetZoom=r;exports.columnIndexToName=T;exports.columnNameToIndex=O;exports.stepSpreadsheetZoom=H;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const A = (e) => {
|
|
2
|
+
if (!(Number.isInteger(e) && e >= 0))
|
|
3
|
+
throw new RangeError(`[spreadsheet] columnIndexToName requires a non-negative integer, received ${e}`);
|
|
4
|
+
let t = "", E = e;
|
|
5
|
+
for (; E >= 0; )
|
|
6
|
+
t = String.fromCharCode(65 + E % 26) + t, E = Math.trunc(E / 26) - 1;
|
|
7
|
+
return t;
|
|
8
|
+
}, O = (e) => {
|
|
9
|
+
if (!/^[A-Z]+$/.test(e))
|
|
10
|
+
throw new RangeError(`[spreadsheet] columnNameToIndex requires /^[A-Z]+$/, received "${e}"`);
|
|
11
|
+
let t = 0;
|
|
12
|
+
for (const E of e)
|
|
13
|
+
t = t * 26 + (E.charCodeAt(0) - 64);
|
|
14
|
+
return t - 1;
|
|
15
|
+
}, R = 24, T = 64, i = 12, M = 100, D = 1e5, m = 0.25, P = 4, S = (e) => {
|
|
16
|
+
if (!Number.isFinite(e))
|
|
17
|
+
throw new RangeError(`[spreadsheet] zoom must be a finite number (got ${e})`);
|
|
18
|
+
return Math.min(4, Math.max(0.25, e));
|
|
19
|
+
}, c = 1.189207115002721, o = 100, s = Object.freeze(Array.from({ length: 17 }, (e, t) => Math.round(c ** (t - 8) * o) / o)), _ = 1e-9, h = (e, t) => {
|
|
20
|
+
const E = S(e);
|
|
21
|
+
if (t > 0) {
|
|
22
|
+
const n = s.find((a) => a > E + _);
|
|
23
|
+
return n === void 0 ? 4 : n;
|
|
24
|
+
}
|
|
25
|
+
const r = s.findLast((n) => n < E - _);
|
|
26
|
+
return r === void 0 ? 0.25 : r;
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
i as S,
|
|
30
|
+
S as a,
|
|
31
|
+
M as b,
|
|
32
|
+
A as c,
|
|
33
|
+
D as d,
|
|
34
|
+
O as e,
|
|
35
|
+
R as f,
|
|
36
|
+
T as g,
|
|
37
|
+
P as h,
|
|
38
|
+
m as i,
|
|
39
|
+
s as j,
|
|
40
|
+
h as s
|
|
41
|
+
};
|
package/dist/view.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("./view-BkwCUzTl.cjs");exports.SPREADSHEET_COLUMN_HEADER_HEIGHT_PX=E.SPREADSHEET_COLUMN_HEADER_HEIGHT_PX;exports.SPREADSHEET_DEFAULT_COLUMN_WIDTH_PX=E.SPREADSHEET_DEFAULT_COLUMN_WIDTH_PX;exports.SPREADSHEET_MAX_OPERATION_CELLS=E.SPREADSHEET_MAX_OPERATION_CELLS;exports.SPREADSHEET_ROW_HEADER_WIDTH_PX=E.SPREADSHEET_ROW_HEADER_WIDTH_PX;exports.SPREADSHEET_SCROLLBAR_SIZE_PX=E.SPREADSHEET_SCROLLBAR_SIZE_PX;exports.SPREADSHEET_ZOOM_MAX=E.SPREADSHEET_ZOOM_MAX;exports.SPREADSHEET_ZOOM_MIN=E.SPREADSHEET_ZOOM_MIN;exports.SPREADSHEET_ZOOM_STEPS=E.SPREADSHEET_ZOOM_STEPS;exports.clampSpreadsheetZoom=E.clampSpreadsheetZoom;exports.columnIndexToName=E.columnIndexToName;exports.stepSpreadsheetZoom=E.stepSpreadsheetZoom;
|
package/dist/view.d.cts
CHANGED
|
@@ -13,9 +13,22 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const clampSpreadsheetZoom: (value: number) => number;
|
|
15
15
|
|
|
16
|
+
/** Column index (0-based) to Excel-style name (0 → A, 26 → AA, 16383 → XFD). / 列 index → 列名。 */
|
|
17
|
+
export declare const columnIndexToName: (index: number) => string;
|
|
18
|
+
|
|
16
19
|
/** The height of the column-header band in CSS px (`--aqsp-col-header-height` in the stylesheet). 列見出しの帯の高さ (CSS px。スタイルシートの `--aqsp-col-header-height`)。 */
|
|
17
20
|
export declare const SPREADSHEET_COLUMN_HEADER_HEIGHT_PX = 24;
|
|
18
21
|
|
|
22
|
+
/** The default column width in CSS px, the width of every column the host does not size. 既定の列幅 (CSS px。ホストが寸法を決めない列の幅)。 */
|
|
23
|
+
export declare const SPREADSHEET_DEFAULT_COLUMN_WIDTH_PX = 100;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The default of `maxOperationCells` (ADR-12): the largest number of cells one operation (paste, fill, clear, format)
|
|
27
|
+
* may touch before the grid refuses it.
|
|
28
|
+
* `maxOperationCells` の既定値 (ADR-12)。1 つの操作 (貼り付け・フィル・消去・書式) が触れてよいセル数の上限で、超えるとグリッドが拒む。
|
|
29
|
+
*/
|
|
30
|
+
export declare const SPREADSHEET_MAX_OPERATION_CELLS = 100000;
|
|
31
|
+
|
|
19
32
|
/** The width of the row-header band in CSS px (`--aqsp-row-header-width` in the stylesheet). 行見出しの帯の幅 (CSS px。スタイルシートの `--aqsp-row-header-width`)。 */
|
|
20
33
|
export declare const SPREADSHEET_ROW_HEADER_WIDTH_PX = 64;
|
|
21
34
|
|
|
@@ -33,16 +46,27 @@ export declare const SPREADSHEET_ZOOM_MAX = 4;
|
|
|
33
46
|
export declare const SPREADSHEET_ZOOM_MIN = 0.25;
|
|
34
47
|
|
|
35
48
|
/**
|
|
36
|
-
* The
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* 拡大縮小の操作 (Alt+ホイールと Ctrl+Alt+= / -)
|
|
40
|
-
* (
|
|
41
|
-
|
|
49
|
+
* The zoom ladder of the gestures (Alt+Wheel and Ctrl+Alt+= / -): the geometric series `2^(k/4)` for every integer `k`
|
|
50
|
+
* from −8 to 8, rounded to hundredths, so it runs from SPREADSHEET_ZOOM_MIN (0.25) through 1 to SPREADSHEET_ZOOM_MAX (4)
|
|
51
|
+
* in steps of about 19 % and every power of two is a step.
|
|
52
|
+
* 拡大縮小の操作 (Alt+ホイールと Ctrl+Alt+= / -) の段。−8 から 8 までの整数 `k` の等比数列 `2^(k/4)` を 100 分の 1 に丸めた
|
|
53
|
+
* もので、SPREADSHEET_ZOOM_MIN (0.25) から 1 を通って SPREADSHEET_ZOOM_MAX (4) まで約 19 % ずつ進み、2 の累乗はどれも段に乗る。
|
|
54
|
+
*/
|
|
55
|
+
export declare const SPREADSHEET_ZOOM_STEPS: readonly number[];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The next step of SPREADSHEET_ZOOM_STEPS in the travel direction, from any finite value, including a value off the
|
|
59
|
+
* ladder (a host's 1.25 goes to 1.41 up and 1.19 down). The input is clamped first, as clampSpreadsheetZoom does, and
|
|
60
|
+
* the step is taken from the clamped value: 9 zooms out to 3.36 and 0.01 zooms in to 0.3, and at a bound the result stays
|
|
61
|
+
* at that bound (in from SPREADSHEET_ZOOM_MAX, out from SPREADSHEET_ZOOM_MIN). A non-finite value fails fast.
|
|
62
|
+
* 進む向きの SPREADSHEET_ZOOM_STEPS の次の段を返す処理。段の外の値 (ホストの 1.25 は上で 1.41、下で 1.19) を含む、どの有限の
|
|
63
|
+
* 値からでも求める。入力を先に clampSpreadsheetZoom と同じく範囲へ切り、切った値から一歩進む (9 からの縮小は 3.36、0.01 からの
|
|
64
|
+
* 拡大は 0.3)。端では端に留まる (SPREADSHEET_ZOOM_MAX からの拡大、SPREADSHEET_ZOOM_MIN からの縮小)。有限でない値はすぐに投げる。
|
|
42
65
|
*
|
|
43
66
|
* @param value - The current zoom. 今の拡大率。
|
|
44
67
|
* @param direction - 1 to zoom in, -1 to zoom out. 拡大は 1、縮小は -1。
|
|
45
|
-
* @returns The next
|
|
68
|
+
* @returns The next ladder step in that direction from the clamped input. 範囲へ切った入力からのその向きの次の段。
|
|
69
|
+
* @throws {RangeError} When the value is not finite. 有限でない場合。
|
|
46
70
|
*/
|
|
47
71
|
export declare const stepSpreadsheetZoom: (value: number, direction: 1 | -1) => number;
|
|
48
72
|
|
package/dist/view.d.ts
CHANGED
|
@@ -13,9 +13,22 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const clampSpreadsheetZoom: (value: number) => number;
|
|
15
15
|
|
|
16
|
+
/** Column index (0-based) to Excel-style name (0 → A, 26 → AA, 16383 → XFD). / 列 index → 列名。 */
|
|
17
|
+
export declare const columnIndexToName: (index: number) => string;
|
|
18
|
+
|
|
16
19
|
/** The height of the column-header band in CSS px (`--aqsp-col-header-height` in the stylesheet). 列見出しの帯の高さ (CSS px。スタイルシートの `--aqsp-col-header-height`)。 */
|
|
17
20
|
export declare const SPREADSHEET_COLUMN_HEADER_HEIGHT_PX = 24;
|
|
18
21
|
|
|
22
|
+
/** The default column width in CSS px, the width of every column the host does not size. 既定の列幅 (CSS px。ホストが寸法を決めない列の幅)。 */
|
|
23
|
+
export declare const SPREADSHEET_DEFAULT_COLUMN_WIDTH_PX = 100;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The default of `maxOperationCells` (ADR-12): the largest number of cells one operation (paste, fill, clear, format)
|
|
27
|
+
* may touch before the grid refuses it.
|
|
28
|
+
* `maxOperationCells` の既定値 (ADR-12)。1 つの操作 (貼り付け・フィル・消去・書式) が触れてよいセル数の上限で、超えるとグリッドが拒む。
|
|
29
|
+
*/
|
|
30
|
+
export declare const SPREADSHEET_MAX_OPERATION_CELLS = 100000;
|
|
31
|
+
|
|
19
32
|
/** The width of the row-header band in CSS px (`--aqsp-row-header-width` in the stylesheet). 行見出しの帯の幅 (CSS px。スタイルシートの `--aqsp-row-header-width`)。 */
|
|
20
33
|
export declare const SPREADSHEET_ROW_HEADER_WIDTH_PX = 64;
|
|
21
34
|
|
|
@@ -33,16 +46,27 @@ export declare const SPREADSHEET_ZOOM_MAX = 4;
|
|
|
33
46
|
export declare const SPREADSHEET_ZOOM_MIN = 0.25;
|
|
34
47
|
|
|
35
48
|
/**
|
|
36
|
-
* The
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* 拡大縮小の操作 (Alt+ホイールと Ctrl+Alt+= / -)
|
|
40
|
-
* (
|
|
41
|
-
|
|
49
|
+
* The zoom ladder of the gestures (Alt+Wheel and Ctrl+Alt+= / -): the geometric series `2^(k/4)` for every integer `k`
|
|
50
|
+
* from −8 to 8, rounded to hundredths, so it runs from SPREADSHEET_ZOOM_MIN (0.25) through 1 to SPREADSHEET_ZOOM_MAX (4)
|
|
51
|
+
* in steps of about 19 % and every power of two is a step.
|
|
52
|
+
* 拡大縮小の操作 (Alt+ホイールと Ctrl+Alt+= / -) の段。−8 から 8 までの整数 `k` の等比数列 `2^(k/4)` を 100 分の 1 に丸めた
|
|
53
|
+
* もので、SPREADSHEET_ZOOM_MIN (0.25) から 1 を通って SPREADSHEET_ZOOM_MAX (4) まで約 19 % ずつ進み、2 の累乗はどれも段に乗る。
|
|
54
|
+
*/
|
|
55
|
+
export declare const SPREADSHEET_ZOOM_STEPS: readonly number[];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The next step of SPREADSHEET_ZOOM_STEPS in the travel direction, from any finite value, including a value off the
|
|
59
|
+
* ladder (a host's 1.25 goes to 1.41 up and 1.19 down). The input is clamped first, as clampSpreadsheetZoom does, and
|
|
60
|
+
* the step is taken from the clamped value: 9 zooms out to 3.36 and 0.01 zooms in to 0.3, and at a bound the result stays
|
|
61
|
+
* at that bound (in from SPREADSHEET_ZOOM_MAX, out from SPREADSHEET_ZOOM_MIN). A non-finite value fails fast.
|
|
62
|
+
* 進む向きの SPREADSHEET_ZOOM_STEPS の次の段を返す処理。段の外の値 (ホストの 1.25 は上で 1.41、下で 1.19) を含む、どの有限の
|
|
63
|
+
* 値からでも求める。入力を先に clampSpreadsheetZoom と同じく範囲へ切り、切った値から一歩進む (9 からの縮小は 3.36、0.01 からの
|
|
64
|
+
* 拡大は 0.3)。端では端に留まる (SPREADSHEET_ZOOM_MAX からの拡大、SPREADSHEET_ZOOM_MIN からの縮小)。有限でない値はすぐに投げる。
|
|
42
65
|
*
|
|
43
66
|
* @param value - The current zoom. 今の拡大率。
|
|
44
67
|
* @param direction - 1 to zoom in, -1 to zoom out. 拡大は 1、縮小は -1。
|
|
45
|
-
* @returns The next
|
|
68
|
+
* @returns The next ladder step in that direction from the clamped input. 範囲へ切った入力からのその向きの次の段。
|
|
69
|
+
* @throws {RangeError} When the value is not finite. 有限でない場合。
|
|
46
70
|
*/
|
|
47
71
|
export declare const stepSpreadsheetZoom: (value: number, direction: 1 | -1) => number;
|
|
48
72
|
|