uomtiles 0.1.1 → 0.1.2
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BQlj8Xoe.js → 0hm88Oke.js} +1 -1
- package/.output/public/_nuxt/BNfSclJ4.js +1 -0
- package/.output/public/_nuxt/{B_S8P0kE2.js → BYzlinOr2.js} +1 -1
- package/.output/public/_nuxt/{BiWblTbb.js → Bd1EvHmY.js} +1 -1
- package/.output/public/_nuxt/Be4dNlar.js +1 -0
- package/.output/public/_nuxt/{C4qlzA4o.js → C7fHMLd7.js} +1 -1
- package/.output/public/_nuxt/CQ8inUdm.js +1 -0
- package/.output/public/_nuxt/{B2648adu2.js → CU486JdV2.js} +2 -2
- package/.output/public/_nuxt/{BBJwRf9k.js → Cc_JfSB1.js} +1 -1
- package/.output/public/_nuxt/CgcnoKpi.js +1 -0
- package/.output/public/_nuxt/{dj2oMyB1.js → CovBj6WN.js} +1 -1
- package/.output/public/_nuxt/{BuYkCss52.js → CyZDc0eO2.js} +1 -1
- package/.output/public/_nuxt/{DtFVCXI9.js → CzFefJH0.js} +1 -1
- package/.output/public/_nuxt/{BdQwPExE.js → D-t0hXHB.js} +1 -1
- package/.output/public/_nuxt/D3Pl7yw22.js +1 -0
- package/.output/public/_nuxt/{C6YoBcbT.js → D4gbGuiW.js} +1 -1
- package/.output/public/_nuxt/{DkcySee1.js → DDp9lK3g.js} +1 -1
- package/.output/public/_nuxt/DIIXHC50.js +1 -0
- package/.output/public/_nuxt/DWFUvzz0.js +1 -0
- package/.output/public/_nuxt/D_VoD6-f.js +1 -0
- package/.output/public/_nuxt/{54er8ZVX.js → DaQqwE3R.js} +5 -5
- package/.output/public/_nuxt/DfXX-x_z.js +1 -0
- package/.output/public/_nuxt/Dgyf2aNY.js +1 -0
- package/.output/public/_nuxt/DpIPeY5m.js +1 -0
- package/.output/public/_nuxt/{DV5CwoOP2.js → GM5myUL22.js} +1 -1
- package/.output/public/_nuxt/{P_icVLkX.js → IC4wc76W.js} +1 -1
- package/.output/public/_nuxt/{DIt0vOP7.js → IfL46N3Z.js} +1 -1
- package/.output/public/_nuxt/{DrLbKQlJ.js → KEU2l6zJ.js} +1 -1
- package/.output/public/_nuxt/{DC3bhq63.js → Q79ec-Ro.js} +1 -1
- package/.output/public/_nuxt/SEETjfdJ.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/2c4adba2-91b5-44e4-91d3-50a61695207b.json +1 -0
- package/.output/public/_nuxt/entry.CZ_dkjcs.css +1 -0
- package/.output/public/_nuxt/{ByRlKR9F.js → nGp0t_eD.js} +1 -1
- package/.output/server/chunks/_/config.mjs +53 -6
- package/.output/server/chunks/_/config.mjs.map +1 -1
- package/.output/server/chunks/_/export.mjs +7 -0
- package/.output/server/chunks/_/export.mjs.map +1 -0
- package/.output/server/chunks/_/file-workspace.mjs +131 -36
- package/.output/server/chunks/_/file-workspace.mjs.map +1 -1
- package/.output/server/chunks/_/map-service.mjs +1 -1
- package/.output/server/chunks/_/pixel-diff.mjs +1 -1
- package/.output/server/chunks/build/Alert-DHVVSgdD.mjs +1074 -0
- package/.output/server/chunks/build/Alert-DHVVSgdD.mjs.map +1 -0
- package/.output/server/chunks/build/{Alert-CBMepLwP.mjs → CompletedTaskSelect-CKTpyHS3.mjs} +31 -725
- package/.output/server/chunks/build/CompletedTaskSelect-CKTpyHS3.mjs.map +1 -0
- package/.output/server/chunks/build/{PopperArrow-xcjACqm-.mjs → DashboardSidebarToggle-CUI9NSow.mjs} +567 -5
- package/.output/server/chunks/build/DashboardSidebarToggle-CUI9NSow.mjs.map +1 -0
- package/.output/server/chunks/build/{Empty-CkW3mADt.mjs → Empty-BGIn09cL.mjs} +1 -1
- package/.output/server/chunks/build/{Empty-CkW3mADt.mjs.map → Empty-BGIn09cL.mjs.map} +1 -1
- package/.output/server/chunks/build/{FocusScope-BJ-B0nKb.mjs → FocusScope-DNZVMnza.mjs} +2 -2
- package/.output/server/chunks/build/{FocusScope-BJ-B0nKb.mjs.map → FocusScope-DNZVMnza.mjs.map} +1 -1
- package/.output/server/chunks/build/{FormField-CEUZHcv7.mjs → FormField-DnJWfrKE.mjs} +2 -2
- package/.output/server/chunks/build/{FormField-CEUZHcv7.mjs.map → FormField-DnJWfrKE.mjs.map} +1 -1
- package/.output/server/chunks/build/{Input-BeNavYXb.mjs → Input-AdlINKtJ.mjs} +1 -1
- package/.output/server/chunks/build/{Input-BeNavYXb.mjs.map → Input-AdlINKtJ.mjs.map} +1 -1
- package/.output/server/chunks/build/{MapBaseLayerTabs-Xu5bXAvH.mjs → MapBaseLayerTabs-CRl5Zwlr.mjs} +3 -3
- package/.output/server/chunks/build/{MapBaseLayerTabs-Xu5bXAvH.mjs.map → MapBaseLayerTabs-CRl5Zwlr.mjs.map} +1 -1
- package/.output/server/chunks/build/{Modal-D-dPQW3w.mjs → Modal-CozaqIp1.mjs} +13 -5
- package/.output/server/chunks/build/{Modal-D-dPQW3w.mjs.map → Modal-CozaqIp1.mjs.map} +1 -1
- package/.output/server/chunks/build/{OnlineMap-CKwiuqUY.mjs → OnlineMap-cFSicmkV.mjs} +1 -1
- package/.output/server/chunks/build/{OnlineMap-CKwiuqUY.mjs.map → OnlineMap-cFSicmkV.mjs.map} +1 -1
- package/.output/server/chunks/build/{Pagination-CkUsaatC.mjs → Pagination-GvNCxmOW.mjs} +1 -1
- package/.output/server/chunks/build/{Pagination-CkUsaatC.mjs.map → Pagination-GvNCxmOW.mjs.map} +1 -1
- package/.output/server/chunks/build/{Slider-CRpk8Y2j.mjs → Slider-zQx1c7hB.mjs} +10 -25
- package/.output/server/chunks/build/Slider-zQx1c7hB.mjs.map +1 -0
- package/.output/server/chunks/build/{Tooltip-BQHl07T-.mjs → Tooltip-DNUdH4oF.mjs} +3 -4
- package/.output/server/chunks/build/{Tooltip-BQHl07T-.mjs.map → Tooltip-DNUdH4oF.mjs.map} +1 -1
- package/.output/server/chunks/build/{advanced-C2aEmUTl.mjs → advanced-5ZGMUBqC.mjs} +16 -17
- package/.output/server/chunks/build/advanced-5ZGMUBqC.mjs.map +1 -0
- package/.output/server/chunks/build/clamp-CdZXprXk.mjs +65 -0
- package/.output/server/chunks/build/clamp-CdZXprXk.mjs.map +1 -0
- package/.output/server/chunks/build/{compare-NMjjryG_.mjs → compare-CtgF4Anj.mjs} +16 -16
- package/.output/server/chunks/build/{compare-NMjjryG_.mjs.map → compare-CtgF4Anj.mjs.map} +1 -1
- package/.output/server/chunks/build/{dashboard-DYapNywh.mjs → dashboard-GneN-WPG.mjs} +15 -8
- package/.output/server/chunks/build/{dashboard-DYapNywh.mjs.map → dashboard-GneN-WPG.mjs.map} +1 -1
- package/.output/server/chunks/build/{details-Cyq3FQAG.mjs → details-CgufnL1d.mjs} +4 -4
- package/.output/server/chunks/build/{details-Cyq3FQAG.mjs.map → details-CgufnL1d.mjs.map} +1 -1
- package/.output/server/chunks/build/error-404-D9aQjJRn.mjs +1 -1
- package/.output/server/chunks/build/error-500-BNyA3wrb.mjs +1 -1
- package/.output/server/chunks/build/{interval-BxUMpo78.mjs → interval-9B2MrM2e.mjs} +2 -2
- package/.output/server/chunks/build/{interval-BxUMpo78.mjs.map → interval-9B2MrM2e.mjs.map} +1 -1
- package/.output/server/chunks/build/{login-gQQfuSWN.mjs → login-Cf5EiCE4.mjs} +4 -4
- package/.output/server/chunks/build/{login-gQQfuSWN.mjs.map → login-Cf5EiCE4.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-CLVitjz2.mjs → pages-0c5sp_lv.mjs} +6 -7
- package/.output/server/chunks/build/pages-0c5sp_lv.mjs.map +1 -0
- package/.output/server/chunks/build/{services-C9oQ6UZi.mjs → services-BB49kSpd.mjs} +14 -14
- package/.output/server/chunks/build/{services-C9oQ6UZi.mjs.map → services-BB49kSpd.mjs.map} +1 -1
- package/.output/server/chunks/build/{tasks-HCUoEUbh.mjs → tasks-Aa8PwjVL.mjs} +3 -3
- package/.output/server/chunks/build/{tasks-HCUoEUbh.mjs.map → tasks-Aa8PwjVL.mjs.map} +1 -1
- package/.output/server/chunks/build/tasks-BRcMLuRW.mjs +6121 -0
- package/.output/server/chunks/build/tasks-BRcMLuRW.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +258 -256
- package/.output/server/chunks/routes/api/map-service/config.post.mjs +1 -0
- package/.output/server/chunks/routes/api/map-service/config.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/map-service/file.post.mjs +1 -0
- package/.output/server/chunks/routes/api/map-service/file.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/map-service/source.post.mjs +1 -0
- package/.output/server/chunks/routes/api/map-service/source.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/map-service/status.get.mjs +1 -0
- package/.output/server/chunks/routes/api/map-service/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs +10 -3
- package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/_filename/export-estimate.get.mjs +39 -0
- package/.output/server/chunks/routes/api/workspace/_filename/export-estimate.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/compare.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/compare.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/fetch.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/fetch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/files.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/files.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/files.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workspace/files.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/stop.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workspace/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workspace/tasks.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workspace/tasks.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/routes/services/wms.get.mjs +1 -0
- package/.output/server/chunks/routes/services/wms.get.mjs.map +1 -1
- package/.output/server/chunks/routes/services/wmts.get.mjs +1 -0
- package/.output/server/chunks/routes/services/wmts.get.mjs.map +1 -1
- package/.output/server/chunks/virtual/entry.mjs +13 -13
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README.md +6 -1
- package/dist/package.json +1 -1
- package/dist/shared/export.js +4 -0
- package/dist/shared/types/export.js +1 -0
- package/dist/src/cli.js +4 -1
- package/dist/src/core/grid-renderer.js +29 -15
- package/dist/src/core/png.js +59 -6
- package/dist/src/core/uomtiles.js +96 -13
- package/package.json +1 -1
- package/.output/public/_nuxt/BWYASl8D.js +0 -1
- package/.output/public/_nuxt/BalC97Hq2.js +0 -1
- package/.output/public/_nuxt/Bd0XS-K-.js +0 -1
- package/.output/public/_nuxt/Bt5oyQw_.js +0 -1
- package/.output/public/_nuxt/BvQDTQww.js +0 -1
- package/.output/public/_nuxt/By4gkuDZ.js +0 -1
- package/.output/public/_nuxt/D4tzFemo.js +0 -1
- package/.output/public/_nuxt/DCT2aLwC.js +0 -1
- package/.output/public/_nuxt/Dq-XSsAz.js +0 -1
- package/.output/public/_nuxt/Dz7VMlHR.js +0 -1
- package/.output/public/_nuxt/XZ59tThl.js +0 -1
- package/.output/public/_nuxt/builds/meta/0e6b25d2-67d5-42d2-8971-b7374bfbdda5.json +0 -1
- package/.output/public/_nuxt/entry.BmEdVIZg.css +0 -1
- package/.output/public/_nuxt/yq0nsLQU.js +0 -1
- package/.output/server/chunks/build/Alert-CBMepLwP.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardSidebarToggle-D24DGyKq.mjs +0 -569
- package/.output/server/chunks/build/DashboardSidebarToggle-D24DGyKq.mjs.map +0 -1
- package/.output/server/chunks/build/PopperArrow-xcjACqm-.mjs.map +0 -1
- package/.output/server/chunks/build/ScrollArea-QgwoohKb.mjs +0 -379
- package/.output/server/chunks/build/ScrollArea-QgwoohKb.mjs.map +0 -1
- package/.output/server/chunks/build/Slider-CRpk8Y2j.mjs.map +0 -1
- package/.output/server/chunks/build/advanced-C2aEmUTl.mjs.map +0 -1
- package/.output/server/chunks/build/pages-CLVitjz2.mjs.map +0 -1
- package/.output/server/chunks/build/tasks-Cr8nWwss.mjs +0 -915
- package/.output/server/chunks/build/tasks-Cr8nWwss.mjs.map +0 -1
|
@@ -120,30 +120,44 @@ export class GeographicGridRenderer {
|
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
122
|
const scale = 2 ** (z - SOURCE_ZOOM);
|
|
123
|
-
|
|
123
|
+
const worldMax = 2 ** z - 1;
|
|
124
|
+
const roots = [...this.roots.values()].sort((left, right) => left.x - right.x || left.y - right.y);
|
|
125
|
+
for (const root of roots) {
|
|
126
|
+
const rows = new Map();
|
|
127
|
+
const sourceX0 = root.x * sourceRootSize;
|
|
128
|
+
const sourceY0 = root.y * sourceRootSize;
|
|
124
129
|
for (const rect of root.rects) {
|
|
125
|
-
const sourceX0 = root.x * sourceRootSize;
|
|
126
|
-
const sourceY0 = root.y * sourceRootSize;
|
|
127
130
|
const pixelX0 = Math.round((sourceX0 + root.xLines[rect.col0]) * scale);
|
|
128
131
|
const pixelY0 = Math.round((sourceY0 + root.yLines[rect.row0]) * scale);
|
|
129
132
|
const pixelX1 = Math.round((sourceX0 + root.xLines[rect.col1]) * scale);
|
|
130
133
|
const pixelY1 = Math.round((sourceY0 + root.yLines[rect.row1]) * scale);
|
|
131
134
|
if (pixelX0 >= pixelX1 || pixelY0 >= pixelY1)
|
|
132
135
|
continue;
|
|
133
|
-
const x0 = Math.
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
const x0 = Math.max(0, Math.floor(pixelX0 / 256));
|
|
137
|
+
const y0 = Math.max(0, Math.floor(pixelY0 / 256));
|
|
138
|
+
const x1 = Math.min(worldMax, Math.floor((pixelX1 - 1) / 256));
|
|
139
|
+
const y1 = Math.min(worldMax, Math.floor((pixelY1 - 1) / 256));
|
|
140
|
+
for (let tileY = y0; tileY <= y1; tileY++) {
|
|
141
|
+
const intervals = rows.get(tileY) || [];
|
|
142
|
+
intervals.push([x0, x1]);
|
|
143
|
+
rows.set(tileY, intervals);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
for (const tileY of [...rows.keys()].sort((left, right) => left - right)) {
|
|
147
|
+
const intervals = rows.get(tileY).sort((left, right) => left[0] - right[0] || left[1] - right[1]);
|
|
148
|
+
let [start, end] = intervals[0];
|
|
149
|
+
for (let index = 1; index <= intervals.length; index++) {
|
|
150
|
+
const next = intervals[index];
|
|
151
|
+
if (next && next[0] <= end + 1) {
|
|
152
|
+
end = Math.max(end, next[1]);
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
for (let tileX = start; tileX <= end; tileX++)
|
|
156
|
+
yield { z, x: tileX, y: tileY };
|
|
157
|
+
if (next)
|
|
158
|
+
[start, end] = next;
|
|
139
159
|
}
|
|
140
160
|
}
|
|
141
|
-
for (const coordinate of [...coordinates].sort((left, right) => {
|
|
142
|
-
const [leftX, leftY] = left.split('/').map(Number), [rightX, rightY] = right.split('/').map(Number);
|
|
143
|
-
return leftX - rightX || leftY - rightY;
|
|
144
|
-
})) {
|
|
145
|
-
const [x, y] = coordinate.split('/').map(Number);
|
|
146
|
-
yield { z, x: x, y: y };
|
|
147
161
|
}
|
|
148
162
|
}
|
|
149
163
|
}
|
package/dist/src/core/png.js
CHANGED
|
@@ -167,20 +167,73 @@ export function decodeUomAlphaMask(png, expectedWidth, expectedHeight = expected
|
|
|
167
167
|
export function decodeCanonicalAlphaMask(png, expectedWidth, expectedHeight = expectedWidth) {
|
|
168
168
|
return alphaMask(decodeIndexedPng(png, true), expectedWidth, expectedHeight);
|
|
169
169
|
}
|
|
170
|
+
function paeth(left, up, upLeft) {
|
|
171
|
+
const estimate = left + up - upLeft;
|
|
172
|
+
const leftDistance = Math.abs(estimate - left);
|
|
173
|
+
const upDistance = Math.abs(estimate - up);
|
|
174
|
+
const cornerDistance = Math.abs(estimate - upLeft);
|
|
175
|
+
return leftDistance <= upDistance && leftDistance <= cornerDistance ? left : upDistance <= cornerDistance ? up : upLeft;
|
|
176
|
+
}
|
|
177
|
+
function filterRows(rows, rowBytes, height) {
|
|
178
|
+
const output = Buffer.allocUnsafe((rowBytes + 1) * height);
|
|
179
|
+
for (let y = 0; y < height; y++) {
|
|
180
|
+
const rowOffset = y * rowBytes;
|
|
181
|
+
const outputOffset = y * (rowBytes + 1);
|
|
182
|
+
let bestFilter = 0;
|
|
183
|
+
let bestScore = Number.POSITIVE_INFINITY;
|
|
184
|
+
let best = Buffer.allocUnsafe(rowBytes);
|
|
185
|
+
for (let filter = 0; filter <= 4; filter++) {
|
|
186
|
+
const candidate = Buffer.allocUnsafe(rowBytes);
|
|
187
|
+
let score = 0;
|
|
188
|
+
for (let x = 0; x < rowBytes; x++) {
|
|
189
|
+
const current = rows[rowOffset + x];
|
|
190
|
+
const left = x > 0 ? rows[rowOffset + x - 1] : 0;
|
|
191
|
+
const up = y > 0 ? rows[rowOffset - rowBytes + x] : 0;
|
|
192
|
+
const upLeft = x > 0 && y > 0 ? rows[rowOffset - rowBytes + x - 1] : 0;
|
|
193
|
+
const prediction = filter === 0 ? 0
|
|
194
|
+
: filter === 1 ? left
|
|
195
|
+
: filter === 2 ? up
|
|
196
|
+
: filter === 3 ? Math.floor((left + up) / 2)
|
|
197
|
+
: paeth(left, up, upLeft);
|
|
198
|
+
const value = (current - prediction) & 0xff;
|
|
199
|
+
candidate[x] = value;
|
|
200
|
+
score += value < 128 ? value : 256 - value;
|
|
201
|
+
}
|
|
202
|
+
if (score < bestScore) {
|
|
203
|
+
bestFilter = filter;
|
|
204
|
+
bestScore = score;
|
|
205
|
+
best = candidate;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
output[outputOffset] = bestFilter;
|
|
209
|
+
best.copy(output, outputOffset + 1);
|
|
210
|
+
}
|
|
211
|
+
return output;
|
|
212
|
+
}
|
|
170
213
|
export function encodeIndexedPng(width, height, indexes, palette, alpha) {
|
|
171
214
|
if (indexes.length !== width * height)
|
|
172
215
|
throw new RangeError('indexed PNG dimensions do not match pixels');
|
|
173
216
|
if (palette.length === 0 || palette.length % 3 !== 0 || palette.length / 3 > 256)
|
|
174
217
|
throw new RangeError('invalid indexed PNG palette');
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
218
|
+
const paletteEntries = palette.length / 3;
|
|
219
|
+
const bitDepth = paletteEntries <= 2 ? 1 : paletteEntries <= 4 ? 2 : paletteEntries <= 16 ? 4 : 8;
|
|
220
|
+
const rowBytes = Math.ceil(width * bitDepth / 8);
|
|
221
|
+
const pixelsPerByte = 8 / bitDepth;
|
|
222
|
+
const rows = Buffer.alloc(rowBytes * height);
|
|
223
|
+
for (let y = 0; y < height; y++)
|
|
224
|
+
for (let x = 0; x < width; x++) {
|
|
225
|
+
const index = indexes[y * width + x];
|
|
226
|
+
if (index >= paletteEntries)
|
|
227
|
+
throw new RangeError('indexed PNG pixel exceeds palette');
|
|
228
|
+
const byte = y * rowBytes + Math.floor(x / pixelsPerByte);
|
|
229
|
+
const shift = 8 - bitDepth * (x % pixelsPerByte + 1);
|
|
230
|
+
rows[byte] = rows[byte] | index << shift;
|
|
231
|
+
}
|
|
232
|
+
const raw = filterRows(rows, rowBytes, height);
|
|
180
233
|
const ihdr = Buffer.alloc(13);
|
|
181
234
|
ihdr.writeUInt32BE(width, 0);
|
|
182
235
|
ihdr.writeUInt32BE(height, 4);
|
|
183
|
-
ihdr[8] =
|
|
236
|
+
ihdr[8] = bitDepth;
|
|
184
237
|
ihdr[9] = 3;
|
|
185
238
|
ihdr[10] = 0;
|
|
186
239
|
ihdr[11] = 0;
|
|
@@ -5,12 +5,14 @@ import { execFile } from 'node:child_process';
|
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
6
|
import { DatabaseSync } from 'node:sqlite';
|
|
7
7
|
import { UOMTILES_VERSION } from "../config.js";
|
|
8
|
+
import { DEFAULT_EXPORT_MAX_ZOOM, DEFAULT_EXPORT_MIN_ZOOM, EXPORT_MAX_ZOOM, EXPORT_MIN_ZOOM, } from "../../shared/export.js";
|
|
8
9
|
import { acquireSqliteLease } from "./lease.js";
|
|
9
10
|
import { decodeCanonicalAlphaMask } from "./png.js";
|
|
10
|
-
import { GeographicGridRenderer
|
|
11
|
+
import { GeographicGridRenderer } from "./grid-renderer.js";
|
|
11
12
|
import { xyzYToTmsY } from "../bbox.js";
|
|
12
13
|
const execFileAsync = promisify(execFile);
|
|
13
14
|
const UOMTILES_SCHEMA_VERSION = 1;
|
|
15
|
+
const MIN_NONEMPTY_PNG_BYTES = 120;
|
|
14
16
|
function tables(db) {
|
|
15
17
|
return new Set(db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all().map(row => row.name));
|
|
16
18
|
}
|
|
@@ -19,6 +21,63 @@ function metadata(db) {
|
|
|
19
21
|
return {};
|
|
20
22
|
return Object.fromEntries(db.prepare('SELECT name,value FROM metadata').all().map(row => [row.name, row.value]));
|
|
21
23
|
}
|
|
24
|
+
export function exportZoomRange(options = {}) {
|
|
25
|
+
const minZoom = options.minZoom ?? DEFAULT_EXPORT_MIN_ZOOM;
|
|
26
|
+
const maxZoom = options.maxZoom ?? DEFAULT_EXPORT_MAX_ZOOM;
|
|
27
|
+
if (!Number.isInteger(minZoom) || minZoom < EXPORT_MIN_ZOOM || minZoom > EXPORT_MAX_ZOOM) {
|
|
28
|
+
throw new RangeError(`最小导出层级必须是 z${EXPORT_MIN_ZOOM}–z${EXPORT_MAX_ZOOM} 的整数`);
|
|
29
|
+
}
|
|
30
|
+
if (!Number.isInteger(maxZoom) || maxZoom < EXPORT_MIN_ZOOM || maxZoom > EXPORT_MAX_ZOOM) {
|
|
31
|
+
throw new RangeError(`最大导出层级必须是 z${EXPORT_MIN_ZOOM}–z${EXPORT_MAX_ZOOM} 的整数`);
|
|
32
|
+
}
|
|
33
|
+
if (minZoom > maxZoom)
|
|
34
|
+
throw new RangeError('最小导出层级不能大于最大导出层级');
|
|
35
|
+
return { minZoom, maxZoom };
|
|
36
|
+
}
|
|
37
|
+
function projectedLevel(summary, zoom) {
|
|
38
|
+
const reencodedPngRatio = zoom <= 8 ? 0.93 : Math.max(0.58, 0.93 - (zoom - 8) * 0.075);
|
|
39
|
+
const known = new Map(summary.tiles.map(level => [level.z, level]));
|
|
40
|
+
const exact = known.get(zoom);
|
|
41
|
+
if (exact)
|
|
42
|
+
return {
|
|
43
|
+
tileCount: exact.count,
|
|
44
|
+
pngBytes: Math.max(exact.count * MIN_NONEMPTY_PNG_BYTES, Math.round(exact.bytes * reencodedPngRatio)),
|
|
45
|
+
tileCountExact: true,
|
|
46
|
+
};
|
|
47
|
+
const levels = [...known.values()].sort((left, right) => left.z - right.z);
|
|
48
|
+
const base = levels.reduce((nearest, level) => Math.abs(level.z - zoom) < Math.abs(nearest.z - zoom) ? level : nearest, levels[0]);
|
|
49
|
+
if (!base)
|
|
50
|
+
return { tileCount: 0, pngBytes: 0, tileCountExact: false };
|
|
51
|
+
const baseRatio = base.z <= 8 ? 0.93 : Math.max(0.58, 0.93 - (base.z - 8) * 0.075);
|
|
52
|
+
const baseAverage = Math.max(MIN_NONEMPTY_PNG_BYTES, base.bytes / Math.max(1, base.count) * baseRatio);
|
|
53
|
+
const distance = Math.abs(zoom - base.z);
|
|
54
|
+
if (zoom > base.z) {
|
|
55
|
+
const tileCount = Math.max(1, Math.round(base.count * 3.75 ** distance));
|
|
56
|
+
const average = MIN_NONEMPTY_PNG_BYTES + (baseAverage - MIN_NONEMPTY_PNG_BYTES) * 0.55 ** distance;
|
|
57
|
+
return { tileCount, pngBytes: Math.round(tileCount * average), tileCountExact: false };
|
|
58
|
+
}
|
|
59
|
+
const tileCount = Math.max(1, Math.round(base.count / 3.5 ** distance));
|
|
60
|
+
const average = Math.min(1_600, baseAverage * 1.25 ** distance);
|
|
61
|
+
return { tileCount, pngBytes: Math.round(tileCount * average), tileCountExact: false };
|
|
62
|
+
}
|
|
63
|
+
export function estimateExport(source, format, options = {}) {
|
|
64
|
+
const range = exportZoomRange(options);
|
|
65
|
+
const summary = inspectUomtiles(source);
|
|
66
|
+
const levels = [];
|
|
67
|
+
let tileCount = 0;
|
|
68
|
+
let pngBytes = 0;
|
|
69
|
+
for (let zoom = range.minZoom; zoom <= range.maxZoom; zoom++) {
|
|
70
|
+
const level = projectedLevel(summary, zoom);
|
|
71
|
+
tileCount += level.tileCount;
|
|
72
|
+
pngBytes += level.pngBytes;
|
|
73
|
+
levels.push({ zoom, tileCount: level.tileCount, estimatedBytes: level.pngBytes, tileCountExact: level.tileCountExact });
|
|
74
|
+
}
|
|
75
|
+
// Fresh MBTiles files pay for SQLite B-trees; PMTiles deduplicates PNG blobs and has compact varint directories.
|
|
76
|
+
const estimatedBytes = format === 'mbtiles'
|
|
77
|
+
? pngBytes + tileCount * 80 + 128 * 1024
|
|
78
|
+
: Math.round(pngBytes * 0.82 + tileCount * 16 + 64 * 1024);
|
|
79
|
+
return { ...range, format, estimatedBytes, tileCount, levels, omitsEmptyTiles: true };
|
|
80
|
+
}
|
|
22
81
|
export function initializeUomtiles(path, publisher) {
|
|
23
82
|
mkdirSync(dirname(path), { recursive: true });
|
|
24
83
|
const db = new DatabaseSync(path);
|
|
@@ -131,9 +190,10 @@ export function inspectUomtiles(path) {
|
|
|
131
190
|
db.close();
|
|
132
191
|
}
|
|
133
192
|
}
|
|
134
|
-
export function exportMbtiles(source, target) {
|
|
193
|
+
export function exportMbtiles(source, target, options = {}) {
|
|
135
194
|
const input = resolve(source);
|
|
136
195
|
const output = resolve(target);
|
|
196
|
+
const range = exportZoomRange(options);
|
|
137
197
|
if (extname(output).toLowerCase() !== '.mbtiles')
|
|
138
198
|
throw new Error('MBTiles 输出文件必须使用 .mbtiles 扩展名');
|
|
139
199
|
const lock = acquireSqliteLease(input, 'writer');
|
|
@@ -143,29 +203,45 @@ export function exportMbtiles(source, target) {
|
|
|
143
203
|
mkdirSync(dirname(output), { recursive: true });
|
|
144
204
|
const sourceDb = new DatabaseSync(input, { readOnly: true });
|
|
145
205
|
const outputDb = new DatabaseSync(temporary);
|
|
206
|
+
let complete = false;
|
|
146
207
|
try {
|
|
147
208
|
outputDb.exec(`PRAGMA journal_mode=OFF; PRAGMA synchronous=OFF;
|
|
148
209
|
CREATE TABLE metadata(name TEXT PRIMARY KEY,value TEXT NOT NULL);
|
|
149
210
|
CREATE TABLE tiles(zoom_level INTEGER NOT NULL,tile_column INTEGER NOT NULL,tile_row INTEGER NOT NULL,tile_data BLOB NOT NULL,
|
|
150
211
|
PRIMARY KEY(zoom_level,tile_column,tile_row));`);
|
|
151
212
|
const insertMeta = outputDb.prepare('INSERT INTO metadata(name,value) VALUES(?,?)');
|
|
152
|
-
const standard = new Set(['name', 'type', 'version', 'description', 'format', 'bounds', 'center', 'minzoom', 'attribution']);
|
|
153
213
|
const meta = metadata(sourceDb);
|
|
154
214
|
outputDb.exec('BEGIN');
|
|
155
|
-
for (const name of standard)
|
|
156
|
-
if (meta[name])
|
|
157
|
-
insertMeta.run(name, meta[name]);
|
|
158
215
|
const summary = inspectUomtiles(input);
|
|
216
|
+
const bounds = meta.bounds || '73,17.5,135.5,54';
|
|
217
|
+
const [west, south, east, north] = bounds.split(',').map(Number);
|
|
218
|
+
const sourceCenter = meta.center?.split(',').map(Number);
|
|
219
|
+
const centerZoom = Math.min(range.maxZoom, Math.max(range.minZoom, Number.isFinite(sourceCenter?.[2]) ? sourceCenter[2] : 9));
|
|
220
|
+
const center = `${Number.isFinite(sourceCenter?.[0]) ? sourceCenter[0] : (west + east) / 2},${Number.isFinite(sourceCenter?.[1]) ? sourceCenter[1] : (south + north) / 2},${centerZoom}`;
|
|
221
|
+
const standard = {
|
|
222
|
+
name: meta.name || 'UOM适飞地图',
|
|
223
|
+
format: 'png',
|
|
224
|
+
bounds,
|
|
225
|
+
center,
|
|
226
|
+
minzoom: String(range.minZoom),
|
|
227
|
+
maxzoom: String(range.maxZoom),
|
|
228
|
+
type: 'overlay',
|
|
229
|
+
version: UOMTILES_VERSION,
|
|
230
|
+
description: meta.description || 'UOM适飞空域',
|
|
231
|
+
attribution: meta.attribution || 'CAAC UOM',
|
|
232
|
+
};
|
|
233
|
+
for (const [name, value] of Object.entries(standard))
|
|
234
|
+
insertMeta.run(name, value);
|
|
159
235
|
insertMeta.run('uomtiles:publisher', summary.publisher || 'unknown');
|
|
160
236
|
insertMeta.run('uomtiles:fetched_at', summary.finishedAt || summary.startedAt || 'unknown');
|
|
161
237
|
insertMeta.run('uomtiles:source_zoom', String(summary.sourceZoom ?? 'unknown'));
|
|
162
238
|
insertMeta.run('uomtiles:grid_level', String(summary.gridLevel ?? 'unknown'));
|
|
239
|
+
insertMeta.run('uomtiles:tool_version', UOMTILES_VERSION);
|
|
163
240
|
const renderer = new GeographicGridRenderer(input);
|
|
164
|
-
insertMeta.run('maxzoom', String(renderer.available ? PUBLISH_MAX_ZOOM : Math.max(0, ...summary.tiles.map(tile => tile.z))));
|
|
165
241
|
const insertTile = outputDb.prepare('INSERT INTO tiles VALUES(?,?,?,?)');
|
|
166
242
|
let copied = 0;
|
|
167
243
|
if (renderer.available) {
|
|
168
|
-
for (let z =
|
|
244
|
+
for (let z = range.minZoom; z <= range.maxZoom; z++)
|
|
169
245
|
for (const coordinate of renderer.contentCoordinates(z)) {
|
|
170
246
|
const tile = renderer.renderTile(z, coordinate.x, coordinate.y);
|
|
171
247
|
if (!tile)
|
|
@@ -177,7 +253,10 @@ export function exportMbtiles(source, target) {
|
|
|
177
253
|
}
|
|
178
254
|
}
|
|
179
255
|
else {
|
|
180
|
-
for (const row of sourceDb.prepare(
|
|
256
|
+
for (const row of sourceDb.prepare(`SELECT zoom_level,tile_column,tile_row,tile_data FROM tiles
|
|
257
|
+
WHERE zoom_level BETWEEN ? AND ? ORDER BY zoom_level,tile_column,tile_row`).iterate(range.minZoom, range.maxZoom)) {
|
|
258
|
+
if (!decodeCanonicalAlphaMask(row.tile_data, 256).some(Boolean))
|
|
259
|
+
continue;
|
|
181
260
|
insertTile.run(row.zoom_level, row.tile_column, row.tile_row, row.tile_data);
|
|
182
261
|
copied++;
|
|
183
262
|
if (copied % 1_000 === 0)
|
|
@@ -186,7 +265,8 @@ export function exportMbtiles(source, target) {
|
|
|
186
265
|
}
|
|
187
266
|
lock.heartbeat();
|
|
188
267
|
outputDb.exec('COMMIT');
|
|
189
|
-
outputDb.exec('
|
|
268
|
+
outputDb.exec('PRAGMA optimize;');
|
|
269
|
+
complete = true;
|
|
190
270
|
}
|
|
191
271
|
catch (error) {
|
|
192
272
|
try {
|
|
@@ -199,23 +279,26 @@ export function exportMbtiles(source, target) {
|
|
|
199
279
|
outputDb.close();
|
|
200
280
|
sourceDb.close();
|
|
201
281
|
lock.release();
|
|
282
|
+
if (!complete && existsSync(temporary))
|
|
283
|
+
unlinkSync(temporary);
|
|
202
284
|
}
|
|
203
285
|
if (existsSync(output))
|
|
204
286
|
unlinkSync(output);
|
|
205
287
|
renameSync(temporary, output);
|
|
206
288
|
return inspectUomtiles(output);
|
|
207
289
|
}
|
|
208
|
-
export async function exportTiles(source, target,
|
|
290
|
+
export async function exportTiles(source, target, options = {}) {
|
|
209
291
|
const extension = extname(target).toLowerCase();
|
|
210
292
|
if (extension === '.mbtiles') {
|
|
211
|
-
exportMbtiles(source, target);
|
|
293
|
+
exportMbtiles(source, target, options);
|
|
212
294
|
return;
|
|
213
295
|
}
|
|
214
296
|
if (extension !== '.pmtiles')
|
|
215
297
|
throw new Error('输出文件必须使用 .mbtiles 或 .pmtiles 扩展名');
|
|
216
298
|
const intermediate = `${resolve(target)}.${process.pid}.mbtiles`;
|
|
299
|
+
const pmtilesCommand = options.pmtilesCommand || process.env.UOMTILES_PMTILES_COMMAND || 'pmtiles';
|
|
217
300
|
try {
|
|
218
|
-
exportMbtiles(source, intermediate);
|
|
301
|
+
exportMbtiles(source, intermediate, options);
|
|
219
302
|
await execFileAsync(pmtilesCommand, ['convert', intermediate, resolve(target), '--force', '--quiet'], { timeout: 30 * 60_000 });
|
|
220
303
|
}
|
|
221
304
|
catch (error) {
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,$t as t,At as n,Bn as r,Bt as i,F as a,G as o,H as s,I as c,It as l,Lt as u,M as d,N as f,Ot as p,P as m,Pn as h,S as g,U as _,Vn as v,Wn as y,Xt as b,Zt as x,_r as S,_t as C,a as w,an as T,bt as E,cn as D,gr as O,gt as k,hr as A,ht as j,in as M,kn as N,ln as P,pr as F,qt as I,tt as L,wt as R}from"./C97TfNgP.js";import{Yt as ee,it as te,nt as ne,ot as re}from"./CgMd2Y5s.js";import{a as ie,i as ae,n as oe,r as se,t as ce}from"./Dq-XSsAz.js";import{D as z,K as B,at as V,b as H,d as U,ot as W,t as G,v as K,y as le}from"./ByRlKR9F.js";import{n as ue,r as de}from"./C6YoBcbT.js";import{o as fe,u as pe}from"./BQlj8Xoe.js";import{n as me,r as he}from"./DrLbKQlJ.js";import{n as ge}from"./Dz7VMlHR.js";import{o as _e}from"./DCT2aLwC.js";import{t as ve}from"./Bd0XS-K-.js";import{a as ye,c as be,i as q,l as xe,n as Se,o as Ce,r as we,s as J,t as Te,u as Ee}from"./D4tzFemo.js";import{t as De}from"./XZ59tThl.js";function Oe(e,t){let n=w().hook(e,t);N(n)}var ke={slots:{overlay:`fixed inset-0 bg-elevated/75`,content:`fixed bg-default divide-y divide-default sm:ring ring-default sm:shadow-lg flex flex-col focus:outline-none`,header:`flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)`,wrapper:``,body:`flex-1 overflow-y-auto p-4 sm:p-6`,footer:`flex items-center gap-1.5 p-4 sm:px-6`,title:`text-highlighted font-semibold`,description:`mt-1 text-muted text-sm`,close:`absolute top-4 end-4`},variants:{side:{top:{content:``},right:{content:`max-w-md`},bottom:{content:``},left:{content:`max-w-md`}},inset:{true:{content:`rounded-lg`}},transition:{true:{overlay:`data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]`}}},compoundVariants:[{side:`top`,inset:!0,class:{content:`max-h-[calc(100%-2rem)] inset-x-4 top-4`}},{side:`top`,inset:!1,class:{content:`max-h-full inset-x-0 top-0`}},{side:`right`,inset:!0,class:{content:`w-[calc(100%-2rem)] inset-y-4 right-4`}},{side:`right`,inset:!1,class:{content:`w-full inset-y-0 right-0`}},{side:`bottom`,inset:!0,class:{content:`max-h-[calc(100%-2rem)] inset-x-4 bottom-4`}},{side:`bottom`,inset:!1,class:{content:`max-h-full inset-x-0 bottom-0`}},{side:`left`,inset:!0,class:{content:`w-[calc(100%-2rem)] inset-y-4 left-4`}},{side:`left`,inset:!1,class:{content:`w-full inset-y-0 left-0`}},{transition:!0,side:`top`,class:{content:`data-[state=open]:animate-[slide-in-from-top_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-top_200ms_ease-in-out]`}},{transition:!0,side:`right`,class:{content:`data-[state=open]:animate-[slide-in-from-right_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-right_200ms_ease-in-out]`}},{transition:!0,side:`bottom`,class:{content:`data-[state=open]:animate-[slide-in-from-bottom_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-bottom_200ms_ease-in-out]`}},{transition:!0,side:`left`,class:{content:`data-[state=open]:animate-[slide-in-from-left_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-left_200ms_ease-in-out]`}}]},Ae={__name:`USlideover`,props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},transition:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1,default:`right`},inset:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:[`leave`,`after:leave`,`enter`,`after:enter`,`close:prevent`,`update:open`],setup(e,{emit:i}){let o=e,l=i,p=t(),h=H(`slideover`,o),{t:g}=ue(),v=fe(),b=le(B(h,`open`,`defaultOpen`,`modal`,`unmountOnHide`),l),x=me(r(()=>h.portal)),C=r(()=>h.content),w=d(()=>h.dismissible?{pointerDownOutside:Se}:[`interactOutside`,`escapeKeyDown`].reduce((e,t)=>(e[t]=e=>{e.preventDefault(),l(`close:prevent`)},e),{})),T=d(()=>K({extend:ke,...v.ui?.slideover||{}})({transition:h.transition,side:h.side,inset:h.inset}));return(e,t)=>(n(),m(y(Ee),A(L(y(b))),{default:P(({open:r,close:i})=>[p.default?(n(),m(y(we),{key:0,"as-child":``,class:F(y(h).class)},{default:P(()=>[u(e.$slots,`default`,{open:r})]),_:2},1032,[`class`])):a(``,!0),_(y(ye),k(y(x),{"force-mount":y(x).disabled&&y(h).unmountOnHide===!1||void 0}),{default:P(()=>[_(y(U),null,{default:P(()=>[y(h).overlay?(n(),m(y(Ce),{key:0,"data-slot":`overlay`,class:F(T.value.overlay({class:y(h).ui?.overlay}))},null,8,[`class`])):a(``,!0),_(y(be),k({"data-side":y(h).side,"data-slot":`content`,class:T.value.content({class:[!p.default&&y(h).class,y(h).ui?.content]})},C.value,{onEnter:t[0]||=e=>l(`enter`),onAfterEnter:t[1]||=e=>l(`after:enter`),onLeave:t[2]||=e=>l(`leave`),onAfterLeave:t[3]||=e=>l(`after:leave`)},I(w.value)),{default:P(()=>[!y(h).title&&!p.title||!y(h).description&&!p.description||p.content?(n(),m(y(he),{key:0},{default:P(()=>[!y(h).title&&!p.title?(n(),m(y(q),{key:0})):p.content?(n(),m(y(q),{key:1},{default:P(()=>[u(e.$slots,`title`,{},()=>[s(S(y(h).title),1)])]),_:3})):a(``,!0),!y(h).description&&!p.description?(n(),m(y(J),{key:2})):p.content?(n(),m(y(J),{key:3},{default:P(()=>[u(e.$slots,`description`,{},()=>[s(S(y(h).description),1)])]),_:3})):a(``,!0)]),_:3})):a(``,!0),u(e.$slots,`content`,{close:i},()=>[p.header||y(h).title||p.title||y(h).description||p.description||y(h).close||p.close?(n(),c(`div`,{key:0,"data-slot":`header`,class:F(T.value.header({class:y(h).ui?.header}))},[u(e.$slots,`header`,{close:i},()=>[y(h).title||p.title||y(h).description||p.description?(n(),c(`div`,{key:0,"data-slot":`wrapper`,class:F(T.value.wrapper({class:y(h).ui?.wrapper}))},[y(h).title||p.title?(n(),m(y(q),{key:0,"data-slot":`title`,class:F(T.value.title({class:y(h).ui?.title}))},{default:P(()=>[u(e.$slots,`title`,{},()=>[s(S(y(h).title),1)])]),_:3},8,[`class`])):a(``,!0),y(h).description||p.description?(n(),m(y(J),{key:1,"data-slot":`description`,class:F(T.value.description({class:y(h).ui?.description}))},{default:P(()=>[u(e.$slots,`description`,{},()=>[s(S(y(h).description),1)])]),_:3},8,[`class`])):a(``,!0)],2)):a(``,!0),u(e.$slots,`actions`),y(h).close||p.close?(n(),m(y(xe),{key:1,"as-child":``},{default:P(()=>[u(e.$slots,`close`,{ui:T.value},()=>[y(h).close?(n(),m(G,k({key:0,icon:y(h).closeIcon||y(v).ui.icons.close,color:`neutral`,variant:`ghost`,"aria-label":y(g)(`slideover.close`)},typeof y(h).close==`object`?y(h).close:{},{"data-slot":`close`,class:T.value.close({class:y(h).ui?.close})}),null,16,[`icon`,`aria-label`,`class`])):a(``,!0)])]),_:2},1024)):a(``,!0)])],2)):a(``,!0),f(`div`,{"data-slot":`body`,class:F(T.value.body({class:y(h).ui?.body}))},[u(e.$slots,`body`,{close:i})],2),p.footer?(n(),c(`div`,{key:1,"data-slot":`footer`,class:F(T.value.footer({class:y(h).ui?.footer}))},[u(e.$slots,`footer`,{close:i})],2)):a(``,!0)])]),_:2},1040,[`data-side`,`class`])]),_:2},1024)]),_:2},1040,[`force-mount`])]),_:3},16))}};(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.nonce=document.head.querySelector(`meta[property=csp-nonce]`)?.content,e.appendChild(document.createTextNode(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32,.72,0,1);animation-duration:.5s;animation-timing-function:cubic-bezier(.32,.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform, 100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform, 100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform, 100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform, 100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top],[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height, 0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left],[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height, 0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(.32,.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32,.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true]):after{content:"";position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]:after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]:after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]:after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]:after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not([data-state=closed]){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:hover,[data-vaul-handle]:active{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover: hover) and (pointer: fine){[data-vaul-drawer]{-webkit-user-select:none;user-select:none}}@media (pointer: fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{0%{transform:translate3d(0,var(--initial-transform, 100%),0)}to{transform:translateZ(0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform, 100%),0)}}@keyframes slideFromTop{0%{transform:translate3d(0,calc(var(--initial-transform, 100%) * -1),0)}to{transform:translateZ(0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform, 100%) * -1),0)}}@keyframes slideFromLeft{0%{transform:translate3d(calc(var(--initial-transform, 100%) * -1),0,0)}to{transform:translateZ(0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform, 100%) * -1),0,0)}}@keyframes slideFromRight{0%{transform:translate3d(var(--initial-transform, 100%),0,0)}to{transform:translateZ(0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform, 100%),0,0)}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();var je=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Me=e=>typeof e<`u`;function Ne(e){return JSON.parse(JSON.stringify(e))}function Pe(t,n,r,i={}){let{clone:a=!1,passive:o=!1,eventName:s,deep:c=!1,defaultValue:l,shouldEmit:u}=i,f=e(),p=r||f?.emit||(f?.$emit)?.bind(f)||(f?.proxy?.$emit)?.bind(f?.proxy),m=s;n||=`modelValue`,m||=`update:${n.toString()}`;let g=e=>a?typeof a==`function`?a(e):Ne(e):e,_=()=>Me(t[n])?g(t[n]):l,v=e=>{u?u(e)&&p(m,e):p(m,e)};if(o){let e=_(),r=h(e),i=!1;return M(()=>t[n],e=>{i||(i=!0,r.value=g(e),C(()=>i=!1))}),M(r,e=>{!i&&(e!==t[n]||c)&&v(e)},{deep:c}),r}return d({get(){return _()},set(e){v(e)}})}var[Y,Fe]=V(`DrawerRoot`),Ie=new WeakMap;function X(e,t,n=!1){if(!e||!(e instanceof HTMLElement)||!t)return;let r={};Object.entries(t).forEach(([t,n])=>{if(t.startsWith(`--`)){e.style.setProperty(t,n);return}r[t]=e.style[t],e.style[t]=n}),!n&&Ie.set(e,r)}function Le(e,t){if(!e||!(e instanceof HTMLElement))return;let n=Ie.get(e);n&&Object.entries(n).forEach(([t,n])=>{e.style[t]=n})}function Re(e,t){let n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform,i=r.match(/^matrix3d\((.+)\)$/);return i?Number.parseFloat(i[1].split(`, `)[Z(t)?13:12]):(i=r.match(/^matrix\((.+)\)$/),i?Number.parseFloat(i[1].split(`, `)[Z(t)?5:4]):null)}function ze(e){return 8*(Math.log(e+1)-2)}function Z(e){switch(e){case`top`:case`bottom`:return!0;case`left`:case`right`:return!1;default:return e}}function Be(e,t){if(!e)return()=>{};let n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}var Q={DURATION:.5,EASE:[.32,.72,0,1]},Ve=.4,He=.25,Ue=100,We=8,Ge=16,Ke=26,qe=`vaul-dragging`;function Je({activeSnapPoint:e,snapPoints:t,drawerRef:n,overlayRef:r,fadeFromIndex:i,onSnapPointChange:a,direction:o}){let s=h(typeof window<`u`?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);function c(){s.value={innerWidth:window.innerWidth,innerHeight:window.innerHeight}}R(()=>{typeof window<`u`&&window.addEventListener(`resize`,c)}),E(()=>{typeof window<`u`&&window.removeEventListener(`resize`,c)});let l=d(()=>(t.value&&e.value===t.value[t.value.length-1])??null),u=d(()=>t.value&&t.value.length>0&&(i?.value||i?.value===0)&&!Number.isNaN(i?.value)&&t.value[i?.value??-1]===e.value||!t.value),f=d(()=>t.value?.findIndex(t=>t===e.value)??null),p=d(()=>t.value?.map(e=>{let t=typeof e==`string`,n=0;if(t&&(n=Number.parseInt(e,10)),Z(o.value)){let r=t?n:s.value?e*s.value.innerHeight:0;return s.value?o.value===`bottom`?s.value.innerHeight-r:-s.value.innerHeight+r:r}let r=t?n:s.value?e*s.value.innerWidth:0;return s.value?o.value===`right`?s.value.innerWidth-r:-s.value.innerWidth+r:r})??[]),m=d(()=>f.value===null?null:p.value?.[f.value]),g=s=>{let c=p.value?.findIndex(e=>e===s)??null;C(()=>{a(c,p.value),X(n.value?.$el,{transition:`transform ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`,transform:Z(o.value)?`translate3d(0, ${s}px, 0)`:`translate3d(${s}px, 0, 0)`})}),p.value&&c!==p.value.length-1&&c!==i?.value?X(r.value?.$el,{transition:`opacity ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`,opacity:`0`}):X(r.value?.$el,{transition:`opacity ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`,opacity:`1`}),e.value=c===null?null:t.value?.[c]??null};M([e,p,t],()=>{if(e.value){let n=t.value?.findIndex(t=>t===e.value)??-1;p.value&&n!==-1&&typeof p.value[n]==`number`&&g(p.value[n])}},{immediate:!0});function _({draggedDistance:e,closeDrawer:n,velocity:a,dismissible:s}){if(i.value===void 0)return;let c=o.value===`bottom`||o.value===`right`?(m.value??0)-e:(m.value??0)+e,u=f.value===i.value-1,d=f.value===0,h=e>0;if(u&&X(r.value?.$el,{transition:`opacity ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`}),a>2&&!h){s?n():g(p.value[0]);return}if(a>2&&h&&p&&t.value){g(p.value[t.value.length-1]);return}let _=p.value?.reduce((e,t)=>typeof e!=`number`||typeof t!=`number`?e:Math.abs(t-c)<Math.abs(e-c)?t:e),v=Z(o.value)?window.innerHeight:window.innerWidth;if(a>Ve&&Math.abs(e)<v*.4){let e=h?1:-1;if(e>0&&l){g(p.value[(t.value?.length??0)-1]);return}if(d&&e<0&&s&&n(),f.value===null)return;g(p.value[f.value+e]);return}g(_)}function v({draggedDistance:e}){if(m.value===null)return;let t=o.value===`bottom`||o.value===`right`?m.value-e:m.value+e;(o.value===`bottom`||o.value===`right`)&&t<p.value[p.value.length-1]||(o.value===`top`||o.value===`left`)&&t>p.value[p.value.length-1]||X(n.value?.$el,{transform:Z(o.value)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})}function y(e,n){if(!t.value||typeof f.value!=`number`||!p.value||i.value===void 0)return null;let r=f.value===i.value-1;if(f.value>=i.value&&n)return 0;if(r&&!n)return 1;if(!u.value&&!r)return null;let a=r?f.value+1:f.value-1,o=r?p.value[a]-p.value[a-1]:p.value[a+1]-p.value[a],s=e/Math.abs(o);return r?1-s:s}return{isLastSnapPoint:l,shouldFade:u,getPercentageDragged:y,activeSnapPointIndex:f,onRelease:_,onDrag:v,snapPointsOffset:p}}function Ye(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}var $=null;function Xe(e){let{isOpen:t,modal:n,nested:r,hasBeenOpened:i,preventScrollRestoration:a,noBodyStyles:o}=e,s=h(typeof window<`u`?window.location.href:``),c=h(0);function l(){if(Ye()&&$===null&&t.value&&!o.value){$={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height};let{scrollX:e,innerHeight:t}=window;document.body.style.setProperty(`position`,`fixed`,`important`),Object.assign(document.body.style,{top:`${-c.value}px`,left:`${-e}px`,right:`0px`,height:`auto`}),setTimeout(()=>{requestAnimationFrame(()=>{let e=t-window.innerHeight;e&&c.value>=t&&(document.body.style.top=`-${c.value+e}px`)})},300)}}function u(){if(Ye()&&$!==null&&!o.value){let e=-Number.parseInt(document.body.style.top,10),t=-Number.parseInt(document.body.style.left,10);Object.assign(document.body.style,$),window.requestAnimationFrame(()=>{if(a.value&&s.value!==window.location.href){s.value=window.location.href;return}window.scrollTo(t,e)}),$=null}}return R(()=>{function e(){c.value=window.scrollY}e(),window.addEventListener(`scroll`,e),p(()=>{window.removeEventListener(`scroll`,e)})}),M([t,i,s],()=>{r.value||!i.value||(t.value?(window.matchMedia(`(display-mode: standalone)`).matches||l(),n.value||setTimeout(()=>{u()},500)):u())}),{restorePositionSetting:u}}function Ze(e,t){return e&&e.value?e:t}function Qe(e){let{emitDrag:t,emitRelease:n,emitClose:r,emitOpenChange:i,open:a,dismissible:o,nested:s,modal:c,shouldScaleBackground:l,setBackgroundColorOnScale:u,scrollLockTimeout:f,closeThreshold:p,activeSnapPoint:m,fadeFromIndex:g,direction:_,noBodyStyles:v,handleOnly:y,preventScrollRestoration:b}=e,x=h(a.value??!1),S=h(!1),C=h(!1),w=h(!1),E=h(null),D=h(null),O=h(null),k=h(null),A=h(null),j=h(!1),N=h(null),P=h(0),F=h(!1);h(0);let I=h(null);h(0);let L=d(()=>I.value?.$el.getBoundingClientRect().height||0),R=Ze(e.snapPoints,h(void 0)),ee=d(()=>R&&(R.value?.length??0)>0),te=h(null),{activeSnapPointIndex:ne,onRelease:re,snapPointsOffset:ie,onDrag:ae,shouldFade:oe,getPercentageDragged:se}=Je({snapPoints:R,activeSnapPoint:m,drawerRef:I,fadeFromIndex:g,overlayRef:E,onSnapPointChange:ce,direction:_});function ce(e,t){R.value&&e===t.length-1&&(D.value=new Date)}Xe({isOpen:x,modal:c,nested:s,hasBeenOpened:S,noBodyStyles:v,preventScrollRestoration:b});function z(){return(window.innerWidth-Ke)/window.innerWidth}function B(e,t){if(!e)return!1;let n=e,r=window.getSelection()?.toString(),i=I.value?Re(I.value.$el,_.value):null,a=new Date;if(n.hasAttribute(`data-vaul-no-drag`)||n.closest(`[data-vaul-no-drag]`))return!1;if(_.value===`right`||_.value===`left`)return!0;if(D.value&&a.getTime()-D.value.getTime()<500)return!1;if(i!==null&&(_.value===`bottom`?i>0:i<0))return!0;if(r&&r.length>0)return!1;if(A.value&&a.getTime()-A.value.getTime()<f.value&&i===0||t)return A.value=a,!1;for(;n;){if(n.scrollHeight>n.clientHeight){if(n.scrollTop!==0)return A.value=new Date,!1;if(n.getAttribute(`role`)===`dialog`)return!0}n=n.parentNode}return!0}function V(e){!o.value&&!R.value||I.value&&!I.value.$el.contains(e.target)||(C.value=!0,O.value=new Date,e.target.setPointerCapture(e.pointerId),P.value=Z(_.value)?e.clientY:e.clientX)}function H(e){var n;if(I.value&&C.value){let r=_.value===`bottom`||_.value===`right`?1:-1,i=(P.value-(Z(_.value)?e.clientY:e.clientX))*r,a=i>0,s=R.value&&!o.value&&!a;if(s&&ne.value===0)return;let c=Math.abs(i),u=document.querySelector(`[data-vaul-drawer-wrapper]`)||document.querySelector(`[vaul-drawer-wrapper]`),d=c/L.value,f=se(c,a);if(f!==null&&(d=f),s&&d>=1||!j.value&&!B(e.target,a))return;if((n=I?.value)==null||n.$el.classList.add(qe),j.value=!0,X(I.value?.$el,{transition:`none`}),X(E.value?.$el,{transition:`none`}),R.value&&ae({draggedDistance:i}),a&&!R.value){let e=ze(i),t=Math.min(e*-1,0)*r;X(I.value?.$el,{transform:Z(_.value)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`});return}let p=1-d;if((oe.value||g.value&&ne.value===g.value-1)&&(t(d),X(E.value?.$el,{opacity:`${p}`,transition:`none`},!0)),u&&E.value&&l.value){let e=Math.min(z()+d*(1-z()),1),t=8-d*8,n=Math.max(0,14-d*14);X(u,{borderRadius:`${t}px`,transform:Z(_.value)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`,transition:`none`},!0)}if(!R.value){let e=c*r;X(I.value?.$el,{transform:Z(_.value)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}}}function U(){if(!I.value)return;let e=document.querySelector(`[data-vaul-drawer-wrapper]`)||document.querySelector(`[vaul-drawer-wrapper]`),t=Re(I.value.$el,_.value);X(I.value.$el,{transform:`translate3d(0, 0, 0)`,transition:`transform ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`}),X(E.value?.$el,{transition:`opacity ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`,opacity:`1`}),l.value&&t&&t>0&&x.value&&X(e,{borderRadius:`${We}px`,overflow:`hidden`,...Z(_.value)?{transform:`scale(${z()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:`top`}:{transform:`scale(${z()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:`left`},transitionProperty:`transform, border-radius`,transitionDuration:`${Q.DURATION}s`,transitionTimingFunction:`cubic-bezier(${Q.EASE.join(`,`)})`},!0)}function W(e){I.value&&(r(),e||(x.value=!1),window.setTimeout(()=>{R.value&&(m.value=R.value[0])},Q.DURATION*1e3))}T(()=>{if(!x.value&&l.value&&je){let e=setTimeout(()=>{Le(document.body)},200);return()=>clearTimeout(e)}}),M(a,()=>{x.value=a.value,a.value||W()});function G(e){if(!C.value||!I.value)return;I.value.$el.classList.remove(qe),j.value=!1,C.value=!1,k.value=new Date;let t=Re(I.value.$el,_.value);if(!B(e.target,!1)||!t||Number.isNaN(t)||O.value===null)return;let r=k.value.getTime()-O.value.getTime(),i=P.value-(Z(_.value)?e.clientY:e.clientX),a=Math.abs(i)/r;if(a>.05&&(w.value=!0,window.setTimeout(()=>{w.value=!1},200)),R.value){let e=_.value===`bottom`||_.value===`right`?1:-1;re({draggedDistance:i*e,closeDrawer:W,velocity:a,dismissible:o.value}),n(!0);return}if(_.value===`bottom`||_.value===`right`?i>0:i<0){U(),n(!0);return}if(a>Ve){W(),n(!1);return}if(t>=Math.min(I.value.$el.getBoundingClientRect().height??0,window.innerHeight)*p.value){W(),n(!1);return}n(!0),U()}M(x,e=>{e&&(D.value=new Date),i(e)},{immediate:!0});function K(e){var t;let n=e?(window.innerWidth-Ge)/window.innerWidth:1,r=e?-16:0;N.value&&window.clearTimeout(N.value),X(I.value?.$el,{transition:`transform ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`,transform:`scale(${n}) translate3d(0, ${r}px, 0)`}),!e&&(t=I.value)!=null&&t.$el&&(N.value=window.setTimeout(()=>{let e=Re(I.value?.$el,_.value);X(I.value?.$el,{transition:`none`,transform:Z(_.value)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},500))}function le(e){if(e<0)return;let t=Z(_.value)?window.innerHeight:window.innerWidth,n=(t-Ge)/t,r=n+e*(1-n),i=-16+e*Ge;X(I.value?.$el,{transform:Z(_.value)?`scale(${r}) translate3d(0, ${i}px, 0)`:`scale(${r}) translate3d(${i}px, 0, 0)`,transition:`none`})}function ue(e){let t=Z(_.value)?window.innerHeight:window.innerWidth,n=e?(t-Ge)/t:1,r=e?-16:0;e&&X(I.value?.$el,{transition:`transform ${Q.DURATION}s cubic-bezier(${Q.EASE.join(`,`)})`,transform:Z(_.value)?`scale(${n}) translate3d(0, ${r}px, 0)`:`scale(${n}) translate3d(${r}px, 0, 0)`})}return{open:a,isOpen:x,modal:c,keyboardIsOpen:F,hasBeenOpened:S,drawerRef:I,drawerHeightRef:L,overlayRef:E,handleRef:te,isDragging:C,dragStartTime:O,isAllowedToDrag:j,snapPoints:R,activeSnapPoint:m,hasSnapPoints:ee,pointerStart:P,dismissible:o,snapPointsOffset:ie,direction:_,shouldFade:oe,fadeFromIndex:g,shouldScaleBackground:l,setBackgroundColorOnScale:u,onPress:V,onDrag:H,onRelease:G,closeDrawer:W,onNestedDrag:le,onNestedRelease:ue,onNestedOpenChange:K,emitClose:r,emitDrag:t,emitRelease:n,emitOpenChange:i,nested:s,handleOnly:y,noBodyStyles:v}}var $e=o({__name:`DrawerRoot`,props:{activeSnapPoint:{default:void 0},closeThreshold:{default:He},shouldScaleBackground:{type:Boolean,default:void 0},setBackgroundColorOnScale:{type:Boolean,default:!0},scrollLockTimeout:{default:Ue},fixed:{type:Boolean,default:void 0},dismissible:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},nested:{type:Boolean,default:!1},direction:{default:`bottom`},noBodyStyles:{type:Boolean},handleOnly:{type:Boolean,default:!1},preventScrollRestoration:{type:Boolean},snapPoints:{default:void 0},fadeFromIndex:{default:void 0}},emits:[`drag`,`release`,`close`,`update:open`,`update:activeSnapPoint`,`animationEnd`],setup(e,{expose:r,emit:i}){let a=e,o=i;t();let s=d(()=>a.fadeFromIndex??(a.snapPoints&&a.snapPoints.length-1)),c=Pe(a,`open`,o,{defaultValue:a.defaultOpen,passive:a.open===void 0}),l=Pe(a,`activeSnapPoint`,o,{passive:a.activeSnapPoint===void 0}),f={emitDrag:e=>o(`drag`,e),emitRelease:e=>o(`release`,e),emitClose:()=>o(`close`),emitOpenChange:e=>{o(`update:open`,e),setTimeout(()=>{o(`animationEnd`,e)},Q.DURATION*1e3)}},{closeDrawer:p,hasBeenOpened:h,modal:g,isOpen:_}=Fe(Qe({...f,...v(a),activeSnapPoint:l,fadeFromIndex:s,open:c}));function b(e){if(c.value!==void 0){f.emitOpenChange(e);return}_.value=e,e?h.value=!0:p()}return r({open:_}),(e,t)=>(n(),m(y(Ee),{open:y(_),modal:y(g),"onUpdate:open":b},{default:P(()=>[u(e.$slots,`default`,{open:y(_)})]),_:3},8,[`open`,`modal`]))}}),et=o({__name:`DrawerRootNested`,props:{activeSnapPoint:{},closeThreshold:{},shouldScaleBackground:{type:Boolean},setBackgroundColorOnScale:{type:Boolean},scrollLockTimeout:{},fixed:{type:Boolean},dismissible:{type:Boolean},modal:{type:Boolean},open:{type:Boolean},defaultOpen:{type:Boolean},nested:{type:Boolean},direction:{},noBodyStyles:{type:Boolean},handleOnly:{type:Boolean},preventScrollRestoration:{type:Boolean},snapPoints:{},fadeFromIndex:{}},emits:[`drag`,`release`,`close`,`update:open`,`update:activeSnapPoint`,`animationEnd`],setup(e,{emit:t}){let r=e,i=t,{onNestedDrag:a,onNestedOpenChange:o,onNestedRelease:s}=Y();function c(){o(!1)}function l(e){a(e)}function d(e){e&&o(e),i(`update:open`,e)}let f=_e(r,i);return(e,t)=>(n(),m($e,k(y(f),{nested:``,onClose:c,onDrag:l,onRelease:y(s),"onUpdate:open":d}),{default:P(()=>[u(e.$slots,`default`)]),_:3},16,[`onRelease`]))}}),tt=o({__name:`DrawerOverlay`,setup(e){let{overlayRef:t,hasSnapPoints:r,isOpen:i,shouldFade:a}=Y();return(e,o)=>(n(),m(y(Ce),{ref_key:`overlayRef`,ref:t,"data-vaul-overlay":``,"data-vaul-snap-points":y(i)&&y(r)?`true`:`false`,"data-vaul-snap-points-overlay":y(i)&&y(a)?`true`:`false`},null,8,[`data-vaul-snap-points`,`data-vaul-snap-points-overlay`]))}});function nt(){let{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:i}=Y(),a=h(null),o=h(document.body.style.backgroundColor);function s(){return(window.innerWidth-Ke)/window.innerWidth}T(c=>{if(t.value&&n.value){a.value&&clearTimeout(a.value);let t=document.querySelector(`[data-vaul-drawer-wrapper]`)||document.querySelector(`[vaul-drawer-wrapper]`);if(!t)return;r.value&&!i.value&&Be(document.body,{background:`black`}),Be(t,{transformOrigin:Z(e.value)?`top`:`left`,transitionProperty:`transform, border-radius`,transitionDuration:`${Q.DURATION}s`,transitionTimingFunction:`cubic-bezier(${Q.EASE.join(`,`)})`});let n=Be(t,{borderRadius:`${We}px`,overflow:`hidden`,...Z(e.value)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});c(()=>{n(),a.value=window.setTimeout(()=>{o.value?document.body.style.background=o.value:document.body.style.removeProperty(`background`)},Q.DURATION*1e3)})}},{flush:`pre`})}var rt=o({__name:`DrawerContent`,setup(e){let{open:t,isOpen:r,snapPointsOffset:i,hasSnapPoints:a,drawerRef:o,onPress:s,onDrag:c,onRelease:l,modal:f,emitOpenChange:p,dismissible:g,keyboardIsOpen:_,closeDrawer:v,direction:b,handleOnly:x}=Y();nt();let S=h(!1),C=d(()=>i.value&&i.value.length>0?`${i.value[0]}px`:`0`);function w(e){if(!f.value||e.defaultPrevented){e.preventDefault();return}_.value&&=!1,g.value?p(!1):e.preventDefault()}function E(e){x.value||s(e)}function D(e){x.value||c(e)}return T(()=>{a.value&&window.requestAnimationFrame(()=>{S.value=!0})}),(e,t)=>(n(),m(y(be),{ref_key:`drawerRef`,ref:o,"data-vaul-drawer":``,"data-vaul-drawer-direction":y(b),"data-vaul-delayed-snap-points":S.value?`true`:`false`,"data-vaul-snap-points":y(r)&&y(a)?`true`:`false`,style:O({"--snap-point-height":C.value}),onPointerdown:E,onPointermove:D,onPointerup:y(l),onPointerDownOutside:w,onOpenAutoFocus:t[0]||=ee(()=>{},[`prevent`]),onEscapeKeyDown:t[1]||=e=>{y(g)||e.preventDefault()}},{default:P(()=>[u(e.$slots,`default`)]),_:3},8,[`data-vaul-drawer-direction`,`data-vaul-delayed-snap-points`,`data-vaul-snap-points`,`style`,`onPointerup`]))}}),it=[`data-vaul-drawer-visible`],at={"data-vaul-handle-hitarea":``,"aria-hidden":`true`},ot=250,st=120,ct=o({__name:`DrawerHandle`,props:{preventCycle:{type:Boolean,default:!1}},setup(e){let t=e,{onPress:r,onDrag:i,handleRef:a,handleOnly:o,isOpen:s,snapPoints:l,activeSnapPoint:d,isDragging:p,dismissible:m,closeDrawer:g}=Y(),_=h(null),v=h(!1);function b(){if(v.value){C();return}window.setTimeout(()=>{x()},st)}function x(){if(p.value||t.preventCycle||v.value){C();return}if(C(),!l.value||l.value.length===0){m.value||g();return}let e=d.value===l.value[l.value.length-1];if(e&&m.value){g();return}let n=l.value.findIndex(e=>e===d.value);if(n===-1)return;let r=e?0:n+1;d.value=l.value[r]}function S(){_.value=window.setTimeout(()=>{v.value=!0},ot)}function C(){_.value&&window.clearTimeout(_.value),v.value=!1}function w(e){o.value&&r(e),S()}function T(e){o.value&&i(e)}return(e,t)=>(n(),c(`div`,{ref_key:`handleRef`,ref:a,"data-vaul-drawer-visible":y(s)?`true`:`false`,"data-vaul-handle":``,"aria-hidden":`true`,onClick:b,onPointercancel:C,onPointerdown:w,onPointermove:T},[f(`span`,at,[u(e.$slots,`default`)])],40,it))}}),lt={slots:{overlay:`fixed inset-0 bg-elevated/75`,content:`fixed bg-default ring ring-default flex focus:outline-none`,handle:[`shrink-0 !bg-accented`,`transition-opacity`],container:`w-full flex flex-col gap-4 p-4 overflow-y-auto`,header:`flex items-center gap-1.5 min-h-8`,wrapper:`min-w-0 flex-1`,title:`text-highlighted font-semibold`,description:`mt-1 text-muted text-sm`,actions:`flex items-center gap-1.5 shrink-0 ms-auto`,body:`flex-1`,footer:`flex flex-col gap-1.5`,close:``},variants:{direction:{top:{content:`mb-24 flex-col-reverse`,handle:`mb-4`},right:{content:`flex-row rtl:flex-row-reverse`,handle:`!ml-4`},bottom:{content:`mt-24 flex-col`,handle:`mt-4`},left:{content:`flex-row-reverse rtl:flex-row`,handle:`!mr-4`}},inset:{true:{content:`rounded-lg after:hidden overflow-hidden [--initial-transform:calc(100%+1.5rem)]`}},snapPoints:{true:``}},compoundVariants:[{direction:[`top`,`bottom`],class:{content:`h-auto max-h-[96%]`,handle:`!w-12 !h-1.5 mx-auto`}},{direction:[`top`,`bottom`],snapPoints:!0,class:{content:`h-full`}},{direction:[`right`,`left`],class:{content:`w-auto max-w-[calc(100%-2rem)]`,handle:`!h-12 !w-1.5 mt-auto mb-auto`}},{direction:[`right`,`left`],snapPoints:!0,class:{content:`w-full`}},{direction:`top`,inset:!0,class:{content:`inset-x-4 top-4`}},{direction:`top`,inset:!1,class:{content:`inset-x-0 top-0 rounded-b-lg`}},{direction:`bottom`,inset:!0,class:{content:`inset-x-4 bottom-4`}},{direction:`bottom`,inset:!1,class:{content:`inset-x-0 bottom-0 rounded-t-lg`}},{direction:`left`,inset:!0,class:{content:`inset-y-4 left-4`}},{direction:`left`,inset:!1,class:{content:`inset-y-0 left-0 rounded-r-lg`}},{direction:`right`,inset:!0,class:{content:`inset-y-4 right-4`}},{direction:`right`,inset:!1,class:{content:`inset-y-0 right-0 rounded-l-lg`}}]},ut={__name:`UDrawer`,props:{as:{type:null,required:!1},title:{type:String,required:!1},description:{type:String,required:!1},inset:{type:Boolean,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},handle:{type:Boolean,required:!1,default:!0},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},nested:{type:Boolean,required:!1},close:{type:[Boolean,Object],required:!1},closeIcon:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},activeSnapPoint:{type:[Number,String,null],required:!1},closeThreshold:{type:Number,required:!1},shouldScaleBackground:{type:Boolean,required:!1},setBackgroundColorOnScale:{type:Boolean,required:!1},scrollLockTimeout:{type:Number,required:!1},fixed:{type:Boolean,required:!1},dismissible:{type:Boolean,required:!1,default:!0},modal:{type:Boolean,required:!1,default:!0},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},direction:{type:String,required:!1,default:`bottom`},noBodyStyles:{type:Boolean,required:!1},handleOnly:{type:Boolean,required:!1},preventScrollRestoration:{type:Boolean,required:!1},snapPoints:{type:Array,required:!1}},emits:[`close:prevent`,`drag`,`release`,`close`,`update:open`,`update:activeSnapPoint`,`animationEnd`],setup(e,{emit:o}){let l=e,p=o,h=t(),g=H(`drawer`,l),{t:v}=ue(),b=fe(),x=le(B(g,`activeSnapPoint`,`closeThreshold`,`shouldScaleBackground`,`setBackgroundColorOnScale`,`scrollLockTimeout`,`fixed`,`dismissible`,`modal`,`open`,`defaultOpen`,`nested`,`direction`,`noBodyStyles`,`handleOnly`,`preventScrollRestoration`,`snapPoints`),p),C=me(r(()=>g.portal)),w=r(()=>g.content),T=d(()=>g.dismissible?{pointerDownOutside:Se}:[`interactOutside`,`escapeKeyDown`].reduce((e,t)=>(e[t]=e=>{e.preventDefault(),p(`close:prevent`)},e),{})),E=d(()=>K({extend:lt,...b.ui?.drawer||{}})({direction:g.direction,inset:g.inset,snapPoints:g.snapPoints&&g.snapPoints.length>0}));return(e,t)=>(n(),m(i(y(g).nested?y(et):y($e)),A(L(y(x))),{default:P(()=>[h.default?(n(),m(y(we),{key:0,"as-child":``,class:F(y(g).class)},{default:P(()=>[u(e.$slots,`default`)]),_:3},8,[`class`])):a(``,!0),_(y(ye),A(L(y(C))),{default:P(()=>[_(y(U),null,{default:P(()=>[y(g).overlay?(n(),m(y(tt),{key:0,"data-slot":`overlay`,class:F(E.value.overlay({class:y(g).ui?.overlay}))},null,8,[`class`])):a(``,!0),_(y(rt),k({"data-slot":`content`,class:E.value.content({class:[!h.default&&y(g).class,y(g).ui?.content]})},w.value,I(T.value)),{default:P(()=>[y(g).handle?(n(),m(y(ct),{key:0,"data-slot":`handle`,class:F(E.value.handle({class:y(g).ui?.handle}))},null,8,[`class`])):a(``,!0),!y(g).title&&!h.title||!y(g).description&&!h.description||h.content?(n(),m(y(he),{key:1},{default:P(()=>[!y(g).title&&!h.title?(n(),m(y(q),{key:0})):h.content?(n(),m(y(q),{key:1},{default:P(()=>[u(e.$slots,`title`,{},()=>[s(S(y(g).title),1)])]),_:3})):a(``,!0),!y(g).description&&!h.description?(n(),m(y(J),{key:2})):h.content?(n(),m(y(J),{key:3},{default:P(()=>[u(e.$slots,`description`,{},()=>[s(S(y(g).description),1)])]),_:3})):a(``,!0)]),_:3})):a(``,!0),u(e.$slots,`content`,{},()=>[f(`div`,{"data-slot":`container`,class:F(E.value.container({class:y(g).ui?.container}))},[h.header||y(g).title||h.title||y(g).description||h.description||y(g).close||h.close||h.actions?(n(),c(`div`,{key:0,"data-slot":`header`,class:F(E.value.header({class:y(g).ui?.header}))},[u(e.$slots,`header`,{},()=>[y(g).title||h.title||y(g).description||h.description?(n(),c(`div`,{key:0,"data-slot":`wrapper`,class:F(E.value.wrapper({class:y(g).ui?.wrapper}))},[y(g).title||h.title?(n(),m(y(q),{key:0,"data-slot":`title`,class:F(E.value.title({class:y(g).ui?.title}))},{default:P(()=>[u(e.$slots,`title`,{},()=>[s(S(y(g).title),1)])]),_:3},8,[`class`])):a(``,!0),y(g).description||h.description?(n(),m(y(J),{key:1,"data-slot":`description`,class:F(E.value.description({class:y(g).ui?.description}))},{default:P(()=>[u(e.$slots,`description`,{},()=>[s(S(y(g).description),1)])]),_:3},8,[`class`])):a(``,!0)],2)):a(``,!0),h.actions||y(g).close||h.close?(n(),c(`div`,{key:1,"data-slot":`actions`,class:F(E.value.actions({class:y(g).ui?.actions}))},[u(e.$slots,`actions`),y(g).close||h.close?(n(),m(y(xe),{key:0,"as-child":``},{default:P(()=>[u(e.$slots,`close`,{ui:E.value},()=>[y(g).close?(n(),m(G,k({key:0,icon:y(g).closeIcon||y(b).ui.icons.close,color:`neutral`,variant:`ghost`,"aria-label":y(v)(`drawer.close`)},typeof y(g).close==`object`?y(g).close:{},{"data-slot":`close`,class:E.value.close({class:y(g).ui?.close})}),null,16,[`icon`,`aria-label`,`class`])):a(``,!0)])]),_:3})):a(``,!0)],2)):a(``,!0)])],2)):a(``,!0),h.body?(n(),c(`div`,{key:1,"data-slot":`body`,class:F(E.value.body({class:y(g).ui?.body}))},[u(e.$slots,`body`)],2)):a(``,!0),h.footer?(n(),c(`div`,{key:2,"data-slot":`footer`,class:F(E.value.footer({class:y(g).ui?.footer}))},[u(e.$slots,`footer`)],2)):a(``,!0)],2)])]),_:3},16,[`class`])]),_:3})]),_:3},16)]),_:3},16))}},dt={slots:{root:`relative hidden lg:flex flex-col min-h-svh min-w-16 w-(--width) shrink-0`,header:`h-(--ui-header-height) shrink-0 flex items-center gap-1.5 px-4`,body:`flex flex-col gap-4 flex-1 overflow-y-auto px-4 py-2`,footer:`shrink-0 flex items-center gap-1.5 px-4 py-2`,toggle:``,handle:``,content:`lg:hidden`,overlay:`lg:hidden`},variants:{menu:{true:{header:`sm:px-6`,body:`sm:px-6`,footer:`sm:px-6`}},side:{left:{root:`border-e border-default`},right:{root:``}},toggleSide:{left:{toggle:``},right:{toggle:`ms-auto`}}}},ft=[`data-collapsed`,`data-dragging`],pt=Object.assign({inheritAttrs:!1},{__name:`UDashboardSidebar`,props:j({mode:{type:null,required:!1,default:`slideover`},menu:{type:null,required:!1},toggle:{type:[Boolean,Object],required:!1,default:!0},toggleSide:{type:String,required:!1,default:`left`},autoClose:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},id:{type:String,required:!1},side:{type:String,required:!1,default:`left`},minSize:{type:Number,required:!1,default:10},maxSize:{type:Number,required:!1,default:20},defaultSize:{type:Number,required:!1,default:15},resizable:{type:Boolean,required:!1,default:!1},collapsible:{type:Boolean,required:!1,default:!1},collapsedSize:{type:Number,required:!1,default:0}},{open:{type:Boolean,default:!1},openModifiers:{},collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:open`,`update:collapsed`],setup(e){let i=e,o=t(),s=H(`dashboardSidebar`,i),l=x(e,`open`,{type:Boolean,default:!1}),p=x(e,`collapsed`,{type:Boolean,default:!1}),v=te(),{t:S}=ue(),C=fe(),w=ae({storageKey:`dashboard`,unit:`%`,sidebarOpen:h(!1),sidebarCollapsed:h(!1)}),T=`${w.storageKey}-sidebar-${s.id||b()}`,{el:E,size:D,collapse:O,isCollapsed:j,isDragging:N,onMouseDown:I,onTouchStart:R,onDoubleClick:ee}=ie(T,r(()=>({...w,...s})),{collapsed:p}),[ne,se]=ge(),[z,B]=ge();Oe(`dashboard:sidebar:toggle`,()=>{l.value=!l.value}),Oe(`dashboard:sidebar:collapse`,e=>{j.value=e}),M(l,()=>w.sidebarOpen.value=l.value,{immediate:!0}),M(j,()=>w.sidebarCollapsed.value=j.value,{immediate:!0}),M(()=>v.fullPath,()=>{s.autoClose&&(l.value=!1)});let V=d(()=>K({extend:dt,...C.ui?.dashboardSidebar||{}})({side:s.side})),U=d(()=>({slideover:Ae,modal:Te,drawer:ut})[s.mode]),W=r(()=>re(s.menu,{},s.mode===`modal`?{fullscreen:!0,transition:!1}:s.mode===`slideover`?{side:`left`}:{}));function G(){l.value=!l.value}return(e,t)=>(n(),c(g,null,[_(y(ne),null,{default:P(()=>[u(e.$slots,`toggle`,{open:l.value,toggle:G,ui:V.value},()=>[y(s).toggle?(n(),m(ce,k({key:0},typeof y(s).toggle==`object`?y(s).toggle:{},{side:y(s).toggleSide,"data-slot":`toggle`,class:V.value.toggle({class:y(s).ui?.toggle,toggleSide:y(s).toggleSide})}),null,16,[`side`,`class`])):a(``,!0)])]),_:3}),_(y(z),null,{default:P(()=>[u(e.$slots,`resize-handle`,{onMouseDown:y(I),onTouchStart:y(R),onDoubleClick:y(ee),ui:V.value},()=>[y(s).resizable?(n(),m(oe,{key:0,"aria-controls":T,"data-slot":`handle`,class:F(V.value.handle({class:y(s).ui?.handle})),onMousedown:y(I),onTouchstart:y(R),onDblclick:y(ee)},null,8,[`class`,`onMousedown`,`onTouchstart`,`onDblclick`])):a(``,!0)])]),_:3}),y(s).side===`right`?(n(),m(y(B),{key:0})):a(``,!0),f(`div`,k({id:T,ref_key:`el`,ref:E,"data-slot":`root`},e.$attrs,{"data-collapsed":y(j),"data-dragging":y(N),class:V.value.root({class:[y(s).ui?.root,y(s).class]}),style:{"--width":`${y(D)||0}${y(w).unit}`}}),[o.header?(n(),c(`div`,{key:0,"data-slot":`header`,class:F(V.value.header({class:y(s).ui?.header}))},[u(e.$slots,`header`,{collapsed:y(j),collapse:y(O)})],2)):a(``,!0),f(`div`,{"data-slot":`body`,class:F(V.value.body({class:y(s).ui?.body}))},[u(e.$slots,`default`,{collapsed:y(j),collapse:y(O)})],2),o.footer?(n(),c(`div`,{key:1,"data-slot":`footer`,class:F(V.value.footer({class:y(s).ui?.footer}))},[u(e.$slots,`footer`,{collapsed:y(j),collapse:y(O)})],2)):a(``,!0)],16,ft),y(s).side===`left`?(n(),m(y(B),{key:1})):a(``,!0),_(y(U),k({open:l.value,"onUpdate:open":t[0]||=e=>l.value=e,title:y(S)(`dashboardSidebar.title`),description:y(S)(`dashboardSidebar.description`)},W.value,{ui:{overlay:V.value.overlay({class:y(s).ui?.overlay}),content:V.value.content({class:y(s).ui?.content})}}),{content:P(t=>[u(e.$slots,`content`,A(L(t)),()=>[o.header||y(s).mode!==`drawer`?(n(),c(`div`,{key:0,"data-slot":`header`,class:F(V.value.header({class:y(s).ui?.header,menu:!0}))},[y(s).mode!==`drawer`&&y(s).toggleSide===`left`?(n(),m(y(se),{key:0})):a(``,!0),u(e.$slots,`header`,{collapsed:!1,collapse:()=>{}}),y(s).mode!==`drawer`&&y(s).toggleSide===`right`?(n(),m(y(se),{key:1})):a(``,!0)],2)):a(``,!0),f(`div`,{"data-slot":`body`,class:F(V.value.body({class:y(s).ui?.body,menu:!0}))},[u(e.$slots,`default`,{collapsed:!1,collapse:()=>{}})],2),o.footer?(n(),c(`div`,{key:1,"data-slot":`footer`,class:F(V.value.footer({class:y(s).ui?.footer,menu:!0}))},[u(e.$slots,`footer`,{collapsed:!1,collapse:()=>{}})],2)):a(``,!0)])]),_:3},16,[`open`,`title`,`description`,`ui`])],64))}}),mt={base:`fixed inset-0 flex overflow-hidden`},ht={__name:`UDashboardGroup`,props:{as:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},storage:{type:String,required:!1,default:`cookie`},storageKey:{type:String,required:!1,default:`dashboard`},storageOptions:{type:Object,required:!1},persistent:{type:Boolean,required:!1,default:!0},unit:{type:String,required:!1,default:`%`}},setup(e){let t=H(`dashboardGroup`,e),r=w(),i=fe(),a=d(()=>K({extend:mt,...i.ui?.dashboardGroup||{}})),o=h(!1),s=h(!1);return se({storage:t.storage,storageKey:t.storageKey,storageOptions:t.storageOptions,persistent:t.persistent,unit:t.unit,sidebarOpen:o,toggleSidebar:()=>{r.hooks.callHook(`dashboard:sidebar:toggle`)},sidebarCollapsed:s,collapseSidebar:e=>{r.hooks.callHook(`dashboard:sidebar:collapse`,e)},toggleSearch:()=>{r.hooks.callHook(`dashboard:search:toggle`)}}),(e,r)=>(n(),m(y(z),{as:y(t).as,class:F(a.value({class:[y(t).ui?.base,y(t).class]}))},{default:P(()=>[u(e.$slots,`default`)]),_:3},8,[`as`,`class`]))}},gt={class:`flex h-14 items-center gap-3 px-3`},_t={key:0,class:`min-w-0`},vt={class:`flex min-h-0 flex-1 flex-col`},yt={class:`space-y-1 px-2 py-3`,"aria-label":`主导航`},bt={class:`w-full min-w-0 overflow-hidden p-2`},xt={class:`mt-1`},St=o({__name:`dashboard`,async setup(e){let t,r,i=te(),{data:o,pending:s}=([t,r]=D(()=>de(`/api/auth/status`,{key:`auth-status`},`$9tO8YbVQ9D`)),t=await t,r(),t),p=d(()=>s.value||!o.value?.username),h=d(()=>[{label:`在线地图预览`,icon:`i-lucide-map`,to:{name:`index`},active:i.path===`/`},{label:`地图下载任务`,icon:`i-lucide-download`,to:{name:`tasks`},active:i.path.startsWith(`/tasks`)},{label:`地图版本对比`,icon:`i-lucide-columns-2`,to:{name:`compare`},active:i.path===`/compare`},{label:`地图高级功能`,icon:`i-lucide-wand-sparkles`,to:{name:`advanced`},active:i.path===`/advanced`},{label:`地图服务管理`,icon:`i-lucide-radio-tower`,to:{name:`services`},active:i.path===`/services`}]),v={base:`text-left text-[#d5dfd9] hover:bg-[#30453b] hover:text-white active:bg-[#30453b] active:text-white focus-visible:outline-[#8de0ad]`};async function b(){await W(`/api/auth/logout`,{method:`POST`}),await pe(),await ne({name:`login`})}return(e,t)=>{let r=G,i=ve,s=pt,d=ht;return n(),m(d,{storage:`local`,"storage-key":`uom-workspace`,unit:`rem`,class:`min-h-screen bg-default`},{default:P(()=>[_(s,{collapsible:``,resizable:``,"min-size":14,"max-size":20,ui:{root:`workspace-sidebar border-[#34423c]`,content:`workspace-sidebar divide-[#34423c] ring-[#34423c]`,overlay:`bg-black/50`}},{header:P(({collapsed:e})=>[f(`div`,gt,[t[1]||=f(`img`,{src:De,alt:``,class:`size-8 shrink-0 select-none`,draggable:`false`},null,-1),e?a(``,!0):(n(),c(`div`,_t,[...t[0]||=[f(`p`,{class:`truncate text-sm font-semibold text-white`},`UOM适飞地图`,-1)]]))])]),default:P(({collapsed:e})=>[f(`div`,vt,[f(`nav`,yt,[(n(!0),c(g,null,l(y(h),t=>(n(),c(`div`,{key:t.label,class:`py-0.5`},[_(i,{text:e?t.label:void 0,content:{side:`right`}},{default:P(()=>[_(r,{to:t.to,icon:t.icon,label:e?void 0:t.label,active:t.active,"active-color":`primary`,"active-variant":`soft`,color:`neutral`,variant:`ghost`,size:`md`,ui:v,class:F(e?`w-full justify-center`:`w-full justify-start`)},null,8,[`to`,`icon`,`label`,`active`,`class`])]),_:2},1032,[`text`])]))),128))])])]),footer:P(({collapsed:e})=>[f(`div`,bt,[f(`div`,null,[_(i,{text:e?y(p)?`用户加载中`:y(o)?.username||void 0:void 0,content:{side:`right`}},{default:P(()=>[_(r,{as:`div`,color:`neutral`,variant:`ghost`,size:`md`,icon:`i-lucide-user-round`,label:e?void 0:y(p)?`用户加载中`:y(o)?.username||void 0,loading:y(p),ui:v,class:F(e?`w-full select-none justify-center`:`w-full select-none justify-start`)},null,8,[`label`,`loading`,`class`])]),_:2},1032,[`text`])]),f(`div`,xt,[_(i,{text:e?`退出登录`:void 0,content:{side:`right`}},{default:P(()=>[_(r,{color:`neutral`,variant:`ghost`,size:`md`,icon:`i-lucide-log-out`,label:e?void 0:`退出登录`,ui:v,class:F(e?`w-full justify-center`:`w-full justify-start`),onClick:b},null,8,[`label`,`class`])]),_:2},1032,[`text`])])])]),_:1}),u(e.$slots,`default`)]),_:3})}}});export{St as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{At as e,En as t,F as n,G as r,I as i,It as ee,M as a,Mn as o,N as s,P as c,Pn as l,S as u,U as d,Wn as f,_r as p,bt as m,in as h,ln as g,wt as _}from"./C97TfNgP.js";import{it as v,nt as y}from"./CgMd2Y5s.js";import{_ as te,t as ne}from"./ByRlKR9F.js";import{r as b}from"./3B2XYGg4.js";import{t as x}from"./DmN-PKW1.js";import{t as re}from"./DXm-42Fi.js";import{t as ie}from"./D4tzFemo.js";import{a as ae,i as oe,n as se,r as ce,t as le}from"./DIt0vOP7.js";import{t as ue}from"./C4qlzA4o.js";import{n as de,r as S}from"#entry";import{n as fe,t as pe}from"./Bt5oyQw_.js";import{t as me}from"./DC3bhq63.js";import{r as C,t as he}from"./DkcySee1.js";import{t as w}from"./CNs_Ozdc.js";import{i as ge,n as T,r as E,t as D}from"./BiWblTbb.js";var _e={class:`grid min-h-0 flex-1 lg:grid-cols-[20rem_minmax(0,1fr)]`},ve={class:`flex max-h-[24rem] min-h-0 flex-col overflow-hidden border-b border-default lg:max-h-none lg:border-r lg:border-b-0`},ye={class:`border-b border-default p-3`},be={class:`flex items-center justify-between gap-2 border-b border-default px-4 py-3`},O={class:`flex items-center gap-2`},k={class:`uom-mono text-xs text-muted`},A={class:`space-y-1 p-1`},j={class:`w-full min-w-0`},M={class:`flex items-center gap-2`},N={class:`min-w-0 flex-1 truncate text-sm font-medium`},xe={key:0,class:`mt-2 space-y-1.5`},Se={class:`flex items-center justify-between gap-2 text-[11px] text-muted`},Ce={class:`uom-mono`},we={class:`flex items-center justify-between gap-2 text-[11px] text-muted`},Te={class:`uom-mono`},Ee={key:1,class:`mt-1.5 flex items-center justify-between gap-3 text-xs text-muted`},De={key:0,class:`uom-mono`},Oe={key:1,class:`flex min-h-48 flex-1 flex-col items-center justify-center gap-3 px-4 text-sm text-muted`},ke={key:2,class:`flex min-h-48 flex-1 items-center justify-center px-4 py-8`},Ae={class:`flex min-h-0 flex-col`},je={class:`flex min-h-12 flex-wrap items-center justify-between gap-2 border-b border-default px-4 py-1.5`},Me={class:`min-h-0 flex-1`},Ne={class:`text-sm text-muted`},P=r({__name:`tasks`,setup(r){w({layout:`dashboard`}),b({title:`地图下载任务`});let P=v(),F=S(),I=C(),L=x(`tasks-base-map`,()=>`osm`),R=l(P.path===`/tasks/details`?`details`:`preview`),z=l(!1),B=l(!1),V=l(!1),H=o({filename:``}),Pe=D({filename:T().trim().min(1,`请输入文件名`).max(120,`文件名不能超过 120 个字符`).refine(e=>!e.toLowerCase().endsWith(`.uomtiles`),`扩展名由系统自动添加`)}),U,W=a(()=>I.files.value.filter(e=>e.kind===`uomtiles`)),G=a(()=>I.selected.value?.kind===`uomtiles`?I.selected.value:null),K=a(()=>!!G.value?.locked),q=a(()=>K.value?`running`:G.value?.summary?.state||`incomplete`),Fe=a(()=>!!(G.value&&q.value!==`completed`&&!K.value)),Ie=a(()=>!!(G.value&&!K.value&&!G.value.locked)),J=a(()=>G.value?.summary?.startedAt?`继续下载`:`开始下载`),Le=new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}),Y=l(Date.now()),X=a(()=>[{label:`实时预览`,icon:`i-lucide-map`,value:`preview`,disabled:!G.value},{label:`任务明细`,icon:`i-lucide-list`,value:`details`,disabled:!G.value}]);_(async()=>{await I.refresh(),U=E(()=>{Y.value=Date.now(),I.refresh()},3e3)}),m(()=>clearInterval(U)),h(()=>P.path,e=>{R.value=e===`/tasks/details`?`details`:`preview`}),h(R,e=>{G.value&&(e===`details`&&P.path!==`/tasks/details`&&y({name:`tasks-details`}),e===`preview`&&P.path!==`/tasks`&&y({name:`tasks`}))});async function Re(){try{await I.start(),z.value=!1,F.add({title:`抓取已启动`,color:`success`,icon:`i-lucide-play`})}catch(e){F.add({title:`无法启动`,description:e?.data?.message||e?.message,color:`error`})}}function Z(e){return e.locked?`running`:e.summary?.state||`incomplete`}function ze(e){return e===`running`?`进行中`:e===`completed`?`已完成`:`未完成`}function Be(e){return e===`running`?`info`:e===`completed`?`success`:`neutral`}function Ve(e){return G.value?.filename===e.filename?`primary`:Z(e)===`running`?`info`:`neutral`}function He(e){return G.value?.filename===e.filename||Z(e)===`running`?`soft`:`ghost`}function Q(e){return I.displayWorkspaceName(e)}function $(e){let t=e.summary,n=t?.roots||{},r=Object.values(n).reduce((e,t)=>e+Number(t),0),i=Number(n.completed||0);return{summary:t,total:r,completed:i,percent:r>0?i/r*100:0}}function Ue(e){let t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60);return n>0?`${n}小时${r}分`:`${Math.max(1,r)}分钟`}function We(e){let t=$(e),n=t.summary?.startedAt?Date.parse(t.summary.startedAt):NaN;if(!Number.isFinite(n)||t.completed<=0||t.total<=t.completed)return`EST 计算中`;let r=Y.value-n;return`EST ${Ue((t.total-t.completed)*r/t.completed)}`}function Ge(){let e=new Date(Date.now()-new Date().getTimezoneOffset()*6e4).toISOString().slice(0,19).replace(/:/g,`-`);H.filename=`uom-${e}`,V.value=!0}async function Ke(){try{let e=await I.createTask(H.filename);V.value=!1,F.add({title:`任务已创建`,description:Q(e.filename),color:`success`,icon:`i-lucide-file-check-2`})}catch(e){F.add({title:`无法创建任务`,description:e?.data?.message||e?.message,color:`error`})}}async function qe(){if(G.value)try{await I.deleteTask(G.value.filename),B.value=!1,F.add({title:`任务已删除`,color:`success`,icon:`i-lucide-trash-2`})}catch(e){F.add({title:`无法删除任务`,description:e?.data?.message||e?.message,color:`error`})}}async function Je(e){if(!e.name.toLowerCase().endsWith(`.uomtiles`)){F.add({title:`请选择 .uomtiles 文件`,color:`error`});return}try{let t=await I.importFile(e);I.selectTask(t.filename)}catch(e){F.add({title:`无法打开任务文件`,description:e?.data?.message||e?.message,color:`error`})}}return(r,a)=>{let o=ne,l=se,m=fe,h=ae,_=de,v=pe,y=te,b=he,x=oe,S=ce,C=re,w=le,T=me,E=ue,D=ge,P=ie;return e(),i(u,null,[d(w,{id:`download-tasks`,class:`h-svh min-w-0 overflow-hidden`,ui:{body:`gap-0 overflow-hidden p-0 sm:gap-0 sm:p-0`}},{header:g(()=>[d(l,{title:`地图下载任务`},{right:g(()=>[d(o,{icon:`i-lucide-plus`,label:`新建任务`,color:`neutral`,variant:`outline`,size:`sm`,onClick:Ge}),d(o,{icon:`i-lucide-refresh-cw`,label:`刷新`,color:`neutral`,variant:`outline`,size:`sm`,loading:f(I).pending.value,onClick:f(I).refresh},null,8,[`loading`,`onClick`]),f(G)?(e(),c(o,{key:0,icon:`i-lucide-trash-2`,label:`删除任务`,color:`error`,variant:`outline`,size:`sm`,disabled:!f(Ie),onClick:a[0]||=e=>B.value=!0},null,8,[`disabled`])):n(``,!0),f(G)&&f(q)===`completed`?(e(),i(u,{key:1},[d(o,{to:`/api/workspace/${encodeURIComponent(f(G).filename)}/download`,target:`_blank`,icon:`i-lucide-download`,label:`UOMTiles`,color:`neutral`,variant:`outline`,size:`sm`},null,8,[`to`]),d(o,{to:`/api/workspace/${encodeURIComponent(f(G).filename)}/export/mbtiles`,target:`_blank`,icon:`i-lucide-database`,label:`MBTiles`,color:`neutral`,variant:`outline`,size:`sm`},null,8,[`to`]),d(o,{to:`/api/workspace/${encodeURIComponent(f(G).filename)}/export/pmtiles`,target:`_blank`,icon:`i-lucide-package`,label:`PMTiles`,color:`neutral`,variant:`outline`,size:`sm`},null,8,[`to`])],64)):n(``,!0),f(K)?(e(),c(o,{key:2,icon:`i-lucide-square`,label:`停止下载`,color:`warning`,variant:`outline`,size:`sm`,onClick:a[1]||=e=>f(I).stop(f(G)?.filename)})):f(Fe)?(e(),c(o,{key:3,icon:`i-lucide-play`,label:f(J),variant:`outline`,size:`sm`,onClick:a[2]||=e=>z.value=!0},null,8,[`label`])):n(``,!0)]),_:1})]),body:g(()=>[s(`div`,_e,[s(`aside`,ve,[s(`div`,ye,[d(m,{accept:`.uomtiles`,title:`导入任务`,pending:f(I).pending.value,onSelect:Je},null,8,[`pending`])]),s(`div`,be,[s(`div`,O,[a[12]||=s(`h2`,{class:`text-sm font-semibold`},`任务列表`,-1),s(`span`,k,p(f(W).length),1)])]),f(I).ready.value&&f(W).length?(e(),c(v,{key:0,class:`min-h-0 flex-1`},{default:g(()=>[s(`div`,A,[(e(!0),i(u,null,ee(f(W),t=>(e(),c(o,{key:t.filename,type:`button`,block:``,color:Ve(t),variant:He(t),class:`h-auto min-h-16 w-full items-start justify-start px-3 py-3 text-left`,"aria-pressed":f(G)?.filename===t.filename,onClick:e=>f(I).selectTask(t.filename)},{default:g(()=>[s(`div`,j,[s(`div`,M,[s(`span`,N,p(Q(t.filename)),1),d(h,{label:ze(Z(t)),color:Be(Z(t)),variant:`subtle`,size:`xs`},null,8,[`label`,`color`])]),Z(t)===`running`?(e(),i(`div`,xe,[s(`div`,Se,[s(`span`,null,p($(t).completed)+` / `+p($(t).total||6030)+` 个网格`,1),s(`span`,Ce,p(Math.floor($(t).percent))+`%`,1)]),d(_,{"model-value":$(t).percent,max:100,size:`sm`,color:`info`},null,8,[`model-value`]),s(`div`,we,[a[13]||=s(`span`,null,`正在下载`,-1),s(`span`,Te,p(We(t)),1)])])):(e(),i(`div`,Ee,[s(`span`,null,p(f(Le).format(new Date(t.modifiedAt))),1),t.summary?.roots.completed?(e(),i(`span`,De,p(t.summary.roots.completed)+` / 6030`,1)):n(``,!0)]))])]),_:2},1032,[`color`,`variant`,`aria-pressed`,`onClick`]))),128))])]),_:1})):f(I).ready.value?(e(),i(`div`,ke,[d(b,{icon:`i-lucide-files`,title:`暂无任务`})])):(e(),i(`div`,Oe,[d(y,{name:`i-lucide-loader-circle`,class:`size-5 animate-spin text-primary`}),a[14]||=s(`span`,null,`加载任务`,-1)]))]),s(`div`,Ae,[s(`div`,je,[d(x,{modelValue:f(R),"onUpdate:modelValue":a[3]||=e=>t(R)?R.value=e:null,items:f(X),content:!1,size:`sm`},null,8,[`modelValue`,`items`]),d(S,{modelValue:f(L),"onUpdate:modelValue":a[4]||=e=>t(L)?L.value=e:null},null,8,[`modelValue`])]),s(`div`,Me,[d(C)])])])]),_:1}),d(P,{open:f(V),"onUpdate:open":a[7]||=e=>t(V)?V.value=e:null,title:`新建地图下载任务`},{body:g(()=>[d(D,{id:`create-task-form`,schema:f(Pe),state:f(H),onSubmit:Ke},{default:g(()=>[d(E,{name:`filename`,label:`任务文件名`,required:``},{default:g(()=>[d(T,{modelValue:f(H).filename,"onUpdate:modelValue":a[5]||=e=>f(H).filename=e,class:`w-full`,autocomplete:`off`,icon:`i-lucide-file-database`},{trailing:g(()=>[...a[15]||=[s(`span`,{class:`uom-mono text-xs text-muted`},`.uomtiles`,-1)]]),_:1},8,[`modelValue`])]),_:1})]),_:1},8,[`schema`,`state`])]),footer:g(()=>[d(o,{label:`取消`,color:`neutral`,variant:`ghost`,onClick:a[6]||=e=>V.value=!1}),d(o,{type:`submit`,form:`create-task-form`,label:`创建`,icon:`i-lucide-plus`,loading:f(I).pending.value},null,8,[`loading`])]),_:1},8,[`open`]),d(P,{open:f(z),"onUpdate:open":a[9]||=e=>t(z)?z.value=e:null,title:f(J)},{footer:g(()=>[d(o,{label:`取消`,color:`neutral`,variant:`ghost`,onClick:a[8]||=e=>z.value=!1}),d(o,{label:f(J),icon:`i-lucide-play`,onClick:Re},null,8,[`label`])]),_:1},8,[`open`,`title`]),d(P,{open:f(B),"onUpdate:open":a[11]||=e=>t(B)?B.value=e:null,title:`删除地图下载任务`},{body:g(()=>[s(`p`,Ne,`确定删除“`+p(f(G)?Q(f(G).filename):``)+`”吗?任务文件和已抓取数据将被永久删除。`,1)]),footer:g(()=>[d(o,{label:`取消`,color:`neutral`,variant:`ghost`,onClick:a[10]||=e=>B.value=!1}),d(o,{label:`确认删除`,icon:`i-lucide-trash-2`,color:`error`,loading:f(I).pending.value,onClick:qe},null,8,[`loading`])]),_:1},8,[`open`])],64)}}});export{P as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$t as e,At as t,Bn as n,Bt as r,F as i,G as a,H as o,I as s,It as c,Lt as l,M as u,Mn as d,P as f,Pn as p,S as m,U as h,Wn as g,_r as _,an as v,gt as y,hr as b,in as x,ln as S,pr as C,qt as w,tt as T,wt as E}from"./C97TfNgP.js";import{Yt as D,ot as O}from"./CgMd2Y5s.js";import{o as k}from"./Dq-XSsAz.js";import{D as A,K as j,L as M,P as ee,Z as te,at as N,b as P,d as ne,k as re,q as ie,tt as ae,v as F,y as oe}from"./ByRlKR9F.js";import{o as I}from"./BQlj8Xoe.js";import{a as L,i as R,n as z,r as B,s as V}from"./DrLbKQlJ.js";import{c as H,h as U,t as W}from"./Dz7VMlHR.js";import{i as G,n as K,o as q,r as se,t as ce}from"./DCT2aLwC.js";import{i as J}from"#entry";function le(e,t){let n=ie(!1,300);te(()=>{n.value=!1});let r=p(null),i=ee();function a(){r.value=null,n.value=!1}function o(e,t){if(!t)return;let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=de(a,ue(a,i.getBoundingClientRect()),1),s=fe(t.getBoundingClientRect()),c=me([...o,...s]);r.value=c,n.value=!0}return v(n=>{if(e.value&&t.value){let r=e=>o(e,t.value),i=t=>o(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),v(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!pe(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function ue(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function de(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}function fe(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function pe(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function me(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),he(t)}function he(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t.at(-1),n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n.at(-1),t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var ge=a({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let n=e;return W(),(e,r)=>(t(),f(g(ce),b(T(n)),{default:S(()=>[l(e.$slots,`default`)]),_:3},16))}}),Y=`tooltip.open`,[X,_e]=N(`TooltipRoot`),ve=a({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:n}){let r=e,i=n;W();let a=J(),o=u(()=>r.disableHoverableContent??a.disableHoverableContent.value),s=u(()=>r.disableClosingTrigger??a.disableClosingTrigger.value),c=u(()=>r.disabled??a.disabled.value),d=u(()=>r.delayDuration??a.delayDuration.value),m=u(()=>r.ignoreNonKeyboardFocus??a.ignoreNonKeyboardFocus.value),h=U(r,`open`,i,{defaultValue:r.defaultOpen,passive:r.open===void 0});x(h,e=>{a.onClose&&(e?(a.onOpen(),document.dispatchEvent(new CustomEvent(Y))):a.onClose())});let _=p(!1),v=p(),y=u(()=>h.value?_.value?`delayed-open`:`instant-open`:`closed`),{start:b,stop:C}=ae(()=>{_.value=!0,h.value=!0},d,{immediate:!1});function w(){C(),_.value=!1,h.value=!0}function T(){C(),h.value=!1}function E(){b()}return _e({contentId:``,open:h,stateAttribute:y,trigger:v,onTriggerChange(e){v.value=e},onTriggerEnter(){a.isOpenDelayed.value?E():w()},onTriggerLeave(){o.value?T():C()},onOpen:w,onClose:T,disableHoverableContent:o,disableClosingTrigger:s,disabled:c,ignoreNonKeyboardFocus:m}),(e,n)=>(t(),f(g(G),null,{default:S(()=>[l(e.$slots,`default`,{open:g(h)})]),_:3}))}}),Z=a({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:n}){let r=e,i=n,a=X(),s=J(),{forwardRef:c,currentElement:d}=W(),p=u(()=>r.ariaLabel||d.value?.textContent),m=u(()=>{let{ariaLabel:e,...t}=r;return O(t,s.content.value??{},{side:`top`,sideOffset:0,align:`center`,avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:`partial`,hideWhenDetached:!1})});return E(()=>{H(window,`scroll`,e=>{e.target?.contains(a.trigger.value)&&a.onClose()},{capture:!0}),H(window,Y,a.onClose)}),(e,n)=>(t(),f(g(L),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:n[0]||=e=>i(`escapeKeyDown`,e),onPointerDownOutside:n[1]||=e=>{g(a).disableClosingTrigger.value&&g(a).trigger.value?.contains(e.target)&&e.preventDefault(),i(`pointerDownOutside`,e)},onFocusOutside:n[2]||=D(()=>{},[`prevent`]),onDismiss:n[3]||=e=>g(a).onClose()},{default:S(()=>[h(g(K),y({ref:g(c),"data-state":g(a).stateAttribute.value},{...e.$attrs,...m.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:S(()=>[l(e.$slots,`default`),h(g(B),{id:g(a).contentId,role:`tooltip`},{default:S(()=>[o(_(p.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),ye=a({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){let n=re(e),{forwardRef:r,currentElement:i}=W(),{trigger:a,onClose:o}=X(),s=J(),{isPointerInTransit:c,onPointerExit:u}=le(a,i);return s.isPointerInTransitRef=c,u(()=>{o()}),(e,i)=>(t(),f(Z,y({ref:g(r)},g(n)),{default:S(()=>[l(e.$slots,`default`)]),_:3},16))}}),be=a({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:n}){let i=e,a=n,o=X(),s=q(i,a),{forwardRef:c}=W();return(e,n)=>(t(),f(g(V),{present:e.forceMount||g(o).open.value},{default:S(()=>[(t(),f(r(g(o).disableHoverableContent.value?Z:ye),y({ref:g(c)},g(s)),{default:S(()=>[l(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),xe=a({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let n=e;return(e,r)=>(t(),f(g(R),b(T(n)),{default:S(()=>[l(e.$slots,`default`)]),_:3},16))}}),Se=a({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=X(),i=J();r.contentId||=k(void 0,`reka-tooltip-content`);let{forwardRef:a,currentElement:o}=W(),s=p(!1),c=p(!1),d=u(()=>r.disabled.value?{}:{click:T,focus:x,pointermove:v,pointerleave:b,pointerdown:_,blur:C});E(()=>{r.onTriggerChange(o.value)});function m(){setTimeout(()=>{s.value=!1},1)}function _(){r.open&&!r.disableClosingTrigger.value&&r.onClose(),s.value=!0,document.addEventListener(`pointerup`,m,{once:!0})}function v(e){e.pointerType!==`touch`&&!c.value&&!i.isPointerInTransitRef.value&&(r.onTriggerEnter(),c.value=!0)}function b(){r.onTriggerLeave(),c.value=!1}function x(e){s.value||r.ignoreNonKeyboardFocus.value&&!e.target.matches?.(`:focus-visible`)||r.onOpen()}function C(){r.onClose()}function T(){r.disableClosingTrigger.value||r.onClose()}return(e,i)=>(t(),f(g(se),{"as-child":``,reference:e.reference},{default:S(()=>[h(g(A),y({ref:g(a),"aria-describedby":g(r).open.value?g(r).contentId:void 0,"data-state":g(r).stateAttribute.value,as:e.as,"as-child":n.asChild,"data-grace-area-trigger":``},w(d.value)),{default:S(()=>[l(e.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}}),Q={meta:``,ctrl:``,alt:``,win:`⊞`,command:`⌘`,shift:`⇧`,control:`⌃`,option:`⌥`,enter:`↵`,delete:`⌦`,backspace:`⌫`,escape:`Esc`,tab:`⇥`,capslock:`⇪`,arrowup:`↑`,arrowright:`→`,arrowdown:`↓`,arrowleft:`←`,pageup:`⇞`,pagedown:`⇟`,home:`↖`,end:`↘`},Ce=M(()=>{let e=u(()=>navigator&&navigator.userAgent&&navigator.userAgent.match(/Macintosh;/)),t=d({meta:` `,alt:` `,ctrl:` `});E(()=>{t.meta=e.value?Q.command:`Ctrl`,t.ctrl=e.value?Q.control:`Ctrl`,t.alt=e.value?Q.option:`Alt`});function n(e){if(e)return[`meta`,`alt`,`ctrl`].includes(e)?t[e]:Q[e]||e}return{macOS:e,getKbdKey:n}}),$={base:`inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase`,variants:{color:{primary:``,secondary:``,success:``,info:``,warning:``,error:``,neutral:``},variant:{solid:``,outline:``,soft:``,subtle:``},size:{sm:`h-4 min-w-[16px] text-[10px]`,md:`h-5 min-w-[20px] text-[11px]`,lg:`h-6 min-w-[24px] text-[12px]`}},compoundVariants:[{color:`primary`,variant:`solid`,class:`text-inverted bg-primary`},{color:`secondary`,variant:`solid`,class:`text-inverted bg-secondary`},{color:`success`,variant:`solid`,class:`text-inverted bg-success`},{color:`info`,variant:`solid`,class:`text-inverted bg-info`},{color:`warning`,variant:`solid`,class:`text-inverted bg-warning`},{color:`error`,variant:`solid`,class:`text-inverted bg-error`},{color:`primary`,variant:`outline`,class:`ring ring-inset ring-primary/50 text-primary`},{color:`secondary`,variant:`outline`,class:`ring ring-inset ring-secondary/50 text-secondary`},{color:`success`,variant:`outline`,class:`ring ring-inset ring-success/50 text-success`},{color:`info`,variant:`outline`,class:`ring ring-inset ring-info/50 text-info`},{color:`warning`,variant:`outline`,class:`ring ring-inset ring-warning/50 text-warning`},{color:`error`,variant:`outline`,class:`ring ring-inset ring-error/50 text-error`},{color:`primary`,variant:`soft`,class:`text-primary bg-primary/10`},{color:`secondary`,variant:`soft`,class:`text-secondary bg-secondary/10`},{color:`success`,variant:`soft`,class:`text-success bg-success/10`},{color:`info`,variant:`soft`,class:`text-info bg-info/10`},{color:`warning`,variant:`soft`,class:`text-warning bg-warning/10`},{color:`error`,variant:`soft`,class:`text-error bg-error/10`},{color:`primary`,variant:`subtle`,class:`text-primary ring ring-inset ring-primary/25 bg-primary/10`},{color:`secondary`,variant:`subtle`,class:`text-secondary ring ring-inset ring-secondary/25 bg-secondary/10`},{color:`success`,variant:`subtle`,class:`text-success ring ring-inset ring-success/25 bg-success/10`},{color:`info`,variant:`subtle`,class:`text-info ring ring-inset ring-info/25 bg-info/10`},{color:`warning`,variant:`subtle`,class:`text-warning ring ring-inset ring-warning/25 bg-warning/10`},{color:`error`,variant:`subtle`,class:`text-error ring ring-inset ring-error/25 bg-error/10`},{color:`neutral`,variant:`solid`,class:`text-inverted bg-inverted`},{color:`neutral`,variant:`outline`,class:`ring ring-inset ring-accented text-default bg-default`},{color:`neutral`,variant:`soft`,class:`text-default bg-elevated`},{color:`neutral`,variant:`subtle`,class:`ring ring-inset ring-accented text-default bg-elevated`}],defaultVariants:{variant:`outline`,color:`neutral`,size:`md`}},we={__name:`UKbd`,props:{as:{type:null,required:!1,default:`kbd`},value:{type:null,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(e){let n=P(`kbd`,e),{getKbdKey:r}=Ce(),i=I(),a=u(()=>F({extend:$,...i.ui?.kbd||{}}));return(e,i)=>(t(),f(g(A),{as:g(n).as,class:C(a.value({class:[g(n).ui?.base,g(n).class],color:g(n).color,variant:g(n).variant,size:g(n).size}))},{default:S(()=>[l(e.$slots,`default`,{},()=>[o(_(g(r)(g(n).value)),1)])]),_:3},8,[`as`,`class`]))}},Te={slots:{content:`flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto`,arrow:`fill-bg stroke-default`,text:`truncate`,kbds:`hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5`,kbdsSize:`sm`}},Ee={__name:`UTooltip`,props:{text:{type:String,required:!1},kbds:{type:Array,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},delayDuration:{type:Number,required:!1},disableHoverableContent:{type:Boolean,required:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1}},emits:[`update:open`],setup(r,{emit:a}){let o=r,d=a,p=e(),v=P(`tooltip`,o),x=I(),w=J(),E=oe(j(v,`defaultOpen`,`open`,`delayDuration`,`disableHoverableContent`,`disableClosingTrigger`,`ignoreNonKeyboardFocus`),d),D=z(n(()=>v.portal)),k=n(()=>O(v.content,w.content.value,{side:`bottom`,sideOffset:8,collisionPadding:8})),A=n(()=>O(v.arrow,{rounded:!0})),M=u(()=>F({extend:Te,...x.ui?.tooltip||{}})({side:k.value.side}));return(e,n)=>(t(),f(g(ve),y(g(E),{disabled:!(g(v).text||g(v).kbds?.length||p.content)||g(v).disabled}),{default:S(({open:n})=>[p.default||g(v).reference?(t(),f(g(Se),y({key:0},e.$attrs,{"as-child":``,reference:g(v).reference,class:g(v).class}),{default:S(()=>[l(e.$slots,`default`,{open:n})]),_:2},1040,[`reference`,`class`])):i(``,!0),h(g(xe),b(T(g(D))),{default:S(()=>[h(g(ne),null,{default:S(()=>[h(g(be),y(k.value,{"data-slot":`content`,class:M.value.content({class:[!p.default&&g(v).class,g(v).ui?.content]})}),{default:S(()=>[l(e.$slots,`content`,{ui:M.value},()=>[g(v).text?(t(),s(`span`,{key:0,"data-slot":`text`,class:C(M.value.text({class:g(v).ui?.text}))},_(g(v).text),3)):i(``,!0),g(v).kbds?.length?(t(),s(`span`,{key:1,"data-slot":`kbds`,class:C(M.value.kbds({class:g(v).ui?.kbds}))},[(t(!0),s(m,null,c(g(v).kbds,(e,n)=>(t(),f(we,y({key:n,size:g(v).ui?.kbdsSize||M.value.kbdsSize()},{ref_for:!0},typeof e==`string`?{value:e}:e),null,16,[`size`]))),128))],2)):i(``,!0)]),g(v).arrow?(t(),f(g(ge),y({key:0},A.value,{"data-slot":`arrow`,class:M.value.arrow({class:g(v).ui?.arrow})}),null,16,[`class`])):i(``,!0)]),_:3},16,[`class`])]),_:3})]),_:3},16)]),_:3},16,[`disabled`]))}};export{Ee as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{At as e,Bn as t,F as n,G as r,Hn as i,I as a,It as o,Lt as s,M as c,N as l,Ot as u,P as d,Pn as f,S as p,U as m,Wn as h,_r as g,en as _,gr as v,in as y,ln as b,pr as x}from"./C97TfNgP.js";import{Jt as S,Yt as C,ot as w}from"./CgMd2Y5s.js";import{D as T,_ as E,b as D,t as O,v as k}from"./ByRlKR9F.js";import{n as A}from"./C6YoBcbT.js";import{o as j}from"./BQlj8Xoe.js";import{p as M}from"./Dz7VMlHR.js";import{t as N}from"./CVE291Pi.js";var P=[`onKeydown`],F=[`accept`],I={class:`grid size-10 shrink-0 place-items-center bg-muted text-muted group-hover:text-default`},L={class:`min-w-0 flex-1`},R={class:`truncate text-sm font-medium text-highlighted`},z={key:0,class:`mt-1 text-xs text-muted`},B=Object.assign(r({__name:`FileDropZone`,props:{accept:{},title:{},description:{},fileName:{},pending:{type:Boolean,default:!1}},emits:[`select`],setup(t,{emit:r}){let i=r,o=_(`input`),s=f(!1);function c(){!o.value||t.pending||(o.value.value=``,o.value.click())}function u(e){let t=e.target.files?.[0];t&&i(`select`,t)}function d(e){s.value=!1;let t=e.dataTransfer?.files[0];t&&i(`select`,t)}return(r,i)=>{let f=E,p=O;return e(),a(`div`,{class:x([`group flex min-h-28 cursor-pointer items-center gap-4 border border-dashed px-4 py-4 transition-colors focus-within:outline-2 focus-within:outline-primary`,h(s)?`border-primary bg-primary/5`:`border-default hover:border-accented hover:bg-elevated/60`]),role:`button`,tabindex:`0`,onClick:c,onKeydown:[S(c,[`enter`]),S(C(c,[`prevent`]),[`space`])],onDragenter:i[0]||=C(e=>s.value=!0,[`prevent`]),onDragover:i[1]||=C(e=>s.value=!0,[`prevent`]),onDragleave:i[2]||=C(e=>s.value=!1,[`prevent`]),onDrop:C(d,[`prevent`])},[l(`input`,{ref_key:`input`,ref:o,type:`file`,accept:t.accept,class:`sr-only`,onChange:u},null,40,F),l(`span`,I,[m(f,{name:t.pending?`i-lucide-loader-circle`:t.fileName?`i-lucide-file-check-2`:`i-lucide-file-up`,class:x([`size-5`,t.pending?`animate-spin`:``])},null,8,[`name`,`class`])]),l(`div`,L,[l(`p`,R,g(t.fileName||t.title),1),t.pending||t.fileName||t.description?(e(),a(`p`,z,g(t.pending?`正在读取文件`:t.fileName?`点击或拖入文件以替换`:t.description),1)):n(``,!0)]),m(p,{type:`button`,icon:`i-lucide-folder-open`,label:`选择文件`,color:`neutral`,variant:`outline`,loading:t.pending,tabindex:`-1`},null,8,[`loading`])],42,P)}}}),{__name:`FileDropZone`});function V(e,t={}){let{arrivedState:n}=M(e);return{style:c(()=>{let r=i(e),a=i(t.orientation)??`vertical`,[o,s]=a===`horizontal`?[`left`,`right`]:[`top`,`bottom`],c=!n[o],l=!n[s];if(!c&&!l||!(r&&(a===`horizontal`?r.scrollWidth>r.clientWidth:r.scrollHeight>r.clientHeight)))return;let u=`${i(t.size)??24}px`,d=a===`horizontal`?`90deg`:`180deg`;return c&&l?{maskImage:`linear-gradient(${d}, transparent, #000 ${u}, #000 calc(100% - ${u}), transparent)`}:c?{maskImage:`linear-gradient(${d}, transparent, #000 ${u})`}:{maskImage:`linear-gradient(${d}, #000, #000 calc(100% - ${u}), transparent)`}}),isOverflowing:c(()=>{n.top,n.bottom,n.left,n.right;let r=i(e);return r?(i(t.orientation)??`vertical`)===`horizontal`?r.scrollWidth>r.clientWidth:r.scrollHeight>r.clientHeight:!1}),arrivedState:n}}var H={slots:{root:`relative outline-primary/25 focus-visible:outline-3`,viewport:`relative flex`,item:``},variants:{orientation:{vertical:{root:`overflow-y-auto overflow-x-hidden`,viewport:`flex-col`,item:``},horizontal:{root:`overflow-x-auto overflow-y-hidden`,viewport:`flex-row`,item:``}},externalScroll:{true:{root:`overflow-visible`}}}},U=[`data-index`],W={__name:`UScrollArea`,props:{as:{type:null,required:!1},orientation:{type:null,required:!1,default:`vertical`},items:{type:Array,required:!1},virtualize:{type:[Boolean,Object],required:!1,default:!1},shadow:{type:[Boolean,Object],required:!1,default:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},emits:[`scroll`],setup(n,{expose:r,emit:i}){let l=n,f=i,m=D(`scrollArea`,l),{dir:g}=A(),S=j(),C=c(()=>typeof m.virtualize==`object`&&!!m.virtualize.getScrollElement),E=c(()=>k({extend:H,...S.ui?.scrollArea||{}})({orientation:m.orientation,externalScroll:C.value})),O=_(`rootRef`),M=m.shadow?V(c(()=>O.value?.$el),{orientation:()=>m.orientation??`vertical`,size:typeof m.shadow==`object`?m.shadow.size:void 0}).style:void 0,P=c(()=>g.value===`rtl`),F=c(()=>m.orientation===`horizontal`),I=c(()=>!F.value),L=()=>(C.value?R.value.getScrollElement?.():O.value?.$el)??null,R=t(()=>{let e=typeof m.virtualize==`boolean`?{}:m.virtualize;return w(e,{estimateSize:100,overscan:12,gap:0,paddingStart:0,paddingEnd:0,scrollMargin:0})}),z=c(()=>{let e=R.value.lanes;return typeof e==`number`?e:void 0}),B=c(()=>typeof m.virtualize==`object`&&m.virtualize.skipMeasurement===!0),W=!!m.virtualize&&N({...R.value,get overscan(){return R.value.overscan},get gap(){return R.value.gap},get paddingStart(){return R.value.paddingStart},get paddingEnd(){return R.value.paddingEnd},get scrollMargin(){return R.value.scrollMargin},get lanes(){return z.value},get isRtl(){return P.value},get count(){return m.items?.length||0},getScrollElement:L,get horizontal(){return F.value},estimateSize:e=>{let t=R.value.estimateSize;return typeof t==`function`?t(e):t}}),G=c(()=>W?W.value.getVirtualItems():[]),K=c(()=>W?W.value.getTotalSize():0),q=c(()=>({position:`relative`,inlineSize:F.value?`${K.value}px`:`100%`,blockSize:I.value?`${K.value}px`:`100%`}));function J(e){let t=z.value!==void 0&&z.value>1,n=e.lane,r=R.value.gap??0,i=e.start-R.value.scrollMargin,a=t?`calc((100% - ${(z.value-1)*r}px) / ${z.value})`:`100%`,o=t&&n!==void 0?`calc(${n} * ((100% - ${(z.value-1)*r}px) / ${z.value} + ${r}px))`:0;return{position:`absolute`,insetBlockStart:F.value&&t?o:0,insetInlineStart:I.value&&t?o:0,blockSize:F.value?t?a:`100%`:void 0,inlineSize:I.value?t?a:`100%`:void 0,transform:F.value?`translateX(${P.value?-i:i}px)`:`translateY(${i}px)`}}let Y=null,X=null;y(L,e=>{Y?.disconnect(),Y=null,!(!W||!e)&&(Y=new ResizeObserver(()=>{X===null&&(X=requestAnimationFrame(()=>{X=null,W.value.measure()}))}),Y.observe(e))},{immediate:!0}),u(()=>{X!==null&&(cancelAnimationFrame(X),X=null),Y?.disconnect()});function Z(e){if(e&&W&&!B.value){let t=e instanceof Element?e:e.$el;W.value.measureElement(t)}}y(()=>W?W.value.isScrolling:!1,e=>f(`scroll`,e));function Q(e,t){return R.value.getItemKey?R.value.getItemKey(t):e&&typeof e==`object`&&`id`in e?e.id:t}return r({get $el(){return O.value?.$el},virtualizer:W||void 0}),(t,n)=>(e(),d(h(T),{ref_key:`rootRef`,ref:O,as:h(m).as,"data-slot":`root`,"data-orientation":h(m).orientation,class:x(E.value.root({class:[h(m).ui?.root,h(m).class]})),style:v(h(M))},{default:b(()=>[h(W)?(e(),a(`div`,{key:0,"data-slot":`viewport`,class:x(E.value.viewport({class:h(m).ui?.viewport})),style:v(q.value)},[(e(!0),a(p,null,o(G.value,n=>(e(),a(`div`,{key:String(n.key),ref_for:!0,ref:Z,"data-index":n.index,"data-slot":`item`,class:x(E.value.item({class:h(m).ui?.item})),style:v(J(n))},[s(t.$slots,`default`,{item:h(m).items?.[n.index],index:n.index,virtualItem:n})],14,U))),128))],6)):(e(),a(`div`,{key:1,"data-slot":`viewport`,class:x(E.value.viewport({class:h(m).ui?.viewport}))},[h(m).items?(e(!0),a(p,{key:0},o(h(m).items,(n,r)=>(e(),a(`div`,{key:Q(n,r),"data-slot":`item`,class:x(E.value.item({class:h(m).ui?.item}))},[s(t.$slots,`default`,{item:n,index:r})],2))),128)):s(t.$slots,`default`,{item:{},index:0},void 0,void 0,1)],2))]),_:3},8,[`as`,`data-orientation`,`class`,`style`]))}};export{B as n,W as t};
|